[计算机网络]路由器转发表总结(转)

路由器是工作在网络层的,在网络层可以识别逻辑地址,即IP地址,也就是说数据包解析时最多可将数据帧拆包成IP数据包,路由器无法操作数据报的载荷字段,但是可以针对IP首部做些事情:当路由器的某个端口收到一个包时,路由器就会读取包中的目地IP地址,然后在路由表中进行查找。如果在路由表中找到目的IP地址对应条目,则把包转发到路由器的对应端口。如果没找到,那么如果路由器配置默认路由(默认网关),就默认将所有无法解析的目的网段主机的数据包都先发往该默认网关做进一步转发,如果没有配置默认路由,则将该包丢弃,并返回源主机以不可达(Unreachable)的信息。这就是数据包路由的过程。

步骤如下:

  1. 主机A在网络层将来自上层的报文封装成IP数据报,IP首部中的源IP地址为自己的IP地址,目的IP地址为主机B的IP地址。主机A会用本机配置的24位子网掩码与目的地址进行“与”运算,得出目的地址与本机不在同一个网段(主机A位于192.168.1.0/24网段,主机B位于192.168.2.0/24网段,或称属于不同子网),因此发送给主机B的数据包需要经过网关路由器1的转发;
  2. 主机A通过ARP请求获得网关路由器1的E0端口的MAC地址,并在数据链路层将路由器E0端口的MAC地址封装成以太网帧首部中的目的MAC地址,源MAC地址是自己的MAC地址,随后发送数据帧给路由器1;
  3. 路由器1从端口E0接收到该数据帧,随后执行解析,将数据链路层的首部剥落去掉,并在路由表中检查是否有目的IP地址的网段对应表项(即192.168.2.2/24和其所在192.168.2.0/24网段),根据路由表中记录,发往192.168.2.0/24网段(中主机)的数据包的下一跳(Next Hop)或称网关地址为10.1.1.2/8(实际是路由器2的E1端口的IP地址),而路由器发现下一跳地址正好位处与自己E1端口直连的网段(10.0.0.0/8),于是数据在路由器1的E1端口重新封装,此时,以太网帧的源MAC地址是路由器1的E1端口的MAC地址,目的MAC地址则是路由器2的E1端口的MAC地址,通过ARP广播得到,封装完毕发送数据帧给路由器2;
  4. 路由器2从端口E1接收到该数据帧,随后执行解析,将数据链路层的首部剥落去掉,对目的IP地址进行检测,并与路由表进行匹配,此时发现目的主机IP地址所在网段正好是自己E0端口的直连网段,路由器2于是通过ARP广播,获知主机B的MAC地址,此时数据包在路由器2的E0端口再次封装,源MAC地址是路由器2的E0端口的MAC地址,目的MAC地址是主机B的MAC地址,随后发送数据帧给主机B;
  5. 完成以上1~4,主机B终于接收到来自主机A的数据包。
    综上,看似较为“简单”的跨网段主机通信,真也不是太容易的一件事儿。

小结

路由表负责记录一个网络到另一个网络的路径,路由器依赖路由协议及其确定的路由表完成三层,即网络层的数据转发工作。路由表项中最重要的信息在于目的网段和网关,即下一跳IP地址的对应关系,网关通常是专门的网关服务器或者路由器,而网关会负责将该数据包最终转发至目的网段。

猜你喜欢

转载自www.cnblogs.com/melos/p/12662850.html