端口
设备与外界通讯交流的出口,端口可分为虚拟端口和物理端口
物理端口:USB插口,网卡插口等
虚拟端口:计算机、交换机或路由器内的端口,不可见,如计算机中的21端口、22端口、80端口等
应用程序1,应用程序2 | 应用程序1,应用程序2 | |
---|---|---|
端口1,端口2 | 端口1,端口2 | |
操作系统 | 操作系统 | |
网卡 | → 网络 → | 网卡 |
如果一个程序要收发网络数据,就需要有这样的端口,Linux系统中端口有65536个
端口号
端口是通过端口号来标记的,端口号只有整数,范围是 0 - 65535
端口的分配
端口号不是随意使用的,而是按照一定规则进行分配,端口的分类标准有很多,此处只介绍知名端口和动态端口
知名端口(well known ports)
通用的端口,范围是 0 - 1023,即常用功能使用的号码是固定的,如果一个程序要使用知名端口的话通常需要root权限
常见协议 | 默认端口号 | 协议基本作用 |
---|---|---|
FTP | 21 | 文件上传、下载 |
SSH | 22 | 安全的远程登录 |
TELNET | 23 | 远程登录 |
SMTP | 25 | 邮件传输 |
DNS | 53 | 域名解析 |
POP3 | 110 | 邮件接收 |
HTTP | 80 | 超文本传输 |
HTTPS | 443 | 加密传输的HTTPS |
动态端口(dynamic ports)
用户可以自己写程序去绑定的,范围是 1024 - 65535,动态端口一般不固定分配某种服务,而是动态分配
动态分配是指当一个系统程序或应用需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用,当这个程序关闭时,释放所占用的端口号
netstat
netstat 命令是一个监控 TCP/IP 网络的工具,可以显示网络连接、路由表、网络接口信息,可以让用户查看目前哪些网络连接正在运作
netstat -an
查看端口状态
# 查询所有含该端口的信息
netstat -an | grep :端口号
lsof
# 查询端口号被哪个程序占用
sudo lsof -i [TCP/UDP]:端口号
netstat -nlt
查看服务器 socket,即当前哪些正在监听中,因为有些是已连接但不活跃的