1. 概述
因特网为应用层提供了两种可用的运输层协议:UDP(用户数据报协议)和TCP(传输控制协议)。
- UDP:为调用它的应用程序提供不可靠、无连接的服务。
①“尽心而为交付服务”:不确保报文段无差错、按照一定次序的交付。 ②提供数据交付、差错检查两种服务。 - TCP:为调用它的应用程序提供可靠、面向连接的服务。
①提供数据交付、差错检查两种最低限度的运输层服务。 ②提供可靠数据传输、拥塞控制服务。
1.1 运输层服务
(1)运输层的作用 不同端系统之间进程与进程间的通信。
(2)运输层提供的服务 运输层协议为不同主机上的应用进程提供逻辑通信功能。
- 运输层协议是在端系统上实现的。
- 分组: 将应用报文划分为较小的块,并为每个块加上一个运输层首部以生成运输层报文段。
1.2 运输层和网络层的关系
- 网络层提供了主机之间的逻辑通信,运输层提供了不同主机上的应用进程之间的逻辑通信。
- 运输层协议提供的服务受限于网络层服务模型,但底层网络协议没有提供的服务,运输层也能够提供。
2. 多路复用与多路分解
(1)定义
- 套接字:一个进程有一个或多个套接字。
①套接字相当于从网络向进程传递数据和从进程向网络传递数据的门户。 ②每个套接字都有一个唯一的标识符。 - 多路分解:将运输层报文段中的数据交付给正确的套接字的工作。
①运输层检查首部字段,标识正确的套接字。 ②将报文段定向分解到该套接字。 - 多路复用:收集数据块,并为每个数据块封装上首部信息形成报文段,再将报文段传递到网络层。
(2)运输层多路复用的要求
- 每个套接字都有一个唯一的标识符。
- 每个报文段有特殊字段指示报文段所要交付到的套接字。
一般的,这些特殊字段为“源端口号”和“目的端口号”。
问题:理解源端口号作为特殊字段的目的
- 源端口号用作返回地址的一部分。(因为目的进程需要回发一个报文给发送进程)
2.1 无连接的多路复用与多路分解
(1)多路复用
- 通常,应用程序的客户端自动分配端口号,服务器端则分配特定的端口号。
(2)多路分解 UDP套接字:
- 由一个二元组标识,该二元组包含目的IP地址和一个目的端口号。
- 若两个UDP报文段具有相同的目的IP地址和目的端口号,则两个报文段将通过相同的套接字分解到相同的目的进程。
2.2 有连接的多路复用与多路分解
(1)多路分解 TCP套接字
- 由一个四元组标识,该四元组包含源IP地址、源端口号、目的IP地址、目的端口号。
- 两个具有不同源IP地址或源端口号的TCP报文段被分解到两个不同的套接字。
理解:当且仅当两个TCP报文段具有的四元组完全相同时,这两个报文段才被分解到相同的套接字。
问题:比较无连接和有连接的多路分解的
- 套接字标识:
UDP套接字有一个二元组:目的IP、目的端口号唯一标识。 TCP套接字由一个四元组:源IP、源端口号、目的IP、目的端口号唯一标识。 - 两个具有相同的目的IP和目的端口号的报文段
在无连接多路分解中,会通过相同套接字分解到相同目的进程。 在有连接多路分解中,两个具有不同源IP或源端口号的报文会被分解到两个不同套接字。
|