一、传输层功能
在IP分组网络中,主机在传输数据前无须与目的主机预先建立特定的“通路”,这属于一种“不可靠的”数据报传输机制,它不能保证数据报准确到达,并可能造成数据报的损坏、乱序和丢失。为了保证数据报传输的可靠性,将在网际层的上一层传输层引入传输控制协议(TCP,Transmission Control Protocol)和用户数据报协议(UDP,User Datagram Protocol)。
在TCP/IP模型中,传输层位于网际层与应用层之间。数据通信应由应用层中的用户进程发起,并通过网际层设备,如路由器和交换机等,将数据报从发送端主机传输到接收端主机。传输层协议工作在主机上,负责主机与用户进程间的数据传输。
如图3-31所示,网际层实现主机到主机之间的通信,传输层则进一步实现进程与进程之间的通信。
图3-31网际层和传输层的工作范围
传输层的功能:
在传输层向应用层提供服务时,屏蔽了网际层及以下层的细节内容,用户进程只需与传输层进行交互,而不必关心数据报所经网络的拓扑结构和采用的路由拓扑协议等。应用层中进程的QoS完全取决于传输层所使用的协议。例如,在采用TCP协议时,尽管网际层提供的服务是不可靠的,但传输层仍能向应用层提供可靠的数据传输服务;在采用UDP协议时,传输层只能向应用层提供不可靠的数据传输服务。
传输层还提供了复用和分用功能。
复用功能指传输层可以同时传输多个进程发送的数据,分用功能指传输层能对接收到的数据进行分类,并将数据准确交付给所属进程。一台主机上可以存在多个用户进程,每个进程都可能会产生通信需求。网际层仅负责通过IP地址将数据报从源主机传输到目标主机,不提供数据报的区分功能。传输层协议中引入了协议端口号的概念,用于标记属于不同用户进程的数据,简称为端口号。
网络中数据传输的复用功能可通过端口号和IP地址的组合来实现,TCP和UDP协议均在数据报的首部附加了两个端口字段:源端口和目的端口。源端口用于表示数据报发送端的用户进程,目的端口则用于表示接收端的用户进程。端口字段的长度为16位,可用的端口号范围为0~65535。如表3-9所示,端口号可分为3类。
表3-9 端口的划分
端口类别 端口号范围 应用熟知 0 ~ 1023 由IANA分配给因特网上常用的应用层协议,例如HTTP、DNS和SMTP
注册 1024 ~ 49151 由IANA分配给专有应用程序,例如Microsoft SQL Server和Oracle
随机 49152 ~ 65535 由操作系统动态分配给用户进程
用户进程在进行通信时,应事先确定其所采用的端口号。源端口号一般均属于随机端口,而目的端口通常是熟知或注册端口。表3-10给出了常用的应用层协议所使用的端口号。
表3-10 常用协议的端口号
传输层协议 应用层协议 端口号TCP HTTP 80
FTP 21
POP3 110
SMTP 25
SSH 22
telnet 23
UDP DNS 53
SNMP 161
TFTP 69
如图3-32所示,在网络上有一台WWW服务器和两台主机。Web服务器的IP地址为192.168.1.2,主机PC1的IP地址为192.168.1.3,主机PC2的IP地址为192.168.1.4。假设PC1中有三个用户进程通过HTTP协议与Web服务器进行通信,PC2中有两个用户进程通过HTTP协议与Web服务器进行通信。根据传输层端口分配原则可知,在用户进程发送的数据报中,源端口号均在0~65535的范围中随机分配,且同一主机上不同进程所分配的源端口号不同。已知数据通信中使用的应用层协议只有HTTP协议,则由表3-10可知,所有数据报的目的端口号均为80。
在如图3-33所示的实例中,主机PC-A中有两个用户进程与服务器PC-B进行复用通信,服务器PC-B根据源端口号区分这两个进程。若主机PC-A在向服务器PC-B发送的数据报中,源端口号为50001,且目的端口号为23,则表明这个数据报用于远程登录,由telnet用户进程产生。若数据报的源端口号为50003,且目的端口号为80,则表明这个数据报属于HTTP应用,由浏览器进程产生。PC-B在包含远程登录应答信息的数据报中,将源端口号设为23,目的端口号设为50001;在回应HTTP请求的数据报中,将源端口号设为80,目的端口号设为50003。