• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
xiaoyaovo
博客园    首页    新随笔    联系   管理    订阅  订阅
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 位紧急指针:有时候一些数据需要优先被上层处理,但是报文又是按照顺序放在接收缓冲区里,不能破坏顺序,所以紧急指针就可以标识哪部分是紧急数据。
  • 数据:完整的应用层数据。
posted on 2021-08-01 20:08  豆本豆红枣豆奶  阅读(38)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3