TCP和UDP报文格式

TCP报文格式

TCP和UDP报文格式_第1张图片
TCP和UDP报文格式_第2张图片

  • 源端口(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报文格式

TCP和UDP报文格式_第3张图片

  • 源端口(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

你可能感兴趣的:(网络)