熟悉一下网络层
在提到多路分解和多路复用之前先了解一下大概运输层和网络层之间的关系。网络层是提供不可靠的传输服务。网络层协议有一个名字叫做IP,即网际协议。IP为主机之间提供了逻辑通信。IP的服务模型是尽力而为交付服务,但它不做任何保证。
- 它不确保报文段的交付
- 不保证报文段的按序交付
- 不保证报文段中数据的完整性。
所以将网络层的IP叫为不可靠服务
TCP和UDP所提供的服务
TCP和UDP最基本的责任是:将两个端系统间IP的交付服务扩展为运行在端系统上两个进程之间的交付服务。
简单来说,网络层实现的主机之间的通信,而运输层实现的是主机上进程间的通信。
UDP和TCP还可以在报文段首部中包括差错检查字段而提供完整性检查。
进程到进程的数据交付和差错检查是最低限度的运输层协议。
其中TCP还提供可靠数据传输和拥塞控制。至于其中原理在这里不多赘述。
相对来说UDP就没有提供可靠传输。
多路复用和多路分解
将运输层报文段中的数据交付到正确的套接字的工作称为多路分解
在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递给网络层,所有这些工作叫为多路复用
运输层报文段
从上面可知,多路复用需要从不同的套接字中收集数据块。那么就有以下要求:
- 套接字有唯一标识符
- 每个报文段有特殊字段来指示该报文段所要交付的套接字
这些字段是源端口字段和目的端口字段。
运输层的分解服务:
在主机上的每个套接字能够分配一个端口号,当报文段到达主机时,运输层检查报文段中的目的端口号,并将其定向到相应的套接字。然后报文段中的数据通过套接字进入其所连接的进程。