嗨,Cisco学生/新手,在这里!但是我对这些层的确切位置感到困惑(在PC,路由器等中)。在数据按照第1层通过电缆输出之前,PC上是否会进行7-2层的处理?听起来不对,因为我知道交换机在第2层运行,路由器在第3层运行。但是,是否就不需要通过电缆将数据发送到交换机或路由器了?谢谢:-)

#1 楼

tl; dr许多不同的设备可能会遇到多个OSI级别。无论哪个端点从第7层协议(例如HTTP)中请求某些内容,都将在将其连接到网络之前使用所有7层。诸如路由器和交换机之类的中间节点最多只能使用前3层,防火墙或WAN加速器可能会影响第4层,负载均衡器也会做一些有趣的事情。

如果您对更多详细的答案,请看下面-我试着使它很简单,并使用一个真实的示例。

作为参考:

OSI模型
<来源:TCP / IP指南

封装数据的层取决于生成数据的内容。通常,仅在与数据当前在网络中的位置(在路由器,主机等上)相关的情况下才进行解封装。

我的意思是,如果路由器,如果我要做的只是通过第3层路由流量,那么我不在乎此数据包中是否埋有HTTP请求-我只会剥离足够的标头来获得所需的信息,完成工作,然后转到下一个数据包。

我们每天都以某种方式使用互联网,因此考虑到OSI模型,这就是典型的HTTP请求的样子。为简单起见,我们可以假定网络可用并且没有任何问题。


我在浏览器中输入“ http://google.com”,然后按Enter。

[第7层]您的PC /服务器将生成HTTP GET请求,以发送到指定的网络服务器,在这种情况下,我们正在谈论google.com。因此,如果您在上面看,我们有那个GET请求,它被视为“数据”。 HTTP是第7层协议,我们将添加该标头。因为在此层上没有其他事情要做,所以将其传递到第6层。

[第6层]我们可以将第6层视为应该如何格式化数据,对于网站来说,这里什么都不会发生,但是管理员/开发人员/工程师可以选择这样做。我们的PC /服务器仍将在第7层(HTTP)标头的顶部添加标头,并将其向下发送到第5层。知道我们正在尝试联系Web服务器,因此我们需要以应用程序整体可以理解的格式发出此请求,为此,我们使用应用程序接口(API)。这是管理应用程序会话的工具,因此Web服务器将知道数据是“流”的一部分。让我们添加第5层标头,并将其传递到第4层。第4层是我们的传输层,在这里我们决定数据如何到达那里,而不是路径,而是如何-即TCP或UDP。在这种情况下,我们的PC /服务器需要与Web服务器建立连接。为了简单起见,我将跳过一些事情,但这就是典型的TCP 3向握手的地方。我们将当前的内容封装在TCP标头中,其中包含源和目标端口号,序列和确认号以及TCP窗口信息。

[第3层]这是我们工程师真正关心的另一层,即网络层。这是将数据包发送到目的地的位置,我们需要IP地址才能到达网络上的位置。我们的PC /服务器将添加其源IP地址和目标IP地址。数据包不仅会到达正确的目的地,而且该端点将在需要向我们发送任何类型的数据时使用我们的源IP地址将其发送回给我们。现在,这里要注意的是,即使PC /服务器也可以具有多个接口,因此我们需要将数据发送到正确的位置。我们的PC /服务器将具有与路由器一样的路由表,通常,如果您是某种类型的主机,则您的数据包将被路由到您的默认网关,希望它知道如何将数据包到达目的地。让我们添加该IP标头并将其传递到数据链路层。[第2层]我们的PC /服务器的网络接口卡(NIC),不知道如何自己说IP,因此它使用媒体访问控制(MAC)地址来移动该数据。您的PC /服务器将为它可以到达的每个IP提供ARP条目,因此在这种情况下,它将为您的默认网关提供一个条目。您的网关IP地址将与目标MAC地址相关。因此,让我们添加目标MAC地址的L2标头,该标头还包含PC /服务器NIC的MAC地址作为源。现在我们拥有将数据作为位放置到导线上的所有功能。原始1和0。现在本身没有第1层标题,如果您查看第2层上的图,您会看到。到目前为止,具有从L7到L2的所有标头的数据将转换为1和0。
现在,我们已经连接到网关路由器。到目前为止,您的PC /服务器已经完成了封装绑定到google.com的网络服务器的数据的所有工作。





[第1层]现在,您的网关路由器接收到1和0。路由器上的NIC(接口)获取该数据,并基本上说“我不知道该怎么读!”并将其带到第2层,以便它可以读取数据。

[第2层]现在,网关路由器检查L2帧,它说:“好,很酷,您来自此MAC,整洁。我看到您的目标MAC已设置为我的MAC地址,因此可以继续进行工作。它将解封装L2报头,以便可以查看IP报头(第3层)。

[第3层]您的网关路由器将查看现在显示源和目标IP地址。它说:“好吧,您来自此源,太酷了。您的目的地是该IP地址。嗯,我不拥有此IP地址,但我知道谁拥有。”它将在其路由表中查找目标IP地址(google.com)的路由并使用该条目。
所有这些之后,重复相同的一般过程,它将检查发送数据包所需的接口,使用该接口的MAC地址,将其转换为位并发送它。下一个路由器将执行相同的操作,依此类推。仅在到达最终目的地时才被剥离回第7层。正如我之前提到的,路由器只关心将数据包到达目的地,因此它只关心第3层,因此它不会除了获得该信息所需的内容外,还需要查看其他任何东西的原因。因此,它将看到L1 / L2 / L3信息,但没有其他内容。
最终,数据将有望到达目标Web服务器,到那时,数据的外层将一直剥离到HTTP标头,以供Web服务器读取,并执行处理该请求所需的一切。 br />
注意:可以公平地说,其他因素也会干扰典型行为(防火墙,NAT / PAT,ACL等),但是最好对所有封装和解构的位置有一个扎实的了解。 -encapsulation正在发生,以了解它们如何影响网络和流量。

评论


关于第1层,是否将前同步码,帧开始序列,冲突检测报头等视为第1级“报头”?

– Nanofarad
2014年12月2日在21:48

这也确实非常有帮助-感谢您解决所有麻烦!

– Fibie
2014年12月2日于23:46

这是我希望得到的荣耀。我正在指导我的HellDesk人员!

–史密斯
2014年12月4日23:30

#2 楼

这些层可以在多个设备的多个级别上发生。
例如,当它击中我的防火墙时,防火墙会一直剥离到第4层,以对照我的ACL检查TCP端口。
然后将数据重新包装到第1层-如果我正在做NAT / PAT,它甚至会(gasp)修改该数据!-并将其锤击到下一个设备的线路上,这可能会更深层次地挖掘,或者没有那么深。

OSI模型层更多地是用于思考问题。它可能会或可能不会准确地发生。有些事情发生在多层上。一种“思考事物”是编程。用笼统的术语笼统地说,每一层都是独立处理的,并假定它下面/上面的各层均正常运行。和处理数据,不要忘了最后,用Monty Python的话说,“这只是一个模型。”

评论


非常感谢!很好的解释;非常清楚。这就是我的头脑。。。。。。。。。。。。。。。。。。。。。。。。。。。。

– Fibie
2014年12月2日在20:09