这是一个非常好的基础问题,理解“端口”是理解网络通信的关键。
服务器里的端口(Port)就像一个服务窗口或门牌号,它用于在一台服务器(一个IP地址)上,区分和访问不同的网络服务。
让我们用一个生活中的比喻来理解:
服务器 = 一个大型快递转运中心(有唯一的地址,比如上海市浦东新区xx路1号,这相当于IP地址)。
IP地址 = 这个转运中心的地址,所有快递(数据包)都发往这个地址。
端口 = 转运中心里成千上万个编号的货柜(比如80号柜、443号柜、3306号柜)。
80号柜 专门接收和派送“网页快递”(HTTP服务)。
443号柜 专门处理“加密的网页快递”(HTTPS服务)。
21号柜 负责“文件传输快递”(FTP服务)。
3306号柜 只处理“数据库查询快递”(MySQL服务)。
关键点:快递中心只有一个地址,但内部有无数个柜子来处理不同业务,互不干扰,IP地址把数据送到“大楼”,端口号把数据交给“大楼里正确的处理部门”。
1、定位服务的“第二坐标”:
网络通信需要两个坐标才能精准定位一个服务IP地址 + 端口号。
* 你想访问百度网站,你的浏览器会向180.101.50.242:443 发起请求。
180.101.50.242 是百度的服务器IP地址。
443 是端口号,告诉服务器“我要用HTTPS协议和你安全地通信”。
2、端口号的范围和分类:
* 端口号是一个16位的数字,范围是0 - 65535。
公认端口(Well-known Ports,0-1023)分配给最著名的服务,由国际组织统一管理。
80 HTTP(网页服务)
443 HTTPS(加密网页服务)
22 SSH(安全远程管理)
21 FTP(文件传输)
25 SMTP(邮件发送)
3306 MySQL数据库
27017 MongoDB数据库
注册端口(Registered Ports,1024-49151)分配给一些知名的用户程序或服务。
动态/私有端口(Dynamic/Private Ports,49152-65535)客户端在发起请求时随机使用的临时端口,服务器响应会发回这个临时端口,完成一次通信后即释放。
3、在服务器上的体现:
* 当你在服务器上安装一个服务软件(如Nginx、MySQL),这个软件会监听一个或多个特定的端口。
监听 意味着这个服务程序“竖起耳朵”,时刻准备接收发往这个端口的数据。
* Nginx默认监听80 端口,任何发往服务器IP:80 的请求,都会由Nginx进程来处理。
1、多路复用(Multiplexing):让一台服务器可以同时提供多种服务,没有端口,一台服务器只能运行一个网络程序。
2、区分流量:服务器收到数据包后,根据目标端口号,将其准确地分发给对应的后台服务进程。
3、安全与防火墙:防火墙规则经常基于端口来设置。“只允许外部访问本机的80 和443 端口”,这样就屏蔽了其他不必要的访问,提高了安全性。
在服务器上,你可以用命令查看哪些端口正在被监听:
Linux/Unix/Mac:
# 查看所有监听中的端口
netstat -tuln
# 或使用更现代的命令
ss -tuln
# 查看某个端口(如3306)被哪个进程占用
lsof -i :3306 输出会显示类似0.0.0.0:80 或:::80 的信息,表示服务器正在所有网络接口上监听80端口。
Windows:
netstat -ano | findstr :80可以查看监听80端口的进程ID(PID)。
端口(Port)是网络通信中,与IP地址结合使用的、用于在一台设备上唯一标识和区分不同网络应用程序或服务的逻辑编号,它是数据包的“最终收件部门”。
记住这个公式:访问一个服务 = IP地址 + 端口号。
当别人说“服务器开了某个端口”,意思就是“服务器上有一个服务程序正在运行,并等待处理发送到那个编号的通信请求”。
文章摘自:https://idc.huochengrm.cn/js/24776.html
评论