传输层概述
传输层位于应用层和网络层之间,基于网络层提供的服务,向分布式应用程序提供通信服务。
按照因特网的“端到端”设计原则,应用程序只运行在终端上,即不需要为网络设备编写程序。
站在应用程序的角度,传输层应提供进程之间本地通信的抽象,即运行在不同终端上的应用进程仿佛是直接连在一起的。
套接字
设想在应用程序和网络之间存在一扇“门”,需要发送报文时:发送进程将报文推到门外。门外的运输设施(因特网)将报文送到接收进程的门口。需要接收报文时,接收进程打开门,即可收到报文。在tcp/ip网络中,这扇”门“称为套接字,是应用层和传输层的接口,也是应用程序和网络之间的API.
传输层提供的服务
因特网的网络层提供“尽力而为”的服务:网络层最大努力在终端间交付小组,但不提供任何承诺。具体来说,不保证交付,不保证按序交付,不保证延迟、不保证带宽等。
传输层的有所为、有所不为:传输层可以通过差错恢复、重排序等手段提供可靠、按序的交付服务,但传输层无法提供延迟保证、带宽保证等服务。
因特网传输层提供的服务
最低限度的传输服务:将终端-终端的数据交付拓展到进程-进程的数据交付,报文检错。
增强服务:可靠数据传输,流量控制,拥塞控制。
因特网传输层通过UDP协议和TIP协议,向应用层提供两种不同的传输服务。
UDP协议:仅提供最低限度的传输服务。
TCP协议:提供基础服务和增强服务。
传输层基础服务——复用和分用
复用和分用概述
传输层基本服务:将主机间交付拓展到进程间交付,通过复用和分用实现。
复用:发送方传输层将套接字标识置于报文段中,交给网络层。
分用:接收方传输层根据报文段中的套接字标识,将报文段交付到正确的套接字。
套接字标识与端口号
端口号是套接字标识的一部分:每个套接字在本地关联一个端口号,端口号是一个16比特的数。
端口号的分类:
熟知端口:0~1023,由公共域协议使用。
注册端口:1024~49151,需要向IANA注册才能使用。
动态/私有端口:49152~65535,一般程序使用。
报文段中有两个字段携带端口号
源端口号:与发送进程关联的本地端口号。
目的端口号:与接收进程关联的本地端口号。