端口的本质是什么

端口(Port)的本质是操作系统用于区分同一台主机上不同网络通信进程或服务的逻辑标识符。它不是物理设备,而是一个16 位的整数(0~65535),与 IP 地址结合使用,构成“套接字地址(Socket Address)”:IP地址:端口号


一、为什么需要端口?

一台计算机可以同时运行多个网络程序(如浏览器、微信、Web 服务器、数据库等),它们都通过同一个网卡收发数据。
问题:当一个 UDP 或 TCP 数据包到达时,操作系统如何知道该交给哪个程序?

答案:靠目标端口号

  • IP 地址 → 定位到哪台主机
  • 端口号 → 定位到主机上的哪个应用程序/服务

🌰 举例:

  • 192.168.1.100:80→ Web 服务器(HTTP)
  • 192.168.1.100:443→ HTTPS 服务
  • 192.168.1.100:53→ DNS 服务
    即使 IP 相同,端口不同,就是完全不同的通信终点。

二、端口的技术本质

1.传输层的概念

端口属于传输层(Transport Layer)(TCP/UDP 层),在 IP 包内部的 TCP 或 UDP 头部中定义:

[ IP Header ][ TCP/UDP Header ][ Payload ] ↑ 包含源端口 + 目标端口(各2字节)
  • 源端口(Source Port):发送方进程使用的端口(通常由系统自动分配)
  • 目标端口(Destination Port):接收方服务监听的端口(如 80、53)

2.操作系统的“多路分解”机制

当数据包到达:

  1. 内核根据目标 IP + 目标端口查找“绑定表”(bind table)
  2. 找到对应已bind()的 socket
  3. 将数据放入该 socket 的接收缓冲区
  4. 应用程序通过readDatagram()read()取走数据

🔍 这个过程叫Demultiplexing(多路分解)


三、端口的分类(按编号)

范围名称说明示例
0 ~ 1023知名端口(Well-known Ports)系统保留,需 root/Admin 权限绑定80 (HTTP), 443 (HTTPS), 22 (SSH), 53 (DNS)
1024 ~ 49151注册端口(Registered Ports)用户程序可注册使用,避免冲突3306 (MySQL), 5432 (PostgreSQL), 6379 (Redis)
49152 ~ 65535动态/私有端口(Dynamic/Private)临时端口,由系统自动分配给客户端浏览器访问网站时的源端口

💡 当你用QUdpSocket发送数据但未调用bind(),系统会自动从动态端口范围分配一个源端口。


四、端口与 Socket 的关系

  • 一个端口可以被多个 socket 绑定吗?

    • 默认:不可以(Address already in use)
    • 特殊情况:使用SO_REUSEADDR(Qt 中为ShareAddress)可允许多个 socket 绑定同一端口,常见于:
      • UDP 广播/组播接收
      • TCP 的TIME_WAIT快速重用(服务器重启)
  • 一个 socket 只能绑定一个端口,但一个端口在特定条件下可被多个 socket 共享。


五、UDP vs TCP 的端口使用差异

特性UDPTCP
连接性无连接面向连接
端口绑定bind()后即可收发bind()+listen()才能接受连接
多客户端同一端口可收来自任意客户端的数据服务端监听一个端口,每个连接新建 socket(不同四元组)
四元组(srcIP, srcPort, dstIP, dstPort)同左,但连接建立后固定

✅ 重点:端口本身不区分 UDP/TCP
192.168.1.100:53上可以同时运行UDP DNSTCP DNS(因为协议不同,内核视为两个独立通道)。


六、常见误解澄清

误解正确理解
“端口是硬件”❌ 端口是纯软件概念,是协议字段
“开了端口 = 有安全风险”⚠️ 风险在于监听该端口的服务是否有漏洞,而非端口本身
“端口被占用就不能用”✅ 默认如此,但可通过ShareAddress或换协议(UDP/TCP)复用
“0 端口无效”port=0表示“由系统自动分配可用端口”(常用于客户端)

七、在 Qt 中的体现

// 绑定到 8888 端口(UDP) udpSocket->bind(QHostAddress::Any, 8888); // 发送时指定目标端口 udpSocket->writeDatagram(data, QHostAddress("1.2.3.4"), 53); // 发给 DNS 服务 // 获取本机实际使用的端口(若 bind(0)) quint16 myPort = udpSocket->localPort();

总结:端口的本质

