我是一名应用程序开发人员,致力于获取网络工程的工作知识,所以基本上是一个新手。我一直试图弄清楚路由器何时将帧解封装为数据包并将数据包封装为帧。我发现路由器是否发送帧或数据包?,而且我仍然很难弄清楚在将数据包从源发送到目的地的过程中何时封装和解封装。
Ron Maupin 回答了我以这种方式链接的问题:
路由器必须剥离第 2 层帧才能到达第 3 层数据包。然后,路由器根据第 3 层目标地址将数据包路由到通往目标的下一个接口。在下一个接口,它必须为下一个接口上的第 2 层协议的数据包构建一个新帧,这可能是与第一个接口上使用的完全不同的第 2 层协议。
根据这个答案的开头,我看到路由器剥离了第 2 层帧,然后路由数据包。这表明路由器路由数据包而不是帧。但随后答案说“在下一个接口,它必须为数据包构建一个新帧”,我无法将该语句与开始的语句相协调。
据我了解该过程,路由器路由到其他路由器,直到与目标网络节点相关联的路由器获得它并将其发送到该节点。因此,我看到答案中的“下一个接口”是路由上的下一个路由器,直到最后一跳,此时“下一个接口”是目标节点。如果是这样,那么这似乎是说路由器将数据包包装在帧中,然后再将它们发送到到达目的地的下一个路由器。
因此,在阅读罗恩的回答后,我仍然不完全清楚路由器是在互联网上发送帧还是“裸”数据包。在我看来,解封装在互联网上发送的任何帧会更简单,在它们从路由器传递到路由器时将它们保留为“裸”数据包(大概路由器使用 IP 来确定将数据包发送到哪里,因此不需要帧来移动它),然后,当数据包到达连接到目的地的路由器时,该路由器将数据包重新封装在与任何第 2 层协议一致的帧类型中它用。
这是实际发生的情况,还是路由器必须在将数据包转发到其他路由器之前将它们封装成帧,因此必须知道它可以发送到的每个路由器需要哪种类型的帧?(这对我来说似乎不是很有可扩展性。)
编辑:这是让我感到困惑的事情,来自维基百科关于数据链接层的文章:
数据链路层关注网络同一级别节点之间的本地帧传递。称为这些协议数据单元的数据链路帧不会跨越局域网的边界。网络间路由和全局寻址是更高层的功能,允许数据链路协议专注于本地传送、寻址和媒体仲裁。
这非常接近断言,没有解释的余地,L2 参与仅限于 LAN 边界,而不是在互联网上发送数据包的一部分。

