当路由器转发数据包时,它会经历一系列步骤,包括接收数据包、路由表查询、以及转发数据包。以下是详细的步骤描述:
1. 接收数据包
-  以太网帧到达端口:当一个以太网帧到达路由器的某个网络接口(端口)时,该端口的网卡接收到这个帧。 
-  检查帧完整性:路由器会检查以太网帧的完整性,确保没有发生传输错误(通过帧校验序列(FCS)检查)。 
-  提取数据包:如果帧完整性检查通过,路由器从以太网帧中提取出数据包(通常是一个 IP 包)。 
2. 路由表查询
-  检查目标 IP 地址:路由器查看 IP 包的目标 IP 地址,并根据这个地址在它的路由表中查找下一跳信息。 
-  路由表查询:路由器查找路由表,以确定如何将数据包发送到目标地址。这包括: - 匹配最长前缀:路由器查找与目标 IP 地址匹配的最长前缀条目。
- 获取下一跳信息:找到匹配的路由条目后,提取下一跳的 IP 地址和出接口信息。
 
-  ARP 查询(如果需要):如果下一跳是一个特定的 IP 地址,路由器需要将其转换为物理地址(MAC 地址)。如果 ARP 缓存中没有该地址的条目,路由器会发送一个 ARP 请求,等待下一跳设备的 ARP 响应。 
3. 转发数据包
-  封装新的以太网帧:根据下一跳的 MAC 地址和路由器出接口的信息,路由器重新封装一个新的以太网帧。这个帧包括: - 目的 MAC 地址:下一跳设备的 MAC 地址。
- 源 MAC 地址:路由器出接口的 MAC 地址。
- 上层数据:原始的 IP 包。
 
-  发送以太网帧:路由器通过确定的出接口将新的以太网帧发送出去。 
详细示例
假设有以下网络环境:
- 路由器 R,有两个接口:eth0(IP:192.168.1.1,MAC:00:11:22:33:44:55),eth1(IP:192.168.2.1,MAC:00:11:22:33:44:66)。
- PC1 在网络 192.168.1.0/24 上,IP:192.168.1.2,MAC:AA:BB:CC:DD:EE:01。
- PC2 在网络 192.168.2.0/24 上,IP:192.168.2.2,MAC:AA:BB:CC:DD:EE:02。

当 PC1 向 PC2 发送数据包时,具体过程如下:
-  PC1 发送数据包: - PC1 封装一个以太网帧,源 MAC 地址为 PC1 的 MAC 地址,目的 MAC 地址为路由器 eth0 的 MAC 地址。
- 以太网帧到达路由器 eth0 接口。
 
-  路由器接收帧: - 路由器 eth0 接口接收以太网帧,检查 FCS,提取 IP 包。
 
-  路由器查询路由表: - 路由器检查 IP 包的目标地址 192.168.2.2。
- 路由器在其路由表中查找匹配的路由条目,发现下一跳是直接连接到 eth1 的 192.168.2.0/24 网络。
 
-  ARP 查询(如果需要): - 如果路由器的 ARP 缓存中没有 192.168.2.2 的 MAC 地址,它会发送 ARP 请求,等待 PC2 响应。
- 收到 ARP 响应后,路由器将 192.168.2.2 的 MAC 地址添加到 ARP 缓存中。
 
-  封装新的以太网帧: - 路由器封装一个新的以太网帧: 
    - 目的 MAC 地址为 PC2 的 MAC 地址(AA:BB:CC:DD:EE:02)。
- 源 MAC 地址为路由器 eth1 接口的 MAC 地址(00:11:22:33:44:66)。
- 包含原始的 IP 包。
 
 
- 路由器封装一个新的以太网帧: 
    
-  发送以太网帧: - 路由器通过 eth1 接口将新的以太网帧发送到 192.168.2.0/24 网络。
- PC2 接收到以太网帧,提取 IP 包,并进行处理。
 
通过上述步骤,路由器可以成功地将数据包从 PC1 转发到 PC2。


![[测试开发]如何让IDEA实时显示内存](https://img-blog.csdnimg.cn/direct/1e4e669e16dc4707bb75d95985b56acf.jpeg)

![[双指针] --- 快乐数  盛最多水的容器](https://img-blog.csdnimg.cn/direct/c5e6e191c4924779aaca0cf315c83c54.gif)













