运行在计算机中的进程是用进程标识符来标识的。
但运行在应用层的各种应用进程却不应当让计算机操作系统指派它的进程标识符。这是因为在互联网上使用的计算机的操作系统种类很多,而不同的操作系统又使用不同格式的进程标识符。
为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对TCP/IP体系的应用进程进行标志。
一、需要解决的问题
由于进程的创建和撤销都是动态的,发送方几乎无法识别其他机器上的进程。
有时我们会改换接收报文的进程,但并不需要通知所有发送方。
我们往往需要利用目的的主机提供的功能来识别终点,而不需要知道实现这个功能的进程。
二、端口号
解决这个问题的方法,就是在运输层使用协议端口号(protocolport number),或通常简称为端口(port)。
虽然通信的终点是应用进程,但我们可以把端口想象是通信的终点,因为我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由TCP来完成。
三、软件端口和硬件端口
两个不同的概念。
在协议栈层间的抽象的协议端口是软件端口。
路由器或交换机上的端口是硬件端口。
硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
四、TCP/IP运输层端口
端口用一个16位端口号进行标志。
端口号只具有本地意义,即端口号只是为了标志本计算机应用程中的各进程。
在互联网中,不同计算机的相同端口号是没有联系的。
由此可见,两个计算机中的进程要互相通信,不仅必须知道对方的IP地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程)。
五、两大类端口
(1)服务器端使用的端口号
熟知端口数值一般为0~1023
登记端口号数值为1024~49151,为没有熟知端口号的应用程序使用的,使用这个范围的端口号必须在IANA登记,以防止重复。
(2)客户端使用的端口号
又称为短暂端口号,数值为49152~65535,留给客户进程选择暂时使用。
当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
常用的熟知端口
一些常见的端口号及其用途如下:
- TCP21端口:FTP文件传输服务
- TCP23端口:TELNET终端仿真服务
- TCP25端口:SMTP简单邮件传输服务
- UDP53端口:DNS域名解析服务
- TCP80端口:HTTP超文本传输服务
- TCP110端口:POP3“邮局协议版本3”使用的端口
- TCP443端口:HTTPS加密的超文本传输服务
- TCP1521端口:Oracle数据库服务
- TCP1863端口:MSNMessenger的文件传输功能所使用的端口
- TCP3389端口:MicrosoftRDP 微软远程桌面使用的端
- TCP5631端口:SymantecpcAnywhere 远程控制数据传输时使用的端口
- UDP5632端口:SymantecpcAnywhere 主控端扫描被控端时使用的端口
- TCP5000端口:MSSQL Server使用的端口
- UDP8000端口:腾讯QQ