tcp的报文格式

384 阅读2分钟

想要深入的了解tcp的话不妨来看看tcp的报文格式,想清楚它是如何利用这个报文格式进行连接和差错控制的吧

报文格式

tcp报文格式.png

解释

  • 端口号 端口是一个计算机与外部交互的窗口。原端口表示发送者的端口号,目的端口代表接受者的端口号

  • 序号 用来标识当前数据流的序号,传输层的数据是以字节流传输的,用序号来表示当前报文的数据的顺序

  • 确认号 是期待发送者下一个发送字节流的序号,确认号 = 已接收的序号 + 1,ACK = 1 时确认号有效

  • 数据偏移 也称首部长度,即报文首部的长度也代表者报文数据的起始点。由于首部的长度是不固定的,有着可选项,此时一个数据偏移能直接计算出数据的位置是非常有必要的

  • 保留 保留6的大小空间以供以后格式扩充,目前一般置为0

  • URG 积极位,说明报文中有重要数据应尽快传输,一般配合紧急指针使用

  • ACK 确认位,ACK = 1 时,确认号有效。TCP规定在建立连接后的所有报文 确认号 = 1

  • PSH (push)推送位,PSH = 1 时,报文中的数据不需要等待缓存满才推送,而应直接交付应用层

  • RST (reset)复位位,RST = 1,RST = 1 时,TCP重新连接

  • SYN 同步位,SYN = 1,ACK = 1 时 表示当前报文是一个请求连接报文。

    • 若对方同意连接,回复 SYN = 1,ACK = 1
  • FIN (finsh)终止位,FIN = 1时,要求释放连接

  • 窗口 允许发送方发送的数据大小

  • 校验和 报文+伪首部=校验和,报文=首部+数据

  • 紧急指针 URG = 1 时,指针有效

  • 选项 报文需要的可选项,如最大报文长度

  • 填充 填充数据使得首部的长度为4B的整数倍