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

traceroute原理探究

文章中有截图,看不清的话,可以把浏览器显示比例放大到200%后观看。

linux下traceroute的原理

本文通过抓包观察一下linux下traceroute的原理

环境:一台嵌入式linux设备,内网ip是192.168.186.195,其上有192.168.202.1的ip地址。网关是192.168.186.1。外部公网ip一个乌班图设备,ip是221.5.87.66。在嵌入式上抓包,然后传出观察。

过程:

crt上运行tftp服务器。

cmd下验证

C:\Windows\System32>netstat  -ano  | findstr  :69  查看udp69端口是否打开?

  UDP    0.0.0.0:69             *:*                      27556(得到进程号是27556)

  UDP    [::]:69                *:*                      27556

C:\Windows\System32>tasklist  | findstr  27556  根据进程号查程序名

SecureCRT.exe     27556 Console      1     62,852 K

确定已经打开,文件保存目录事先已经设定好C:\Users\zy041\Desktop\seccrt\tftp\log。

已知设备的eth0口上联口192.168.186.195,gw是192.168.186.1

抓包~ # tcpdump  -i eth0  -w  trace2.pcap   host  221.5.87.66  or   icmp

tcpdump: WARNING: eth0: no IPv4 address assigned

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

另起一个ssh,执行traceroute

/mnt/userspace # traceroute  -w 1  -d  221.5.87.66  -w 1是超时等待时间是1秒,-d是不进行dns解析,这样可以提高回显时间。

traceroute to 221.5.87.66 (221.5.87.66), 30 hops max, 38 byte packets

 1  192.168.186.1 (192.168.186.1)  0.464 ms  0.293 ms  0.348 ms

 2  bogon (10.110.1.1)  1.224 ms  0.913 ms  0.957 ms

 3  10.0.64.1 (10.0.64.1)  5.988 ms  3.577 ms  3.588 ms

 4  123.139.2.33 (123.139.2.33)  3.980 ms  3.946 ms  3.903 ms

 5  *  *  221.11.0.2 (221.11.0.2)  4.460 ms

 6  221.11.0.153 (221.11.0.153)  6.493 ms  *  *

 7  *  *  *

 8  112.96.0.198 (112.96.0.198)  44.014 ms  43.995 ms  43.515 ms

 9  120.80.209.146 (120.80.209.146)  40.623 ms  40.636 ms  40.358 ms

10  221.5.87.66 (221.5.87.66)  40.255 ms  39.971 ms  39.960 ms

如图,经过10次到达目的ip221.5.87.66。

停止抓包

~ # tcpdump  -i eth0  -w  trace2.pcap   host  221.5.87.66  or   icmp

tcpdump: WARNING: eth0: no IPv4 address assigned

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

^C60 packets captured   ctrl+c结束抓包

60 packets received by filter

0 packets dropped by kernel

~ # tftp  -pl  trace2.pcap  192.168.186.118  传出文件

trace2.pcap          100% |***************************************************************|  5515   0:00:00 ETA

打开观察:

同一ip发来的ttl exceeded三次,判断可能这个ip收到ttl=1的udp包三次,所以wireshark里添加ttl项

找到ip层的ttl项,增加为列

可以看到,ttl为1-10的包,每个ttl取值发了三次,udp的目的端口每发一次+1,因为ttl exceeded消息,回携带部分收到的ttl=1的包,因为发的是udp消息,所以ip层的ttl=1,而这个ttl exceeed消息因为设备不同,ttl原始值有的是255,有的是128,有的是64,所以经过对应节点后,减1后取值不同。

看最后,ttl=10时,到达目的ip,由目的ip 221.5.87.66发出目的端口不可达(目的端口未打开这个端口),所以源设备收到目的设备ip发出目的端口不可达认为已经到达对方设备,停止发出udp包。

由此,traceroute的原理是发出udp包,ttl从1开始,每个ttl值发三次,udp的目的端口有一个基础值,每发一包,端口+1,记录ttl exceed消息的ip为经过节点ip,在收到目的发出目的端口不可达消息后,认为到达目的设备,停止命令。

相关文章:

traceroute原理探究

文章中有截图,看不清的话,可以把浏览器显示比例放大到200%后观看。 linux下traceroute的原理 本文通过抓包观察一下linux下traceroute的原理 环境:一台嵌入式linux设备,内网ip是192.168.186.195,其上有192.168.202.…...

50_Lua垃圾回收

1.Lua垃圾回收机制概述 Lua采用了一种自动内存管理机制,称为垃圾回收(Garbage Collection, GC)。垃圾回收的主要目的是回收程序中不再被使用的内存,从而避免内存泄漏。Lua的垃圾回收器负责回收动态分配的对象,如函数、用户数据、表、字符串、线程、内部结构等。Lua的垃圾…...

Git-2-:Cherry-Pick 的使用场景及使用流程

前面我们说了 Git合并、解决冲突、强行回退等解决方案 >> 点击查看 这里再说一下 Cherry-Pick功能,Cherry-Pick不是merge,只是把部分功能代码Cherry-Pick到远程的目标分支 git cherry-pick功能简介: git cherry-pick 是用来从一个分…...

【C++】21.map和set的使用

文章目录 1. 序列式容器和关联式容器2. set系列的使用2.1 set和multiset参考文档2.2 set类的介绍2.3 set的构造和迭代器构造函数:双向迭代器迭代器: 2.4 set的增删查2.5 insert和迭代器遍历使用样例:2.6 find和erase使用样例:2.7 …...

burpsiute的基础使用(2)

