1. 概述
如图1所示,交换机Router,SW1,SW2的所有表项为空,Host 1要ping Host 2,即Host 1要给Host 2发送ICMP echo请求,Host 2收到请求之后,发现是请求自己的IP地址,会回复ICMP echo应答报文。
图1 网络拓扑图
Host 1的IP地址为1.1.1.1/24,默认网关为1.1.1.254,MAC地址为ca02.1a14.0000;
Host 2的IP地址为2.2.2.2/24,默认网关为2.2.2.254,MAC地址为ca03.1a14.0000;
Router的fa0/0口的IP地址为1.1.1.254/24,MAC地址为ca06.1b2c.0008;
Router的fa0/1口的IP地址为2.2.2.254/24,MAC地址为ca06.1b2c.0006。
2. 三层转发
2.1 Host 1的ARP请求
Host 1将ICMP echo请求报文,封装到源IP地址为1.1.1.1,目的IP地址为2.2.2.1的IP报文中。然后查询Host1的路由表,将报文准备发送给Host 1的默认网关1.1.1.254。由于Host 1没有其默认网关的MAC地址,因此Host 1会将该报文存到内存,先发送ARP请求。
Host 1将源物硬件址为ca02.1a14.0000,源协议地址为1.1.1.1,目的硬件地址填充00:00:00:00:00:00,目的协议地址为1.1.1.254的ARP请求,封装在源MAC地址为ca02.1a14.0000,目的MAC地址为ffff.ffff.ffff的以太网帧发出,如图2所示。
图2 ARP请求
2.2 SW1学习MAC地址
Sw1收到该帧广播,同时将ca02.1a14.0000与1口关联起来,加入到MAC地址表。
2.3 Router的ARP应答
Router收到这个帧之后,去掉二层封装,查看到ARP请求中的目的协议地址为fa0/0口地址,会发送响应物理地址为ca06.1b2c.0008,响应协议地址为1.1.1.254,目的MAC地址ca02.1a14.0000,目的IP地址1.1.1.1的ARP应答,封装在源MAC地址为ca06.1b2c.0008,目的MAC地址为ca02.1a14.0000的以太网帧中发出,如图3所示。
图3 ARP应答
同时Router也会将物理地址ca02.1a14.0000与IP地址1.1.1.1存入到自己的ARP表中,如图4所示。
图4 Router的ARP表
2.4 SW1学习MAC地址
Sw1收到帧之后,查询MAC地址表,将帧从1口发出,同时将ca06.1b2c.0008地址与2口关联,加入到MAC地址表中。
2.5 ICMP echo请求
Host 1收到Router发送的ARP应答之后,会将物理地址ca06.1b2c.0008与IP地址1.1.1.254存入到自己的ARP表中,如图5所示。
图5 Host 1的ARP表
Host 1会调出ICMP echo请求,封装成源MAC地址为ca02.1a14.0000,目的MAC地址为ca06.1b2c.0008的数据帧,发送给Router,如图6所示。
图6 ICMP echo请求
Router的fa0/0收到该报文,查询路由表,Router会将该报文发送给从fa0/1发送给Host 2。由于Router的fa0/1口没有2.2.2.2的MAC地址,只能先进行ARP请求。
2.6 Router的ARP请求
Router会将源物理地址为ca06.1b2c.0006,源协议地址为2.2.2.254,目的物理地址填充全0,目的IP地址为2.2.2.2的ARP请求,封装在源MAC地址为ca06.1b2c.0006,目的MAC地址为ffff.ffff.ffff的以太网帧从fa0/1口广播出去。
2.7 SW2学习MAC地址
Sw2收到该帧之后会将该帧广播,同时将ca06.1b2c.0006与1口关联,加入到MAC地址表。
2.8 Host 2的ARP应答
Host 2收到ARP请求之后,会将响应MAC地址ca03.1a14.0000,响应IP地址2.2.2.2,目的MAC地址ca06.1b2c.0006,目的IP地址2.2.2.254的ARP应答,封装在源MAC地址为ca03.1a14.0000,目的MAC地址为ca06.1b2c.0006的以太网帧中发出。同时也将物理地址ca06.1b2c.0006与IP地址2.2.2.254关联起来,存入到自己ARP表中。
2.9 SW2学习MAC地址
Sw2收到帧之后,查询MAC地址表,将帧从2发出,同时将ca03.1a14.0000地址与1口关联,加入到MAC地址表中。
Router获到Host 2给他的ARP响应之后,会将物理地址ca06.1b2c.0006与IP地址2.2.2.254关联,并且加入到ARP表中。这时,Router将刚才的ICMP echo报文转发给Host 2。
2.10 ICMP echo应答
Host 2收到由Host 1发送的ICMP echo请求之后,会将ICMPecho应答封装在源IP地为2.2.2.1,目的IP地址为1.1.1.1的IP报文中,发送给Host 1。
Host 1收到Host 2发送的ICMP echo应答,此次ping的过程结束,如图7所示。
图7 ICMP echo应答
3. 相关报文格式
3.1 ARP报文
其中:
硬件类型:描述硬件类型信息,具体解释如下表所示,长度2字节;
类型编号 |
硬件类型 |
1 |
以太网 |
6 |
IEEE 802网络 |
12 |
本地网 |
15 |
帧中继 |
16 |
ATM |
17 |
HDLD |
19 |
异步传输模式 |
20 |
串行线路 |
21 |
同步传输模式 |
协议类型:描述要映射的协议类型,0x0800为IP协议,长度2字节;
硬件地址长度:1字节;
协议地址长度:1字节;
操作:描述ARP操作类型,1为ARP请求,2为ARP应答,长度2字节;
3.2 ICMP echo报文
类型:0x00为回波响应,0x08为回波请求,长度1字节;其中:
代码:0x00,长度1字节;
校验和:2字节;
标识号:在ping请求中随机产生,2字节;
序号:描述请求与应答序列,在之前的基础上+1,1字节。