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

一次完整的tcpdump -XX输出报文详解

报文:

03:32:51.745623 IP (tos 0x0, ttl 64, id 65006, offset 0, flags [DF], proto TCP (6), length 94)
    10.229.43.200.6471 > 10.229.43.200.55674: Flags [P.], cksum 0x6daa (incorrect -> 0x2e06), seq 1:43, ack 42, win 3635, options [nop,nop,TS val 2699525425 ecr 2699524773], length 42
        0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
        0x0010:  005e fdee 4000 4006 cf51 0ae5 2bc8 0ae5  .^..@.@..Q..+...
        0x0020:  2bc8 1947 d97a 74b5 d8b0 0127 bdc0 8018  +..G.zt....'....
        0x0030:  0e33 6daa 0000 0101 080a a0e7 7d31 a0e7  .3m.........}1..
        0x0040:  7aa5 0100 6842 0100 0000 0000 0000 2a00  z...hB........*.
        0x0050:  0000 0000 0000 0000 0000 0000 0000 0000  ................
        0x0060:  0000 0000 0000 0000 0000 0000

tcpdump -XX输出的16进制报文各部分的含义:

报文基本信息

03:32:51.745623 IP (tos 0x0, ttl 64, id 65006, offset 0, flags [DF], proto TCP (6), length 94)
10.229.43.200.6471 > 10.229.43.200.55674: Flags [P.], cksum 0x6daa (incorrect -> 0x2e06), seq 1:43, ack 42, win 3635, options [nop,nop,TS val 2699525425 ecr 2699524773], length 42
  • 时间戳03:32:51.745623,表示报文捕获的时间。

  • IP头部

    • tos 0x0:服务类型字段,值为0,表示常规服务。

    • ttl 64:生存时间,值为64,表示报文最多可以经过64个路由器。

    • id 65006:标识字段,用于唯一标识主机发送的每一分组。

    • offset 0:片偏移字段,值为0,表示该报文不分片。

    • flags [DF]:不分片标志位,表示该报文不允许分片。

    • proto TCP (6):协议字段,值为6,表示上层协议为TCP。

    • length 94:整个IP报文的长度为94字节。

  • TCP头部

    • Flags [P.]:标志位,P表示推送(PSH),.表示确认(ACK)。

    • cksum 0x6daa (incorrect -> 0x2e06):校验和,计算结果为0x6daa,但实际应为0x2e06,表示校验和错误。

    • seq 1:43:序列号范围,从1到43,表示该报文段包含42字节的数据。

    • ack 42:确认号,表示期望收到的下一个报文段的序列号为42。

    • win 3635:窗口大小,值为3635,表示接收方的接收窗口大小。

    • options [nop,nop,TS val 2699525425 ecr 2699524773]:选项字段,包含两个NOP(无操作)选项和一个时间戳选项,时间戳值为2699525425,时间戳回显值为2699524773。

    • length 42:TCP数据部分的长度为42字节。

16进制报文详细解释

0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
0x0010:  005e fdee 4000 4006 cf51 0ae5 2bc8 0ae5  .^..@.@..Q..+...
0x0020:  2bc8 1947 d97a 74b5 d8b0 0127 bdc0 8018  +..G.zt....'....
0x0030:  0e33 6daa 0000 0101 080a a0e7 7d31 a0e7  .3m.........}1..
0x0040:  7aa5 0100 6842 0100 0000 0000 0000 2a00  z...hB........*.
0x0050:  0000 0000 0000 0000 0000 0000 0000 0000  ................
0x0060:  0000 0000 0000 0000 0000 0000
0x0000 - 0x000F:以太网头部(如果存在)
  • 0000 0000 0000 0000 0000 0000:目的MAC地址(全0,表示可能是一个原始IP报文,没有以太网封装)。

  • 0800:以太网类型字段,值为0800,表示这是一个IP报文。

0x0010 - 0x001F:IP头部
  • 4500:IP版本和首部长度。4表示IP版本为IPv4,5表示IP头部长度为5个32位字节,即20字节。

  • 005e:总长度,十六进制5e转换为十进制为94,表示整个IP报文长度为94字节。

  • fdee:标识字段,值为fdee,用于唯一标识主机发送的每一分组。

  • 4000:标志和片偏移字段。4表示不分片(DF位为1),00表示片偏移为0,即该IP报文不分片。

  • 4006:生存时间(TTL)和协议字段。40表示TTL为64,06表示协议为TCP。

  • cf51:头部校验和,用于检测IP头部在传输过程中是否出现错误。

  • 0ae5 2bc8:源IP地址,转换为点分十进制为10.229.43.200。

  • 0ae5 2bc8:目的IP地址,也是10.229.43.200。

