参考:port的英文维基百科

简介

MAC地址定义了数据包的下一跳地址。
IP地址定义了数据包最终应该传输到哪台计算机上。
而端口(port)则定义了数据包中的数据应该由计算机上的哪个进程来接收。
端口是一种逻辑上的概念,用来识别一个计算机上的一个进程或者一类网络服务。
端口一般和网络协议与IP地址相关联。
端口号由16位无符号二进制组成,2^16=65536,可表示的端口号数量为65536,端口号的范围为0~65535。

分类

特定的端口有特定的用途,端口的分类是由IANA定义的。

周知端口

周知端口(well-known port),端口范围是0~1023,用于互联网常用的服务,在类Unix操作系统中,可能需要具备root的权限才可以将管理使用周知端口的服务。常见的周知端口如下:

端口 描述
20 FTP数据连接主动模式
21 FTP命令连接
22 SSH
23 telnet
25 SMTP
80 HTTP
443 HTTPS
... ...

注册端口

注册端口(register port),端口范围是1024~49151,一般用于那些不需要root权限的服务。常见的注册端口如下:

端口 描述
10050 zabbix-agent
10051 zabbix-server
3306 mysql or mariadb
6379 redis
... ...

动态端口

动态端口(dynamic port),也叫作私有端口(private port)或者短命端口(ephemeral port),端口范围是49152~65535,这些端口是无法在IANA上面注册的,一般用于C/S架构中client启用的高位端口作临时使用的。
如图所示,本机开了四个X shell会话(session)来连接虚拟机,每个会话占用一个连接(connection),每个连接在我的本机启用了一个动态端口,分别是:49618、49628、49629和49635。

# netstat -ntup
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0     64 192.168.17.100:22           192.168.17.1:49618          ESTABLISHED 2761/sshd
tcp        0      0 192.168.17.100:22           192.168.17.1:49628          ESTABLISHED 2790/sshd
tcp        0      0 192.168.17.100:22           192.168.17.1:49629          ESTABLISHED 2811/sshd
tcp        0      0 192.168.17.100:22           192.168.17.1:49635          ESTABLISHED 2832/sshd