网际控制报文协议ICMP(Internet Control Message Protocol)
1)报文格式:ICMP报文封装到IP报文的数据部分
而ICMP报文的数据部分为要报告差错的IP数据报的IP头部和数据部分前8个字节(IP地址和端口号)
2)ICMP的种类:差错控制报文、询问报文
1> 终点不可达 :路由器不能正确交付数据报。比如UDP包头包含未知端口号
2> 源点抑制 :路由拥塞丢弃报文
3> 时间超过 :TTL = 0
4> 参数问题 :报文头部字段有问题
5> 改变路由(重定向):让主机知道下次应将数据报发送给另外路由器
就是发现到达某个主机,不应该先走默认路由,而应该走另外的路由。
3)以下几种情况都不会导致产生ICMP差错报文
1> ICMP差错报文(但是,ICMP查询报文可能会产生ICMP差错报文)
2> 目的地址是广播地址或多播地址的IP数据报
3> 作为链路层广播的数据报
4> 不是IP分片的第一片
5> 源地址不是单个主机的数据报。即源地址不能为零地址、环回地址、广播地址或多播地址。
这些规则是为了防止过去允许ICMP差错报文对广播分组响应所带来的广播风暴。
4)ICMP询问报文有四种回送请求和回答,时间戳请求和回答,掩码地址请求和回答,以及路由器询问和通过。
1>ICMP回送请求报文:向主机发出询问,接收ICMP回送应答报文测试目的站是否可达以及了解其有关状态。
2>ICMP时间戳请求报文
5)ping命令详解 【应用层直接使用网络层】
网间探测(Packet Internet Groper):测试两个主机之间的连通性。使用ICMP的会送请求与回送回答报文。
ping 127.0.0.1 与 ping 本机网卡地址不同 :区别在于拔掉网线之后
6)Traceroute或Tracert
作用:跟踪一个分组从源点到终点的路径
原理:发送IP数据报(包含无法交付的UDP数据报),第一个TTL =1 得到一个 ICMP时间超过的 差错控制报文
第二个IP数据报TTL =2 得到一个ICMP时间超过的差错控制报文
……
最后一个IP报文传输的是一个无法交付的运输层UDP,返回ICMP 终点不可达的差错报告报文