当前位置: 首页 > news >正文

TCP_报文格式解读

报文格式

在这里插入图片描述

header部分字段含义解析

固定字段

对于header中固定部分字段含义,见之前的blog《TCP报文分析》;
对部分字段含义补充说明

  • Data Offset:4bit,tcp header的长度,单位:32bit(4字节);RFC原文介绍:The number of 32-bit words in the TCP header. This indicates where the data begins. The TCP header (even one including options) is an integer multiple of 32 bits long.

Options部分字段解读

  • 长度计算: (DOffset-5)*32 (bit)

  • 数据结构,一般Option的格式为TLV;其中Kind为0、1的两个类型格式比较特殊;
    在这里插入图片描述

  • RFC文档中规定必须识别的类型

    • kind = 2,表示mss信息,在tcp握手阶段,SYN和SYN+ACK报文中会包含该信息进行协商
      在这里插入图片描述
  • 一些常用的Option

    • 其中SACK、Timestamps、Window Scale建议实现,用于提升TCP的性能
      在这里插入图片描述

抓包分析

TCP握手过程

syn报文

在这里插入图片描述

MSS为1460字节;
SACK permitted : 支持SACK机制,用于对收到的不连续数据段的确认
Window scale:窗口扩大系数为3,是2的指数,23=8;说明发送方可接收窗口大小为Window*2window scale = 29200 * 2^3 = 233600 字节;
Timesatmps,TSval:发送端发送的时间戳;TSecr:最近一次接收的报文中携带了TSval;
图片来源:https://zhuanlan.zhihu.com/p/612010050
图片来源:https://zhuanlan.zhihu.com/p/612010050

syn-ack报文

在这里插入图片描述
接收方接收窗口大小为:28960 * 2^7 = 3706880;

ack

在这里插入图片描述

补充信息说明

window scale的意义

在这里插入图片描述

SACK的意义

在这里插入图片描述

参考资料

  • tcp RFC文档
  • tcp option选项说明
  • TCP头部时间戳选项

相关文章:

  • esp32-s3部署yolox_nano进行目标检测
  • STM32-SPI 中断
  • 【自用】ASCii 8*16 点阵字模
  • 2023亚太地区五岳杯量子计算挑战赛
  • Vue在Computed计算属性下,获取Promise then的返回值无效为空
  • 限流、熔断、降级、线程池隔离
  • 【数电笔记】11-最小项(逻辑函数的表示方法及其转换)
  • [Electron] 将应用打包成供Ubuntu、Debian平台下安装的deb包
  • 一篇文章带你详细了解C++智能指针
  • 2023年第十二届数学建模国际赛小美赛C题雪崩防范求解分析
  • Mysql安全之基础合规配置
  • 服务器数据恢复—服务器重装系统导致逻辑卷发生改变的数据恢复案例
  • 二:C语言-数据类型和变量
  • 深入了解UUID:生成、应用与优势
  • 【译】DispatcherServlet
  • Android Studio:GIT提交项目到远程仓库
  • Brief introduction of how to 'Call, Apply and Bind'
  • gcc介绍及安装
  • HTTP--网络协议分层,http历史(二)
  • isset在php5.6-和php7.0+的一些差异
  • java小心机(3)| 浅析finalize()
  • Joomla 2.x, 3.x useful code cheatsheet
  • leetcode98. Validate Binary Search Tree
  • Rancher-k8s加速安装文档
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Vue2.x学习三:事件处理生命周期钩子
  • windows下使用nginx调试简介
  • XForms - 更强大的Form
  • Xmanager 远程桌面 CentOS 7
  • 阿里云前端周刊 - 第 26 期
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 你真的知道 == 和 equals 的区别吗?
  • Semaphore
  • 我们雇佣了一只大猴子...
  • # Maven错误Error executing Maven
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #考研#计算机文化知识1(局域网及网络互联)
  • (BFS)hdoj2377-Bus Pass
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (算法)N皇后问题
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .Net mvc总结
  • .NET导入Excel数据
  • .net开发引用程序集提示没有强名称的解决办法
  • .NET微信公众号开发-2.0创建自定义菜单
  • /proc/vmstat 详解
  • /var/lib/dpkg/lock 锁定问题
  • @Bean有哪些属性
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [asp.net core]project.json(2)
  • [C#]winform部署yolov5-onnx模型