您的位置:首页 > 理论基础 > 计算机网络

TCP,IP详解,卷一:协议学习笔记之第六章 ICMP: Internet控制报文协议

2015-12-16 09:51 811 查看


1,ICMP报文是在IP数据报内部被传输的,如图6-1所示:



2,ICMP报文前4个字节都是一样的,但是剩下的其他字节则互不相同,其格式如图6-2所示:



3,一份ICMP差错报文,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前8个字节。这样,接收ICMP差错报文的模块就会把它与某个特定的协议(根据IP数据报首部中的协议字段来判断)和用户进程(根据包含在IP数据报前8个字节中的TCP或UDP端口号来判断)联系起来。
4,以下情况不会产生ICMP差错报文:
1》ICMP差错报文(但是,ICMP查询报文可能会产生ICMP差错报文)。
2》目的地址是广播或多广播地址的IP数据报。
3》作为链路层广播的数据报。
4》不是IP分片的第一片。
5》源地址不是单个主机的数据报。
5,ICMP地址掩码请求与应答用于无盘系统在引导过程中获取自己的子网掩码,格式如图6-4所示。



6,广播的定义是指局域网上的所有主机。

7,ICMP时间戳请求与应答报文格式如图6-6所示:

ICMP时间戳请求允许系统向另一个系统查询当前的时间。返回的建议值是自午夜开始计算的毫秒数。



8,UDP规则之一是,如果收到一份UDP数据报而目的端口与某个正在使用的进程不相符,那么UDP返回一个ICMP不可达报文。
9,ICMP报文是在主机之间交换的,并未指明端口号。
10,这里的ICMP端口不可达报文的完整长度是70字节。各段分配如图6-9所示。



1》ICMP的一个规则是,ICMP差错报文必须包括生成该差错报文的数据报IP首部(包含任一项),还必须至少包括跟在该IP首部后面的前8个字节。
2》产生差错的数据报IP首部中含有协议字段,使得ICMP可以知道如何解析后面的8个字节(本例中是UDP首部)。
3》最后8个字节,如本题中的UDP首部中需要的内容是源端口号和目的端口号。
11,ICMP不可达报文的格式一般如图6-10所示。



12,当ICMP报文返回时,为什么TFTP客户端还要继续重发请求呢?
这是由于网路变成中的一个因素,即BSD系统不把插口(socket)接收到的ICMP报文中的UDP数据通知用户进程,除非该进程已经发送了一个connect命令给该插口。
13,ICMP协议大致分为两类,一种是查询报文,一种是差错报文。其中查询报文有以下几种用途:
1》PIng查询。
2》子网掩码查询(用于无盘工作站在初始化自身的时候初始化子网掩码)
3》时间戳查询(可以用来同步时间)
以上三者在ICMP报文中都有标识符和序列号,发送端应用程序在标识字段内存入一个唯一的数值,以区别于其他进程的应答。序列号字段使得客户程序可以在应答和请求之间进行匹配。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: