1. 程式人生 > 實用技巧 >TCP、UDP、IP 協議分析

TCP、UDP、IP 協議分析

>>> hot3.png

26833883_1367053079KNJe.png

一. TCP協議

TCP協議是面向連線、保證高可靠性(資料無丟失、資料無失序、資料無錯誤、資料無重複到達)傳輸層協議。

26833883_1367053171JjtT.png

(1)三次握手建立連線

a.請求端(通常稱為客戶)傳送一個SYN段指明客戶打算連線的伺服器的埠,以及初始序號(ISN,在這個例子中為1415531521)。這個SYN段為報文段1。

b.伺服器發回包含伺服器的初始序號的SYN報文段(報文段2)作為應答。同時,將確認序號設定為客戶的ISN加1以對客戶的SYN報文段進行確認。一個SYN將佔用一個序號

c.客戶必須將確認序號設定為伺服器的ISN加1以對伺服器的SYN報文段進行確認(報文段3)

這三個報文段完成連線的建立。這個過程也稱為三次握手(three-way handshake)

26833883_1367053272Nq58.png

(2)四次揮手斷開連線

a.現在的網路通訊都是基於socket實現的,當客戶端將自己的socket進行關閉時,核心協議棧會向伺服器自動傳送一個FIN置位的包,請求斷開連線。我們稱首先發起斷開請求的一方稱為主動斷開方。

b.伺服器端收到請客端的FIN斷開請求後,核心協議棧會立即傳送一個ACK包作為應答,表示已經收到客戶端的請求

c.伺服器執行一段時間後,關閉了自己的socket。這個時候核心協議棧會向客戶端傳送一個FIN置位的包,請求斷開連線

d.客戶端收到服務端發來的FIN斷開請求後,會發送一個ACK做出應答,表示已經收到服務端的請求

26833883_1367053486Dqub.png

(3)TCP可靠性的保證

TCP採用一種名為“帶重傳功能的肯定確認(positiveacknowledgewithretransmission)”的技術作為提供可靠資料傳輸服務的基礎。這項技術要求接收方收到資料之後向源站回送確認資訊ACK。傳送方對發出的每個分組都儲存一份記錄,在傳送下一個分組之前等待確認資訊。傳送方還在送出分組的同時啟動一個定時器,並在定時器的定時期滿而確認資訊還沒有到達的情況下,重發剛才發出的分組。圖3-5表示帶重傳功能的肯定確認協議傳輸資料的情況,圖3-6表示分組丟失引起超時和重傳。為了避免由於網路延遲引起遲到的確認和重複的確認,協議規定在確認資訊中稍帶一個分組的序號,使接收方能正確將分組與確認關聯起來。

從圖3-5可以看出,雖然網路具有同時進行雙向通訊的能力,但由於在接到前一個分組的確認資訊之前必須推遲下一個分組的傳送,簡單的肯定確認協議浪費了大量寶貴的網路頻寬。為此,TCP使用滑動視窗的機制來提高網路吞吐量,同時解決端到端的流量控制。

26833883_13670535624ZZz.png

二、UDP協議

UDP協議也是傳輸層協議,它是無連線,不保證可靠的傳輸層協議。它的協議頭比較簡單,如下:

這裡的埠號就不解釋了,和TCP的埠號是一樣的含義。

Length佔用2個位元組,標識UDP頭的長度。

Checksum : 校驗和,包含UDP頭和資料部分。

三、IP協議

I P是T C P / I P協議族中最為核心的協議。所有的T C P、U D P、I C M P及I G M P資料都以I P資料

報格式傳輸。它的特點如下:

不可靠(u n r e l i a b l e)的意思是它不能保證 I P資料報能成功地到達目的地。 I P僅提供最好

的傳輸服務。如果發生某種錯誤時,如某個路由器暫時用完了緩衝區, I P有一個簡單的錯誤

處理演算法:丟棄該資料報,然後傳送 I C M P訊息報給信源端。任何要求的可靠性必須由上層來

提供(如T C P) 。

無連線(c o n n e c t i o n l e s s)這個術語的意思是I P並不維護任何關於後續資料報的狀態資訊。

每個資料報的處理是相互獨立的。這也說明, I P資料報可以不按傳送順序接收。如果一信源

向相同的信宿傳送兩個連續的資料報(先是 A,然後是B) ,每個資料報都是獨立地進行路由

選擇,可能選擇不同的路線,因此B可能在A到達之前先到達。

IP 頭格式

轉載於:https://my.oschina.net/dongwt/blog/826355