虽然TCP-IP协议中传输数据会在各个路由器再次经过物理层、链路层、网络层的解封装、加工、封装、转发,但是对于两个主机间的运输层,在逻辑上,应用进程是直接通信的。
路由器主要工作在网络层,但它也涉及到物理层和链路层的一些功能。以下是路由器在这三个层面上对数据进行的处理:
物理层:
- 在物理层,路由器负责接收和发送比特流(即电信号、光信号等)。这包括编码和解码信号,以及处理接口上的物理连接。
路由器的每个端口都连接到一个网络介质,如双绞线、光纤或无线电波。路由器根据接口的类型,将数据包转换为相应介质的信号。
链路层:
帧接收:
当路由器的一个物理接口接收到一个帧时,路由器首先检查帧的完整性,比如检查帧的校验和(例如循环冗余校验,CRC)以确保帧在传输过程中没有被损坏。
路由器还会检查帧的目的MAC地址,以确定该帧是否应该被接收。如果目的MAC地址与路由器接口的MAC地址匹配,或者是广播/多播地址,则路由器会接收该帧并对其进行进一步处理。否则,帧将被丢弃。
帧解封装:
一旦帧被接收,路由器将对帧进行解封装,以提取其中的网络层数据包(如IP数据包)。这涉及到移除帧头和帧尾,留下网络层的数据部分。
地址解析:
在转发帧之前,路由器需要确定目的设备的MAC地址。路由器发送ARP请求或NDP请求,询问目的IP地址对应的MAC地址,并在收到响应后,使用该MAC地址进行帧的封装和转发。
帧封装:
当路由器需要将一个网络层数据包转发到另一个网络时,它会对该数据包进行链路层封装,生成一个新的帧。这包括添加新的帧头和帧尾,其中包括目的MAC地址、源MAC地址、以太网类型等信息。
目的MAC地址通常是下一跳路由器的MAC地址,或者如果目的地在同一局域网内,则是目的设备的MAC地址。源MAC地址是路由器发送接口的MAC地址。
帧转发:
封装好的帧将通过相应的物理接口发送出去。在这个过程中,路由器可能还会进行一些其他的链路层处理,如帧的排队和调度。
错误处理:
如果在链路层发生错误,如帧损坏或接收缓冲区溢出,路由器可能会丢弃帧,并在一些情况下,记录错误事件或通知网络管理员。
总的来说,路由器在链路层对帧的操作包括接收和检查帧的完整性和目的地址,解封装以提取网络层数据包,根据需要进行帧的封装和转发,以及执行地址解析和错误处理等任务。这些操作确保了网络层数据包能够被正确地传输和路由到其目的地。
网络层:
在网络层,路由器处理IP地址和子网掩码,执行IP数据包的封装和解封装。包括
- 检查数据包完整性,如果损坏将其丢失,
- 确定数据包的目的IP地址,
- 使用目的IP地址在路由表中进行查找,获取目的网络的信息和到达这些网络的最佳路径(即下一跳地址),
- 根据路由表信息和路由协议(如OSPF、BGP等)转发数据包,并加工部分信息,譬如修改TTL字段,
- 处理特殊情况:例如如果路由器没有找到合适的路由表项,它可能会丢弃数据并发送一个ICMP目的不可达消息给发送者,如果数据包的TTL值减到0,路由器也会丢弃数据包并发送ICMP超时消息。
- 更新统计信息:更新转发的数据包数量和丢弃的数据包数量。)
- 路由器还可以执行网络层的其他功能,如网络地址转换(NAT)、负载均衡和防火墙功能。