这篇文章讲述了上网时数据包转发的全过程,下面是电脑和网络设备连接简略图:

 

局域网 requests post 网关转发 网关如何转发数据包_路由器

以PC1 ping PC3为例讲述数据包转发过程:

1、当PC1 ping PC3时,发现它们的IP不在同一网段,PC1就将数据包发送至网关(1.1.1.1/24),这时需要知道网关的MAC地址,

      PC1于是查找自身ARP缓存表,如果没有则会发出ARP广播包,包中的地址分别为:

      源 IP     : 1.1.1.2/24                源 MAC    :   a.a.a(PC1)

      目的 IP :   1.1.1.1/24               目的 MAC :   f.f.f

2、交换机SW1从e0/1接口收到数据包,解封后读取数据包的MAC地址,将其写入SW1的MAC地址表,发现该数据包是广播包,加

      上帧头后向来源接口外的所有接口发送数据包,PC2接口收到该数据包发现其目的IP地址(1.1.1.1/24)与自身不符,丢弃该数据

      包并不做回应。经过交换机后的源IP、源MAC、目的IP、目的MAC都不改变。

3、路由器R1接收到数据包,发现其MAC地址为广播地址,接收该包,再解封,发现请求的目的IP地址为自己的IP(1.1.1.1/24),

      需要向源地址进行ARP回复。读取的数据包来源于1.1.1.1/24,源MAC地址为a.a.a。于是向PC1发送数据包,该包中地址为:

      源 IP    :   1.1.1.1/24                源 MAC    :   b.b.b(R1、e0/0)

      目的 IP :   1.1.1.2/24               目的 MAC :   a.a.a(PC1)

4、交换机SW1收到来自R1的数据包,查看源MAC地址为b.b.b,将改地址连同来源的接口号保存到MAC地址表。查看目的MAC地址

      a.a.a,查看MAC地址表,找到与a.a.a的匹配项,向指定接口转发该包,经该接口封装后向PC1进行单播。PC1收到数据包,解

      封后读到源IP为1.1.1.1/24,源MAC地址为b.b.b,PC1得到网关的MAC地址,并保存到ARP缓存表。

5、PC1向PC3发出数据包,包中地址为:

      源 IP     :   1.1.1.2/24                源 MAC    :  a.a.a(PC1)

      目的 IP :    2.2.2.2/24               目的 MAC :  b.b.b(R1、e0/0)

          该包进入SW1,根据目的MAC地址查询MAC地址表后由上接口转出向R1发送,到达接口s0/1,查到数据包MAC地址为自己MAC

      地址,将包解封到IP层,查询路由表:在路由表中查到最优匹配项,查找到下一跳接口IP地址,并发送出去;如果没有最优匹配

      项,则按照默认路由发送,没有默认路由则丢弃数据包,并发送回应包,目的地址不可达。

           查询路由表后得到转发接口为R1s0/1口,下一跳接口的IP地址为3.3.3.2/24,查询ARP表中IP地址为3.3.3.2的接口的MAC地址,

      得到其MAC地址d.d.d;如果表中无匹配项,则通过s0/1口发送ARP广播,请求3.3.3.2的MAC地址。封装好包后,从接口s0/1转发

      数据包,发出去的包MAC地址改变为:

      源 IP     :   1.1.1.2/24                源 MAC    :   c.c.c(R1、s0/1)

      目的 IP :   2.2.2.2/24                目的 MAC :   d.d.d(R2、s0/0)

6、路由器R2接口s0/0接收到数据包,检验MAC地址后接收并解封至IP层,查询路由表,发现转发接口为E0/0,且目的IP地址与接口

      E0/0在同一网段内,查找ARP表中目的IP(2.2.2.2)的MAC地址,得到PC3的MAC地址e.e.e;如果没有查到,则通过E0/0接口

      发送ARP广播包查询IP地址为2.2.2.2的MAC地址。

7、E0/0接口将封装好的数据包发送出去,报地址为:

      源 IP    :   1.1.1.2/24                   源 MAC     :   g.g.g(R2、E0/0)

      目的 IP :   2.2.2.2/24                   目的 MAC :   e.e.e(PC3)

          经过SW2的上接口进入,根据其目的MAC地址查询MAC地址表,如果找到匹配表项,则根据指定接口转发出去;如果没有找

      到,则向除进接口外的所有接口转发出去。

8、PC3接收到SW2发来的数据包,解封检验MAC地址为自己MAC地址e.e.e,接收数据包,包地址表为:

      源 IP :     1.1.1.2/24                  源 MAC    : g.g.g(R2、E0/0)

      目的 IP : 2.2.2.2/24                 目的 MAC : e.e.e(PC3)

      然后向源地址发送ICMP应答数据包,过程相似。