端口是传输层用于标识通信端点的逻辑编号,使得单台主机能同时支持多个网络应用,实现“多路复用”与“多路分解”。它是网络编程中连接“网络世界”与“应用程序”的关键桥梁。

2.如何查看本机端口占用

查看本机端口占用情况是网络调试、服务部署和故障排查的常见需求。不同操作系统提供了不同的命令行工具,以下是Windows、Linux、macOS三大平台的详细方法:


✅ 一、通用原理

操作系统内核维护一张“网络连接与监听表”,记录:

  • 协议(TCP/UDP)
  • 本地地址:端口
  • 远程地址:端口(对连接而言)
  • 进程 PID 和名称(部分系统支持)

我们通过工具查询这张表。


🖥️ 二、Windows 系统

方法1:netstat(最常用)

:: 查看所有监听的 TCP/UDP 端口 netstat -ano :: 只看监听状态(LISTENING / UDP) netstat -an | findstr LISTEN netstat -an | findstr UDP :: 查看特定端口(如 8080) netstat -ano | findstr :8080

参数说明:

  • -a:显示所有连接和监听端口
  • -n:以数字形式显示地址和端口(不解析域名/服务名)
  • -o:显示进程 PID

🔍根据 PID 找进程名

tasklist | findstr <PID> :: 例如: tasklist | findstr 1234

💡 提示:可将netstat -ano输出保存到文件后用记事本搜索。


方法2:Get-NetTCPConnection(PowerShell,更现代)

# 查看所有 TCP 监听端口 + 进程 Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess # 查看特定端口(如 3306) Get-NetTCPConnection -LocalPort 3306 # 获取进程名(结合 Get-Process) $pid = (Get-NetTCPConnection -LocalPort 3306).OwningProcess Get-Process -Id $pid | Select-Object ProcessName, Id

✅ 优点:直接关联 PID 和进程名,无需手动查。


方法3:资源监视器(图形界面)

  1. Ctrl + Shift + Esc打开任务管理器
  2. 切换到 “性能” → 底部点击 “打开资源监视器”
  3. 切换到 “网络” 选项卡
  4. 在 “监听端口” 列表中查看

🐧 三、Linux 系统

方法1:ss(推荐,现代替代netstat

# 查看所有监听的 TCP/UDP 端口(含进程) sudo ss -tulnp # 参数说明: # -t : TCP # -u : UDP # -l : listening # -n : numeric(不解析服务名) # -p : show process(需要 root 权限才能看到非自己进程)

示例输出:

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:5353 *:* users:(("avahi-daemon",pid=123,fd=12)) tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=456,fd=3))

🔍 查找特定端口:

sudo ss -tulnp | grep :8080

方法2:netstat(传统,部分系统已弃用)

# 安装(如未安装): # Ubuntu/Debian: sudo apt install net-tools # CentOS/RHEL: sudo yum install net-tools sudo netstat -tulnp | grep :8080

方法3:lsof(功能强大)

# 查看哪些进程打开了 8080 端口 sudo lsof -i :8080 # 查看所有网络连接 sudo lsof -i # 只看 UDP sudo lsof -i UDP

输出示例:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 1234 root 6u IPv4 12345 0t0 TCP *:http (LISTEN)

✅ 优点:直接显示进程名、用户、协议,非常直观。


🍎 四、macOS 系统

macOS 基于 BSD,命令与 Linux 类似:

方法1:lsof(最推荐)

# 查看占用 8080 端口的进程 sudo lsof -i :8080 # 查看所有监听端口 sudo lsof -i -sTCP:LISTEN

方法2:netstat

netstat -anv | grep LISTEN # 注意:macOS 的 netstat 不显示进程名

方法3:sockstat(部分 BSD 系统有,macOS 默认无)


🔍 五、快速定位“谁占用了我的端口?”

场景命令
Windowsnetstat -ano | findstr :<端口>tasklist | findstr <PID>
Linuxsudo ss -tulnp | grep :<端口>sudo lsof -i :<端口>
macOSsudo lsof -i :<端口>

⚠️ 六、注意事项

  1. 权限问题

    • 查看其他用户进程的端口占用通常需要sudo(Linux/macOS)或管理员权限(Windows)。
    • 普通用户只能看到自己的进程。
  2. UDP 无“连接”概念

    • UDP 只有“监听”(bound),没有 LISTEN 状态,用UNCONN或直接显示端口。
  3. 端口范围

    • 0~1023:需 root 才能绑定
    • 查看时若发现未知进程占用 80、443、22 等端口,需警惕安全风险。
  4. IPv4 vs IPv6

    • 工具会分别显示*:80(IPv4)和[::]:80(IPv6),注意区分。

