MAC地址表、ARP缓存表、路由表及交换机、路由器基本原理( 二 )


windows/linux下可以通过命令行中输入"arp -a"查看本机的ARP缓存表 。
路由表
路由器负责不同网络之间的通信,它是当今网络中的重要设备,可以说没有路由器就没有当今的互联网 。在路由器中也有一张表,这张表叫路由表,记录着到不同网段的信息 。路由表中的信息分为直连路由和非直连路由 。
直连路由:是直接连接在路由器接口的网段,由路由器自动生成 。
非直连路由:就是不是直接连接在路由器接口上的网段,此记录需要手动添加或者是使用动态路由 。
路由表中记录的条目有的需要手动添加(称为静态路由),有的测试动态获取的(称为动态路由) 。直连路由属于静态路由 。
路由器是工作在网络层的,在网络层可以识别逻辑地址 。当路由器的某个接口收到一个包时,路由器会读取包中相应的目标的逻辑地址的网络部分,然后在路由表中进行查找 。如果在路由表中找到目标地址的路由条目,则把包转发到路由器的相应接口,如果在路由表中没有找到目标地址的路由条目,那么,如果路由配置默认路由,就科举默认路由的配置转发到路由器的相应接口;如果没有配置默认路由,则将该包丢弃,并返回不可到达的信息 。这就是数据路由的过程 。
如下图:详细介绍路由器的工作原理

MAC地址表、ARP缓存表、路由表及交换机、路由器基本原理

文章插图
 
1) HostA在网络层将来自上层的报文封装成IP数据包,其中源IP地址为自己,目标IP地址是HostB,HostA会用本机配置的24位子网掩码与目标地址进行“与”运算,得出目标地址与本机不是同一网段,因此发送HostB的数据包需要经过网关路由A的转发 。
2) HostA通过ARP请求获取网关路由A的E0口的MAC地址,并在链路层将路由器E0接口的MAC地址封装成目标MAC地址,源MAC地址是自己 。
3) 路由器A从E0可接收到数据帧,把数据链路层的封装去掉,并检查路由表中是否有目标IP地址网段(即192.168.2.2的网段)相匹配的的项,根据路由表中记录到192.168.2.0网段的数据请发送给下一跳地址10.1.1.2,因此数据在路由器A的E1口重新封装,此时,源MAC地址是路由器A的E1接口的MAC地址,封装的目标MAC地址则是路由器2的E1接口的MAC地址 。
4) 路由B从E1口接收到数据帧,同样会把数据链路层的封装去掉,对目标IP地址进行检测,并与路由表进行匹配,此时发现目标地址的网段正好是自己E0口的直连网段,路由器B通过ARP广播,获知HostB的MAC地址,此时数据包在路由器B的E0接口再次封装,源MAC地址是路由器B的E0接口的MAC地址,目标MAC地址是HostB的MAC地址 。封装完成后直接从路由器的E0接口发送给HostB 。
5) 此时HostB才会收到来自HostA发送的数据 。
总结:路由表负责记录一个网络到另一个网络的路径,因此路由器是根据路由表工作的 。




推荐阅读