万网网站后台登陆,2022加盟项目排行榜,珠海网站网站建设,互动案例的网站本篇继续介绍路由器及其转发过程。 1 路由器内部结构
路由器内部结构图如图所示。 即主要包含左侧的包转发模块和右侧的端口模块。转发模块负责查找包的发送目的地#xff0c;端口模块完成包的发送。通过安装不同的硬件#xff0c;转发模块不仅可以支持以太网#xff0c;也…本篇继续介绍路由器及其转发过程。 1 路由器内部结构
路由器内部结构图如图所示。 即主要包含左侧的包转发模块和右侧的端口模块。转发模块负责查找包的发送目的地端口模块完成包的发送。通过安装不同的硬件转发模块不仅可以支持以太网也可以支持无线局域网等不同的网络技术。
首先端口模块根据使用的网络技术将发过来的包接收进来。接下来转发模块根据包的IP头部中记录的接收方IP地址在路由表中查询转发目标。然后转发模块将包转移到端口模块由端口模块根据使用的硬件规则再将包发送出去。
与交换机的不同之处在于路由器的端口具有MAC地址会根据包中的接收方MAC地址判断是否需要接收同时端口还具有IP地址将需要转发的包发送出去。从这个意义上来讲路由器的端口与计算机网卡是一致的。路由器的工作有个接收-发送的过程而对于交换机来说其实没有进行任何处理只是将所有进来的包再转发出去。
2 路由表
路由器根据路由表查询发送目的地路由表的内容如下表所示。 将接收方IP地址与表中的目标地址进行匹配其中子网掩码一列表示匹配的字节数。网关列为转发的目的地址而接口表示转发的端口。假设当前收到一个包其接收方目标地址为10.10.1.10。在表中查找发现第一条记录目标地址为10.10.1.0子网掩码为255.255.255.0表示只匹配前24个比特则这个包可以与第一条记录匹配上。10.10.1.0这样的记录主机号的8个比特全部为0表示的是一个子网而10.10.1.101这样的记录主机号的8个比特不全为0则表示的是一台主机。
此外路由表的更新与交换机地址表的更新也有所不同。交换机在转发过程中可以自动更新地址表而路由表则无法进行这样的更新。路由表的更新有以下两种方式
(1) 由人手动维护路由记录 (2) 根据路由协议机制通过路由器之间的信息交换由路由器自行维护路由记录
3 路由器基本工作过程
了解了路由表的基本内容再来看路由器的工作过程。
首先路由器会接收发送过来的网络包。网络包经网线到达路由器接口时PHY与MAC模块将信号转换为数字信息检查包结尾的FCSFCS无误后再检查MAC头部中的接收方MAC地址。如果接收方MAC地址与端口的MAC地址一致则存入缓冲区否则就丢弃这个包。
路由器收到包之后会将MAC头部去掉。因为MAC头部就是用来将包转发到路由器的到达路由器之后这个MAC头部就会被丢弃在转发到下一个路由器前再添加上新的MAC头部。
接下来转发模块会根据路由表查询转发的目标。以上表中的内容为例假设当前有IP地址为10.10.1.101的计算机向IP地址为192.168.1.10的服务器发送一个包这个包会先到达路由器。首先会根据包的接收方地址在目标地址栏中进行匹配。如前所述这里会根据子网掩码确定匹配的比特数。
根据实际情况可能匹配到多条满足要求的记录这时要选择网络号比特数最长的一条记录。网络号的比特数越长则主机号的比特数越短说明子网中可能存在的主机数越少这样就可以尽量缩小范围。
如果根据这一规则仍然匹配到了多条网络号比特数相同的记录则需要根据跃点数来进行判断。跃点数越小说明该路由器越近因此要选择跃点数最小的记录。
如果未匹配到符合要求的记录则路由器会丢弃这个包并通过ICMP消息告知发送方。另外最后一行的目标地址0.0.0.0是在其他记录都无法匹配时选择的默认地址。因为目标地址和子网掩码都为0.0.0.0任何地址都可以匹配到这条记录。在这一条记录的网关列中填入接入互联网的路由器地址当匹配不到其他记录时网络包机会转发到互联网接入路由。因此这一条记录也被称为默认路由配置的网关被称为默认网关。
查找到转发目标之后还需要完成一些工作才能将包交给端口模块进行发送。
首先是更新IP头部中的TTL(Time To Live生存时间)参数该参数表示包的有效期每经过一个路由器TTL的值就-1当TTL的值变为0时该包就会被丢弃。如果路由表的转发目标配置有问题包就可能出现死循环的情况这一机制是为了防止这一情况。TTL通常被设置为64或128在正常情况下访问任何一台服务器所需要经过的路由器也不过几十个只要路由表配置正确包就能够在过期之前被转发到目的地。
由于路由器的端口可以支持不同的硬件协议可能出现端口的输出包的最大长度小于端口的输入包的最大长度这种情况下就需要通过IP协议中定义的分片功能对大的包进行拆分。分片功能与TCP协议的拆分的不同之处在于TCP协议是将数据部分拆分之后再添加头部而IP协议的分片是将包含头部的完整包重新进行拆分如下图所示。 在分片的过程中首先查询输出端口的MTU看包能否不经拆分就进行转发。如果输出端口的MTU小于输入端口则需要对包进行拆分。接下来查询拆分的标志字段如果标志字段设置为不允许拆分则路由器将这个包丢弃并通过ICMP告知。否则就可以根据输出端口的MTU大小对包进行拆分了。原包从TCP头部开始的部分都可以作为拆分的数据每个拆分的部分也都会被添加MAC头部和IP头部除了标志分片的信息之外这些头部信息内容基本是一致的。
以上工作完成之后可以准备发送了。在路由器中如果路由表中网关一列为空表示下一个转发的目标就是包中的接收方地址。根据IP地址通过ARP协议获取对应的MAC地址并加入到MAC头部中。
如果接收端口类型为以太网网络包就会被发往下一个路由器。这样经过多次转发最终到达目的地。
4 路由器的地址转换
设备在网络中通信时每个设备都应该具有唯一的地址这样才能保证包转发到正确的目的地。早期网络确实是这样做的每个接入网络的设备都会分配唯一的固定地址。但随着接入互联网的设备越来越多网络地址逐渐面临不够用的情况。
有一种方法是对于两个互相独立的子网只要子网内部的IP地址不重复即可两个子网之间的地址可以重复。这样子网内部的设备就不必分配固定的地址了。子网内部的地址也需要根据一定的规则进行设置称为私有地址而原来的固定地址则称为公有地址。私有地址仅限于以下范围 10.0.0.0 - 10.255.255.255 172.16.0.0 - 172.31.255.255 192.168.0.0 - 192.168.255.255
私有地址本身的结构并无特殊之处只是将公有地址中没分配的一部分拿出来规定只能在内网中使用。
这样做可以节省一部分IP地址但还是无法完全解决问题。如果内网之间不是完全独立的需要通过互联网传送信息具有相同内网地址的计算机通信仍然会出现问题。针对这个问题采用的方法是将子网分成两个部分一部分是对互联网开放的服务器另一部分是子网内部的设备。对互联网开放的服务器分配公有地址可以直接与互联网通信内部设备分配内部地址不能和互联网直接收发网络包需要通过地址转换的机制。
通过私有地址与互联网通信在建立TCP连接时首先要将发送方IP地址从私有地址改写为公有地址。这里的公有地址即地址转换设备(路由器)的互联网接入地址。同时端口号也要进行改写地址转换设备会随机选择一个空闲的端口进行改写。接下来改写前的私有地址和端口号与改写后的公有地址和端口号会作为一组对应的记录保存在地址转换设备内部的一张表中如下表所示 这个包经过改写之后发送出去会收到来自服务器的响应。响应包中的接收方地址和端口号即是发送前改写的公有地址和端口号。根据公有低值和端口号在表中查询即可以找到对应的私有地址和端口号包就可以到达原始的发送方了。
由于可用端口号有几万个通过将私有地址转换为公有地址与端口号的组合相当于一个公有地址可以对应几万个私有地址很大程度上提高了公有地址的利用率。