2.2 路由器的工作原理
IP地址是与硬件地址无关的“逻辑”地址。IP地址由两部分组成:网络号和主机号,并用子网掩码来确定IP地址中网络号和主机号。子网掩码中数字“1”所对应的IP地址部分为网络号,“0”所对应的是主机号。同一网络中的计算机,其IP地址所对应的网络号是相同的,这种网络称为IP子网。
路由器用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或子网。路由器上有多个端口,用于连接多个IP子网。每个端口对应一个IP地址,并与所连接的IP子网属同一个网络。各子网中的主机通过自己的网络把数据送到所连接的路由器上,再由路由器根据路由表选择到达目标子网所对应的端口,将数据转发到此端口所对应的子网上。
下面用图解的方式介绍路由器的工作原理。路由器R1、R2、R3连接10.1.0.0、10.2.0.0、10.3.0.0、10.4.0.0四个子网,路由器的各端口配置、主机A、主机B的配置及网络拓扑结构如图2-7所示。根据路由协议,路由器R1、R2、R3的路由表如图2-8所示。
图2-7 主机、路由器接口的IP地址和MAC地址
图2-8 路由器R1、R2、R3中的路由表
当10.1.0.0网络中的主机A向10.4.0.0网络中的主机B发送数据时各路由器的工作情况如下:
第1步:主机A在应用层向主机B发出“数据流”,“数据流”在主机A的传输层上被分成“数据段”,这些“数据段”从传输层向下进入网络层。
第2步:在网络层,主机A将“数据段”封装为“数据包”,将源IP地址10.1.0.100(主机A的IP地址)和目的IP地址10.4.0.200(主机B的IP地址)都封装在IP包头内。由于源IP地址与目的IP地址不在同一网络,主机A将把“数据包”发给自己的网关(路由器R1)。主机A先将数据包下传到数据链路层上进行帧的封装产生的“数据帧”,其帧头中源MAC地址0000.1111.2222(主机A的物理地址),目的MAC地址1111.1111.1111(主机A的默认网关路由器R1的E0的物理地址)。“数据帧”再下传到物理层,通过线缆送到路由器R1上。
第3步:“数据帧”到达路由器R1的E0接口后,校验并拆封此“数据帧”,取出其中的“数据包”(IP包),路由器R1根据包头的目的IP地址10.4.0.200,查找自己的路由表,得知子网10.4.0.0要经过路由器R1的S0接口,再跳过2个路由器才能到达目标网络,从而得到转发该数据包的路径。路由器R1对该“数据包”(不变)重新封装形成“数据帧”,其帧头中源MAC地址2222.2222.2222(路由器R1的S0接口的物理地址),目的MAC地址3333.3333.3333(默认网关路由器R2的S0的物理地址)。将“数据帧”从路由器R1的S0接口发出去。
第4步:在路由器R2和路由器R3中的处理与路由器R1相同。路由器R3接到从自己的S0接口得到的“数据帧”后,校验并拆封,取出其中的“数据包”,路由器R3根据“数据包”头的目的IP地址10.4.0.200,查找自己的路由表,得知子网10.4.0.0就在自己直接相连的接口E0上。路由器R3对“数据包”进行封装形成“数据帧”,其帧头中源MAC地址6666.6666.6666(路由器R3的E0接口的物理地址),目的MAC地址是主机B的MAC地址1111.2222.3333(这个地址是路由器R3发出一个ARP解析广播,查找主机B的MAC地址后,保存在缓存里的)。
第5步:主机B收到“数据帧”后,首先核对帧中目标MAC地址是否是自己的MAC地址,并进行“数据帧”校验,拆卸“数据帧”,得到“数据包”,交给网络层处理。网络层拆卸IP包头,将“数据段”向上送给传输层处理。在传输层按顺序将“数据段”重组成“数据流”。