我熟悉基本的OSI模型,但我总是感到困惑的是,数据包是如何通过互联网从一台机器传输到另一台机器的?OSI层是如何形成的?例如,对于以下拓扑:
机器A< -----> Switch< ----> Router< ----> Router< ----> Router< ----> Switch< --- - >机器B
显示多个路由器代表互联网,当机器A向机器B发送数据包(比如通过FTP发送一个简单的“ls”命令)时,在OSI层级会发生什么。
以上只是一个建议的示例,但如果任何人可以解释任何其他网络拓扑,那也没关系。我正在寻找一个非常基本的解释,说明数据包如何转换到每个节点(机器,交换机,路由器等)的不同OSI层。
答案 0 :(得分:37)
路由器使用IP层(第3层),交换机使用数据链路层(第2层)。第1层是通过线路的物理1和0,第2层是数据链路层,它是像以太网和点对点协议(PPP)这样的协议,它在相邻节点之间传输有关MAC地址的信息。到并允许错误检测和重传。第3层是IP层,它携带有关数据包来自和来自整个网络的位置的信息,而不仅仅是当前跃点。
传输将如下:
机器A想要将数据包发送到机器B.机器A知道机器B的IP地址,因此它将其放在第3层数据包中。但是,机器A需要将下一跳的MAC地址放在第2层数据包中。如果它不知道,那么它将发送一个称为ARP请求(地址解析协议,在此处读取:http://www.tildefrugal.net/tech/arp.php)到目标IP的网络。这里将会发生以下几件事之一:
(如果机器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
答案 1 :(得分:0)
唯一可以通过铜线传输的是电脉冲。 二进制数1由0的电脉冲或无脉冲电表示。 请记住,任何类型的实际数据都不能通过铜线,光纤或通过空中发送...只是表示先前已转换为1或0的数据,然后再转发回来接收端。
答案 2 :(得分:0)
网络层协议负责监督数据包从源计算机到目的地的传输。数据在传输之前会被分解为数据包或数据报,最长可达64 kb,带有目标IP地址标记,然后转发到网络网关。网关可以是用于互连网络的路由器。