路由器封装数据包

 

简介:封装入门

目的:把最基本的数据包被路由器解封装、转发、再封装的过程用动画显示出来。

拓扑:两个主机经一个路由器相连。

步骤:1)H1 ping H2, 得先封装三个报头(link network, protocol) 后才发送。

           2) 路由器收到后,把ping解封装、转发、再封装,送往 H2.

           3)H2收到ping时,把它解封装, 知道这个ping是针对自己的,就回复echo,把 echo封装好才发送。

           4)R1收到echo后,将其转发给H1。H1把echo解封装,知道这个echo是回复自己的,ping成功了 。

初始化:ARP表的MAC地址齐全

这个案例假设H1, H2已经知道彼此的地址。

【注】这个案例一开始假设 H1, H2已经 代理,得到彼此的ARP地址。例,H1的ARP表显示

(11.1.1.2, MAC.R1.1 ("H2")),意思是 H1 所得到的H2的 MAC地址 事实上是R1 的接口E0/1的 MAC地址.

H1 先封装ping报头,然后发送

H1 要ping H2, 得先封装的报头,才能发送。

- 封装协议报头: protocol 设为 ICMP, type 设为 8 (ICMP request)

- 封装网络报头:destination IP 设为10.1.1.2/24 (H2的 IP), source IP 设为 10.1.1.1/24 (H1的 IP).

- 封装Link 报头: destination MAC 设为 MAC.H2, source MAC 设为 MAC.H1.

然后H1发送ping。点击ping包可以查看其报头内容。

【注】 若ARP表没有H2的MAC地址,就不能封装link报头,而导致ping失败。

R1 把Ping解封装、转发、封装

R1 收到Ping 后, 把它解封装、转发、再封装如下:

- 链路报头:比较destination MAC 和自己的 MAC,一样就接受,否则丢弃。

- 网络报头:比较destination IP (11.1.1.2) 和自己的 IP不同,就把ping交给路由引擎。

- R1查看路由表,发现前往11.1.1.2的下一跳接口是E0/2,就把Ping转发到E0/2.

- R1封装链路层报头,把目的MAC地址设为H2的MAC地址。

H2 封装 Echo, 然后发送

H2 要回复Echi 给 H1,得先封装报头

- 封装协议报头: protocol 设为 ICMP, type 设为 0 (ICMP response)

- 封装网络报头:destination IP 设为10.1.1.1/24 (H1的 IP), source IP 设为 10.1.1.2/24 (H2的 IP).

- 封装Link 报头: destination MAC 设为 MAC.H1, source MAC 设为 MAC.H2.

然后H2 发送Echo。

H1 解封装 Echo,Ping成功

R1 收到echo, 把它解封装、转发、再封装,然后从E0/1接口发送出去。

H1 收到Echo, 进行解封装,从链路报头,而网络报头,到协议报头。H1知道这个echo是响应自己的ping.。

Ping.成功了。

FAQ

posted on 2011-06-28 20:19  魍魉魑魅  阅读(1045)  评论(0编辑  收藏  举报

导航