ICMP:Internet控制报文协议

ICMP传递差错报文以及其他需要注意的信息,通常被IP层或传输层使用。

ICMP基础:

ICMP报文格式如下:


所有ICMP报文的前4个字节是一样的,其他互不相同。

类型字段可以有15个不同的值,以描述特定类型的ICMP报文。

某些ICMP报文还使用代码字段的值来进一步描述不同的条件。

1,ICMP地址掩码请求用于误判系统在引导过程中获取自己的子网掩码。

2,ICMP时间戳请求允许系统向另一个系统查询当前的时间。


ping程序:

常用的ping程序就是基于ICMP协议,其发送一份ICMP回显请求,并等待ICMP回显应答。

约定发送ping请求的guest,被ping的主机为host,一般ping服务器并不是app进程,而是在内核中实现。

ping程序的ICMP请求和应答报文如下图:


unix将标识符填充为发送进程的ID,序号从0开始,每新发送一个新的加1.


trackroute程序:

traceroute程序可以让我们看到IP数据包从一台主机传导另一台主机上所经过的路由,还可以让我们使用IP源路由选项。

traceroute使用ICMp报文和IP首部中的TTL(生存周期)字段。

每个处理数据包的路由器都需要把TTL的值减1或减去数据报在路由器中停留的秒数。

由于大多数的路由器转发数据报的时延都小于1s,所以TTL最终成为一个跳站得计数器。

当路由器收到一份IP数据报,如果其TTL字段为0或1,则路由器不转发该数据报,且将该数据报丢掉,并给信源机发送一个ICMP超时信息,包含这份ICMP信息的IP报文的信源地址就是该路由器的IP地址,这就是traceroute的实现原理。通过发送TTL从1开始的数据报给目标主机,然后加1,直到达到主机,就能遍历出所有的路由器地址。

那么怎么判断到达目标主机呢?

traceroute发送一份UDP数据报给目的主机,但是选择一个大于30000的值作为端口,那么就会产生端口不可达错误,那么当traceroute接收到端口不可达的ICMP回显时就结束遍历。





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值