icmp简介

  icmp是ip层的一部分,虽然从形式上看icmp被包装在ip的数据部中,感觉和tcp、udp同一层,但实际上icmp被划分到网络层。icmp的主要作用在于传递差错报文。icmp报文的结构为:

     8位类型+8位代码+16位检验和+特有内容

 icmp报文分为查询报文和差错报文,其所表示的含义随着类型字段和代码字段不同而不同,比如类型为3的icmp报文全都是目的不可达报文。具体细节可自行查询。

icmp差错报文有着特殊的限制,下面几种情况是不会导致产生icmp差错报文的:

 1.ICMP差错报文(但是,ICMP查询报文可能会产生ICMP差错报文)

 2.目的地址是广播地址或多播地址的IP数据报

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

 4.不是IP分片的第一片

 5.源地址不是单个主机的数据报。即源地址不能为零地址、环回地址、广播地址或多播地址。

这些规则是为了防止过去允许ICMP差错报文对广播分组响应所带来的广播风暴。

 下面主要说一下icmp差错报文的结构(icmp查询报文本文不进行介绍):icmp简介_第1张图片

其结构如上图所示,由图可知,icmp差错报文必须包括生成该差错报文的数据报IP首部,还必须至少包括跟在IP首部后面的前8个字节。

以上是对icmp的大致介绍,下面我们对ping程序进行简单介绍。

Ping程序主要就是为了测试另一台主机是否可达。该程序发送一份icmp回显请求报文给主机,并等待返回icmp回显应答。

我们称发送回显请求的ping程序为客户,而被ping的主机称为服务器。而大多数的TCP/IP实现都在内核中直接支持ping服务器——这种服务器不是用户进程。

icmp回显请求和回显应答报文如下:

icmp简介_第2张图片







你可能感兴趣的:(网络编程)