🛠️ 七、在 Qt 程序中检测端口占用(编程方式)

虽然不能直接获取占用进程,但可尝试绑定判断是否可用:

bool isPortAvailable(quint16 port) { QUdpSocket socket; bool available = socket.bind(QHostAddress::Any, port, QUdpSocket::DontShareAddress); if (available) { socket.close(); } return available; }

❗ 缺点:只能知道“能否绑定”,无法知道“被谁占用”。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1177946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊2026年果汁生产线资深厂商,上望机械制造靠谱吗? - 工业品牌热点

2026年饮料行业消费升级加速,健康化、个性化需求驱动果汁市场规模持续扩容,高效果汁生产线已成为企业提升产能效率、保障产品品质、抢占市场份额的核心载体。无论是中小微饮料厂的初创建厂需求,还是成熟品牌的产能升…

Kimi降AI效果怎么样?月之暗面AI助手降论文AI率实测 - 还在做实验的师兄

Kimi作为月之暗面出品的AI助手,长文本处理能力强,但用它降AI效果有限。实测反复改写3轮,AI率从82%只能降到65%左右。想真正把AI率降到学校要求的20%以下,还是需要专业工具:嘎嘎降AI(4.8元,达标率99.26%)或比话…

告别绘图加班!虎贲等考 AI 科研绘图:让数据秒变期刊级高颜值图表

还在为科研绘图熬秃脑袋&#xff1f;用 Origin 调试参数两小时&#xff0c;图表排版依旧混乱&#xff1b;用 Excel 画不出复杂热图&#xff0c;数据可视化效果大打折扣&#xff1b;好不容易用 Visio 画出实验装置图&#xff0c;却因不符合期刊规范被打回重改…… 在科研圈&…

数值方法验证: 制造解方法(Method of Manufactured Solutions,MMS)介绍

文章目录一、基本思想二、实施步骤&#xff08;以一个通用 PDE 为例&#xff09;三、优点四、注意事项五、经典文献推荐六、实践建议Method of Manufactured Solutions&#xff08;MMS&#xff0c;制造解方法&#xff09; 是一种广泛用于验证偏微分方程&#xff08;PDE&#xf…

10 分钟搞定学术 PPT!虎贲等考 AI PPT:逻辑与颜值双在线的汇报神器

还在为开题答辩 PPT 熬到凌晨三点&#xff1f;辛辛苦苦写的论文&#xff0c;做成 PPT 却逻辑混乱、排版拉垮&#xff0c;被导师批 “抓不住重点”&#xff1f;作为深耕论文写作科普的博主&#xff0c;我发现 90% 的学术人做 PPT&#xff0c;都困在 “内容提炼难、格式调整烦、风…

8.3 DICOM数据处理:医疗影像预处理全流程

8.3 DICOM数据处理:医疗影像预处理全流程 在医疗影像AI应用中,DICOM(Digital Imaging and Communications in Medicine)是最常用的医学影像存储和传输标准。掌握DICOM数据的处理技术对于构建医疗AI系统至关重要。本章将详细介绍DICOM数据格式、处理方法以及完整的预处理流…

8.4 智能诊断报告:从影像到文本的跨模态生成

8.4 智能诊断报告:从影像到文本的跨模态生成 在前面的章节中,我们学习了医学影像的处理、病灶检测与分割等关键技术。本章将探讨如何利用这些技术成果,结合自然语言处理技术,自动生成智能诊断报告。这是医学人工智能领域的一个重要应用方向,能够显著提高医生的工作效率,…

全自动制袋机制造企业选择哪家好?靠谱的厂家排名情况如何? - 工业品牌热点

随着包装行业对自动化生产需求的持续攀升,全自动制袋机已成为食品、日化、电商等领域企业提升生产效率的核心设备。但面对市场上琳琅满目的全自动制袋机制造厂,企业往往陷入选品牌还是选性价比看参数还是看售后的纠结…

查重 AIGC 双杀!虎贲等考 AI 让论文改写告别 “机器味” 与高重复率

