0%

计网运输层L1

  • 运输层的任务是:解决进程之间基于网络的通信问题。

5.1 运输层概述

  • 之前课程所介绍的计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信

    但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C5-1.jpg)

  • 为了简单起见,在学习和研究运输层时,我们可以简单地认为,运输层直接为应用进程间的逻辑通信提供服务。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C5-2.jpg)

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C5-3.jpg)

5.2 运输层端口号、复用与分用的概念

★运输层端口号

  • TCP/IP 体系结构的运输层使用端口号来区分应用层的不同进程

    端口号使用 16 比特来标识,取值范围为 0 ~ 65535。

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C5-4.jpg)

    注意:端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,在因特网中,不同计算机中的相同端口号是没有联系的

发送方的复用和接收方的分用

![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C5-5.jpg)

★TCP/IP体系的应用层常用协议所使用的运输层熟知端口号

![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C5-6.jpg)

★★★运输层端口号应用实例

  • 如下如所示,用户 PC、DNS 服务器和 Web 服务器通过以太网交换机进行互联,它们处于同一个以太网中。如果我们在 PC 中使用网页浏览器来访问 Web 服务器的内容,则在网页浏览器的地址栏中输入 Web 服务器的域名,然后需要经过下面的步骤才能在网页浏览器中显示 Web 服务器的内容:

    ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C5-7.jpg)

    1. 首先,用户 PC 中的 DNS 客户端进程会发送一个 DNS 查询请求报文该 DNS 查询请求报文需要使用运输层的 UDP 协议封装成 UDP 用户数据报,其首部中的源端口字段的值从短暂端口号中挑一个未被占用的,用来表示 DNS 客户端进程目的端口字段的值设置为 53,这是 DNS 服务器端进程所使用的熟知端口号

      ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C5-8.jpg)

    2. 然后,将 UDP 用户数据报封装在 IP 数据报中,通过以太网发送给 DNS 服务器,DNS 服务器接收到该 IP 数据报后,从中解封出 UDP 用户数据报。UDP 首部中的目的端口为 53,这表明应将该 UDP 用户数据报的数据载荷部分(即 DNS 查询请求报文)交付给本服务器中的 DNS 服务器端进程,DNS 服务器端进程解析 DNS 查询请求报文的内容,然后按其要求查找对应的 IP 地址,然后给用户 PC 发送 DNS 响应报文DNS 响应报文需要使用运输层的 UDP 协议封装成 UDP 用户数据报,其首部中的源端口字段的值设置为 DNS 服务器端进程的熟知端口号 53,表明这是 DNS 服务器端进程所发送的 UDP 用户数据报目的端口字段的值设置为 49152(即用户 PC 的 DNS 客户端进程的端口号)。

      ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C5-9.jpg)

    3. 之后,将封装有 DNS 响应报文的 UDP 用户数据报封装在 IP 数据报中,通过以太网发送给用户 PC,用户 PC 接收到该 IP 数据报后,从中解封出 UDP 用户数据报,用户 PC 发现 UDP 首部中的目的端口字段的值为 49152,就知道要将该 UDP 用户数据报的数据载荷部分(即 DNS 响应报文)交付给用户 PC 中的 DNS 客户端进程,该 DNS 客户端进程解析 DNS 响应报文的内容,从而知道自己之前所请求的 Web 服务器的域名 www.porttest.com 所对应的 IP 地址为 192.168.0.3。此时,用户 PC 中的 HTTP 客户端进程就可以向 Web 服务器发送 HTTP 请求报文了。

      ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C5-10.jpg)

    4. 用户 PC 中的 HTTP 客户端进程会发送一个 HTTP 请求报文该 HTTP 请求报文需要使用运输层的 TCP 协议封装成 TCP 报文段,其首部中的源端口字段的值从短暂端口号中挑一个未被占用的,用来表示 HTTP 客户端进程(这里仍使用了 49152,也可以是其他的数值,因为是短暂端口号,所以可以重复使用),目的端口字段的值设置为 80,这是 HTTP 服务器端进程所使用的熟知端口号

      ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C5-11.jpg)

    5. 然后,将 TCP 报文段封装在 IP 数据报中,通过以太网发送给 Web 服务器,Web 服务器接收到该 IP 数据报后,从中解封出 TCP 报文段。TCP 首部中的目的端口为 80,这表明应将该 TCP 报文段的数据载荷部分(即 HTTP 请求报文)交付给本服务器中的 HTTP 服务器端进程,HTTP 服务器端进程解析 HTTP 请求报文的内容,然后按其要求查找首页内容,然后给用户 PC 发送 HTTP 响应报文HTTP 响应报文需要使用运输层的 TCP 协议封装成 TCP 报文段,其首部中的源端口字段的值设置为 HTTP 服务器端进程的熟知端口号 80,表明这是 HTTP 服务器端进程所发送的 TCP 报文段目的端口字段的值设置为 49152(即用户 PC 的 HTTP 客户端进程的端口号)。

      ![](../../../../../Running Noob/计算机/Typora笔记/笔记-git仓库/Computer_Network_micro-classroom/img/计网微课堂/计网微课堂C5-12.jpg)

    6. 之后,将封装有 HTTP 响应报文的 TCP 报文段封装在 IP 数据报中,通过以太网发送给用户 PC,用户 PC 接收到该 IP 数据报后,从中解封出 TCP 报文段,用户 PC 发现 TCP 首部中的目的端口字段的值为 49152,就知道要将该 TCP 报文段的数据载荷部分(即 HTTP 响应报文)交付给用户 PC 中的 HTTP 客户端进程,该 HTTP 客户端进程解析 HTTP 响应报文的内容,并在网页浏览器中进行显示,这样,我们就可以在网页浏览器中看到 Web 服务器所提供的首页内容了。

---------------The End---------------