互联网OSI七层模型详细解析(二)

为了进一步了解数据包是如何在互联网上移动的以及要具备的条件。我们会以实用性为导向继续讨论OSI模型。在上一篇中,我们揭示了OSI物理层、数据链路层和网络层是如何为网络的总体目标(即数据的传输)做出贡献的,也讨论了第一层物理层负责的是跨线传输比特1和比特0。还解释了如果a1主机有一些数据需要发送到e8主机, 那么就需要从添加第3层报头(网络层报头)开始,来完成数据从一端到另一端的传输,另外还需要添加新的第2层报头(数据链路层报头)来完成数据的逐跳传递。现在我们将继续讨论OSI模型的第4层-传输层。

  • OSI传输层作用

传输层– OSI模型传输层的总体目标是完成服务到服务的交付。我们来举例说明一下,比如这里有一台计算机,它有一个IP地址和一个MAC地址,这时你打开了一个网页浏览器正在浏览网页,还在运行某个聊天程序,如slack聊天群组、discord或IRC,以及一些在线游戏。

它意味着每一个程序都需要通过网络发送和接收数据,而所有这些数据都将被指定给第三层网络层报头来完成端到端的传递,以及第二层数据链路层报头来完成节点与节点之间的通信。那么电脑是如何确保正确的程序接收到正确的数据包呢?这就是OSI第4层发挥作用的地方。

OSI第四层的作用:用于区分数据流。OSI传输层将接收所有传入的数据,并确保正确的程序能接收正确的数据。就像第三层(网络层)有一个寻址技术(IP地址)来进行端到端传输,第二层(数据链路层)有一种寻址方式(MAC地址)来完成节点到节点的传输,第四层也将使用自己的寻址方式来实现服务到服务的传输方式。

OSI传输层的寻址方式涉及的是端口。现在有两组端口TCP和UDP。TCP和UDP是区分数据流的两种不同策略。TCP提供可靠性服务,而UDP提供高效性服务,TCP和UDP协议都是实现传输层目标的不同策略。TCP与UDP的工作原理:每一个在网络上预期接收或发送数据的程序都将与指定的端口号相关联。当数据到达线路时,除了我们已经讨论过的网络层报头和数据链路层报头之外,还需要封装传输层报头。

  • 传输层报头封装的是什么?

传输层报头将指示哪个特定程序应该接收哪种数据,传输层主要用于确保正确的应用程序能接收正确的比特1和比特0。这是OSI第四层如何区分数据流的高级概述。让我们更详细地举例分析一下,如下图所示有一个客户端和三个服务器,正如之前所讨论的,服务器只不过是一台运行软件的计算机,但它知道如何响应特定的请求。服务器上的每一个软件都被分配了与底层网络应用程序相关的预定义的已知的端口号。

假设bank.com正在使用https侦听加密的web访问,被分配的是TCP端口443(HTTPS协议的默认端口号),site.com的服务器正在使用http响应一般web请求,被分配在TCP协议的默认端口80上侦听。该聊天服务器正在运行IRC (internet relay chat) ,IRC代表互联网中继聊天,它是运行在UDP端口6667上的在线聊天应用程序。

当客户端向这些服务器发出请求时,它不仅向IP地址发出请求,还会向相关的指定端口发出请求。从客户端发出的每个请求,都会选择一个随机端口号作为连接的源端口。因此,从客户端到site.com的连接包含了源端口号9999,这是客户端为这个特定连接随机选择的端口,该数据包的目的地指向site.com网站的IP地址,以及http应用程序的TCP端口80。

请记住,源IP地址和目的地IP地址将封装于数据包的第三层报头中,而源端口和目的地端口将封装于数据包的第四层报头中。实际上这个随机选择的源端口非常重要,它是客户端用于侦听并对原始请求做出响应的端口,这意味着当服务器响应web请求时,会发出一个包含发出端的源IP地址&端口号以及接收方的IP地址&端口号的响应包,目标端口9999与客户端最初发出的请求包上随机选择的端口相同。由此可以看出对于网络上所有的连接,都要有一个源端口和一个目标端口参与其中。

目的端口号通常由使用中的应用程序管理,源端口号则由客户端随机选择,因此从客户端到site.com的连接具有以下属性:它是从客户端的源IP地址1.1.1.1和源端口9999到服务器端的目的IP地址3.3.3.3和目标端口80的TCP连接。请注意,在原始数据包中,SRC 1.1.1.1 :9999是源地址和端口,DST 3.3.3.3 :80是目的地址和端口。但在响应包中,情况正好相反,SRC 3.3.3.3 :80是源数据,DST 1.1.1.1 :9999是目的数据。这个过程发生在与客户端产生的每次连接,也就是客户端每次的数据传输都会选择一个新的随机的源端口(比如图例的8888和7777)。这样当所有这些服务器响应时,从端口8888上返回的任何内容都将被提供给网络浏览器,从端口7777上返回的内容都将提供给IRC客户端。

通过这种方式,数据流之间会保持相互隔离,这些端口将确保正确的应用程序获得正确的数据,这一流程还允许客户端多次连接到同一服务器上。试想一下,当你浏览互联网时,你会在同一个网站上打开多个选项卡,而这些浏览器选项卡中的每一个都不会错误地显示另一个选项卡中的数据,原因是每次打开一个新选项卡时,客户端都会生成一个新的随机源端口。这就是数据流能彼此区分的原因。这是UDP或TCP协议的一个功能,这两种协议都是第四层传输层协议,第4层提供的是数据的服务到服务交付。

最后我们简单概括下OSI模型的最高层次。实际上,TCP/IP协议将OSI模型的会话层、表示层和应用层视为单个通用的应用层,我们将在下篇文章中详细说明。因为每个应用程序都可以自由地实现第5层、第6层和第7层的功能。因此,通常将这三个层简单地视为单个通用应用层。而另一种流行的互联网通信模型正是这样做的,TCP模型将OSI七层模型的5、6和7层的所有功能合并到一个层中。

Author: Maha

我是Wintesting中国站的 Maha,目前职位是市场营销&内容经理,负责CN Wintetsing网站内容的设计、编写与发布,同时还监管国内市场营销工作。与此同时,我也是一名IT培训教员,我的教育背景和所从事的行业都是与IT工程师行业及信息通信技术相关。此外,除了编写中英双语的新兴技术文稿外,我还是一名IT翻译工作者,累积翻译字数逾近10万,涉及的领域有大数据、人工智能、IoT、机器学习、云计算、AR&VR、计算机网络技术、计算机网络安全技术、应用程序测试、软件测试、系统测试、网络测试及IT基础设施等。如果你需要相关领域的内容编写或翻译工作请联系我。