TCP报文头部结构

TCP报文头部结构

TCP(Transmission Control Protocol)传输控制协议是一种面向连接的、可靠的、基于字节流的传输层协议

TCP报文格式
在这里插入图片描述
在这里插入图片描述

TCP报文各段说明

  • 源端口和目的端口
    各占2字节。端口是传输层与应用层的服务接口,传输层的复用和分用功能都要通过端口才能实现。
  • 序号
    占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号,序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
  • 确认号
    占4字节。是期望收到对方的下一个报文段的数据的第一个字节的序号。只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。
  • 数据偏移/首部长度
    占4位。它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位是32位字(即以4字节为计算单位)。
  • 保留
    占6位。保留为今后使用,但目前应置为0。
  • 标志位
    1. 紧急URG
      占1位。当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
    2. 确认ACK
      占1位。只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。
    3. PSH(PuSH)
      占1位。接收TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
    4. RST(ReSeT)
      占1位。当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接。
    5. 同步SYN
      占1位。当SYN=1时,表示这是一个连接请求或连接接受报文。
    6. 终止FIN
      占1位。用来释放一个连接。当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放连接。
  • 窗口Window
    占2字节。用来告诉对端本端的接收缓存大小。以此控制发送端发送数据的速率,从而达到流量控制。
  • 检验和
    占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。
  • 紧急指针
    占2字节。指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。
  • 选项
    长度可变。TCP最初只规定了一种选项,即最大报文段长度MSS。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”[MSS(Maximum Segment Size)是TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段]
  • 其他选项:
    1. 窗口扩大
      占3字节。其中有一个字节表示移位值S,新的窗口值等于TCP首部中的窗口位数增大到(16+S),相当于把窗口值向左移动S位后获得实际的窗口大小。
    2. 时间戳
      占10字节。其中最主要的字段时间戳值字段(4字节)和时间戳回送回答字段(4字节)。
    3. 选择确认
      接收方收到了和前面的字节流不连续的字节。如果这些字节的序号都在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些已收到的数据。
  • 填充
    长度因选项长度而定。这是为了使整个首部长度是4字节的整数倍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值