计算机网络—— 运输层(123):运输层概述运输层端口复用与分用的概念UDP和TCP的对比

Posted 大彤小忆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络—— 运输层(123):运输层概述运输层端口复用与分用的概念UDP和TCP的对比相关的知识,希望对你有一定的参考价值。

1. 运输层概述

  ■ 之前的计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信
  ■ 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程
  ■ 如何为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议。

在这里插入图片描述
   下图从计算机网络体系结构的角度来看运输层。AP1、AP2、AP3、AP4是通信双方应用层中的应用进程,假设AP1与AP4之间进行基于网络的通信,AP2与AP3之间进行基于网络的通信。在运输层使用不同的端口来对应不同的应用进程,然后通过网络层及其下层来传输应用层报文。接收方的运输层通过不同的端囗将收到的应用层报文交付给应用层中相应的应用进程。需要注意的是,这里的端口并不是指看得见摸得着的物理端口,而是指用来区分不同应用进程的标识符。为了简单起见,在学习和研究运输层时,我们可以简单的认为运输层直接为应用进程间的逻辑通信提供服务。“逻辑通信”的意思是,运输层之间的通信好像是沿水平方向传送数据,但事实上这两个运输层之间并没有一条水平方向的物理连接,要传送的数据是沿着图中上下多次的虚线方向传送的。

在这里插入图片描述
   运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑
、所采用的路由选择协议等),它使应用层看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道。
   根据应用需求的不同,因特网的运输层为应用层提供了两种不同的运输层协议,即面向连接的TCP无连接的UDP

1.1 课后练习

   1. 运输层为( B )之间提供逻辑通信服务。
    A. 主机   B. 进程   C. 路由器   D. 操作系统
    分析: 运输层为进程之间提供逻辑通信服务。

   2. 在TCP/IP体系结构中,运输层的主要作用是在互联网络的源主机和目的主机对等实体之间建立用于会话的( C )
    A. 点到点连接   B. 操作连接   C. 端到端连接   D. 控制连接
    分析: 在TCP/IP体系结构中,运输层的主要作用是在互联网络的源主机和目的主机对等实体之间建立用于会话的端到端连接。

2. 运输层端口、复用与分用的概念

  ■ 运行在计算机上的进程使用进程标识符PID来标志。
  ■ 因特网上的计算机并不是使用统一的操作系统,不同的操作系统(windows,Linux,Mac oS)又使用不同格式的进程标识符。
  ■ 为了使运行不同操作系统的计算机的应用进程之间能够进行网络通信,就必须使用统一的方法对TCP/IP体系的应用进程进行标识
  ■ TCP/IP体系的运输层使用端口号来区分应用层的不同应用进程。
    ⋄ \\diamond 端口号使用16比特表示,取值范围0~65535;
     ∘ \\circ 熟知端口号:0~1023,因特网数字分配机构IANA把这些端口号指派给了TCP/IP体系中最重要的一些应用协议,例如:FTP使用21/20,HTTP使用80,DNS使用53。
     ∘ \\circ 登记端口号: 1024~49151,为没有熟知端口号的应用程序使用。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。例如:Microsoft RDP微软远程桌面使用的端口是3389。
     ∘ \\circ 短暂端口号: 49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
    ⋄ \\diamond 端口号只具有本地意义,即端口号只是为了标识本计算机应用层中的各进程,在因特网中,不同计算机中的相同端口号是没有联系的
  ■ 发送方的复用和接收方的分用
   如下图所示,对于收发双方的应用进程,发送方的某些应用进程所发送的不同应用报文,在运输层使用UDP协议进行封装,称为UDP复用。而另一些应用进程所发送的不同应用报文,在运输层使用TCP协议进行封装,称为TCP复用
   运输层使用端口号来区分不同的应用进程,不管是使用运输层的UDP协议封装成的UDP用户数据报,还是使用TCP协议封装成的TCP报文段,在网络层都需要使用IP协议封装成IP数据报,称为IP复用
   IP数据报首部中协议字段的值用来表明IP数据报的数据载荷部分封装的是何种协议数据单元,取值为6,表示封装的是TCP报文段;取值为17,表示封装的是UDP用户数据报。接收方的网络层收到IP数据报后进行IP分用,若IP数据报首部中协议字段的值为17,则把IP数据报的数据载荷部分所封装的UDP用户数据报上交运输层的UDP;若协议字段的值为6,则把IP数据报的数据载荷部分所封装的TCP报文段上交运输层的TCP。
   运输层对UDP用户数据报进行UDP分用,对TCP报文段进行TCP分用,也就是根据端口号将它们交付给上层相应的应用进程。

