目录
3.1 概述和运输层服务
- 运输层和网络层的关系
- 因特网运输层概述
3.2 多路复用与多路分解
概述和运输层服务
我们将从讨论运输层和网络层的关系开始,这就进入了研究运输层第一个关键功能的阶段,即将网络层的 在 两个端系统之间的交付服务扩展到运行在两个不同端系统上的应用进程之间的交付服务
该层为运行在不同主机上的应用进程提供直接的通信服务起着至关重要的作用。从从应用程序的角度上看,通过逻辑通信,运行不同进程的主机好像直接相连一样;应用进程使用运输层提供的逻辑通信彼此发送报文,而无需考虑承载这些报文的物理基础设施的细节。
接下来我们将讨论网络中第二个基础性的重要问题,即控制运输层实体的传输速率和避免网络中的拥塞,或从拥塞中恢复过来,我们将考虑拥塞的原因和后果,以及常用的拥塞控制技术,在透彻地理解了拥塞控制问题之后,我们将研究TCP的控制拥塞的办法。
运输层协议是端系统中而不是在路由器中实现的。在发动端,运输层将从发送应用程序的进程接收到的报文转换成把运输层分组,用因特网术语来讲该分组称为运输层报文段。
运输层和网络层的关系
- 网络层提供了主机间的逻辑通信
- 运输层为运行在不同主机上的应用进程之间提供了逻辑通信
因特网运输层概述
因特网(更一般地讲是一个TCP/IP网络)为应用层提供了两种截然不同的可用运输层协议:
- UDP(用户数据报协议)不可靠、无连接的服务
- TCP(传输控制协议) 可靠、面向传输的服务
UDP和TCP最基本的责任是,将两个端系统间IP的交付服务扩展为运行在端系统上的两个进程之间的交付服务。将主机间交付扩展到进程间交付被称为运输层的多路复用与多路分解。UDP和TCP还可以通过其在报文段首部中包括差错检查字段而提供完整性检查。进程到进程的数据交付和差错检查是两种最低限度的运输层服务,也是UDP所能提供的仅有的两种服务。UDP流量是不可调节的,应用程序可以根据其需要的任何速率发送数据。
另一方面,TCP为应用进程提供了几种附加服务
-
可靠数据传输
通过使用流量控制、序号、确认和定时器,确保正确地、按序地将数据从发送进程交付给接受进程。 -
拥塞控制
可以通过调节TCP连接的发送端发送进网络的流量速率来做到
3.2 多路复用与多路分解
现在我们考虑接收主机怎样将一个到达的运输层报文段定向到适当的套接字。为此目的,每个运输层报文段中具有几个字段。在接收端,运输层检查这些字段,标识出接收套接字,进而将报文段定向到该套接字。将运输层报文段中的数据交付到正确的套接字的工作称为多路分解。
在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息(这将在以后用于分解)从而生成报文段,然后将报文段传递到网络层,所有这些工作称为多路复用。
运输层多路复用的要求:
-
套接字有唯一的标识符
-
每个报文段有特殊字段来指示该报文段所要交付到的套接字
image.png- 源端口号字段
- 目的端口号字段
- 周知端口号
- 无连接的多路复用与多路分解
clientSocket=socket(socket.AF_INET,socket.SOCK_DGRAM)
用这种方式创建一个UDP套接字时,运输层自动地为该套接字分配一个端口号。
通过为UDP套接字分配端口号,我们现在能精确地描述UDP的复用与分解了。假定在主机A中的一个进程具有UDP端口号19157,它要发送一个应用程序数据块给位于主机B中的另一进程,该进程具有UDP端口46428,。主机A中的运输层创建一个运输层报文段,其中包括应用程序数据、源端口号(19157)、目的端口号(46428)和两个其他值。然后,运输层将得到的报文段传递给网络层。网络层将该报文段封装到一个IP数据报中,并尽力而为地将报文段交付给接收主机。如果该报文段到达接受主机B,接收主机运输层就检查该报文段中的目的端口号(46428),并将该报文段交付给端口号46428所标识的套接字。值得注意的是,主机B能够运行多个进程,每个进程都具有自己的UDP套接字和相联系的端口号。当从网络到达UDP报文段时,主机B通过检查该报文段中的目的端口号,将每个报文段定向(分解)到相应的套接字。
注意到:
一个UDP套接字是由一个二元组来全面标识的,该二元组包含一个目的IP地址和一个目的端口号。因此,如果两个UDP报文段有不同的源IP地址和/源端口号,但具有相同的目的IP地址和目的端口号,那么这两个报文段将通过相同的套接字被定向到相同的目的进程。
也许你现在想知道,源端口号的用途是什么呢?如图,在A到B的报文段中,源端口号作“返回地址”的一部分,即当B需要回发一个报文段给A时,B到A的报文段中的目的端口号便从A到B的报文段中的源端口号取值。(完整的返回地址是A的IP地址和源端口号。)
image.png
-
面向连接的多路复用与多路分解
TCP套接字是一个四元组(源IP地址,源端口号,目的IP地址,目的端口号)来标识的。这样,当一个TCP报文段从网络到达一台主机时,该主机使用全部的4个值将报文段定向(分解)到相应的套接字。特别与UDP不同的是,两个具有不同源IP地址或源端口号的到达TCO报文段将被定向到两个不同的套接字,除非TCP报文段携带了初识创建连接的请求。 -
Web服务器与TCP
网友评论