7.网际控制报文协议

1. 协议简介

IP协议缺少主机和管理查询所需要的机制。主机有时需要判断某个路由器或是对方主机是否活跃。网际控制报文协议ICMP是设计弥补上述两个缺点的,它是IP协议的伴侣。ICMP本身是一个网络层协议,但是它的报文并不是直接传递给数据链路层。实际上,ICMP报文首先要封装成IP数据报,然后才被传递到下一层。一个IP数据报,如果协议字段值为1,表示IP数据是ICMP报文

2. 报文

ICMP报文可划分为两大类:差错报告报文和查询报文。差错报告报文报告了路由器或主机在处理IP数据报时可能遇到的问题。查询报文总是成双成对出现,帮助主机或网络管理员从某个路由器或对方主机获取特定的信息

2.1 报文格式

ICMP报文由一个8字节的首部和可变长度的数据部分组成。类型字段定义了报文类型。代码字段指明了发送特定报文类型的原因。检验和字段用于确认数据的正确性。首部的其余部分对于每一种类型的报文都是特有的。差错报文中,数据部分携带的是用于找出引起差错的原始分组的信息。查询报文中,数据部分携带的是基于查询类型的额外信息

2.2 差错报告报文

ICMP不能纠正差错,只是简单地报告差错。差错纠正留给高层协议处理。差错报文总是发送给最初的数据源,因为数据报中关于路由唯一可用的信息就是源IP地址和目的IP地址。ICMP利用源IP地址把差错报文发送给数据报的源点。请注意:所有的差错报文的数据部分,包括原始数据报的IP首部和数据报数据的前8个字节。原始数据报首部是为了向接收差错报文的原始信息源给出关于数据报本身的信息。数据报数据的前8个字节是为了提供关于端口号和序号的信息。一共有5种类型的差错需要处理:终点不可达、源点抑制、超时、参数问题以及改变路由

关于ICMP差错报文的一些要点:对于携带ICMP差错报文的数据报,不再产生ICMP差错报文;对于分片的数据报,如果不是第一个分片,不产生ICMP差错报文;对于具有多播地址的数据报,不产生ICMP差错报文;对于具有特殊地址的数据报,不产生ICMP差错报文

终点不可达:路由器无法数据报找出路由,或者主机无法交付数据报时,数据报被丢弃,然后由路由器或主机向发出数据报的源主机返回一个终点不可达报文。注意:第一点,代码2或3的终点不可达报文只能由目的主机常见,其余的只能由路由器常见。第二点,即使路由器没有发送终点不可达报文,也不一定表示数据报已经被交付。路由器无法检测出导致分组没有交付的所有问题。

源点抑制:IP协议是无连接协议。ICMP的源点抑制报文是为了给IP协议增加某种程度的流量控制和拥塞控制而设计的。当路由器或主机因拥塞而丢弃数据报时,向数据报的发送方发送一个源点抑制报文。存在两个作用:第一,通知源点数据报已经被丢弃。第二,警告源点某处出现拥塞,必须放慢发送过程,直到拥塞得到缓解为止。存在几点值得注意:首先,遭遇拥塞的路由器或目的主机必须为丢失的每一个数据报向源主机发送一个源点抑制报文。其次,没有一种机制可以告诉源点,拥塞得到缓解,可以按原有速率发送数据报。源点只是不断地降低发送速率,直到不再收到更多的源点抑制报文位置。最后,一对一的通信或多对一的通信都可能产生拥塞。多对一通信情况,多个源点产生的数据报都必须由一个路由器或目的主机处理,源点抑制报文不一定有用。因为路由器或目的主机不知道哪个源点应该对拥塞负责

超时:一旦路由器将数据报的生存时间字段值递减后变成零,就丢弃数据报,并向源点发送超时报文。当最后的终点在规定的时间内没有收到所有的分片,就丢弃已收到的分片,并向源点发送超时报文。超时报文中,代码0仅供路由器使用,说明数据报的生存时间字段值为零。代码1仅供目的主机使用,说明不是所有的分片都按时到达

