ICMP协议

互联网控制报文协议

1. 主要功能

  • 确认IP包是否成功送达目的主机
  • 报告发送过程中IP包被丢弃的原因和改善网络设置等

1.1 ICMP包头格式

  • ICMP报文是封装在IP包里面的,它工作在网络层

1.2 类型字段

  • 查询报文类型:用于用于诊断查询信息
    • 0:回送应答
    • 8:回送请求
  • 差错报文类型:用于通知出错原因的错误消息
    • 3:目标不可达
    • 4:原点抑制
    • 5:重定向或改变路由
    • 11:超时

2. ping原理

  • 其实就是应用的是ICMP的查询报文类型

  • ping的时候,源主机向目标主机发送回送请求的消息(类型为8),如果成功接收到目标主机发来的回送应答消息(类型为0),则表示网络可达
  • 这里是对原生的ICMP进行了一些封装,多了两个字段
    • 标识号:用以区分是哪个应用发的ICMP包,用进程PID作为标识符
    • 序号:从0开始,每次发送一个新的回送请求就会加1,可以确定网络包是否有丢失
  • 选项数据中,ping还会存放发送请求的时间值,用来计算往返时间,说明路径的长短

3. 差错报文类型

3.1 目标不可达(类型为3)

5种常见的目标不可达类型的代码

  • 网络不可达(代码为0):网络不通
  • 主机不可达(代码为1):找不到对应的IP
  • 协议不可达(代码为2):比如目标主机禁止TCP协议访问。则当主机使用TCP协议访问目标端口会返回该代码
  • 端口不可达(代码为3):找不到这个端口,或者目标主机没有进程监听这个端口
  • 需要分配但设置了不分片(代码为4):发送端主机发送的IP包超过了途中经过的路由器所能接受的MTU大小时,因为不进行分片,则会直接抛弃,此时会返回该代码

3.2 原定抑制信息(类型为4)

  • 告诉发送主机放缓发送速率。
  • 比如进过的路由器向低速线路发送数据时,其发送队列的缓存变为0而无法发送出去时,可以向ip包的源地址发送一个ICMP原定抑制信息。

3.3 重定向消息(类型为5)

  • 告诉发送主机下一次发给另一个路由器

3.4 超时消息(类型为11)

  • IP中有一个字段为TTL(为了防止IP包无休止在网络上转发),他的值每经历一个路由器都会减一,知道为0时该IP包会被丢弃
  • 丢弃时,路由器会发送一个ICMP超时信息给发送端主机

4. traceroute原理

  • 利用了差错报文类型
  • 作用一:通过故意设置特殊的TTL,用来追踪去往目的ip时沿途经过的路由器
  • 作用二:通过故意设置不分片,确定路径的MTU

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值