当前位置: 首页 > backend >正文

深入理解计算机端口:为什么通信需要端口?

推荐阅读内容
程序员的心力管理:为什么你总感觉“心累”,而高手却能轻松应对?
我们都在学“怎么用”,却很少想“为什么能这样用”
代码之外的生产力:程序员如何用积极情绪「编译」高效团队
程序员也逃不过的达克效应:为什么你以为的“精通“,可能只是错觉?
在这里插入图片描述


引言

在计算机网络中,我们经常听到 IP 地址端口(Port) 这两个概念。IP 地址用于标识网络中的某台计算机,而 端口则用于标识该计算机上的某个具体进程或服务

当你用浏览器访问一个网站,或者用 SSH 远程登录服务器时,背后其实涉及 两个进程之间的通信,而 端口就是它们互相识别和交换数据的关键

那么,什么是端口?为什么需要端口?它是如何工作的? 本文将带你深入理解这个网络通信的核心机制。


1. 什么是端口?

端口(Port) 是计算机网络中用于区分同一台主机上不同网络服务的 逻辑数字标识(0~65535)

  • IP 地址 告诉数据包应该送到哪台计算机(例如 192.168.1.100)。
  • 端口号 则告诉这台计算机的操作系统,数据包应该交给哪个具体的程序处理(例如 80 端口通常是 HTTP 网页服务,443 是 HTTPS,22 是 SSH)。

类比:

  • IP 地址 就像 收件人的家庭住址(哪栋楼)
  • 端口 就像 收件人家里的房间号(哪个房间/人)
    • 如果没有房间号(端口),快递员(网络数据)就不知道该把包裹(数据)交给谁(哪个程序)。

2. 为什么需要端口?

问题:一台主机可能运行多个网络程序

现代计算机通常同时运行多个网络相关的程序,比如:

  • 浏览器(访问网站)
  • 邮件客户端(收发邮件)
  • 游戏(联网对战)
  • 下载工具(BT/迅雷)
  • SSH 远程连接
  • Web 服务器(如 Nginx/Apache)

如果只靠 IP 地址,操作系统无法知道某个网络数据包应该交给哪个程序处理!

端口的作用就是:
区分同一主机上的不同网络服务/进程
让网络数据能够准确地找到目标程序

举例:

  • 你用浏览器访问 www.example.com(IP 假设是 93.184.216.34),默认访问 80 端口(HTTP)443 端口(HTTPS)
  • 你的电脑会随机选一个高端口(比如 54321),向 93.184.216.34:80 发送请求。
  • example.com 的 Web 服务器 监听 80 端口,收到请求后处理,并把响应返回给你的 54321 端口。
  • 你的浏览器进程接收到数据,渲染网页。

结论:

两个主机之间的通信,本质上是两个进程(如浏览器和 Web 服务器)通过各自的端口进行数据交换!


3. 端口的分类

端口分为三类,范围是 0~65535

