1、回顾TCP/IP协议栈
为了更有效地转发IP数据报和提高交付成功的机会......
2、ICMP协议的简介
(1)ICMP,全称为Internet Control Message Protocol,即网际控制报文协议、网际控制消息协议。
(2)它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传输起着重要的作用。我们在网络中经常会使用到ICMP协议,只不过我们察觉不到。比如,我们经常使用的用于检查网络通不通的ping命令,这个ping命令的执行过程实际上就是ICMP协议工作的过程。
(3)ICMP协议的工作:
(4)ICMP报文:
3、ICMP差错报告报文(5种)
终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。
无法交付
源点抑制
:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送率放慢。拥塞丢数据
老谢的书、实际应用中已被淘汰
时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
TTL=0
参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
首部字段有问题
改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
值得更好的路由
4、ICMP差错报告报文数据字段
5、不应发送ICMP差错报文的情况
对ICMP差错报告报文不再发送ICMP差错报告报文。
对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。
对具有组播地址的数据报都不发送ICMP差错报告报文。
组播地址对应是发给一批主机,广播地址对应是发给全部主机。
对具有特殊地址(如127.0.00或0.0.0.0)的数据报不发送ICMP差错报告报文。
6、ICMP询问报文
回送请求和回答报文
主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
测试目的站是否可达以及了解其相关状态。
时间戳请求和回答报文
请某个主机或路由器回答当前的日期和时间。
用来进行时钟同步和测量时间。
掩码地址请求和回答报文。已经不再使用了
路由器询问和通告报文。已经不再使用了
7、ICMP的应用
PING:测试两个主机的连通性,使用了ICMP回送请求和回答报文。
Tranceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文。