路由器的基本知识
- 路由器是基于IP设计的,交换机是基于以太网设计的
路由器的各个端口都具有MAC地址和IP地址
- 端口模块是以实际的发送方或者接收方的身份来收发网络包的
- 以以太网端口为例,路由器的端口具有MAC地址,因此它就能够成为以太网的发送方和接收方。端口还具有IP地址。当转发包时,首先路由器端口会接收发给自己的以太网包,然后查询转发目标,再由相应的端口作为发送方将以太网包发送出去。这一点和交换机是不同的,交换机只是将进来的包转发出去而已,它自己并不会成为发送方或者接收方。
路由表中的信息
- 交换机是通过MAC头部中的接收方MAC地址来判断转发目标的,而路由器则是根据IP头部中的IP地址来判断的
路由器中路由表的维护
- 交换机中对MAC地址表的维护是包转发操作中的一个步骤
- 路由器中对路由表的维护是与包转发操作相互独立的,也就是说,在转发包的过程中不需要对路由表的内容进行维护
- 有两种方法:
由人手动维护路由记录
根据路由协议机制,通过路由器之间的信息交换由路由器自行维护路由表的记录
路由器的包接收操作
- 以太网端口是如何接收包的
- 信号到达网线接口部分,其中的
PHY(MAU)
模块和MAC
模块将信号转换为数字信息,然后通过包末尾的FCS
进行错误校验,如果没问题则检查MAC
头部中的接收方MAC
地址,看看是不是发给自己的包,如果是就放到接收缓冲区中,否则就丢弃这个包。如果包的接收方MAC
地址不是自己,说明这个包是发给其他设备的
查询路由表确定输出端口
- 完成包接收操作之后,路由器就会丢弃包开头的
MAC
头部(通过路由器转发的网络包,其接收方MAC地址为路由器端口的MAC
地址)
根据IP头部中的内容进行包的转发
找不到匹配路由时选择默认路由
- 只要将子网掩码设置为0.0.0.0,那么无论任何地址都能匹配到这一条记录,这样就不会发生不知道要转发到哪里的问题了
- 当匹配不到其他路由时[插图],网络包就会被转发到互联网接入路由器。因此这条记录被称为默认路由,这一行配置的网关地址被称为默认网关
包的有效期
- 从路由表中查找到转发目标之后,网络包就会被转交给输出端口,并最终发送出去,但在此之前,路由器还有一些工作要完成
- 更新IP头部中的TTL:TTL字段表示包的有效期,包每经过一个路由器的转发,这个值就会减1,当这个值变成0时,就表示超过了有效期,这个包就会被丢弃
- 这个机制是为了防止包在一个地方陷入死循环。如果路由表中的转发目标都配置正确,应该不会出现这样的情况,但如果其中的信息有问题,或者由于设备故障等原因切换到备用路由时导致暂时性的路由混乱,就会出现这样的情况
- 发送方在发送包时会将TTL设为64或128
通过分片功能拆分大网络包
路由器的发送操作和计算机相同
- 取决于输出端口的类型:如果是以太网端口,则按照以太网的规则将包转换为电信号发送出去;如果是
ADSL
则按照ADSL
的规则来转换 - 假设路由器位于公司等局域网的内部,输出端口是以太网
- 大致过程:在包前面加上
MAC
头部,设置其中的一些字段,然后将完成的包转换成电信号并发送出去
详细过程
- 通过ARP根据IP地址查询MAC地址,并将查询的结果作为接收方MAC地址。路由器也有ARP缓存,因此首先会在ARP缓存中查询,如果找不到则发送ARP查询请求
- 发送方MAC地址字段,这里填写输出端口的MAC地址。还有一个以太类型字段,填写0080(十六进制)
- 网络包完成后,接下来会将其转换成电信号并通过端口发送出去。
当以太网工作在半双工模式时,需要先确认线路中没有其他信号后才能发送,如果检测到碰撞,则需要等待一段时间后重发。如果以太网工作在全双工模式,则不需要确认线路中的信号,可以直接发送 - 如果输出端口为以太网,则发送出去的网络包会通过交换机到达下一个路由器。由于接收方MAC地址就是下一个路由器的地址,所以交换机会根据这一地址将包传输到下一个路由器。接下来,下一个路由器会将包转发给再下一个路由器,经过层层转发之后,网络包就到达了最终的目的地
路由器和交换机的关系
- 计算机在发送网络包时,或者是路由器在转发网络包时,都需要在前面加上
MAC
头部(准确的说法应该是将IP包装进以太网包的数据部分中)
- IP协议本身没有传输包的功能,因此包的实际传输要委托以太网来进行
- 路由器是基于IP设计的,而交换机是基于以太网设计的,因此IP与以太网的关系也就是路由器与交换机的关系。由器将包的传输工作委托给交换机来进行。
- 有些路由器有内置交换机功能的,对于这种路由器,上面内容可能就不适用了。但是,如果把这种“不纯粹”的路由器拆分成“纯粹”的路由器和“纯粹”的交换机,则它们各自都适用上面的内容
- IP并不是委托以太网将包传输到最终目的地,而是传输到下一个路由器。在创建MAC头部时,也是从IP的路由表中查找出下一个路由器的IP地址,并通过ARP查询出MAC地址,然后将MAC地址写入MAC头部中的,这表示IP对以太网的委托只是将包传输到下一个路由器就行了。当包到达下一个路由器后,下一个路由器又会重新委托以太网将包传输到再下一个路由器。随着这一过程反复执行,包就会最终到达IP的目的地,也就是通信的对象。
- IP (路由器)负责将包发送给通信对象这一整体过程,而其中将包传输到下一个路由器的过程则是由以太网(交换机)来负责的。
- IP本身不负责包的传输,而是委托各种通信技术将包传输到下一个路由器,这样的设计是有重要意义的,即可以根据需要灵活运用各种通信技术,这也是IP的最大特点。正是有了这一特点,我们才能够构建出互联网这一规模巨大的网络。