多路复用和多路分用是传输层协议必须提供的服务。
多路复用和多路分用在网络传输过程中是普遍存在的,非传输层独有。
1. 一个例子
host1的p3进程向host2的p1进程传输信息,与此同时host3的p4进程也向host2的p2进程传输信息。
对于接收端,接收端运输层对到达的多个运输层报文进行识别,提取socket信息,将报文段定位到对应的socket上,该过程称为多路分用。
对于发送端,从不同socket上收集信息并分别加上首部,通过网络层发送出去,称为多路复用。
2. 多路分用的具体工作方式
主机接收一个IP数据报,该IP数据报携带源IP地址和目的IP地址。对IP数据报解封装后得到一个传输层的segment,segment中有源端口号和目的端口号,对应着源进程和目的进程,传输层协议根据端口号正确的分发数据。
3. 无连接分用(UDP)
无连接分用的特点:
- 创建socket,并将socket绑定到某个端口号上,UDP使用目的IP地址和目的端口号组成二元组唯一标识socket
- 主机收到UDP段后,检查目的端口号,UDP段连接到对应端口上的socket。
- 来自不同主机而传输给同一进程的UDP段会被连接到同一个socket上。
4. 面向连接分用(TCP)
面向连接分用的特点:
- TCP采用包含源IP地址、源端口号、目的IP地址、目的端口号的四元组来标识socket。
- TCP协议是面向连接的(点对点的)协议,体现在传输层上就是接收进程会为每一个不同来源的TCP段创建socket。
多进程的面向连接分用:
由于创建和维护进程的成本较高,通常服务器会采用一种更低成本的方法,也就是创建一个进程下的多个线程来与客户机通信,每个线程会有独立的socket。
多线程的面向连接分用: