traceroute和ping的工作原理


前言

ping命令通常用于检测一台主机是否可达,对于大多数主机能ping通就代表可达,不能ping通就是不可达,但是有些主机设置了防火墙只允许特定协议的数据包通过,这时ping包就会被主机直接丢弃,而且不会进行回应。为了进一步知道数据包到哪了,就需要traceroute命令,他能返回数据包沿途经过的所有节点ip,这样就能具体知道数据包在哪丢失的了。


一、icmp协议介绍

常用ICMP的报文格式如下图:
在这里插入图片描述
ICMP报文大致可以分为差错报文、请求与应答报文、控制报文。每一种报文都会通过type、和code做进一步的区分。

二、ping使用原理

ping包使用的是ICMP报文中的请求与应答报文。发送端发送一个icmp包给目的端,目的端如果收到该icmp包会进行解析,发现是一个icmp请求包,目的端的网络协议栈就会自动组装一个ICMP应答报文发送给发送端。
执行ping www.baidu.com进行抓包:
在这里插入图片描述
请求包
在这里插入图片描述
响应包
在这里插入图片描述

三、traceroute使用原理

traceroute实现主要有两种形式:
1.发送udp包
2.发送ICMP的请求应答包
window平台使用:tracert www.baidu.com 默认发送ICMP包
在这里插入图片描述

linux平台使用:traceroute www.baidu.com 默认发送udp包,加上-I则使用ICMP包
在这里插入图片描述
工作原理图:
在这里插入图片描述

不管是udp包还是icmp包,都是利用icmp超时报文来获得中间节点的ip地址,原理为:源主机将发送数据包中IP层的TTL从1依次递增,中间节点收到该数据包进行解析,发现TTL=1时自己也不能将他转发到目的地址,然后就回一个超时报文,原ip就为中间节点的Ip地址。
发送icmp包对应的超时数据包:
在这里插入图片描述
发送udp包对应的超时数据包:
在这里插入图片描述

如果上层协议为udp,发送的udp目的端口是一个很大的值,并且一次递增,当udp包到达目标主机后,目标主机解析发送来的udp包,总有一个udp的数据包的端口没有被目标主机监听,这时目标主机发送目标不可达的icmp报文。

如果上层协议为icmp,发送的数据包和ping包一样都是请求应答数据包,请求包到达目标主机后就会回一个应答数据包。
在这里插入图片描述

总结

9分钟让你明明白白看懂Traceroute(路由追踪)的原理与实现
traceroute使用与实现原理分析

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值