0x0020 - 0x002F:TCP头部
  • 1947:源端口号,十六进制1947转换为十进制为6471。

  • d97a:目的端口号,十六进制d97a转换为十进制为55674。

  • 74b5 d8b0:序列号,值为74b5d8b0。

  • 0127:确认号,值为0127。

  • bdc0:数据偏移(高4位)和保留位(中间6位)以及紧急指针字段(低4位)。数据偏移值为b(十进制为11),表示TCP头部长度为11个32位字节,即44字节(包括20字节基本头部和24字节选项部分)。

  • 8018:标志位和窗口大小字段。80表示PSH(推送)和ACK(确认)标志位为1,18表示窗口大小为18(需要乘以2的10次方,即18 * 1024 = 18432,但这里应该是16位的窗口大小字段,直接转换为十进制为20010,可能是表示窗口大小为20010)。

0x0030 - 0x003F:TCP头部(继续)
  • 0e33:检验和,用于检测TCP报文段在传输过程中是否出现错误。

  • 6daa:紧急指针字段,值为6daa,但在这个报文段中紧急指针可能没有实际意义,因为紧急指针字段只有在紧急标志位为1时才有效。

  • 0000:填充字段,用于填充TCP头部,使其长度为整数个32位字节。

  • 0101:选项字段,表示TCP选项的类型和长度。01表示时间戳选项,01表示该选项长度为10字节。

  • 080a:时间戳选项的类型和子类型,08表示时间戳,0a表示时间戳回显。

  • a0e7 7d31:时间戳值,用于TCP的拥塞控制和往返时间测量等。

  • a0e7 7aa5:时间戳回显值,用于确认对方发送的时间戳。

0x0040 - 0x004F:TCP数据部分
  • 0100:TCP数据部分的开始,这部分数据的具体含义需要根据上层应用协议来解释。例如,如果这是一个HTTP协议的数据,那么这些字节可能是HTTP请求或响应的一部分内容。

  • 6842:TCP数据部分的继续。

  • 0100:TCP数据部分的继续。

  • 0000:TCP数据部分的继续,后面跟着的多个0000可能是数据的一部分,也可能是填充数据,具体取决于上层协议对数据的格式要求。

  • 0000:TCP数据部分的继续。

  • 2a00:TCP数据部分的继续。

0x0050 - 0x005F:TCP数据部分(继续)
  • 0000:TCP数据部分的继续,后面跟着的多个0000可能是数据的一部分,也可能是填充数据,具体取决于上层协议对数据的格式要求。

0x0060 - 0x006F:TCP数据部分(继续)
  • 0000:TCP数据部分的继续,后面跟着的多个0000可能是数据的一部分,也可能是填充数据,具体取决于上层协议对数据的格式要求。

总结

  • IP头部:20字节,包含IP版本、头部长度、总长度、标识、标志、片偏移、TTL、协议、头部校验和、源IP地址、目的IP地址。

  • TCP头部:20字节基本头部 + 24字节选项部分,包含源端口号、目的端口号、序列号、确认号、数据偏移、标志位、窗口大小、检验和、紧急指针、选项字段。

  • TCP数据部分:42字节,具体内容需要根据上层协议来解释。


http://www.kler.cn/a/506723.html

相关文章:

  • 寒假康复训练2 edu111(A-C)
  • JAVA-Exploit编写(1)--HttpURLConnection库使用
  • Vue2+OpenLayers给2个标点Feature分别添加独立的点击事件(提供Gitee源码)
  • 细说STM32F407单片机窗口看门狗WWDG的原理及使用方法
  • 【数据可视化-12】数据分析岗位招聘分析
  • 开源在线聊天服务Fiora本地搭建个性化社交网络定制专属聊天工具
  • 校园能源管理:从困境到突破的智慧之旅
  • 数据结构、数据类型、数字编码、字符编码:保姆级图文详解
  • K8S 亲和性与反亲和性 深度好文
  • 使用jupyter notebook没有正常打开浏览器的几种情况解决
  • frameworks 之 AMS与ActivityThread交互
  • LLaMA Pro是什么 相比于lora full freeze有什么区别 怎么使用
  • [Qt]常用控件介绍-输入类控件-QLineEdit、QTextEdit、QComboBox控件
  • Jmeter代理录制脚本
  • Vscode——SSH连接不上的一种解决办法
  • Linux 进程前篇(冯诺依曼体系结构和操作系统)
  • Linux浅谈——管道、网络配置和客户端软件的使用
  • ubuntu 系统 ,docker建的服务 ,其他局网机器可以通过IP:端口的方式访问。不是docker的不行。
  • 高阶数据结构之B树
  • 三大智能体平台对比分析:FastGPT、Dify、Coze 哪个更适合你?