ICMP与ping
ICMP的格式
ping是基于ICMP协议工作的。ICMP全称是Internet Control Message Protocol,就是互联网控制报文协议。
控制主要指的是?
网络包在异常复杂的网络环境中传输时,常常会遇到各种问题。遇到问题时,不能死的不明不白,所以需要传出消息来报告情况,这样才能调整传输策略。类比古代行军中,将军要通过侦察兵掌握情况,控制全局。
ICMP 是封装在IP包里面的。因为传输指令的时候,需要源地址和目标地址
ICMP报文有很多类型,不同的类型有不同的代码。最常用的类型是主动请求为8,主动请求的应答为0。
查询报文类型
ICMP查询报文类型和主动应答的ICMP协议。ping 包比如原生的ICMP,多了两个字段,一个是标识符,用于标识功能的。一个是序号,统计回来数目的。
差错报文类型
- 终点不可达。 网络不可达为0,主机不可达为1,协议不可达为2,端口不可达为3,需要进行分片单设置了不分片位代码为4。
- 源站抑制。也就是让源站放慢发送速度。
- 时间超时。超过网络包的生存时间还没到
- 路由重定向。下次发给另外一个路由器。
查询报文类型的使用
差错报文类型的使用
Traceroute的第一个作用就是故意设置特殊的TTL,来追踪去往目的地时沿途经过的路由器。
Traceroute故意设置不分片,来确定路径的MTU。
小结
- ICMP相当于网络世界的侦察兵,两种类型的ICMP报文,一种是主动探查的查询报文,一种是异常报告的差错报文。
- ping使用查询报文,Traceroute使用差错报文。