一次端口监听正常,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请求或响应的一部分内容。
相关文章:
一次端口监听正常,tcpdump无法监听到指定端口报文问题分析
tcpdump命令: sudo tcpdump -i ens2f0 port 6471 -XXnnvvv 下面是各个部分的详细解释: 1.tcpdump: 这是用于捕获和分析网络数据包的命令行工具。 2.-i ens2f0: 指定监听的网络接口。ens2f0 表示本地网卡),即计算机该指定网络接口捕…...
高可用集群故障之join
本文记录了在部署高可用的k8s集群时,遇到的一个故障及其解决方法。 集群环境 描述:三主三从,eth0为外网网卡,eth1为内网网卡,内网互通。 需求:eth0只负责访问外网,eth1作为集群间的通信。 主…...
uniapp版本升级
1.样式 登录进到首页,弹出更新提示框,且不可以关闭,侧边返回直接退出! 有关代码: <uv-popup ref"popupUpdate" round"8" :close-on-click-overlay"false"><view style"…...
Ubuntu 20.04 x64下 编译安装ffmpeg
试验的ffmpeg版本 4.1.3 本文使用的config命令 ./configure --prefixhost --enable-shared --disable-static --disable-doc --enable-postproc --enable-gpl --enable-swscale --enable-nonfree --enable-libfdk-aac --enable-decoderh264 --enable-libx265 --enable-libx…...
【Web开发】一步一步详细分析使用Bolt.new生成的简单的VUE项目
https://bolt.new/ 这是一个bolt.new生成的Vue小项目,让我们来一步一步了解其架构,学习Vue开发,并美化它。 框架: Vue 3: 用于构建用户界面。 TypeScript: 提供类型安全和更好的开发体验。 Vite: 用于快速构建和开发 主界面如下:…...
SpringBoot源码解析(八):Bean工厂接口体系
SpringBoot源码系列文章 SpringBoot源码解析(一):SpringApplication构造方法 SpringBoot源码解析(二):引导上下文DefaultBootstrapContext SpringBoot源码解析(三):启动开始阶段 SpringBoot源码解析(四):解析应用参数args Sp…...
在ubuntu下一键安装 Open WebUI
该脚本用于自动化安装 Open WebUI,并支持以下功能: 可选跳过 Ollama 安装:通过 --no-ollama 参数跳过 Ollama 的安装。自动清理旧目录:如果安装目录 (~/open-webui) 已存在,脚本会自动删除旧目录并重新安装。完整的依…...
Flutter子页面向父组件传递数据方法
在 Flutter 中,如果父组件需要调用子组件的方法,可以通过以下几种方式实现。以下是常见的几种方法: 方法 1:使用 GlobalKey 和 State 调用子组件方法 这是最直接的方式,通过 GlobalKey 获取子组件的 State,…...
论文阅读 AlphaFold 2
用AlphaFold进行非常精确的蛋白质结构的预测(AlphaFold2) 发表于2021年07月15日 NatureDOI: 10.1038/s41586-021-03819-2自然和科学杂志评选为2021年最重要的科学突破之一2021年AI在科学界最大的突破 前言 2020年11月30号, deepmind博客说AlphaFold解决了50年以来生物学的大挑…...
计算机网络 (62)移动通信的展望
一、技术发展趋势 6G技术的崛起 内生智能:6G将强调自适应网络架构,通过AI驱动的智能算法提升通信能力。例如,基于生成式AI的6G内生智能架构将成为重要研究方向,实现低延迟、高效率的智能通信。信息编码与调制技术:新型…...
如何学习Java后端开发
文章目录 一、Java 语言基础二、数据库与持久层三、Web 开发基础四、主流框架与生态五、分布式与高并发六、运维与部署七、项目实战八、持续学习与提升总结路线图 学习 Java 后端开发需要系统性地掌握多个技术领域,从基础到进阶逐步深入。以下是一个详细的学习路线和…...
探索与创新:DeepSeek R1与Ollama在深度研究中的应用
在当今信息爆炸的时代,获取和处理信息的能力变得至关重要。特别是在学术和研究领域,如何有效地进行深度研究是一个亟待解决的问题。最近,一个名为DeepSeek R1的模型结合Ollama平台提供了一种创新的解决方案。本文将分析并解构这一新兴的研究工…...
Linux 常用命令 - sort 【对文件内容进行排序】
简介 sort 命令源于英文单词 “sort”,表示排序。其主要功能是对文本文件中的行进行排序。它可以根据字母、数字、特定字段等不同的标准进行排序。sort 通过逐行读取文件(没有指定文件或指定文件为 - 时读取标准输入)内容,并按照…...
mantisbt添加修改用户密码
文章目录 问题当前版本安装流程创建用户修改密码老的方式探索阶段 问题 不太好改密码啊。貌似必须要域名要发邮件。公司太穷,看不见的东西不关心,只能改源码了。 当前版本 当前mantisbt版本 2.27 php版本 7.4.3 安装流程 (下面流程不是…...
记录 | Docker的windows版安装
目录 前言一、1.1 打开“启用或关闭Windows功能”1.2 安装“WSL”方式1:命令行下载方式2:离线包下载 二、Docker Desktop更新时间 前言 参考文章:Windows Subsystem for Linux——解决WSL更新速度慢的方案 参考视频:一个视频解决D…...
【Elasticsearch】内置分词器和IK分词器
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
2025美赛数学建模C题:奥运金牌榜,完整论文代码模型目前已经更新
2025美赛数学建模C题:奥运金牌榜,完整论文代码模型目前已经更新,获取见文末名片...
HarmonyOS:ForEach:循环渲染
一、前言 ForEach接口基于数组类型数据来进行循环渲染,需要与容器组件配合使用,且接口返回的组件应当是允许包含在ForEach父容器组件中的子组件。例如,ListItem组件要求ForEach的父容器组件必须为List组件。 API参数说明见:ForEa…...
Effective C++ 规则50:了解 new 和 delete 的合理替换时机
1、背景 在 C 中,new 和 delete 是动态分配内存的核心操作符。然而,直接使用它们有时会增加程序的复杂性,甚至导致内存泄漏和其他问题。因此,了解何时替换 new 和 delete 并选择更适合的内存管理策略,是编写高效、健壮…...
C++ STL:深入探索常见容器
你好呀,欢迎来到 Dong雨 的技术小栈 🌱 在这里,我们一同探索代码的奥秘,感受技术的魅力 ✨。 👉 我的小世界:Dong雨 📌 分享我的学习旅程 🛠️ 提供贴心的实用工具 💡 记…...
android12源码中用第三方APK替换原生launcher
一、前言 如何用第三方的apk替换原生launcher呢?我是参考着这位大神的博客https://blog.csdn.net/hyu001/article/details/131044358做的,完美实现。 这边博客中又加入了我个人的一些改变,整理的。 二、步骤 1.在/packages/apps/MyApp文件…...
Java面试题2025-设计模式
1.说一下开发中需要遵守的设计原则? 设计模式中主要有六大设计原则,简称为SOLID ,是由于各个原则的首字母简称合并的来(两个L算一个,solid 稳定的),六大设计原则分别如下: 1、单一职责原则 单一职责原则的定义描述非…...
【设计模式-行为型】备忘录模式
一、什么是备忘录模式 来到备忘录模式了,这个模式我感觉相对简单一些,就是备份,或者快照。跟前面一样为了加深理解,我们引入一个电影情结来说明啥是备忘录模式,以来加深大家对备忘录模式的认识。那么,在电影…...
flink StreamGraph解析
Flink程序有三部分operation组成,分别是源source、转换transformation、目的地sink。这三部分构成DAG。 DAG首先生成的是StreamGraph。 用户代码在添加operation的时候会在env中缓存(变量transformations),在env.execute()执行的…...
本地AI模型:未来智能设备的核心驱动力
标题:“本地AI模型:未来智能设备的核心驱动力” 文章信息摘要: 未来AI设备(如Meta Ray-Bans)的发展将更加依赖本地语言模型的优化与集成,而非仅依靠云端AI模型。本地模型在隐私保护、推理速度和离线访问方…...
基于SpringBoot的网上摄影工作室开发与实现 | 含论文、任务书、选题表
随着互联网技术的不断发展,摄影爱好者们越来越需要一个在线平台来展示和分享他们的作品。基于SpringBoot的网上摄影工作室应运而生,它不仅为用户提供了一个展示摄影作品的平台,还为管理员提供了便捷的管理工具。本文幽络源将详细介绍该系统的…...
数字人+展厅应用方案:开启全新沉浸式游览体验
随着人们生活质量的不断提升,对于美好体验的追求日益增长。在展厅展馆领域,传统的展示方式已难以满足大众日益多样化的需求。而通过将数字人与展厅进行深度结合,可以打造数字化、智能化新型展厅,不仅能提升展示效果,还…...
基于单片机的家用无线火灾报警系统的设计
1 总体设计 本设计家用无线火灾报警系统利用单片机控制技术、传感器检测技术、GSM通信技术展开设计,如图2.1所示为本次系统设计的主体框图,系统包括单片机主控模块、温度检测模块、烟雾检测模块、按键模块、GSM通信模块、液晶显示模块、蜂鸣器报警模块。…...
多级缓存(亿级并发解决方案)
多级缓存(亿级流量(并发)的缓存方案) 传统缓存的问题 传统缓存是请求到达tomcat后,先查询redis,如果未命中则查询数据库,问题如下: (1)请求要经过tomcat处…...
iic、spi以及uart
何为总线? 连接多个部件的信息传输线,是部件共享的传输介质 总线的作用? 实现数据传输,即模块之间的通信 总线如何分类? 根据总线连接的外设属于内部外设还是外部外设将总线可以分为片内总线和片外总线 可分为数…...
