华为HCIA-Datacom网络技术学习指南
上QQ阅读APP看书,第一时间看更新

1.2.3 传输层协议和应用层协议之间的关系

应用层协议有很多个,但是传输层协议只有两个。那么如何使用传输层的这两个协议来标识不同的应用层协议呢?

在传输层中可以使用一个16位二进制数来标识一个端口,端口号取值范围为0~65 535,这对一台计算机来说是够用的。

端口号可分为两大类——服务端使用的端口号和客户端使用的端口号。

1.服务端使用的端口号

服务端使用的端口号又可分为两类,最重要的一类叫作熟知端口号(Well-Known Port Number)或系统端口号,数值为0~1 023。因特网编号分配机构(Internet Assigned Numbers Authority,IANA)把这些端口号指派给TCP/IP非常重要的一些应用程序,以便所有的用户都知道。图1-15给出了一些常用的熟知端口号。

图1-15 熟知端口号

另一类叫作登记端口号,数值为1 024~49 151。这类端口号是为没有熟知端口号的应用程序使用的。使用这类端口号必须按照规定的流程在IANA进行登记,以防止重复。比如微软公司的远程桌面协议(Remote Desktop Protocol,RDP)使用的TCP 3 389端口就属于登记端口号。

2.客户端使用的端口号

当通过Web浏览器访问网站或登录QQ等客户端软件与服务端软件建立连接时,计算机会为客户端软件分配临时端口号,这就是客户端端口号,取值范围为49 152~65 535,由于这类端口号仅在客户端进程运行时才动态分配,因此又叫作临时(短暂)端口号。这类端口号是留给客户端进程暂时使用的。当服务端进程收到客户端进程的报文时,就知道了客户端进程所使用的端口号,因而可以把数据发送给客户端进程。通信结束后,已使用过的客户端端口号将不复存在。之后这个端口号也可以供其他客户端进程使用。

下面列出了一些常见的应用层协议默认使用的协议和端口号。

HTTP默认使用TCP的80端口。

FTP默认使用TCP的21端口。

SMTP默认使用TCP的25端口。

POPv3默认使用TCP的110端口。

超文本传输安全协议(HyperText Transfer Protocol Secure,HTTPS)默认使用TCP的443端口。

DNS默认使用UDP的53端口。

RDP默认使用TCP的3 389端口。

Telnet默认使用TCP的23端口。

Windows操作系统访问共享资源时默认使用TCP的445端口。

微软公司的SQL数据库默认使用TCP的1 433端口。

MySQL数据库默认使用TCP的3 306端口。

以上列出的都是默认端口,也可以更改应用层协议所使用的端口。如果不使用默认端口,客户端需要指明所使用的端口。如图1-16所示,服务端运行了Web服务、SMTP服务和POPv3服务,这3个服务分别使用HTTP、SMTP和POPv3与客户端通信。现在网络中的客户端计算机A、计算机B和计算机C分别打算访问服务器的Web服务、SMTP服务和POPv3服务,并发送了3个数据包①、②、③,这3个数据包的目的端口号分别是80、25和110,服务端收到这3个数据包后,会根据目的端口号将数据包提交给不同的服务。

总结:数据包的目的IP地址用于在网络中定位某一个服务端,目的端口号用于定位服务端上的某个服务。

图1-16 端口和服务的关系示意