传输层协议在不同主机上的应用进程之间提供了逻辑通信功能。传输层协议是在端系统中而不是在路由器实现的。在发送端,传输层将发送应用程序进程接收到的报文转换为传输层分组,该报文也被称为报文段。然后在发送端系统中,传输层将这些报文段传递给网络层,网络层将其封装为网络层分组并向目的地发送。网络路由器仅用于该数据报的网络层字段,即它们不检查封装在该数据报的传输层报文段的字段。在接收端,网络层从数据报中提取传输层报文段,并将该报文段向上交给传输层。传输层则处理接收到的报文段,使该报文段中的数据为接收应用进程使用。
(1)传输层和网络层的的关系
网络层提供了主机之间的逻辑通信,而传输层为运行在不同主机上的进程提供了逻辑通信。即时底层网络协议是不可靠的,也就是说网络协议会使分组丢失、篡改和冗余,传输层协议也能为应用程序提供可靠的数据传输服务。即时网络层不能保证传输层报文的机密性,传输协议也能使用加密来确保应用程序报文不被入侵者读取。
(2)传输层概述
在网络层中,有一个IP协议,它进行尽力而为的交付服务。这意味着它尽最大的努力在通信的主机之间交付报文段,但它不做任何确保。特别是,它不确保报文的交付,不确保报文的按序交付,不保证报文段中的数据完整性。因此IP也被称为不可靠服务。TCP和UDP的基本责任是,将两个端系统间IP的交付服务扩展为运行在端系统上的两个进程之间的交付服务。将主机间交付扩展到进程间交互被称为传输层的多路复用与多路分解。TCP和UDP还可以通过在其报文首部中包括差错检查字段而提供完整性检查。进程到进程的数据交付和差错校验是两种最低限度的传输层服务,也是UDP所能提供的仅有的两种服务。
每个传输层报文具有几个字段,在接收端,传输层检查这些字段,标识出接收套接字,进而将报文段定向到该套接字。将传输层报文段中的数据交付到正确的套接字的工作称为多路分解。在源主机中从不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层,所有这些工作被称为多路复用。这些特殊字段是源端口号字段和目的端口号字段。
UDP只是传输层协议能做的最少工作。除了复用/分解功能和少量的差错校验外,它几乎没有对IP增加别的东西。使用UDP时,在发送报文段前,发送方和接收方的传输层实体之间没有握手,因此,UDP被称为是无连接的。
(1)DNS
DNS是一个典型的使用UDP的应用层协议。当一台主机中DNS应用程序需要进行一次查询时,它首先构造一个DNS查询并交给UOP。然后主机端的UDP为报文添加首部字段,然后将形成的报文端交给网络层。网络层将次UDP报文封装进一个IP数据报中,然后将其发送给一个名字服务器。然后DNS应用等待响应,如果它没有收到响应,要么试图向另一个名字服务器发送该查询,要么通知调用的应用程序它不能获得响应。
(2)UDP的特点
(3)UDP的报文结构
UDP的首部只有四个字段,每个字段由两个字节组成。
(4)UDP检验和
UDP检验和提供了差错检验功能。检验和用于确定当UDP从源到达目的地时,其中的比特是否发生了变化。
- 提供可靠的面向连接的传输服务
- 提供拥塞控制
(1)TCP连接
TCP连接总是点对点的,即在单个发送方和单个接收方之间的连接。TCP为每块客户数据配上一个TCP首部,从而形成多个TCP报文段。这些报文段被下传给网络层,网络层将其分别封装在网络层IP数据报中。
(2)TCP报文结构
TCP报文由首部字段和一个数据字段组成。数据字段包含一块应用数据。TCP报文的首部一般是20个字节,与UPD一样,首部包含源端口号和目标端口号,另外,和UDP一样,TCP首部也包括检验和字段。除此之外,还有:
(3)序号和确认号
TCP报文首部中最重要的字段是序号字段和确认号字段。这两个字段是TCP提供可靠服务的关键部分。TCP将数据看成一个无结构的、有序的字节流。因为序号是建立在传送的字节流之上,而不是建立在传送的报文段的序列之上。因此一个报文段的序号是该报文段首字节的字节流编号。
而确认号则是,期望从目标主机收到的下一字节的序号。当发现有出现丢失字节的情况时,会在下一个报文中的确认号字段中包含丢失的首字节序号,所以TCP被称为提供累积确认的服务。并且,在接收报文段的过程中,可能会出现报文段失序的情况,此时有两种选择:丢失失序报文段和保留失序报文段,等待缺失报文段填补间隔。显然后一种更高效,这也是实践应用中采用的方法。
(4)可靠数据传输
TCP在IP不可靠的尽力而为服务之上创建了一种可靠数据传输服务。TCP的可靠数据传输服务确保一个进程从其接收缓存中读出的数据流是无损坏、无间隙、非冗余和按序的数据流;即该字节流与连接的另一方端系统发送的字节流是完全相同的。
(5)流量控制
TCP为它的应用程序提供了流量控制服务以消除发送方使接收方缓存溢出的可能性。流量控制因此是一个速度匹配服务,即发送方的发送速率与接收方应用程序的读取速度相匹配。TCP通过让发送方维护一个称为接收窗口的变量来提供流量控制。接收窗口用于给发送方一个指示————该接收方还有多少可用的缓存空间。
(6)TCP三次握手的详细过程
(1)拥塞控制的代价
(2)拥塞控制方法
(1)慢启动
当一条TCP连接开始时,cwnd的值通常初始置为一个很小的MSS值,这使得初始发送速率只用MSS/RTT(假如MSS=500字节,RTT=200ms,那么初始发送速率只有20kbps)。每当传输的报文段被首次确认,就会增加一个MSS,每过过一个RTT,TCP的发送速率就提高一倍。因此,TCP发送速率起始慢,但在慢启动阶段以指数增长。
结束加速情况
(2)拥塞避免
进入拥塞避免状态后,每个RTT只将cwnd的值增加一个MSS。
(3)快速恢复
在快速恢复中,对于引起TCP进入快速恢复状态的缺失报文段,对收到的每个冗余ACK,cwnd增加一个MSS。最终,当对丢失报文段的一个ACK到达时,TCP在降低cwnd后进入拥塞避免状态。
(4)公平性
考虑K条TCP连接,每条都有不同的端到端路径,但是都经过一段传输速率为Rbps的瓶颈链路。假设每条连接的平均传输速率接近R/K,即每条连接都得到相同份额的链路带宽,则认为该拥塞控制机制是公平的。
(5)网络辅助拥塞控制
允许网络明确向TCP发送方和接收方发出拥塞信号。这种形式的网络辅助拥塞控制称为明确拥塞通告。