在这里插入图片描述
  ■ TCP/IP体系的应用层常用协议所使用的运输层熟知端口号

在这里插入图片描述

2.1 课后练习

  1. 在TCP/IP中,采用( A )来区分不同的应用进程。
    A. 端口号  B. IP地址  C. 协议类型   D. MAC地址
   分析: 在TCP/IP中,采用端口号来区分不同的应用进程。

  2. 在TCP/IP网络中,为各种熟知应用保留的端口号范围是( B)
    A. 1~255  B. 0~1023  C. 1~1024   D. 1~65535
   分析: 熟知端口号:0~1023,因特网数字分配机构IANA把这些端口号指派给了TCP/IP体系中最重要的一些应用协议。

  3. 在TCP/IP中,运输层端口号的范围是( D)
    A. 1~255  B. 0~1023  C. 1~1024   D. 1~65535
   分析: TCP/IP体系的运输层使用端口号来区分应用层的不同应用进程,端口号使用16比特表示,取值范围0~65535。

3. UDP和TCP的对比

  ■ UDP和TCP是TCP/IP体系结构运输层中的两个重要协议
   下图所示的是TCP/IP体系结构,运输层有两个非常重要的协议UDP和TCP。在使用TCP/IP体系结构的网络通信中,这两个协议的使用频率仅次于网际层的IP协议。TCP/IP体系结构应用层中的某些协议需要使用运输层的TCP提供的服务,而另一些协议需要使用运输层的UDP提供的服务,UDP是用户数据报协议的英文缩写词,TCP是传输控制协议的英文缩写词。

