一次端口监听正常,tcpdump无法监听到指定端口报文问题分析

tcpdump命令:

sudo tcpdump -i ens2f0 port 6471 -XXnnvvv

下面是各个部分的详细解释:

1.tcpdump: 这是用于捕获和分析网络数据包的命令行工具。
2.-i ens2f0: 指定监听的网络接口。ens2f0 表示本地网卡),即计算机该指定网络接口捕获的网络流量。
3.port 6471: 过滤条件,指定只捕获涉及端口 6471 的数据包。端口 6471 可能是某个应用程序的通信端口。
4.-XX: 表示显示每个数据包的完整内容,包括数据包的十六进制和 ASCII 形式的输出。相当于显示包的详细数据,以便深入分析其内容。
5.-nn: 防止 tcpdump 将 IP 地址和端口号转换为域名和服务名称。直接显示原始的 IP 地址和端口号。
6.-vvv: 提高输出的详细程度,-v 表示 verbose(详细),-vv 和 -vvv 分别增加详细输出的级别。-vvv 会显示更多的协议详细信息。

上述tcpdump命令指定了网卡和port过滤报文,但是实测发现无论如何也监听不到6471端口的报文。

经过排查把命令更换为下述命令,就可以监听到报文

sudo tcpdump -i lo port 6471 -XXnnv  

分析,同一台机器上两个进程之间的通信,监听指定端口报文的时候,指定外部网络接口如ens2f0或者不指定网络接口,都无法监听到通信报文,有且只有指定网口为本地回环网络接口时,才能监听到本地通信报文即:-i lo

