紫色代表一级目录
粉红代表二级目录
蓝色代表三级目录
红色代表关键字
橙色代表说明
ICMP报文
为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
ICMP 是互联网的标准协议。
ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。(但属于IP层协议)
ICMP 报文的格式
ICMP 报文的种类
ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
ICMP 差错报告报文
ICMP差错报文伴随着丢弃出错数据产生的。一旦IP发现出错,首先丢弃出错的IP数据报,之后发出ICMP差错报文。
常用的ICMP 差错报告报文
目的地不可达
超时
参数错
重定向(Redirect)
ICMP差错报文— 目的地不可达
当网络节点认为某数据报的目的地不可达时,就向该数据报的源主机发送一个目的地不可达的ICMP分组。
ICMP差错报文 — 超时
当网络结点发现某数据报的TTL域为零,需要丢弃此数据报时,需要向该数据报的源主机告知超时出错。
当目的主机在分段重组时,规定时间内由于分段丢失未完成重组,需要发送超时报文。
ICMP差错报文 — 参数错
当网络结点或主机发现数据报中的报头参数出错(例如选项出错,无效报头等)时,发送参数错报文。
ICMP差错报文 — 重定向
在Internet中,主机在启动时只知道最少的寻径信息,保证主机将数据报发送出去,但未必是最优路由。启动后,通过ICMP重定向报文,在数据传输过程中,主机可以不断从同一个网络的网络结点中得到新的路由信息。(寻找最佳路由)
不应发送 ICMP 差错报告报文的几种情况
对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
对具有多播地址的数据报都不发送 ICMP 差错报告报文。
对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
ICMP 询问报文
回送请求和回答报文
时间戳请求和回答报文
ECHO请求和应答
用于测试目的地址的可达性,ping命令实现了ECHO请求/应答的功能。
时间戳请求和应答报文
用于时钟同步一个最简单的方法就是ICMP协议中的时间戳请求/应答报文。ICMP先利用时间戳请求和应答报文从其他机器处得到其当前时间,经过计算后再同步时钟。(用于时钟同步)
ICMP报文类型总结
有心人可以尝试ping命令和tracert命令(linux中的tranceroute命令)