1. 程式人生 > >HTTP和TCP協議

HTTP和TCP協議

一、HTTP

HTTP協議是Hyper Text Transfer Protocol(超文字傳輸協議)的縮寫,是用於從全球資訊網(WWW:World Wide Web )伺服器傳輸超文字到本地瀏覽器的傳送協議。

HTTP是一個基於TCP/IP通訊協議來傳遞資料(HTML 檔案, 圖片檔案, 查詢結果等)。

HTTP是一個屬於應用層的面向物件的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴充套件。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規範化工作正在進行之中,而且HTTP-NG(Next Generation of HTTP)的建議已經提出。

HTTP協議工作於客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB伺服器傳送所有請求。Web伺服器根據接收到的請求後,向客戶端傳送響應資訊。

二、TCP/IP協議

1、什麼是TCP/IP 

      如果要了解一個人,可以從他歸屬的集體聊起來。我們的HTTP協議就屬於TCP/IP協議家族中的一員,瞭解HTTP協議再整個網路流程中的地位,也能更加充分的理解HTTP協議。

      要想了解什麼是TCP/IP協議,就要知道為什麼有這個協議。中國人和中國人說話,要遵循漢語的的語法結構,使用漢語的發音。當我們和外國人交流時,就要適用外國的語言了,遵循外國的語法機構和發音。其實這就是一種協議,只不過我們稱之為語言。計算機再這方面體現的更為直觀,兩臺機器之間該如何通訊呢,就需要制定各種各樣的協議了。例如:檔案傳輸適用TCP協議。域名系統適用DNS協議。有了些協議的存在,各種資料流按照規則傳輸,計算機之間得意通訊。

       TCP/IP協議是一個協議集合。大家叫的時候方便說,所以統稱為TCP/IP。TCP/IP協議族中有一個重要的概念是分層,TCP/IP協議按照層次分為以下四層。應用層、傳輸層、網路層、資料鏈路層。為什麼要分層?這就如同鄧小平1978年的大包乾,責任到人。一個層只負責一個層次的問題,如果出問題了,和其他的層次無關,只要維護這個層次也就好了。其實程式語言裡也能體現這個分層理論,即封轉性、隔離。這裡不再延伸細談。下面我是製作的一個簡圖。

      

下面是從網路上找到的TCP/IP通訊資料流

2、HTTP 關係密切的協議 : IP、TCP 和 DNS

    IP協議:IP(Internet protocol),這裡的IP不是值得我們通常所說的192.168.1.1.這個IP指的是一種協議,而後面的數字值得是IP地址。IP協議的作用在於把各種資料包準確無誤的傳遞給對方,其中兩個重要的條件是IP地址,和MAC地址(Media Access Control Address)。由於IP地址是稀有資源,不可能每個人都擁有一個IP地址,所以我們通常的IP地址是路由器給我們生成的IP地址,路由器裡面會記錄我們的MAC地址。而MAC地址是全球唯一的,除去人為因素外不可能重複。舉一個現實生活中的例子,IP地址就如同是我們居住小區的地址,而MAC地址就是我們住的那棟樓那個房間那個人。關於MAC地址,如果我沒講清楚,

可點選連線,檢視百度。以下內容摘抄自《圖解HTTP》

   使用 ARP 協議憑藉 MAC 地址進行通訊

   IP 間的通訊依賴 MAC 地址。在網路上,通訊的雙方在同一區域網(LAN)內的情況是很少的,通常是經過多臺計算機和網路裝置中轉才能連線到對方。而在進行中轉時,會利用下一站中轉裝置的 MAC 地址來搜尋下一個中轉目標。這時,會採用 ARP 協議(Address Resolution Protocol)。ARP 是一種用以解析地址的協議,根據通訊方的 IP 地址就可以反查出對應的 MAC 地址

 你向另外一臺電腦傳送一條資訊,怎麼再茫茫人海中瞬間找到對方,以下是圖示:

TCP協議:如果說IP協議是找到對方的詳細地址。那麼TCP協議就是把安全的把東西帶給對方。各有分工,互不衝突。

      按層次分,TCP屬於傳輸層,提供可靠的位元組流服務。什麼叫位元組流服務呢?這個名字聽起來讓人不知所以然,下面聽下我通俗的解釋。所謂的位元組流,其實就類似於資訊切割。比如你是一個賣自行車的,你要去送貨。安裝好的自行車,太過龐大,又不穩定,容易損傷。不如直接把自行車拆開來,每個零件上都貼上收貨人的姓名。最後送到後按照把屬於同一個人的自行車再組裝起來,這個拆解、運輸、拼裝的過程其實就是TCP位元組流的過程。

     我們看下嚴謹的學術表達是怎樣的:

     所謂的位元組流服務(Byte Stream Service)是指,為了方便傳輸,將大塊資料分割成以報文段(segment)為單位的資料包進行管理。而可靠的傳輸服務是指,能夠把資料準確可靠地傳給對方。一言以蔽之,TCP 協議為了更容易傳送大資料才把資料分割,而且 TCP 協議能夠確認資料最終是否送達到對方。

     為了確保資訊能夠確保準確無誤的到達,TCP採用了著名的三次握手策略(three-way handshaking).下面我寫一段對話來模擬下這三次握手。

     