还在为论文查重率居高不下熬夜改稿&#xff1f;还在因 AI 生成痕迹明显被导师打回&#xff1f;在学术检测愈发严格的当下&#xff0c;重复率超标、AIGC 特征显著&#xff0c;成了无数科研人和毕业生的 “致命痛点”。市面上的降重工具要么是简单同义词替换&#xff0c;改得语句…

课程论文不用愁!虎贲等考 AI 一键解锁高分学术捷径

还在为课程论文选题跑偏抓耳挠腮&#xff1f;还在因文献堆砌逻辑混乱被导师打回&#xff1f;还在熬夜改格式、降重复率&#xff0c;结果却事倍功半&#xff1f;作为深耕学术写作科普的博主&#xff0c;后台每天都被大学生的课程论文焦虑刷屏。别慌&#xff01;虎贲等考 AI 智能…

9.1 分布式训练三剑客:DP、MP、PP并行策略详解

9.1 分布式训练三剑客:DP、MP、PP并行策略详解 在深度学习模型规模不断增大的今天,单个GPU已经无法满足训练大模型的需求。分布式训练技术成为训练大规模模型的必要手段。本章将详细介绍分布式训练中的三种核心并行策略:数据并行(Data Parallelism, DP)、模型并行(Model…

测水流量计怎么挑?2026年实力厂家质量对比,圆缺孔板/醇类流量计/超声波流量计,测水流量计供应厂家排名 - 品牌推荐师

在水资源管理、工业生产过程控制以及智慧水务建设日益精细化的今天,测水流量计作为关键的数据采集单元,其测量精度、稳定性和长期可靠性直接关系到生产效率、成本控制与决策的科学性。面对市场上品牌繁多、技术路线各…

5 款 AI 写论文哪个好?实测避雷!虎贲等考 AI 凭硬核实力稳坐头把交椅

作为深耕论文写作科普的教育测评博主&#xff0c;后台每天都被毕业生的灵魂拷问刷屏&#xff1a;“AI 论文工具琳琅满目&#xff0c;到底哪款能真正解决选题难、文献假、数据空的痛点&#xff1f;” 为了给大家带来最真实的测评参考&#xff0c;我耗时半个月&#xff0c;对虎贲…

3步搞定论文AIGC检测,从70%降到10%以下的完整方案 - 还在做实验的师兄

论文AIGC检测率70%+?别慌,跟着这3步走:自查定位问题段落、用嘎嘎降AI处理(达标率99.26%)、人工精修关键章节。有同学用这套方案从87%降到3.2%,你也行。3步搞定论文AIGC检测,从70%降到10%以下的完整方案TL;DR:论…

FFmpeg开发笔记(一百)国产的Android开源视频压缩工具VideoSlimmer

在Android平台上,国产的开源视频剪辑框架也有很多了,参见之前的文章《国产的视频裁剪框架AndroidVideoTrimmer》、《国产的Android开源视频编辑器EpMedia》、《国产的开源视频美颜工具VideoEditorForAndroid》、《国…

学霸同款2026 TOP10 AI论文平台:自考毕业论文写作全测评

学霸同款2026 TOP10 AI论文平台&#xff1a;自考毕业论文写作全测评 自考论文写作工具测评&#xff1a;为何需要一份2026年权威榜单&#xff1f; 随着AI技术在学术领域的深入应用&#xff0c;越来越多的自考学生开始借助智能写作工具提升论文写作效率。然而&#xff0c;面对市场…

实用指南:粒子群优化算法求解三维变换矩阵的数学推导

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

3步搞定论文降AI:从检测到修改的完整流程 - 还在做实验的师兄

论文降AI其实不复杂,3步就能搞定:第一步检测定位(找出AI率和问题段落)、第二步工具处理(用专业工具快速降AI)、第三步验证校对(确保达标且质量过关)。整个流程1-2小时内完成,按这个教程走一遍就会了。3步搞定…

智慧校园之学生课堂场景行为识别 教育场景智能分析系统 学生行为监测算法优化 学生玩手机识别 上课走神识别 yolo26格式数据集第10407期

课堂学生行为识别 数据集说明核心信息概览项目内容类别数量及中文名称9 类&#xff08;计算机、手机、举手、睡觉、向左转、右转、使用电脑、使用手机、写作&#xff09;数据数量3300 条数据集格式YOLO 格式核心应用价值1. 支撑课堂场景行为识别模型训练&#xff1b;2. 助力教育…