爆破模块(intruder): csrf请求伪造访问(模拟攻击): 方法一: 通过burp将修改,删除等行为的数据包压缩成一个可访问链接,通过本地浏览器访问(该浏览器用户处于登陆状态&a…...

ElasticSearch 同义词匹配

synonym.txt 电脑, 计算机, 主机 复印纸, 打印纸, A4纸, 纸, A3 平板电脑, Pad DELETE /es_sku_index_20_20250109 PUT /es_sku_index_20_20250109 {"settings": {"index": {"number_of_shards": "5","number_of_replicas&quo…...

linux RT-Preempt spin lock实现

一、spin_lock概述 Spinlock是linux内核中常用的一种互斥锁机制,和mutex不同,当无法持锁进入临界区的时候,当前执行线索不会阻塞,而是不断的自旋等待该锁释放。正因为如此,自旋锁也是可以用在中断上下文的。也正是因为…...

PySpark广播表连接解决数据倾斜的完整案例

使用PySpark解决数据倾斜问题的完整案例,通过广播表连接的方式来优化性能。 准备数据 假设我们有两张表,一张大表 big_table 和一张小表 small_table ,小表将作为广播表。 from pyspark.sql import SparkSession# 初始化SparkSession spar…...

Chromium CDP 开发(十二):为自己的Domain建立custom_config.json

引言 本章详细介绍了如何为自定义的 CDP Domain 创建 custom_config.json 文件,并通过修改 BUILD.gn 文件来确保自定义的配置文件参与编译。我们通过 inspector_protocol_generate 配置段自动生成自定义 Domain 的头文件和实现文件,并成功将其集成到构建…...

【Vue】全局/局部组件使用流程(Vue2为例)

全局组件和局部组件区别 如何使用 全局组件:全局注册后,可以在任意页面中直接使用。局部组件:在页面中需要先导入子组件路径,注册组件才能使用。 适用场景 全局组件:适用于高频使用的组件,如导航栏、业…...

Vue.js组件开发详解

在现代前端开发中,Vue.js 凭借其简洁、高效、灵活的特性,成为了众多开发者的首选框架之一,而组件化开发则是 Vue.js 的核心优势。组件可以将复杂的 UI 界面拆分成一个个独立的、可复用的小块,极大地提高了开发效率和代码的可维护性…...

解决:ubuntu22.04中IsaacGymEnv保存视频报错的问题

1. IsaacGymEnvs项目介绍 IsaacGymEnvs:基于NVIDIA Isaac Gym的高效机器人训练环境 IsaacGymEnvs 是一个基于 NVIDIA Isaac Gym 的开源 Python 环境库,专为机器人训练提供高效的仿真环境。Isaac Gym 是由 NVIDIA 开发的一个高性能物理仿真引擎&#xf…...

深度学习camp-第J7周:对于ResNeXt-50算法的思考

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 📌你需要解决的疑问:这个代码是否有错?对错与否都请给出你的思考 📌打卡要求:请查找相关资料、逐步…...

java: 错误: 无效的源发行版:17解决办法

遇到“java: 错误: 无效的源发行版:17”的问题,通常是因为项目设置中指定的Java版本与当前环境不一致导致的。以下是几种可能的解决方案: 检查并升级Java版本:确保你已经安装了支持Java 17的JDK版本。你可以通过命令行输入java -v…...

Docker 安装开源的IT资产管理系统Snipe-IT

一、安装 1、创建docker-compose.yaml version: 3services:snipeit:container_name: snipeitimage: snipe/snipe-it:v6.1.2restart: alwaysports:- "8000:80"volumes:- ./logs:/var/www/html/storage/logsdepends_on:- mysqlenv_file:- .env.dockernetworks:- snip…...

Go语言封装加解密包(AES/DES/RSA)

Go语言封装加解密包(AES/DES/RSA) 1. Base64编码与解码2. AES加解密3. DES加解密4. RSA加解密5. SHA256哈希6. 单元测试1. AES加解密单元测试2. DES加解密单元测试3. RSA加解密单元测试4. SHA256哈希单元测试测试用例说明 总结 在现代软件开发中&#xf…...

sql server 对 nvarchar 类型的列进行 SUM() 运算

因为 SUM() 是一个数值聚合函数,不能直接应用于字符串类型的数据。为了正确汇总标准数量,你需要确保该列的数据类型是数值类型,如 int、decimal 或 float。 假设要统计数量列的和,由于数量列是 nvarchar 类型,你需要先…...

java中json字符串键值获取

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version> </dependency>使用fastjson依赖 JSONObject jsonObject JSON.parseObject(s); 这个jsonObject本质就是一个map&…...

MPLS原理及配置

赶时间可以只看实验部分 由来&#xff1a;90年代中期&#xff0c;互联网流量的快速增长。传统IP报文依赖路由器查询路由表转发&#xff0c;但由于硬件技术存在限制导致转发性能低&#xff0c;查表转发成为了网络数据转发的瓶颈。 因此&#xff0c;旨在提高路由器转发速度的MPL…...

口碑很好的国产LDO芯片,有哪些?

在几乎任何一个电路设计中&#xff0c;都可能会使用LDO&#xff08;低压差线性稳压器&#xff09;这个器件。 虽然LDO不是什么高性能的IC&#xff0c;但LDO芯片市场竞争异常激烈。最近几年&#xff0c;诞生了越来越多的精品国产LDO&#xff0c;让人看得眼花缭乱。 业内人士曾经…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

微服务通信安全:深入解析mTLS的原理与实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言&#xff1a;微服务时代的通信安全挑战 随着云原生和微服务架构的普及&#xff0c;服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...

《Offer来了:Java面试核心知识点精讲》大纲

文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上&#xff0c;比如&#xff1a;PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发&#xff0c;当设备上用的是modbus从站时&#xff0c;采集设备数据需要开发modbus主站&#xff1b;当设备上用的是西门子PN协议时&#xf…...