ping和traceroute的原理以及实战并抓包分析

ping和traceroute的原理以及实战并抓包分析

Ping程序

ping程序是测试另一个主机是否可达的常用程序。 ping程序的原理就是发送一个ICMP报文给主机,等待返回的ICMP回显应答。

【ICMP协议:用来在网络中传递包括网络不同、不可达等控制信息】

基于ICMP的ping常用来检测网络是否可通以及大致估计网络的速度。通常用ping检测网路时,首先直接ping目标主机,如果不能ping通则大多数情况下说明网络是有问题的。通常检测网络可以按照这个顺序:先ping自己,再ping自己的网关,再ping自己的DNS,然后就可以ping远程主机,通过该顺序可以定位到问题所在的部分。

ping程序通过在ICMP报文数据中存放发送请求的时间值来计算往返时间。当应答返回时,用当前时间减去存放在ICMP报文中的时间值,得到往返时间。
在这里插入图片描述
分析:可以看到目标地址的IP地址,以及该ping包是否返回,还有时间,根据时间也可以大致估计网络速度。

wireshark抓ping包分析:

请求报文:
在这里插入图片描述
应答报文:
在这里插入图片描述

ping可以加一些选项,包括 -s设置包的大小,-c设置ping的次数,-t表示一直ping直至自己终止,-R查看路由选项

traceroute

traceroute用来查看从一个主机发送数据到另一个主机所经过的路由.(大多数情况下,短时间内从源向目的的两份连续IP数据具有相同的路由)

traceroute程序使用ICMP报文和IP首部中的TLL字段,当一个数据包经过一个路由器,处理数据包的路由器会把TLL减1,当一个路由器收到的IP数据包的TLL字段是0和1则路由器将不转发该数据包,并且,路由器会将该数据包丢弃然后给源发送一个ICMP超时信息,traceroute程序的关键就是利用了该ICMP报文的源地址就是路由器的IP地址。因此,基于该想法,不断发送TLL字段为1,为2,为3 …的数据包,则就得到了沿途路由器的地址。那如何知道已经到达目的地?traceroute程序会发送一个UDP数据包给目的主机,选择一个不可达的端口号作为目的端口,使得目的主机的任何应用都不会使用该端口号,则当目的主机收到该报文后会恢复一个端口错误的ICMP报文,根据此,traceroute根据端口错误或者超时来确定是路由器还是到达的目的地址。

在windows下命令为tracert:
在这里插入图片描述
过程中可以看到是逐个发送,每次发送的是三个,通过tracert也可以知道从源到目的端口的网络瓶颈在哪里。部分显示*的原因大概率是路由器设置了不处理traceroute报文所致。

抓包分析:
在这里插入图片描述
分析其中的包的信息:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/dingdingdodo/article/details/107246567
今日推荐