ICMP 概念

前言

打算从新整理网络这一块,那么我先把概念整理下来。

正文

ICMP是ip的一个组成。他传递差错报文以及其他需要注意的信息。主要用于反馈一些网络传输的问题。因为ip协议很容易丢包,那么icmp可以告诉我们的进程到底为什么丢。

然后再细看一下icmp内部:

8位类型表示什么类型的icmp。

然后代码位是在前面类型的细分。

判断是什么样的icmp,需要去查询icmp表。

icmp 有两种报文,一种是查询类,比如说ping就是查询类,判断有没有通。

那么icmp包括什么内容呢?icmp包括原来发送包的ip首部和ip首部后面的8个字节。

ip首部是为了告诉到底是哪个包出现问题了,然后8个字节是因为tcp或者udp,他们的前面8个字节存放了他们应用程序端口的信息,这个时候操作系统才能给那个应用程序去处理。

icmp什么时候不会产生差错报文?

1.icmp报文如果出错了不会产生差错报文,所以不要完全指望icmp一定会给我们写的程序信息。

2.目的地址是广播地址。

3.作为链路层的广播的数据报。

4.不能作为ip的第一分片。因为如果不是ip的第一分片,里面是没有端口号的,那么发给原主机没有用。

5.源地址不能是本身主机。

然后后面16位是验证icmp有没有损失,这个校验损失不仅校验头部,同样校验数据,和ip协议那个16位不同,ip协议只校验头部有没有丢。

好的,看个例子吧。

上面类型是3,代码类型是3。类型是3是不可达,代码类型是端口不可达,事实上你查表即可。

看下icmp里面的内容是什么。

上面包含了原来发送的ip头部和udp的端口号。

icmp就是这么回事,在工作中我们多用用查查自然就明白了。

posted @ 2020-07-26 19:43  敖毛毛  阅读(2809)  评论(0编辑  收藏  举报