传输服务、多路复用与多路分解
传输层
传输层协议为运行在不同主机上的应用进程之间提供了逻辑通信。在发送端,传输层将应用进程的报文添加传输层首部形成传输层分组,称为报文段(segment),这个过程被称为多路复用(multiplexing)。在接收端,网络层从数据报中提取传输层报文段,并交付给传输层,传输层处理报文段,将数据交付给应用进程,这个过程被称为多路分解(demultiplexing)。
应用层可以使用UDP和TCP这两种截然不同的传输层协议。其中UDP提供了一种不可靠、无连接的服务,因此,UDP不能保证一个进程发送的数据能够完整无缺地到达目的进程。而TCP提供了一种可靠的、面向连接的服务,通过使用流量控制、序号、确认和定时器,TCP确保正确地、按序地将数据交付给接收进程。
无连接的多路复用/多路分解
一个UDP的socket是由一个二元组进行标识的,该二元组包含了目的IP地址和目的端口号。如果两个UDP报文段来自不同的源IP地址或源端口号,但是具有相同的目的IP和目的端口号,那么这两个报文段将通过相同的socket被发送到相同的目的进程。
使用UDP时,当A给B发送的报文段中,源端口号是用作返回地址的一部分。当B回发一个报文段给A时,就需要从A到B的报文段中取值。
知识测验
题目
两个UDP报文段源IP不同,目的IP与目的端口相同。在本节模型中交给几个接收套接字?
面向连接的多路复用与多路分解
TCP的socket是由一个四元组来标识的,其中包括了源IP地址、源端口号、目的IP地址和目的端口号。与UDP不同的是,两个具有不同源IP地址或源端口号的TCP报文段将被发送到两个不同的socket。
互动实验
把两个客户的报文段交付给套接字
访问权限PRO
PRO EXCLUSIVE探索不止于此
尊享 Pro 权益解锁完整互动实验、进阶解析与精选参考答案。
知识测验
题目
A:9157与B:9157同时连接C:80,如何区分两个已建立的TCP连接?
动手练习
确定套接字与回复地址
A:9157、B:5775、A:9158分别向C:6428发送UDP报文段,再分别建立到C:80的TCP连接。按本节模型列出接收标识与套接字数量,并写出C向B回复UDP时的源与目的。