基于OSI模型,数据包如何通过Internet从一台计算机传输到另一台计算机

mod*_*est 25 networking

我对基本的OSI模型很熟悉,但我总是感到困惑的是,数据包是如何通过Internet从一台机器传输到另一台机器的,以及OSI层是如何形成的?例如,对于以下拓扑:

机器A <-----> Switch <----> Router <----> Router <----> Router <----> Switch <----> Machine B

在显示多个路由器代表互联网的情况下,当机器A向机器B发送数据包(比如通过FTP的简单"ls"命令)时,OSI层级会发生什么.

以上只是一个建议的例子,但如果任何人可以解释任何其他网络拓扑,那也没关系.我正在寻找一个非常基本的解释,说明如何将数据包转换到每个节点(机器,交换机,路由器等)的不同OSI层.

Pat*_*shu 38

路由器使用IP层(第3层),交换机使用数据链路层(第2层).第1层是通过线路的物理1和0,第2层是数据链路层,它是像以太网和点对点协议(PPP)这样的协议,它在相邻节点之间传输有关MAC地址的信息.到并允许错误检测和重传.第3层是IP层,它携带有关数据包来自和来自整个网络的位置的信息,而不仅仅是当前的跳数.

传输将是这样的:

机器A想要将数据包发送到机器B.机器A知道机器B的IP地址,因此它将其放在第3层数据包中.但是,机器A需要将下一跳的MAC地址放在第2层数据包中.如果它不知道,那么它将向目标IP 发送称为ARP请求(地址解析协议,在此处阅读:http://www.tildefrugal.net/tech/arp.php)到网络.这里将会发生以下几件事之一:

  1. 知识产权是本地的.具有该IP的机器将使用其MAC地址回复发送方.
  2. IP是非本地的.网关路由器将检测到此并发送其MAC地址.
  3. IP是非本地的,并且设置了机器A的默认网关和子网掩码.使用此信息,机器A可以确定IP地址的非本地性并将其发送到路由器的MAC地址(如果尚未知,则为ARPing).

(如果机器A之前发现了这一点,它将在ARP缓存中,而机器A将只使用它.)现在发送了MAC地址,可以传输数据包(物理层1执行实际的数据传输)电线).下一站将是开关.交换机知道列为第2层目的地的MAC地址所在的出站端口是什么,因为它跟踪看到数据包来自的每个MAC地址以及它来自哪个端口 - 如果它不知道,那么它将每个地址都溢出单一端口,保证它会到达.

这样,数据包到达路由器.关于IP模型的一个很酷的事情是它将网络/世界中的每个IP地址划分为一个层次结构 - 根据定义,子网不能部分地重叠子网,它们要么全部包含它们,要么完全包含它们.因此,只要子网遵循这种层次结构,路由器就可以通过查看IP在其表中所属的子网,明确地确定网络中40亿个可能的IP地址中的每一个!然后将数据包发送出该端口.

当数据包通过互连的ISP的路由器,骨干基础设施等传播时,它到达机器B的路由器,在那里发生相反的过程 - 路由器B看到它的目的地是机器B并将其发送到入站.(类似地,如果不知道的话,路由器B将不得不使用像ARP这样的进程来查找机器B的MAC地址.)其余的应该从这里开始是微不足道的.

好参考:

https://web.archive.org/web/20120129120350/http://www.tildefrugal.net/tech/arp.php

http://en.wikipedia.org/wiki/Data_link_layer

http://en.wikipedia.org/wiki/Network_switch

http://en.wikipedia.org/wiki/Network_layer

http://en.wikipedia.org/wiki/Routing

http://en.wikipedia.org/wiki/Router_(computing)

http://en.wikipedia.org/wiki/Address_Resolution_Protocol

  • 您的链接http://www.tildefrugal.net/tech/arp.php似乎已损坏. (3认同)