运输层解决的两个基本问题:
1)两个实体怎样才能在一种会丢失或损坏数据的媒体上可靠地通信——协议
2)控制运输层实体的传输速率以避免网络拥塞,或从拥塞中恢复——拥塞控制
运输层协议:
1)为运行在不同主机上的应用进程之间提供逻辑通信功能(网络层提供主机之间的)
2)是在端系统中而不是在路由器中是实现的。
运输层与网络层的关系:
应用层报文 = 信封上的字符
进程 = 堂兄弟姐妹
主机 = 家庭
运输层协议 = Ann和Bill
网络层协议 = 邮政服务(包括邮车)
多种运输层协议可以为应用程序提供不同的服务模型。
即使底层网络协议不能再网络层提供相应的服务,运输层协议也能提供某些服务,如可靠的数据传输、加密等)
UDP和TCP的职责:
1)将两个端系统间IP的交付服务扩展为运行在端系统上的两个进程之间的交付服务。
2)可通过在其报文段首部中包括差错检查字段而提供完整性检查。
TCP提供的附加服务:
1)可靠数据传输。使用流量控制、序号、确认和定时器,确保正确、按序将数据从发送进程交付到接收进程。将端系统间的不可靠IP服务转换成了一种进程间的可靠数据传输服务。
2)拥塞控制。为每个通过一条拥塞网络链路的连接平等地共享带宽,可通过调节TCP连接的发送端发送进网络的流量速率做到。(UDP流量是不可调节的)
一个进程有一个或多个套接字,相当于从网络向进程传递数据和从进程向网络传递数据的门户,运输层并没有直接将数据交付给进程,而是将数据交付给了一个中间的套接字。
多路分解:将运输层报文段中的数据交付到正确的套接字的工作。
多路复用:在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层。
它们与在某层的单一协议何时被位于接下来的较高层的多个协议使用有关。
多路复用要求:
1)套接字有唯一标识符;
UDP套接字由二元组标识:目的IP地址、目的端口号;
TCP套接字由四元组标识:源IP地址、源端口号、目的IP地址、目的端口号
2)每个报文段有特殊字段(源端口号和目的端口号)来指示该报文段所要交付到的套接字。
端口号:
1)一个16比特的数,大小在0-65535之间;
2)0-1023的端口号是周知端口号;
3)当开发新的应用程序是,必须为其分配一个端口号;
4)应用程序的客户端让运输层自动地(并且是透明的)分配端口号,而服务器端则分配一个特 定的端口号。
连接套接字并非总是有着一一对应的关系,如今高性能Web服务器通常只使用一个进程,但是为每个新的客户连接创建一个具有新连接套接字的新线程(看作一个轻量级的子进程)。
许多应用更适合用UDP的原因:
1)关于何时、发送什么数据的应用层控制更精细。实时应用要求发送速率小、时延小、丢包容忍度高。
2)无需连接建立。UDP无建立连接的时延。
3)无连接状态。能支持更多的活跃用户。
4)分组首部开销小。UDP仅有8字节,TCP有20字节。
UDP的应用是可以实现可靠数据传输的,可通过在应用程序自身中建立可靠性机制完成(如增加确认与重传机制),这样就可无需受制于TCP拥塞控制及传输速率限制。