端口范围类型说明常见例子
0~1023知名端口(Well-Known Ports)由系统或知名服务使用,通常需要管理员权限80(HTTP)、443(HTTPS)、22(SSH)、21(FTP)、25(SMTP)
1024~49151注册端口(Registered Ports)供用户程序或服务使用3306(MySQL)、5432(PostgreSQL)、6379(Redis)
49152~65535动态/私有端口(Dynamic/Private Ports)通常由操作系统临时分配给客户端程序浏览器访问网站时随机使用的高端口(如 54321

注意:

  • 知名端口 一般由系统服务占用(如 Web 服务器用 80,SSH 用 22)。
  • 客户端程序(如浏览器) 通常使用 高端口(49152~65535) 作为临时通信端口。
  • 数据库、游戏服务器等 通常使用 注册端口(如 MySQL 默认 3306

4. 端口如何工作?(结合 TCP/UDP)

网络通信主要基于 TCP(可靠传输,如 HTTP、FTP、SSH)和 UDP(快速但不可靠,如 DNS、视频流),它们都使用 IP + 端口 来定位目标进程。

典型通信流程(以 HTTP 为例)

  1. 你的浏览器(进程 A) 随机选择一个 高端口(如 54321),向 www.example.com:80 发送请求。
  2. Web 服务器(进程 B) 正在 监听 80 端口,收到请求后处理。
  3. 服务器把响应数据返回给你的 54321 端口,浏览器接收到数据并渲染网页。

关键点:

  • TCP/UDP 协议 负责确保数据可靠传输(或快速传输)。
  • 端口 负责确保数据送到正确的进程。

5. 如何查看和管理端口?

(1)查看当前开放的端口

Windows
netstat -ano  # 查看所有连接和监听端口
Linux/macOS
netstat -tulnp  # 查看监听端口
# 或
ss -tulnp       # 更快的替代方案
# 或
lsof -i         # 查看所有网络连接

(2)查看某个端口被谁占用

Linux/macOS
sudo lsof -i :80  # 查看 80 端口被哪个进程占用
Windows
netstat -ano | findstr :80  # 查看 80 端口
tasklist | findstr <PID>    # 根据 PID 找进程

(3)关闭/释放端口

  • Linuxkill -9 <PID>(杀死占用端口的进程)
  • Windows:任务管理器结束对应进程

6. 总结

概念说明
IP 地址定位到哪台计算机(如 192.168.1.100
端口定位到该计算机上的哪个进程(如 80 是 Web 服务器)
为什么需要端口?因为一台主机可能运行多个网络程序,端口让数据能正确找到目标进程
通信本质两个主机通信 = 两个进程通过各自的端口交换数据
常见端口80(HTTP)、443(HTTPS)、22(SSH)、3306(MySQL)等
端口范围0~65535(0~1023 是知名端口,49152~65535 是动态端口)

一句话总结:

IP 地址决定数据送到哪台电脑,端口决定数据交给哪个程序!没有端口,网络通信就会混乱!


延伸阅读

  • TCP/IP 协议详解(经典网络书籍)
  • Wireshark 抓包分析(可以实际观察端口通信)
  • Linux 网络编程(学习 Socket 编程)

希望这篇博客能帮你彻底理解 端口的作用和原理! 😊🚀


推荐更多阅读内容
JavaScript中”引用“到底是什么,JavaScript 里真的有指针吗?为啥要有这个东西?
正则表达式完全指南:从起源到实践,教你精准匹配所有 3位数字-3~8位数字 子串
正则表达式入门:从 \d{3}-\d{3,8} 开始,轻松学会字符串匹配规则
揭秘网络攻击流程:从信息收集到善后处理
网络攻击那些事儿,小白也能看懂
深入解析 ReactMarkdown 的工作原理:从 Markdown 到 React 组件的完整旅程
浏览器与服务器通信:安全配置背后的那些事儿

http://www.xdnf.cn/news/19126.html

相关文章:

  • 【读论文】质心重分配显微镜实现活样本超分辨成像
  • Qt中的QSS介绍
  • Time-MOE添加MLP分类头进行分类任务
  • 用户自定义字段(Custom Fields)设计方案,兼顾多语言、分组、校验、权限、查询性能、审计与多租户
  • 创维E910V10C_晶晨S905L2和S905L3芯片_线刷固件包
  • HDMI2.1 8K验证平台
  • 【拍摄学习记录】05-对焦、虚化、景深
  • 告别音色漂移!微软超长语音合成模型VibeVoice正式开源​
  • 数列寻方:等差数列和为完全平方数
  • MinIO社区版“背刺“之后:RustFS用Apache 2.0协议重构开源信任
  • Java接口和抽象类的区别,并举例说明
  • 【Spring Cloud Alibaba】前置知识(一)
  • LeetCode 01背包 494. 目标和
  • 2025_WSL2_Ubuntu20.04_C++20_concept 环境配置
  • AntSK知识库多格式导入技术深度解析:从文档到智能,一站式知识管理的技术奇迹
  • zyplayer-doc 开源知识库:部署与使用指南
  • 千年智造,一触即发 耐达讯自动化Profibus集线器如何让HMI触摸屏在工业4.0中“点石成金“?
  • 新人桌球笔记
  • Web前端入门:JavaScript 一个简单的 IndexedDB 数据库入门示例
  • 【开题答辩全过程】以 基于Vue Spring Boot的教师资格证考试助力系统设计与实现为例,包含答辩的问题和答案
  • QML Chart组件之坐标轴共有属性
  • AI人工智能系统搭建实战指南:常见陷阱与解决方案
  • 从零开始学习单片机17
  • PCIe 6.0的速度奥秘:数学视角下的编码革命与信号完整性突破
  • htb academy笔记-module-Penetration Testing Process(一)
  • Marin说PCB之POC电路layout设计仿真案例---11
  • 掌握 Linux 文件权限:chown 命令深度解析与实践
  • 【YOLO学习笔记】数据增强mosaic、Mixup、透视放射变换
  • LeetCode100-54螺旋矩阵
  • Edge浏览器新标签页加载慢