天天看點

網絡基礎知識(TCP/UDP封包格式)四

1.TCP封包格式

網絡基礎知識(TCP/UDP封包格式)四

源端口号:

占用16位

,封包來自哪個端口。

目的端口号:

占用16位

,封包要傳輸到哪個端口。

Seq序列号:

占用32位

,一次TCP通信(從TCP連接配接建立到斷開)過程中某一個傳輸方向上的位元組流的每個位元組的編号。假設主機A和主機B進行TCP通信,A發送給B的第一個TCP封包段中,序号值被系統初始化為某個随機值ISN(Initial Sequence Number,初始序号值)。那麼在該傳輸方向上(從A到B),後續的TCP封包段中序号值将被系統設定成ISN加上該封包段所攜帶資料的第一個位元組在整個位元組流中的偏移。例如,某個TCP封包段傳送的資料是位元組流中的第1025~2048位元組,那麼該封包段的序号值就是ISN+1025.另外一個傳輸方向(從B到A)的TCP封包段的序号值也具有相同的含義。

Ack确認序列号:

占用32位

,用作對另一方發送來的TCP封包段的響應。其值是收到的TCP封包段的序号值加1。假設主機A和主機B進行TCP通信,那麼A發送出的TCP封包段不僅攜帶自己的序号,而且包含對B發送來的TCP封包段的确認号。反之,B發送出的TCP封包段也同時攜帶自己的序号和對A發送來的封包段的确認号。

頭長度:

占用4位

,辨別該TCP頭部有多少個位元組。因為4位最大能辨別15,是以TCP頭部最長是60位元組。

保留位:

占用6位

,很少使用,一般為0。

控制位: URG ACK PSH RST SYN FIN,共6個,每一個标志位表示一個控制功能;

标志位(占用1位) 功能
URG 緊急指針标志,為1時表示緊急指針有效,為0則忽略緊急指針。
ACK 确認序号标志,為1時表示确認号有效,為0表示封包中不含确認資訊,忽略确認号字段。
PSH push标志,為1表示是帶有push标志的資料,訓示接收方在接收到該封包段以後,應盡快将這個封包段交給應用程式,而不是在緩沖區排隊。
RST 重置連接配接标志,用于重置由于主機崩潰或其他原因而出現錯誤的連接配接。或者用于拒絕非法的封包段和拒絕連接配接請求。
SYN 同步序号,用于建立連接配接過程,在連接配接請求中,SYN=1和ACK=0表示該資料段沒有使用捎帶的确認域,而連接配接應答捎帶一個确認,即SYN=1和ACK=1。
FIN finish标志,用于釋放連接配接,為1時表示發送方已經沒有資料發送了,即關閉本方資料流。

視窗:

占用16位

,滑動視窗大小,用來告知發送端接受端的緩存大小,以此控制發送端發送資料的速率,進而達到流量控制。視窗大小時一個16bit字段,因而視窗大小最大為65535。

校驗和:

占用16位

,奇偶校驗,此校驗和是對整個的 TCP 封包段,包括 TCP 頭部和 TCP 資料,以 16 位字進行計算所得。由發送端計算和存儲,并由接收端進行驗證。

緊急指針:

占用16位

,隻有當 URG 标志置 1 時緊急指針才有效。緊急指針是一個正的偏移量,和順序号字段中的值相加表示緊急資料最後一個位元組的序号。 TCP 的緊急方式是發送端向另一端發送緊急資料的一種方式。

選項和填充: 最常見的可選字段是最長封包大小,又稱為MSS(Maximum Segment Size),每個連接配接方通常都在通信的第一個封包段(為建立連接配接而設定SYN标志為1的那個段)中指明這個選項,它表示本端所能接受的最大封包段的長度。選項長度不一定是32位的整數倍,是以要加填充位,即在這個字段中加入額外的零,以保證TCP頭是32的整數倍。

資料部分: TCP 封包段中的資料部分是可選的。在一個連接配接建立和一個連接配接終止時,雙方交換的封包段僅有 TCP 首部。如果一方沒有資料要發送,也使用沒有任何資料的首部來确認收到的資料。在處理逾時的許多情況中,也會發送不帶任何資料的封包段。

2.UDP封包格式

網絡基礎知識(TCP/UDP封包格式)四

源端口号:

占用16位

,封包來自哪個端口。

目的端口号:

占用16位

,封包要傳輸到哪個端口。

UDP長度:

占用16位

,UDP封包的位元組長度(包括首部和資料)。

校驗和:

占用16位

,檢驗UDP首部和資料部分的正确性。

繼續閱讀