进程与套接字
一个进程有一个或多个套接字( socket),它相当于从网络向进程传递数据和从进程向网络传递数据的门户。在接收主机中的运输层实际上并没有直接将数据交付给进程,而是将数据交给了一个中间的套接字。在任一时刻,在接收主机上可能有不止一个套接字,所以每个套接字都有唯一的标识符。标识符的格式取决于它是UDP还是TCP套接字。
怎样将一个到达的运输层报文段定向到对应的套接字?
为了达到目的,每个运输层报文段中具有几个字段。在接收端,运输层检查这些字段,标识出接收套接字,进而将报文段定向到该套接字。将运输层报文段中的数据交付到正确的套接字的工作称为多路分解(demultiplexing)。在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层,所有这些工作称为多路复用(multiplexing)。
运输层多路复用要求
- 套接字有唯一标识符;
- 每个报文段有特殊字段来指示该报文段所要交付到的套接字。字段是源端口号字段和目的端口号字段。
无连接的多路复用和多路分解
假定在主机A中的一个进程具有UDP端口19157,它要发送一个应用程序数据块给位于主机B中的另一进程,该进程具有UDP端口46428。主机A中的运输层创建一个运输层报文段,其中包括应用程序数据、源端口号(19157)、目的端口号****(46428ÿ