《计算机网络基础》笔记 6——网际控制报文ICMP

0 前言

懈怠了啊兄弟!
总想攒点东西再发,这个思想不可取!持续集成,OK?

1 ICMP是个啥?

今天总结的这个ICMP是啥?好像平时都是TCP,UDP,IP,没怎么搞过这个嘛。(只限小白)
ping总用过吧?网络有问题,先ping一下。其实这个ping工具就是使用的ICMP。

首先需要明确,这个协议是IP层,即网际层,并不是更上层传输层协议。为了更有效地传输IP数据报提高交付成功机会,在网际层使用ICMP。为啥用了它就提供交付成功机会了?因为它允许主机和路由器报告差错情况和提供异常情况报告。

2 ICMP格式及分类

其格式如下:

类型如下:

截图一时爽,一直截图一直爽!
下面这段文字,我差点也懒得敲出来,那还总结个毛线?直接分享个书名得了!还是纯手打加深记忆为好。
ICMP差错报告报文共有四种,如下说明:
(1)终点不可达 当路由器或主机不能交付数据报时,向源点发送终点不可达报文
(2)时间超过 当路由器收到生存时间为0的数据报时,除了丢弃该数据报外,还会向源点发送时间超过报文。当终点在预计时间内未收到一个数据报的所有数据报片时,把已收到的数据报片丢弃,向源点发送时间超过报文。
(3)参数问题 当路由器或主机收到的数据报的首部中有字段的值不正确时,丢弃,然后向源点发送参数问题报文。
(4)改变路由(重定向) 路由器把改变路由报文发给主机,让主机知道下次发送数据报时使用新的路由。这个注意,是路由器发给主机。主机刚开始工作时,会有一个默认路由器。当这个默认路由器发现有更好的路由到达目的地址时,就会向主机发送改变路由报文,主机就在自己的路由表中增加一个项目。

差错报文格式如下:

看到图中ICMP报文数据部分除了IP首部还有数据部分的8个字节,这是啥东东,可以回忆一下IP数据报格式。。。开玩笑,那是传输层端口号(UDP和TCP)和传输层报文的发送序号(对于TCP),这个呢是给高层协议也就是从传输层看的。
什么事情呢,都会有例外,这个差错报告也有,对于以下几种情况,就不进行差错报告:
(1)具有多播地址的数据报
(2)ICMP差错报告报文本身
(3)127.0.0.0和0.0.0.0等特殊地址
(4)对第一个分片的数据报片后续的所有数据报片

说完了差错报告,来说说ICMP询问报文,这个呢有两种:
(1)回送请求和应答 由路由器或主机向特定主机发送ICMP回送请求报文,收到该报文的主机需要向路由器和主机发送ICMP回送应答报文,主要用来测试目的站是否可达及其相关状态
(2)时间戳请求和应答 时间戳请求报文是请某个路由器或主机回答当前的日期和时间。在应答报文中包含一个32位的字段,存储的是从1900年1月1日起到当前时刻的秒数。用于时间同步和时间测量。

3 ICMP应用

(1) ping
第一节也说了,ping就是用的ICMP,具体是使用了ICMP回送请求和应答报文。
(2)traceroute
traceroute是Unix系统中的名字,Windows系统中是tracert,使用的是ICMP时间超过和终点不可达差错报告报文。具体实现如下截图所述:

posted @ 2020-01-10 16:29  飞吧小鸡  阅读(294)  评论(0编辑  收藏  举报