Ping与Traceroute

Ping与Traceroute

Ping

Ping用于测试目的主机是否可达。如果目的主机设置了防火墙,会导致ping失败。
ping是基于ICMP协议实现的,不是基于TCP也不是基于UDP,曾经面试被忽悠过
Ping发送一份ICMP回显请求报文给目的主机,并等待返回ICMP回显应答报文
在这里插入图片描述

Unix系统在实现ping程序时会把标识符设置成发送进程的ID号,为了同一台主机可以运行多个ping程序

ping程序在ICMP报文数据中存放发送请求的时间,收到应答报文时即可得到往返时间

如果我们ping一个url,比如“ping www.baidu.com”返回的信息中会有IP地址,说明在ping之前先做了一次dns

ping后加上参数 - R 可以查看路由(即访问目的主机的路径)这会导致ICMP回显请求报文所在的IP数据报的首部中记录了沿途的IP,具体记录在IP首部的选项字段中,最多只有40个字节
在这里插入图片描述

RFC 791[Postel 1981a]指定路由器记录出口IP地址。

一个例子
在这里插入图片描述
在这里插入图片描述

Traceroute

traceroute用于查看IP数据报从一台主机到另一台主机的路由

为什么不用ping -R 而是用traceroute查看路由的原因:

  • 并非所有的路由器都支持ping的记录路由选项
  • ping -R时目的主机必须从收到的IP数据报中提取所有沿路IP信息并复制到ICMP回显响应报文中,traceroute的目的主机不需要这种复杂操作
  • IP首部选项字段空间有限,只能存放九个IP地址,无法满足愈加复杂的网络

Traceroute原理

traceroute使用ICMP报文和IP首部中的TTL来实现记录路由功能
TTL一般初始化为255,每经过一个路由器或主机,TTL就会减一,当TTL为0时,所在路由器或主机会丢弃该IP数据报,并发送一个 ICMP超时报文 给发送端。而ICMP超时报文所在的IP数据报则给发送端提供了所在路由器或主机的IP。
traceroute发送一个UDP数据报给目的主机,并设置UDP端口为一个不可能使用的值(大于30000),一开始traceroute发送一个TTL=1的数据报,如果无法到达目的主机,返回一个ICMP超时报文,发送端拿到了网络中“第一个换乘点”的IP。接着发送一个TTL=2的数据报,如果还是无法到达目的主机,“第二个换乘点”发送ICMP超时报文给发送端。接着TTL=3 TTL=4。。。直到到达目的主机,UDP数据报到达目的主机后会发现端口不可用,会给发送端发送一个 ICMP端口不可用报文 。此时发送端到目的主机的整个路由已经清晰了,tarceroute停止增加TTL

Traceroute的例子

发送端经过路由器ABC到达目的主机,双向箭头表示两台设备之间直连,单向箭头表示IP数据报的传输,线条上面的文字开头数字表示数据报的发送顺序

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值