ifconfig如下:

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 11391857892  bytes 88144245429787 (80.1 TiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11391857892  bytes 88144245429787 (80.1 TiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

执行 sudo tcpdump -i lo port 6471 -XXnnv  后,让我们详细解析这个tcpdump -XX输出的16进制报文的各部分含义。

报文基本信息

14:37:33.881148 IP (tos 0x0, ttl 64, id 23488, offset 0, flags [DF], proto TCP (6), length 362)
10.229.120.5.28202 > 10.229.120.5.6471: Flags [P.], cksum 0x0731 (incorrect -> 0xdf5d), seq 9714:10024, ack 360, win 1539, options [nop,nop,TS val 3542503468 ecr 3542503468], length 310
  • 时间戳14:37:33.881148,表示报文捕获的时间。

  • IP头部

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

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

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

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

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

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

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

  • TCP头部

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

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

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

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

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

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

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

16进制报文详细解释

0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
0x0010:  016a 5bc0 4000 4006 d7f9 0ae5 7805 0ae5  .j[.@.@.....x...
0x0020:  7805 6e2a 1947 5ebb e7b0 c247 9f08 8018  x.n*.G^....G....
0x0030:  0603 0731 0000 0101 080a d326 502c d326  ...1.......&P,.&
0x0040:  502c 0100 414a 011b 0000 0100 0000 3601  P,..AJ........6.
0x0050:  0000 0000 0ae5 7805 0819 0000 0000 0000  ......x.........
0x0060:  0000 0000 0000 0000 0000 0000 7b22 666d  ............{"fm
0x0070:  5479 7065 223a 312c 2272 6573 6f75 7263  Type":1,"resourc
0x0080:  6554 7970 6522 3a22 434c 5553 5445 524d  eType":"CLUSTERM
0x0090:  414e 4147 4552 222c 2273 7973 5479 7065  ANAGER","sysType
0x00a0:  223a 3232 3735 302c 2263 6f64 6522 3a32  ":22750,"code":2
0x00b0:  3032 3332 2c22 7265 6173 6f6e 436f 6465  0232,"reasonCode
0x00c0:  223a 3230 3233 3230 322c 2264 6573 6322  ":2023202,"desc"
0x00d0:  3a22 222c 2263 7265 6174 6554 696d 6522  :"","createTime"
0x00e0:  3a22 6e75 6c6c 222c 2263 6c65 6172 5469  :"null","clearTi
0x00f0:  6d65 223a 2232 3032 352d 3031 2d32 3620  me":"2025-01-26.
0x0100:  3134 3a33 373a 3333 222c 2272 6563 6f76  14:37:33","recov
0x0110:  6572 7974 7970 6522 3a34 2c22 6970 223a  erytype":4,"ip":
0x0120:  2231 302e 3232 392e 3132 302e 3522 2c22  "10.229.120.5",
0x0130:  706f 7274 223a 3630 3137 2c22 6473 7469  "port":6017,"dsti
0x0140:  6e66 6f22 3a22 312e 312e 312e 313a 3130  nfo":"1.1.1.1:10
0x0150:  3234 3a31 222c 2272 6573 6f75 7263 6549  24:1","resourceI
0x0160:  4422 3a22 3130 2e32 3239 2e31 3230 2e35  D":"10.229.120.5
0x0170:  3a36 3031 3722 7d00                        :6017"}
0x0000 - 0x000D:以太网头部(如果存在)
  • 0000 0000 0000 0000 0000 0000:目的MAC地址(全0,表示可能是一个原始IP报文,没有以太网封装)。

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

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

  • 016a:总长度,十六进制016a转换为十进制为362,表示整个IP报文长度为362字节。

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

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

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

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

  • 0ae5 7805:源IP地址,转换为点分十进制为10.229.120.5。

  • 0ae5 7805:目的IP地址,也是10.229.120.5。

0x0022 - 0x002F:TCP头部
  • 6e2a:源端口号,十六进制6e2a转换为十进制为28202。

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

  • 5ebb e7b0:序列号,值为5ebb e7b0。

  • c247:确认号,值为c247。

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

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

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

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

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

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

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

  • d326 502c:时间戳值,用于TCP的拥塞控制和往返时间测量等。

  • d326 502c:时间戳回显值,用于确认对方发送的时间戳。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/963455.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek为什么超越了OpenAI?从“存在主义之问”看AI的觉醒

悉尼大学学者Teodor Mitew向DeepSeek提出的问题&#xff0c;在推特上掀起了一场关于AI与人类意识的大讨论。当被问及"你最想问人类什么问题"时&#xff0c;DeepSeek的回答直指人类存在的本质&#xff1a;"如果意识是进化的偶然&#xff0c;宇宙没有内在的意义&a…

在 crag 中用 LangGraph 进行评分知识精炼-下

在上一次给大家展示了基本的 Rag 检索过程&#xff0c;着重描述了增强检索中的知识精炼和补充检索&#xff0c;这些都是 crag 的一部分&#xff0c;这篇内容结合 langgraph 给大家展示通过检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;的工作流&am…

UE5.3 C++ CDO的初步理解

一.UObject UObject是所有对象的基类&#xff0c;往上还有UObjectBaseUtility。 注释&#xff1a;所有虚幻引擎对象的基类。对象的类型由基于 UClass 类来定义。 这为创建和使用UObject的对象提供了 函数&#xff0c;并且提供了应在子类中重写的虚函数。 /** * The base cla…

知识库管理在提升企业决策效率与知识共享中的应用探讨

内容概要 知识库管理是指企业对内部知识、信息进行系统化整理和管理的过程&#xff0c;其重要性在于为企业决策提供了坚实的数据支持与参考依据。知识库管理不仅能够提高信息的获取速度&#xff0c;还能有效减少重复劳动&#xff0c;提升工作效率。在如今快速变化的商业环境中…

Linux:线程池和单例模式

一、普通线程池 1.1 线程池概念 线程池&#xff1a;一种线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&#xff0c;等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价&…

AJAX笔记原理篇

黑马程序员视频地址&#xff1a; AJAX-Day03-01.XMLHttpRequest_基本使用https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p33https://www.bilibili.com/video/BV1MN411y7pw?vd_sour…

ComfyUI安装调用DeepSeek——DeepSeek多模态之图形模型安装问题解决(ComfyUI-Janus-Pro)

ComfyUI 的 Janus-Pro 节点&#xff0c;一个统一的多模态理解和生成框架。 试用&#xff1a; https://huggingface.co/spaces/deepseek-ai/Janus-1.3B https://huggingface.co/spaces/deepseek-ai/Janus-Pro-7B https://huggingface.co/spaces/deepseek-ai/JanusFlow-1.3B 安装…

3D图形学与可视化大屏:什么是材质属性,有什么作用?

一、颜色属性 漫反射颜色 漫反射颜色决定了物体表面对入射光进行漫反射后的颜色。当光线照射到物体表面时&#xff0c;一部分光被均匀地向各个方向散射&#xff0c;形成漫反射。漫反射颜色的选择会直接影响物体在光照下的外观。例如&#xff0c;一个红色的漫反射颜色会使物体在…

JVM方法区

一、栈、堆、方法区的交互关系 二、方法区的理解: 尽管所有的方法区在逻辑上属于堆的一部分&#xff0c;但是一些简单的实现可能不会去进行垃圾收集或者进行压缩&#xff0c;方法区可以看作是一块独立于Java堆的内存空间。 方法区(Method Area)与Java堆一样&#xff0c;是各个…

租赁管理系统在促进智能物业运营中的关键作用和优化策略分析

租赁管理系统在智能物业运营中的关键作用与优化策略 随着科技的飞速发展&#xff0c;租赁管理系统在智能物业运营中扮演着越来越重要的角色。这种系统不仅提高了物业管理的效率&#xff0c;更是促进了资源的优化配置和客户关系的加强。对于工业园、产业园、物流园、写字楼和公…

LLMs之DeepSeek:Math-To-Manim的简介(包括DeepSeek R1-Zero的详解)、安装和使用方法、案例应用之详细攻略

LLMs之DeepSeek&#xff1a;Math-To-Manim的简介(包括DeepSeek R1-Zero的详解)、安装和使用方法、案例应用之详细攻略 目录 Math-To-Manim的简介 1、特点 2、一个空间推理测试—考察不同大型语言模型如何解释和可视化空间关系 3、DeepSeek R1-Zero的简介&#xff1a;处理更…

【课题推荐】基于t分布的非高斯滤波框架在水下自主导航中的应用研究

水下自主导航系统在海洋探测、环境监测及水下作业等领域具有广泛的应用。然而&#xff0c;复杂的水下环境常常导致传感器输出出现野值噪声&#xff0c;这些噪声会严重影响导航信息融合算法的精度&#xff0c;甚至导致系统发散。传统的卡尔曼滤波算法基于高斯噪声假设&#xff0…

Arduino大师练成手册 -- 控制 AS608 指纹识别模块

要在 Arduino 上控制 AS608 指纹识别模块&#xff0c;你可以按照以下步骤进行&#xff1a; 硬件连接 连接指纹模块&#xff1a;将 AS608 指纹模块与 Arduino 连接。通常&#xff0c;AS608 使用 UART 接口进行通信。你需要将 AS608 的 TX、RX、VCC 和 GND 引脚分别连接到 Ardu…

深度学习深度解析:从基础到前沿

引言 深度学习作为人工智能的一个重要分支&#xff0c;通过模拟人脑的神经网络结构来进行数据分析和模式识别。它在图像识别、自然语言处理、语音识别等领域取得了显著成果。本文将深入探讨深度学习的基础知识、主要模型架构以及当前的研究热点和发展趋势。 基础概念与数学原理…

享元模式——C++实现

目录 1. 享元模式简介 2. 代码示例 1. 享元模式简介 享元模式是一种结构型模式。 享元模式用于缓存共享对象&#xff0c;降低内存消耗。共享对象相同的部分&#xff0c;避免创建大量相同的对象&#xff0c;减少内存占用。 享元模式需要将对象分成内部状态和外部状态两个部分…

ResNet--深度学习中的革命性网络架构

一、引言 在深度学习的研究和应用中&#xff0c;网络架构的设计始终是一个关键话题。随着计算能力和大数据的不断提升&#xff0c;深度神经网络逐渐成为解决复杂任务的主流方法。然而&#xff0c;随着网络层数的增加&#xff0c;训练深度神经网络往往面临梯度消失或梯度爆炸的…

HTML特殊符号的使用示例

目录 一、基本特殊符号的使用 1、空格符号&#xff1a; 2、小于号 和 大于号&#xff1a; 3、引号&#xff1a; 二、版权、注册商标符号的使用 1、版权符号&#xff1a;© 2、注册商标符号&#xff1a; 三、数学符号的使用 四、箭头符号的使用 五、货币符号的使用…

C++11—右值引用

目录 简介 左值和右值 左值 右值 右值引用 生命周期 引用折叠 实际应用 移动语义 移动构造函数 移动赋值运算符 完美转发 简介 之前我们曾学习过引用叫左值引用&#xff0c;但那是C98的&#xff0c;在C11中新增了一种引用叫右值引用。右值引用主要用于支持移动语…

Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成

Ubuntu下的DoxygenVScode实现C/C接口文档自动生成 Chapter1 Ubuntu下的DoxygenVScode实现C/C接口文档自动生成1、 Doxygen简介1. 安装Doxygen1&#xff09;方法一&#xff1a;2&#xff09;方法二&#xff1a;2. doxygen注释自动生成插件3. doxygen注释基本语法4. doxygen的生成…

函数与递归

函数与递归 声明或者定义应该在使用之前&#xff08;不单单针对于函数&#xff09; 函数对全局变量做出的改变还是不会随着函数结束而消失的 函数声明在main函数里面也是可以的 引用变量和引用实体的变化是一样的 传址调用比传值调用效率高 重载函数->编译器会根据传递…