1. 程式人生 > >TCP和UDP報文格式

TCP和UDP報文格式

TCP報文格式

TCP Header
TCP報文格式

  • 源埠(Source port)和目的埠(Destination port)

各16 bits。IP地址標識網際網路中的不同終端,埠號標識終端中的不同應用程序,具有本地意義。32位IP + 16位埠號 = 48位插口。
埠由網際網路數字分配機構(Internet Assigned Numbers Authority,IANA)分配,TCP和UDP埠號列表

著名埠號(Well-known) 註冊埠號(Registered) 動態埠號(Dynamic)
0~1023 1024~49151 49152~65535
IANA統一分配 向IANA申請註冊 本地分配

- 序號(Sequence Number)和確認序號(Acknowledgment Number)

各32 bits。TCP連線傳輸的位元組流中的每一個位元組都有序號。SN指示本報文段所傳送的資料第一個位元組的序號。AN指示期望收到對方的下一個報文的第一個位元組的序號,所有小於AN的報文都被正確接收。

  • 首部長度(Data offset)

4 bits,以32-bit字為單位。TCP首部長短,也是TCP報文資料部分的偏移量。範圍5~15,即20 bytes ~ 60 bytes。options部分最多允許40 bytes。

  • 保留(Resevered)

3 bits,將來使用,目前應設為0。

  • 標誌位(Flags)

URG = 1,指示報文中有緊急資料,應儘快傳送(相當於高優先順序的資料)。
PSH = 1,接到後儘快交付給接收的應用程序。
RST = 1,TCP連線中出現嚴重差錯(如主機崩潰),必須釋放連線,在重新建立連線。
FIN = 1,傳送端已完成資料傳輸,請求釋放連線。
SYN = 1,處於TCP連線建立過程。
ACK = 1,確認序號(AN)有效。

  • 視窗(Window size)

16 bits,接收視窗的大小。接收端希望接收的位元組數。

  • 校驗和(Checksum)

16 bits,校驗報文首部、資料。

  • 緊急指標(Urgent pointer)

16 bits,如果URG = 1,該欄位指示緊急資料的大小(相對於SN的偏移),緊急資料在資料部分的最前面。

  • 可選項(Options)

TCP報文的欄位實現了TCP的功能,標識程序、對位元組流拆分組裝、差錯控制、流量控制、建立和釋放連線等。

UDP報文格式

UDP報文首部

  • 源埠(Source port)和目的埠(Destination port)

  • 報文長度(Length)

16 bits,指示UDP報文(首部和資料)的總長度。最小8 bytes,只有首部,沒有資料。最大值為65535 bytes。實際上,由於IPv4分組的最大資料長度為(65535 - 20 = 65515) bytes,UDP的報文長度不超過65515 bytes。IPv6允許UDP的長度超過65535,此時length欄位設為0。

  • 校驗和(Checksum)

參考:
http://www.xuetangx.com/courses/course-v1:UST+UST001+sp/courseware/a4bb2456afc54cdc94defd1ab13b0389/
https://en.wikipedia.org/wiki/Transmission_Control_Protocol
https://en.wikipedia.org/wiki/User_Datagram_Protocol