参数问题:当数据报经过因特网传输时,首部出现的任何二义性都可能产生严重的问题。如果路由器或目的主机发现二义性,或者数据报的某个字段缺少某个值,就会丢弃数据报,并向源点返回一个参数问题报文。代码0表示首部的某个字段有差错或二义性,指针字段值指向有问题的字节。代码1表示缺少所需的选项部分,不使用指针

改变路由:路由器参与路由选择的更新过程,并且更新是经常进行的,影响效率。为了提高效率,主机不参与路由选择更新过程,因为因特网上的主机数量比路由器多很多。动态地更新主机的路由表产生无法容纳的通信量。主机通常使用静态路由选择。开始阶段,主机的路由表项数目有限,通常只知道默认路由器的IP地址。因此,主机可能把发往另一个网络的数据报发给一个错误的路由器。收到数据报的路由器会把它转发给正确的路由器。但是,为了更新主机的路由表,路由器要向主机发送一个改变路由报文。代码0对特定网络路由的改变。代码1对特定主机路由的改变。代码2基于指定服务类型的对特定网络路由的改变。代码3基于指定服务类型的对特定主机路由的改变

2.3 查询

回送请求与回答:回送请求与回送回答报文为了诊断而设计的,两者组合起来确定两个系统之间能否彼此通信。一个主机或路由器可以向另一个主机或路由器发送回送请求报文。收到回送请求报文的主机或路由器产生回送回答报文,并返回给源发送方。回送请求和回送回答报文可被用来检测IP协议的工作情况,检查另一个主机是否可达

时间戳请求与回答

两个主机或路由器可以使用时间戳请求和时间戳回答报文来确定IP数据报在两个机器之间来回所需的往返时间。也可用于同步两个机器的时钟。源点生成时间戳请求报文,源点把通用时间填入原始时间戳字段,其它两个时间戳字段填入零。终点生成时间戳回答报文,终点把请求报文的原始时间戳复制到回答报文的相同字段。然后,在接收时间戳字段填入收到请求报文时的通用时间。最后,终点在回答报文离开前将通用时间填入发送时间戳。发送时间=接收时间戳-原始时间戳。接收时间=分组返回时间-发送时间戳。往返时间=发送时间+接收时间。只有当源点和终点机器的时钟是同步的,发送时间和接收时间的计算才是准确的。但是,即使两个时钟没有同步,往返时间的计算还是准确的,因为每一个时钟在往返时间的计算出现两次,它们在同步上的差别被抵消。时间差=接收时间戳-原始时间戳-单向经历时间

2.4 检验和

发送方计算检验和的步骤:检验和字段置为零;计算首部和数据的所有16位字之和;得到的和求反码,得到检验和;结果存储在检验和字段

时间: 2024-10-16 08:10:49

7.网际控制报文协议的相关文章

2016.7.9 计算机网络复习要点第四章之网际控制报文协议ICMP

1.ICMP允许主机或路由器报告差错情况和提交有关异常情况的报告:为了更有效地转发IP数据报和提高交付成功的机会: 2.ICMP不是高层协议,因为ICMP报文是装在IP数据报中的,作为其中数据部分,所以是IP层的协议: 3.ICMP报文的种类: (1)ICMP差错报告报文 (2)ICMP询问报文 4.ICMP报文的格式: (1)前4个字节是统一的格式,共有三个字段:类型,代码,检验和: (2)接着的4字节,与ICMP的类型有关,最后是数据字段,其长度取决于ICMP的类型: 5.几种常用的ICMP

国际控制报文协议ICMP

国际控制报文协议ICMP ICMP简介 ICMP 用于主机或路由器报告差错情况和提供有关异常情况的报告(检测网络错误). ICMP 不是高层协议,而是 IP 层的协议. ICMP 报文的格式 ICMP 报文的类型 ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型.代码和检验和.接着的 4 个字节的内容与 ICMP 的类型有关. ICMP报文可分为两大类:一.有关信息采集和配置的ICMP报文(称为查询报文(query)或者信息类报文(information message)),二.

