Introduction to Computer Networking学习笔记(八):ICMP协议

保证网络层能够正常工作的三个机制

1.IP协议

封装datagram;

端对端hop to hop传输。

2.转发表

通过算法更新路由中的转发表。

3.互联网报文控制协议ICMP(Internet Control Message Protocol)

在终端与路由之间传递网络层信息;

报告出现的问题反馈;

帮助诊断问题。

ICMP详解:

概念:

ICMP协议是在网络层之上的,也就是说严格意义上来说它是属于传输层的。当路由想要报告一个错误并返回给源发送者时,它会将源数据封装进ICMP payload,并传输到网络层,形成datagram之后发送给源发送者。比如当一条以太网帧TTL过期,也就是认为该帧陷入了循环,就会产生ICMP消息。并且ICMP消息是不可靠的,有点类似于UDP。

产生过程:

下面是一个ICMP包产生的过程,最上面一条是出现错误的原始IP报文,它会将原始报文的首部及DATA部的前8byte内容封装到ICMP message中,前面添加TYPE及CODE之后封装到一条新的IP报文中,添加IP首部,源地址为当前路由IP,目标地址为原始报文发送者IP。发送回去。

Introduction to Computer Networking学习笔记(八):ICMP协议

可能导致ICMP消息产生的原因及对应TYPE、CODE:

ICMP Type

ICMP Code

Description

0

0

Echo Reply (used by ping)

3

0

Destination Network Unreachable

3

1

Destination Host Unreachable

3

3

Destination Port Unreachable

8

0

Echo Request (used by ping)

11

0

TTL Expired (used by traceroute)

 

其中ping利用ICMP的机制如下图:

Introduction to Computer Networking学习笔记(八):ICMP协议

traceroute也是利用里ICMP,我们可以在terminal用traceroute查看一个请求经过的所有的路由,工作机制如下图:host A依次发送TTL=1,2,...的UDP协议消息,这样依次第1,2,...个路由器会返回ICMP消息,这样就知道了各个路由的信息。同时这些消息会包含一个错误的端口号,当到达host B时,host B会返回port UNreachable的ICMP消息,这样就获得host B的信息。

Introduction to Computer Networking学习笔记(八):ICMP协议