TCP首部和UDP首部结构详解

TCP报文段结构

TCP首部示意图
  • 源端口号:发送方的端口号,范围(0~65535)
  • 目的端口号: 接收者的端口号,范围(0~65535)
  • 序号:如果 TCP 数据太大时(大于 IP 封包的容许程度), 就得要进行分段。这个序号就是记录每个封包的序号,可以让接收端重新将 TCP 的数据组合起来,序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。简称为seq
  • 确认号:为了确认接收端确实有收到发送端所送出的封包数据,当发送端收到这个确认码时,就能够确定之前传递的封包已经被正确的收下了,这个确认号是期望收到对方的下一个报文段的数据的第一个字节的序号。简称ack
  • 首部长度:表示TCP首部的长度,范围(0~15),单位32bit,例如值为5时,表示首部长度是20Byte(160bit),如果选项字段为空,则TCP首部长度为20Byte,即值为5
  • URG:URG=1时表示存在着紧急数据,紧急是数据的最后一个字节由紧急数据指针指出,一般较少使用
  • ACK:ACK=1表示确认号字段中的值是有效的,为0表示无效
  • PSH:当URG=1时,表明紧急指针字段有效,代表该封包为紧急封包。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)
  • RST:RSP=1时重建连接,如果接收到RST位时候,通常发生了某些错误
  • SYN:SYN=1时,就表示这是一个连接请求或连接接受报文,一般用于握手阶段
  • FIN:用来释放一个连接,当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
  • 接收窗口:用于流量控制,指示接收方愿意接收的字节数量,范围0~65535字节。
  • 因特网校验和:检验和覆盖了整个的TCP报文段即TCP首部和TCP数据,这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证。
  • 紧急数据指针:当URG=1时有效,是一个正的偏移量,和序号中的值相加表示表示紧急数据最后一个字节的序号。
  • 选项:用于发送方和接收方协商最大报文长度(MSS)时(只存在于SYN报文)或在高速网络环境下用作窗口调节因子时使用,还可存放时间戳数据
  • 数据:报文实体数据

UDP报文段结构

UDP首部示意图
  • 源端口号:发送方的端口号,范围(0~65535)
  • 目的端口号: 接收者的端口号,范围(0~65535)
  • 长度:表示UDP报文段的长度(包括首部和数据)
  • 校验和:接收方用于校验该报文段中是否存在了差错
  • 应用数据:报文实体数据。

你可能感兴趣的:(TCP首部和UDP首部结构详解)