1. 程式人生 > >TCP網路分層與三次握手四次揮手

TCP網路分層與三次握手四次揮手

TCP/IP網路分層

網路分層百度定義: 網路分層就是將網路節點所要完成的資料的傳送或轉發、打包或拆包,控制資訊的載入或拆出等工作,分別由不同的硬體和軟體模組去完成。這樣可以將往來通訊和網路互連這一複雜的問題變得較為簡單。

網路層次有osi和TCP/IP兩種,可劃分為七層因特網協議棧和五層因特網協議棧

網路分層協議比較

分層結構

  • 1.應用層

應用層是我們經常接觸使用的部分,比如常用的http協議、ftp協議(檔案傳輸協議)、snmp(網路管理協議)、telnet (遠端登入協議 )、smtp(簡單郵件傳輸協議)、dns(域名解析),這層主要是面向使用者的互動的。這裡的應用層集成了osi分層模型中的應用、會話、表示層三層的功能。

  • 2 . 傳輸層

傳輸層的作用就是將應用層的資料進行傳輸轉運。比如我們常說的tcp(可靠的傳輸控制協議)、udp(使用者資料報協議)。傳輸單位為報文段。
tcp(Transmission Control Protocol)
面向連線(先要和對方確定連線、傳輸結束需要斷開連線,類似打電話)、複雜可靠的、有很好的重傳和查錯機制,一般用與高速、可靠的通訊服務。
udp(user datagram protocol)
面向無連線(無需確認對方是否存在,類似寄包裹)、簡單高效、沒有重傳機制。一般用於即時通訊、廣播通訊等

  • 3 . 網路層

網路層用來處理網路中流動的資料包,資料包為最小的傳遞單位,比如我們常用的ip協議、icmp協議、arp協議(通過分析ip地址得出物理mac地址)。

  • 4 .資料鏈路層

資料鏈路層一般用來處理連線硬體的部分,包括控制網絡卡、硬體相關的裝置驅動等。傳輸單位資料幀。

  • 5 .物理層
    物理層一般為負責資料傳輸的硬體,比如我們瞭解的雙絞線電纜、無線、光纖等,位元流光電等訊號傳送接收資料。

資料傳遞過程,首先應用層將資料報文按照協議封裝格式壓縮,然後傳遞給傳輸層、傳輸層通過協議將資料報封裝為資料報段、然後傳遞給網路層,網路層將資料報段封裝為資料包,並傳遞給資料鏈路層,資料鏈路層收到資料包,封裝為資料幀,然後又將資料幀轉位元流傳遞給物理層,物理層將位元流通過光或電訊號傳送給目標。

更加詳細看這裡

三次握手和四次揮手

三次握手與四次揮手分別對應TCP連線的建立與斷開

過程:
具體過程看這裡

  • 1.為什麼要三次握手?

三次握手是為了建立可靠的通訊通道,主要目的就是雙方確認自己與雙方的傳送與接收機能正常。
第一次握手:Client什麼都不能確認;Server確認了對方傳送正常。
第二次握手:Client確認了:自己傳送、接收正常,對方傳送、接收正常;Server確認了:自己接收正常,對方傳送正常。
第三次握手:Client確認了:自己傳送、接收正常,對方傳送、接收正常;Server確認了:自己傳送、接收正常,對方傳送接收正常
所以三次握手就能確認雙發收發功能都正常,缺一不可。

  • 2 . 為什麼要傳送特定的資料包?

三次握手的另外一個目的就是確認雙方都支援TCP,告知對方用TCP傳輸。
第一次握手:Server 猜測Client可能要建立TCP請求,但不確定,因為也可能是Client亂髮了一個數據包給自己
第二次握手:通過ack=J+1,Client知道Server是支援TCP的,且理解了自己要建立TCP連線的意圖
第三次握手:通過ack=K+1,Server知道Client是支援TCP的,且確實是要建立TCP連線
四次揮手也是型別,只是為了讓對方知曉自己理解了對方的意圖。

  • 3 . 為什麼要四次揮手?

根本原因是,一方傳送FIN只表示自己發完了所有要發的資料,但還允許對方繼續把沒發完的資料發過來。
舉個例子:A和B打電話,通話即將結束後,A說“我沒啥要說的了”,B回答“我知道了”,但是B可能還會有要說的話,A不能要求B跟著自己的節奏結束通話,於是B可能又巴拉巴拉說了一通,最後B說“我說完了”,A回答“知道了”,這樣通話才算結束。

參考