TCP 报文段的首部格式

TCP 报文段的首部格式

  • 面向字节流、但传送的数据单元却是报文段
    • 面向字节流是针对应用层而言
    • 报文段则是网络层
  • 一个TCP报文段分为:首部和数据两部分,TCP的全部功能都体现在首部中各个字段的作用
  • TCP报文段首部的前20个字节是固定的,后面可以增加4n(n为整数)

(1)源端口和目的端口

  • 各占2字节
  • 分别写入源端口号、目的端口号

(2)序号

  • 占4字节,序号范围[0, 2 32 - 1]
  • 使用mod 2 32 运算
  • TCP连接中传送的字节流中每一个字节都按顺序编号

(3)确认号

  • 占4字节
  • 期望收到对方下一个报文段的第一个数据字节的序号
  • 若确认号 = N,则表明:到序号 N - 1 为止的所有数据都已正确收到

(4)数据偏移

  • 占4位
  • 指出TCP报文段的数据起始处距离TCP报文段的起始处有多远
  • 实际上:指出TCP报文段的首部长度
  • 单位:32字(4字节长的字为计算单位)
  • 最大值:60字节,也是TCP首部的最大长度

(5)保留

  • 占6位
  • 目前置为0

(6)紧急URG

  • 当URG = 1,表明紧急指针字段有效
  • 告诉系统此报文段中有紧急数据,应尽快传送,而不按原来的排队顺序来传送
  • 发送方TCP把紧急数据插入本报文段数据的最前面,而在其后的仍是普通数据

(7)确认ACK

  • 仅当ACK = 1有效
  • ACK = 0 无效
  • TCP规定:在建立连接之后所有的传送的报文段都必须把 ACK 置1

(8)推送PSH

希望在键入一个命令立即就能收到对方的响应,发送方 TCP 将 PSH 置1,并立即创建一个报文段发送出去,接收方接收到这种设置的报文段,尽快地交付接收应用进程,不等到整个缓存填满

(9)复位 RST

  • 当 RST = 1时,表明 TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接
  • RST置1,还用来拒绝一个非法的报文段或拒绝打开一个连接

(10)同步 SYN

  • 在连接建立时用来同步序号
  • 当SYN = 1,而 ACK = 0,表明是一个连接请求报文段
  • 同意建立连接,对方就在响应的报文段中:SYN = 1 和 ACK =1

(11)终止FIN

  • 用来释放一个连接
  • FIN = 1,表明报文段的发送方的数据已发送完毕,并要求释放运输链接

(12)窗口

  • 占2字节
  • 值的范围 :[ 0, 216 - 1 ]之间整数
  • 发送本报文段的一方的接收窗口
  • 告诉对方:从本报文段首部中的确认好算起,接收方(设置方)目前允许对方发送的数据量(以字节为单位)
  • 作为接收方让发送方设置其发送窗口的依据

(13)检验和

  • 占2字节
  • 检验范围:首部和数据
  • 要在TCP报文段的前面加上12字节的伪首部再计算检验和
  • TCP 协议号为6

(14)紧急指针

  • 占2字节
  • 仅在 URG = 1 时有意义
  • 指出本报文段中的紧急数据的字节数
  • 指出紧急数据的末尾在报文段中的位置
  • 即使窗口为零,也可以发送紧急数据

(15)选项

  • 长度可变
  • 最长:40字节
  • 当没有使用时,TCP首部长度固定:20字节
  • 可选项
    • 最大报文段长度(TCP报文段长度减去TCP首部长度)
    • 窗口扩大选项(占3字节)
    • 时间戳选项(占10字节)主要的:作用(计算往返时间、防止序号绕回)
      • 时间戳值字段(4字节)
      • 时间戳回送回答字段(4字节)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容