通信人家园

标题: ICMP原理描述  [查看完整版帖子] [打印本页]

时间:  2015-12-15 11:22
作者: benjaminxyb     标题: ICMP原理描述

ICMP(Internet Control Message Protocol)是一个差错报告机制,通常被IP层或更高层协议(TCP或UDP)使用。ICMP报文被封装在IP数据报内部,作为IP数据报的数据部分通过互联网传递。IP数据报中的字段仅包含源端和最终的目的站,并没记录报文在网络传递中的全部路径(除非IP数据报中设置了路由记录选项)。因此当设备检测到差错时,它无法通知中间的网络设备,只能向源端发送差错报告。
当数据报产生差错时,ICMP只向数据报的源端报告这个差错,既不会去纠正这个差错也不会通知中间的网络设备。网络中多数差错产生于最初的源端,当差错产生于中间的设备时,即使源端收到了差错报告,它也无法判断出这个差错是由中间的哪个网络设备所引起的。
重定向报文当IP数据报应该被发送到另一个路由设备时,收到数据报的路由设备就要发送ICMP重定向差错报文给IP数据报的发送端。重定向报文一般用来让具有很少选路信息的主机逐渐建立更完善的路由表。主机启动时路由表中可以只有一个默认表项。一旦默认路由发生差错,默认路由器将通知它进行重定向,并允许主机对路由表作相应的改动。
ICMP重定向报文的生成和发送需要满足以下条件:

TTL超时报文当报文在转发或组装过程中,发现报文中TLL字段为0,则向源端发送TTL差错报文。

端口不可达报文如果主机/路由设备收到一个UDP/TCP的本机报文,根据报文的目的端口,无法找到对应的进程,则向报文源端发送一个端口不可达报文。

目的不可达报文网络不可达意味着选路失败,主机不可达意味着交付失败。通过报文中的IP首部和原始数据报的前64比特(Internet Header + 64 bits of Original Data Datagram)字段,源端可以得知是哪个地址不可达。
如果路由设备在转发报文时发现报文同时满足以下条件:
那么路由设备将丢弃该报文,同时向源地址返回一个ICMP主机不可达报文,以通知源主机停止发送到该目的地的报文。




时间:  2016-1-11 09:38
作者: 我的岸谁的船


时间:  2016-4-24 15:52
作者: 通信兵出生

需要深入理解




通信人家园 (https://www.txrjy.com/) Powered by C114