ICMP:Internet控制报文协议

ICMP:Internet控制报文协议. 是IP层的组成部分,传递差错报文或其他信息. ICMP报文被封装在IP数据报内部: 详细格式例如以下所看到的: 个字段含义例如以下: 8位类型.表示该ICMP报文的含义.如目的不可达.超时.请求回显等. 8为代码. 进一步描写叙述该ICMP报文.ICMP报文的类型由类型字段和代码字段共同决定. 16位检验和.和IP首部检验和的算法同样. 我们常常使用的ping程序就是基于ICMP报文进行的传输.pingclient发送一个ICMP回显请求报文,serve

《TCP/IP详解卷1:协议》第6章 ICMP:Internet控制报文协议-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 <TCP/IP详解卷1:协

《TCP/IP详解卷2:实现》笔记--ICMP:Internet控制报文协议

ICMP在IP系统间传递差错和管理报文,是任何IP实现必须和要求的组成部分.可以把ICMP分成两类:差错和查询.查询报文 是用一对请求和回答定义的.差错报文通常包含了引起错误的IP包的第一个分片的IP首部(和选项),加上该分片数据部分 的前8个字节. 下图显示了所有目前定义的ICMP报文.双线上面的是请求和回答报文,双线下面的是差错报文. PRC_栏显示了Net/3处理的与协议无关的差错码和ICMP报文之间的映射.对请求和回答,这一列是空的.因为在这种情况 下不会产生差错.如果对一个ICMP差错

TCP/IP详解,卷1:协议--第6章 ICMP:Internet控制报文协议

引言 I C M P经常被认为是 I P层的一个组成部分.它传递差错报文以及其他需要注意的信息. I C M P报文通常被I P层或更高层协议( T C P或U D P)使用.一些I C M P报文把差错报文返回给 用户进程. 在本章中,我们将一般地讨论 I C M P报文,并对其中一部分作详细介绍:地址掩码请求和 应答.时间戳请求和应答以及不可达端口 ICMP报文的类型 各种类型的I C M P报文如图6 - 3所示,不同类型由报文中的类型字段和代码字段来共同决定. 图中的最后两列表明 I C

深入浅出网工第二个协议---Internet控制报文协议ICMP

ICMP简介 ICMP(Internet Control Message Protocol)是网络层的一个重要协议ICMP的作用:用来在网络设备间传递各种差错和控制信息,它对于收集各种网络信息.诊断和排除各种网络故障具有至关重要的作用ICMP协议中用到的报文类型:Echo-Request和Echo-Reply 两种报文 使用的都是单播报文 ICMP错误报告 ICMP定义了各种错误消息,用于诊断网络连接性问题:根据这些错误消息,源设备可以判断出数据传输失败的原因.比如,如果网络中发生了环路,导致报

ICMP:Internet控制报文协议实现学习笔记

ICMP是网络层的一个协议,可以看作IP协议的附属协议,因为它主要被IP用来与其他主机或路由器交换错误报文及其他需要注意的信息.当然,更高层协议(tcp/udp)甚至有些用户进程也可能用到ICMP报文 注册ICMP协议和ICMP协议的处理涉及以下文件: net/ipv4/icmp.c ICMP协议处理入口 net/ipv4/af_inet.c 网络层和传输层接口 ICMP报文结构 参见tcp/ip协议学习笔记(5)Internet Control Message Protocol(ICMP) 注

ICMP Internet控制报文协议

ICMP端口不可达验证. 1.准备 window上下载tftp32软件,并设置好服务器IP地址(window系统的ip),并关闭windows防火墙.如下图所示: 2.ubuntu虚拟机,安装tftp服务,并安装wireshark. sudo apt-get install tftp 3. 打开wireshark. 启动tftp服务,并连接window,指定8000端口,这个端口号是没有进程在使用的,当需要get文件,最终会显示端口不可达,超时. wireshark显示端口不可达.(window