TCP 报文格式浅析

在这里插入图片描述

  • 16 位源端口号:从哪个进程来;
  • 16 位目的端口号:到哪个进程去;
  • 32 位序号:给数据编的号,第一个数据有一个编号,第二个数据有一个编号…通过编号来确定数据之间的先后顺序;
  • 32 位确认序号(可靠性):有特定含义,表示接下来想要的下一条数据编号是多少,而不是收到的数据编号是啥;

发送方 收到 应答数据 的时候,应答报文中的 确认序号 假如是 1001,此时发送方就知道 1 - 1000 的数据已经顺利抵达,并且接下来要发送的数据从 1001 开始。

  • 4 位首部长度 与 选项:表示该 TCP 头部有多少个 32 位 bit (有多少个 4 字节),所以TCP头部最大长度是15 * 4 = 60 字节,而 TCP 首部固定大小为 20 字节,不足 60 字节通过 选项 来填充补齐,即填充字节最大为 40 字节。

固定大小 20 字节:
16 位源端口号(2 字节)
16 位目的端口号(2 字节)
32 位序号 (4 字节)
32 位确认序号(4 字节)
4 位首部长度 + 保留 6 位 + 6 个标志位 (2 字节)
16 位窗口大小 (2 字节)
16 位校验和 (2 字节)
16 位紧急指针(2 字节)

  • 保留 6 位:先占个位置,现在不用,后面可能会用;
  • URG (urgent,紧急的) :紧急指针是否有效;
  • ACK (acknowledgement,确认) : 确认号是否有效;
  • PSH (push) : 提示接收端应用程序立刻从TCP缓冲区把数据读走;
  • RST (reset,重置) : 对方要求重新建立连接;把携带RST标识的称为复位报文段;
  • SYN (synchronous,同步) : 请求建立连接;把携带SYN标识的称为同步报文段;
  • FIN (finish,结束): 通知对方,本端要关闭了,称携带FIN标识的为结束报文段;

这六个标志位,每个标志位占 1 bit,能表示 0 / 1;

  • 16 位窗口大小:告诉发送方自己能接受的数据量最大还有多少。
  • 16 位校验和:校验数据内容是否正确;
  • 16 位紧急指针:有时候一些数据需要优先被上层处理,但是报文又是按照顺序放在接收缓冲区里,不能破坏顺序,所以紧急指针就可以标识哪部分是紧急数据。
  • 数据:完整的应用层数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值