在这里插入图片描述
  接下来从几个方面对这两个协议进行比较。

  • 对比1: 如下图所示,左边是因特网上的两台主机,它们在运输层使用UDP协议进行通信,纵坐标为时间,使用UDP协议的通信双方可以随时发送数据。
          右边是使用TCP协议的情况,使用TCP协议的通信双方在进行数据传输之前,必须使用“三报文握手”来建立TCP连接,TCP连接建立成功后才能进行数据传输。数据传输结束后,必须使用“四报文挥手”来释放TCP连接。“三报文握手”和“四报文挥手”属于TCP的连接管理,其过程比较复杂。需要注意的是,这里所谓的连接是指逻辑连接关系,而不是物理连接。综上所述,UDP是无连接的,而TCP是面向连接的。

    在这里插入图片描述
  • 对比2: 如下图所示,左边是某个局域网上的、使用UDP协议进行通信的四台主机。其中任何一台主机都可向其他三台主机发送广播,也可以向某个多波组发送多波,还可以向某台主机发送单波,也就是说UDP支持单播、多播以及广播。换句话说,UDP支持一对一、一对多以及一对全的通信。
          右边是使用TCP协议的情况,使用TCP协议的通信双方在进行数据传输之前,必须使用“三报文握手”来建立TCP连接,TCP连接建立成功后通信双方之间就好像有一条可靠的通信信道。通信双方使用这条基于TCP连接的可靠信道进行通信。很显然,TCP仅支持单播,也就是一对一的通信。

    在这里插入图片描述
  • 对比3: 接下来对比这两个协议对应用报文的处理。如下图所示,左边是使用UDP协议的情况,发送方的应用进程将应用层报文交付给运输层的UDP。UDP直接给应用层报文添加一个UDP首部,使之成为UDP用户数据报,然后进行发送。需要说明的是,为了简单起见,我们忽略运输层下面的各层处理。接收方的UDP收到该UDP用户数据报后,去掉UDP首部,将应用层报文交付给应用进程,也就是说UDP对应用进程交下来的报文既不合并也不拆分,而是保留这些报文的边界。换句话说,UDP是面向应用报文的。
          右边是使用TCP协议的情况,发送方的TCP把应用进程交付下来的数据块仅仅看作是一连串的、无结构的字节流。TCP并不知道这些待传送的字节流的含义,仅将它们编号并存储在自己的发送缓存中。TCP根据发送策略,从发送缓存中提取一定数量的字节,构建TCP报文段并发送。接收方的TCP一方面从所接收到的TCP报文段中取出数据载荷部分并存储在接收缓存中,一方面将接收缓存中的一些字节交付给应用进程。TCP不保证接收方应用进程所收到的数据块与发送方应用进程所发出的数据块具有对应大小的关系,例如发送方应用进程交给发送方的TCP共10个数据块,但接收方的TCP可能只用了4个数据块就把收到的字节流交付给了上层的应用进程,但接收方应用进程收到的字节流必须和发送方应用进程发出的字节流完全一样。当然,接收方的应用进程必须有能力识别收到的字节流,把它还原成有意义的应用层数据,也就是说TCP是面向字节流的。这正是TCP实现可靠传输流量控制以及拥塞控制的基础。

    在这里插入图片描述
  • 对比4: 如下图所示,左边是使用UDP协议的情况。TCP/IP体系结构的网际层向其上层提供的是无连接不可靠的传输服务。当运输层使用UDP协议时,向其上层提供的也是无连接不可靠的传输服务。发送方给接收方发送UDP用户数据报,若传输过程中,用户数据报受到干扰而产生误码,接收方UDP可以通过该数据报首部中的校验和字段的值,检查出产生误码的情况,但仅仅丢弃该数据报,其他什么也不做。发送方给接收方发送UDP用户数据报,如果该数据报被因特网中的某个路由器丢弃了,发送方UDP不做任何处理。因为UDP向上层提供的是无连接不可靠的传输服务,因此对于UDP用户数据报出现的误码和丢失等问题,UDP并不关心。基于UDP的这个特点,UDP适用于实时应用,例如IP电话视频会议等。
          右边是使用TCP协议的情况,尽管网际层中的IP协议向上层提供的是无连接不可靠的传输服务,也就是说IP数据报可能在传输过程中出现丢失或误码,但只要运输层使用TCP协议就可向其上层提供面向连接的可靠传输服务。我们可将其想象成,使用TCP协议的收发双方基于TCP连接的可靠信道进行数据传输,不会出现误码、丢失、乱序以及重复等传输差错。TCP适用于要求可靠传输的应用,例如文件传输。

    在这里插入图片描述
  • 对比5: 最后对比一下UDP用户数据报的首部与TCP报文段的首部。如下图所示,左边是使用UDP协议的情况,一个UDP用户数据报由首部和数据载荷两部分构成。其首部格式如图所示,仅有4个字段,每个字段长度为2个字节。由于UDP不提供可靠传输服务,它仅仅在网际层的基础上添加了用于区分应用进程的端口,因此它的首部非常简单,仅有8个字节。
          右边是使用TCP协议的情况,一个TCP报文段由首部和数据载荷两部分构成。其首部格式如图所示,比UDP用户数据报的首部复杂的多,且最小长度为20字节,最大长度为60字节。这是因为TCP要实现可靠传输、流量控制拥塞控制等服务,其首部自然会比较复杂,首部中的字段比较多,首部长度也比较长。

    在这里插入图片描述

3.1 总结

在这里插入图片描述

3.2 课后练习

  1. 以下字段包含在TCP首部中而不包含在UDP首部中的是( B )
    A. 目标端口号  B. 序号   C. 源端口号   D. 校验和
   分析: 以下字段包含在TCP首部中而不包含在UDP首部中的是序号。

  2. 若接收端收到有差错的UDP用户数据报,则会( A )
    A. 将其丢弃  B. 请求重传   C. 纠错   D. 忽略差错
   分析: 若接收端收到有差错的UDP用户数据报,则会将其丢弃。
       当运输层使用UDP协议时,向其上层提供的是无连接不可靠的传输服务。发送方给接收方发送UDP用户数据报,若传输过程中,用户数据报受到干扰而产生误码,接收方UDP可以通过该数据报首部中的校验和字段的值,检查出产生误码的情况,但仅仅丢弃该数据报,其他什么也不做。

  3. UDP用户数据报比IP数据报多提供了( C )
    A. 流量控制功能  B. 拥塞控制功能   C. 端口功能   D. 路由转发功能
   分析: UDP用户数据报比IP数据报多提供了端口功能。

  4. 下列不属于TCP特点的是( D )
    A. 面向字节流  B. 全双工   C. 可靠   D. 支持广播
   分析: TCP特点:面向字节流、全双工、可靠。

以上是关于计算机网络—— 运输层(123):运输层概述运输层端口复用与分用的概念UDP和TCP的对比的主要内容,如果未能解决你的问题,请参考以下文章

计算机网络 运输层(上)

计算机网络 运输层(上)

计算机网络3.1 运输层概述 与 多路复用/分解

运输层

万字+图片解析计算机网络运输层

运输层