DNS:DNS(Domain names System) 和HTTP協議一樣是處於應用層的服務,提供域名到IP地址之間的解析服務。

網際網路之間是通過IP地址通訊的,但是IP地址並不符合認得記憶習慣,人喜歡記憶有意義的字詞。所以DNS服務就為了解決這個問題而生了。其實很好理解,形如我們電腦中host檔案。

192.168.1.11       roverliang.com  

當我們訪問roverliang.com 的時候,電腦便不會去外網伺服器上查詢了,直接去訪問192.168.1.111。這是一個簡單的域名劫持,足以說明DNS的涵義了。

下面是我們訪問一個網頁,各種協議在裡面起的作用。


這個博主說的很好因此這部分為轉載:https://www.cnblogs.com/roverliang/p/5176456.html 

二、Http協議與TCP協議的區別與聯絡

    Http協議是建立在TCP協議基礎之上的,當瀏覽器需要從伺服器獲取網頁資料的時候,會發出一次Http請求。Http會通過TCP建立起一個到伺服器的連線通道,當本次請求需要的資料完畢後,Http會立即將TCP連線斷開,這個過程是很短的。所以Http連線是一種短連線,是一種無狀態的連線。所謂的無狀態,是指瀏覽器每次向伺服器發起請求的時候,不是通過一個連線,而是每次都建立一個新的連線。如果是一個連線的話,伺服器程序中就能保持住這個連線並且在記憶體中記住一些資訊狀態。而每次請求結束後,連線就關閉,相關的內容就釋放了,所以記不住任何狀態,成為無狀態連線.
TPC/IP協議是傳輸層協議,主要解決資料如何在網路中傳輸,而HTTP是應用層協議,主要解決如何包裝資料。關於TCP/IP和HTTP協議的關係,網路有一段比較容易理解的介紹:“我們在傳輸資料時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如果沒有應用層,便無法識別資料內容,如果想要使傳輸的資料有意義,則必須使用到應用層協議,應用層協議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用層協議。WEB使用HTTP協議作應用層協議,以封裝HTTP 文字資訊,然後使用TCP/IP做傳輸層協議將它發到網路上。”  術語TCP/IP代表傳輸控制協議/網際協議,指的是一系列協議。“IP”代表網際協議,TCP和UDP使用該協議從一個網路傳送資料包到另一個網路。把IP想像成一種高速公路,它允許其它協議在上面行駛並找到到其它電腦的出口。TCP和UDP是高速公路上的“卡車”,它們攜帶的貨物就是像HTTP,檔案傳輸協議FTP這樣的協議等。     你應該能理解,TCP和UDP是FTP,HTTP和SMTP之類使用的傳輸層協議。雖然TCP和UDP都是用來傳輸其他協議的,它們卻有一個顯著的不同:TCP提供有保證的資料傳輸,而UDP不提供。這意味著TCP有一個特殊的機制來確保資料安全的不出錯的從一個端點傳到另一個端點,而UDP不提供任何這樣的保證。    HTTP(超文字傳輸協議)是利用TCP在兩臺電腦(通常是Web伺服器和客戶端)之間傳輸資訊的協議。客戶端使用Web瀏覽器發起HTTP請求給Web伺服器,Web伺服器傳送被請求的資訊給客戶端。

  網上這個圖表顯示不同的TCP/IP和其他的協議在最初OSI模型中的位置,給大家分享下:

7應用層HTTPSMTPSNMPFTPTelnetSIPSSHNFSRTSPXMPPWhoisENRP
6表示層XDRASN.1SMBAFPNCP
5會話層ASAPTLSSSH、ISO 8327 / CCITT X.225、RPCNetBIOSASPWinsockBSD sockets
4傳輸層TCPUDPRTPSCTPSPXATPIL
3網路層IPICMPIGMPIPXBGPOSPFRIPIGRPEIGRPARPRARP、 X.25
2資料鏈路層乙太網令牌環HDLC幀中繼ISDNATMIEEE 802.11FDDIPPP
1物理層線路無線電光纖信鴿