TCP和UDP報文格式
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報文格式
源埠(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