文章目录
欢迎来到《运输层揭秘》的第 5 章! 在前面的章节中,我们介绍了如何通过异构网络互连主机,实现主机到主机的通信。然而,计算机网络中真正进行通信的实体是位于通信线路两端的主机中的进程。为运行在不同主机上的应用进程提供直接的通信服务,正是运输层的任务。
运输层的重要性
运输层协议,又称为端到端协议,位于应用层和网络层之间,是整个网络体系结构中的关键层次之一。理解运输层的概念对网络通信至关重要。
本章要点概述
- 运输层为相互通信的应用进程提供逻辑通信
- 运输层的复用与端口的概念
- 无连接的 UDP 的特点
- 面向连接的 TCP 如何实现可靠传输,包括滑动窗口、流量控制、拥塞控制和连接管理
5.1 运输层协议概述
5.1.1 进程之间的通信
运输层(也翻译为传输层)向应用层提供端到端的通信服务。虽然 IP 能够将分组送到目的主机,但这些分组还停留在主机的网络层,没有交付给主机中的应用进程。从运输层的角度看,真正的通信端点是主机中的进程。
复用和分用是运输层的重要功能。复用是指多个应用进程可以使用同一个运输层协议传送数据,而分用则是指接收方的运输层在剥去报文的首部后,能够把数据正确交付到目的应用进程。
图解运输层的作用
逻辑通信的意思是,运输层之间的通信好像是水平传送数据,但事实上,这两个运输层之间并没有水平方向的物理连接,要传送的数据是沿着上下多次的虚线传送的。
网络层 vs 运输层
网络层为主机之间提供逻辑通信,而运输层为应用进程提供端到端的逻辑通信。
互联网的运输层协议
互联网的网络层提供的是一种尽最大努力交付的数据报服务(IP 报文可能出错、丢失或失序)。为满足不同应用的需求,运输层提供了两种协议:
- 用户数据报协议(UDP)
- 传输控制协议(TCP)
UDP 在传送数据之前不需要建立连接,接收方也不需要确认。这种方式在某些情况下最有效。TCP 则提供面向连接的服务,必须先建立连接,结束后释放连接。TCP 提供可靠的传输,但增加了确认、流量控制等开销。
5.1.3 运输层的复用与分用
前面提到的复用和分用功能在日常生活中也有很多类似的例子。假设一个机关的所有部门向外单位发出的公文都由收发室负责寄出,这相当于各部门都“复用”这个收发室。当收发室收到从外单位寄来的公文时,则要完成“分用”功能,即按照信封上写明的本机关的部门地址正确交付公文。
运输层的复用和分用功能与之类似。应用层所有的应用进程都可以通过运输层再传送到 IP 层,这就是复用。运输层从 IP 层收到数据后必须交付指定的应用进程,这就是分用。TCP/IP 网络利用软件端口(Port)来实现复用和分用。
端口是应用层与运输层之间接口的抽象,如图 5-4 所示。需要用运输层协议进行通信的进程,都需要与某个端口关联,端口号标识了应用进程所关联的端口,相当于应用进程的运输层地址。
由此可见,两台计算机中的进程要互相通信,不仅要知道对方的 IP 地址(为了找到对方的计算机),而且要知道对方的端口号(为了找到对方计算机中的应用进程)。我们知道应用进程间的通信采用的是客户—服务器通信模式,在应用层中的各种不同的服务器进程不断地监听它们的端口,以便发现是否有某个客户进程要和它通信。客户在发起通信请求时,必须先知道对方服务器的 IP 地址和端口号,而服务器总是可以从接收到的报文中获得客户的 IP 地址和端口号。
运输层的端口号分类
-
熟知端口号(Well-Known Port number) :数值为 0~1023,由 IANA 负责分配,常用于常见的应用层程序。
例子:
-
登记端口号:数值为 1024~49151,可以在 IANA 注册登记,以防止重复使用。
-
动态端口号:数值为 49152~65535,留给客户进程选作临时端口号。
接下来,我们将分别讨论 UDP 和 TCP。UDP 比较简单,本章的主要篇幅将讨论 TCP。
希望这篇文章能帮助你更好地理解运输层协议的基本原理和应用。如果你觉得有帮助,请点赞并分享!
图文来源:《计算机网络教程》第六版微课版