网络层协议(2):ICMP,Ping,Traceroute

来源:互联网 发布:刷关注软件 编辑:程序博客网 时间:2024/05/16 23:45

ICMP:Internet控制报文协议
ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。

ICMP报文是在IP数据报内部被传输的,这幅图展示的是ICMP报文封装在IP数据报内部:

这里写图片描述

下面我们再来看看ICMP报文的具体格式:

这里写图片描述

ICMP报文有各种类型,不同类型由报文中的类型字段和代码字段共同决定。在这里,我们有一个限制,在对ICMP差错报文进行响应时,永远不会生成另一份ICMP差错报文(如果没有这样的限制,可能会遇到一个差错产生另一个差错的情况,而差错再产生差错,这样会无休止的循环)。在这里,我们将总结一份查询报文(ICMP时间戳请求与应答)和一份差错报文(ICMP端口不可达报文)。

ICMP时间戳请求允许系统向另一个系统查询当前时间。返回的建议值时自午夜开始计算的毫秒数,协调的统一时间,这种ICMP报文的好处就是它提供了毫秒级的分辨率。由于返回的时间是从午夜开始计算的,因此调用者必须通过其他方法获知当时的日期,这是它的一个缺陷。ICMP时间戳请求和应答报文格式如下:

这里写图片描述
请求端填写发起时间戳,然后发送报文。应答系统收到请求报文时填写接收时间戳,在发送应答时填写发送时间戳。但是,实际上,大多数的实现把后面两个字段设成相同的值。

这里有一个简单程序(名为icmptime),给某个主机发送ICMP时间戳请求,打印出返回内容。它在我们的小互联网上运行结果如下:

sun %icmptime badiorig=83573336recv=83573330,xmit=83573330,rtt=2msdifferernce =-6mssun %icmptime badiorig=83577987recv=83577980,xmit=83577980,rtt=2msdifferernce =-7ms

程序中打印出ICMP报文中的三个时间错,发起时间戳(orig),接收时间戳(recv),以及发送时间戳(xmit)。我们可以计算出往返时间(rtt),它的值是收到应答时的时间值减去发送请求时的时间值。difference的值是按接收时间戳值减去发起时间值。
如果我们相信RTT的值,并且相信RTT的一半用于请求报文的传输,另一半用于应答的传输,那么为了使本机时钟与查询主机的时钟一致,本机时钟需要进行调整,调整值是difference减去RTT的一半。

现在来分析一种ICMP差错报文,即端口不可达报文,它是ICMP目的不可到达报文中的一种,以此来看ICMP差错报文中所附的信息,可以用UDP来查看它。

UDP的规则之一是,如果收到一份UDP数据报而目的端口与某个正在使用的进程不相符,那么UDP返回一个ICMP不可达报文。但是值得注意的是,ICMP报文时在主机之间交换的,并未指明端口号。而每个20字节的UDP数据报则是从一个特定端口号(如2924)发送到另一个特定端口号(如8888)。
我们可以看看每个返回的ICMP端口不可达报文的完整长度。这里的长度为70字节,各字段分配如下图:

这里写图片描述

ICMP的一个规则是,ICMP差错报文必须包括生成该差错报文的数据报IP首部(就是导致差错产生的UDP数据报的IP首部),还必须包括跟在该IP首部后面的前8个字节。在我们的这个例子中,跟在IP首部后面的前8个字节包含UDP的首部。

还有一个重要的事实是包含在UDP首部中的内容是源端口号和目的端口号。由于目的端口号(8888)才导致产生ICMP端口不可达的差错报文。接收ICMP的系统可以根据源端口号(2924)来把差错报文与某个特定的用户进程联系起来。

导致差错的数据报中IP首部要被送回的原因是IP首部中包含了协议字段,使得ICMP可以知道如何解释后面的8个字节,在这个例子中是UDP首部。如果我们查看TCP首部,可以发现源端口和目的端口被包也是被含在TCP首部的前8个字节中。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孕妇血糖高怎么办降下来吗 血糖不高尿糖高怎么办 全血粘度1 5偏高怎么办 血粘度低切偏低怎么办 书侧面上弄上油怎么办 肌注部位打偏了怎么办 吃头孢克圬过敏怎么办 孕妇让蚊子咬了怎么办 怀孕了被蚊子咬了怎么办 夏天被蚊子咬了该怎么办 尿酸高怎么办有什么危害 RH阴性血生二胎怎么办 柴油箱里加了水怎么办 五菱之光烧机油怎么办 软轴水泵不出水怎么办 小车柴油冻住了怎么办 皮卡柴油车冻了怎么办 发现4柴油车冻了怎么办 装载机暖风不热怎么办 柴机油加汽机车怎么办 货车故障灯亮了怎么办 上高速etc故障了怎么办 etc卡上高速失灵怎么办 etc被前车刷了怎么办 车辆首保过期了怎么办 4s店首保过期了怎么办 首保过了时间怎么办 etc电池没电了怎么办 新装的etc不能用怎么办 货车尿素不烧了怎么办 车用尿素冻了怎么办 车子老了漏机油怎么办 房屋30年到期后怎么办 房产40年到期后怎么办 汽油泵坏在路上怎么办 手油泵泵不上油怎么办 汽车刹车线断了怎么办 汽油弄到皮肤上怎么办 汽油闻多了头痛怎么办 新车误加燃油宝怎么办 五征三轮车乱档怎么办