端口号理解

把"谁听门铃"和"谁去按门铃"分开想,一句话就能拆清楚:

  1. **"我自己的端口号"**------叫**源端口**,随便挑(操作系统自动从 49152-65535 里抓一个临时号,用完就扔)。

  2. **"我要去的端口号"**------叫**目的端口**,必须跟对方"开门营业"的号对上,否则敲错门。


用 SNMP 举例

  • 网管软件(你的电脑)→ 交换机

源端口:临时 64523(无所谓)

目的端口:UDP 161(交换机必须在 161 上"听"SNMP 请求)

  • 交换机主动报警(Trap)→ 网管软件

源端口:161(交换机随手用)

目的端口:UDP 162(网管软件必须在 162 上"听"Trap)

所以:

  • **161 是"对方"的监听端口**------你想读/写设备,就发 UDP 包到它的 161。

  • **162 是"自己"的监听端口**------如果你想收 Trap,就要在本机开 UDP 162,让设备能把报警发过来。


再看一次 Web 浏览

浏览器访问 `https://www.bilibili.com`

源端口:本机 62788(随机,你无需管)

目的端口:远程 443(必须固定,否则打不开页面)


结论

  • **源端口**无所谓,系统给你随机;

  • **目的端口**必须跟对方服务匹配(HTTP→80,HTTPS→443,SNMP→161,SNMP-Trap→162)。

  • **两端端口号无需一样**------只要"发送方目的端口 = 接收方监听端口"就能对上暗号。

"监听端口"就是服务方"开门营业"的柜台号,谁想来买东西,就得排这个队。

443 号柜台不是 B 站私有,而是**整个互联网公认的"HTTPS 柜台"**------所有想卖"加密网页"的站点,都必须在这里支摊子。


一次刷 B 站的真实流程

  1. 你在地址栏敲 `www.bilibili.com`,浏览器先问 DNS:"这域名在哪?"

DNS 回答:"202.112.23.56"(举例)。

  1. 浏览器构造 TCP 包:

源端口:本机随机 62788

目的端口:远程 **443**(因为地址栏是 https://)

  1. 数据包冲到 202.112.23.56 这台服务器,服务器的操作系统看到"目的端口 = 443",就把它交给**监听在 443 的那个进程**------通常是 nginx/Apache。

  2. nginx 收到请求,返回首页,全程柜台号始终是 443,不会换地方。


同一个端口给无数网站共用,会不会打架?

不会,因为柜台号只在一台**物理服务器**本地唯一。

  • 202.112.23.56:443 → B 站

  • 142.250.72.46:443 → Google

  • 104.16.123.96:443 → Cloudflare 上的某个小博客

它们 IP 不同,就像"不同商场里的 443 号柜台",顾客根据**IP+端口**的"完整地址"找上门,互不干扰。


如果一台服务器要跑两个 HTTPS 站点怎么办?

还是共用 443,靠**SNI(Server Name Indication)**------客户端在 TLS 握手时把域名明文带过去,nginx 按域名再把流量分给背后的 A 站或 B 站进程。端口依旧只有一个 443。


一句话总结

443 是**全球统一的"加密网页柜台"**,所有 HTTPS 站点都开在这;

不同网站**IP 不同**,所以不会抢柜台;

你访问任何 https:// 开头的地址,目的端口都是 443,无一例外。

W5500支持多个socket的用处:

同一个设备同时作为服务器和客户端

这才是W5500多Socket的强大之处!你的设备可以同时

  1. 作为服务器:Socket 0监听80端口,提供Web配置页面

  2. 作为客户端:Socket 1连接远程80端口,获取天气信息

    // Socket 0: 作为Web服务器(本地端口80)
    w5500_socket_init(0, Sn_MR_TCP | Sn_MR_TCP_SERVER, 80, 0);
    w5500_socket_command(0, Sn_CR_LISTEN);

    // Socket 1: 作为Web客户端(目的端口80)
    w5500_socket_init(1, Sn_MR_TCP | Sn_MR_TCP_CLIENT, 0, 0);
    w5500_set_dest_ip(1, api_server_ip); // 设置远程服务器IP
    w5500_set_dest_port(1, 80); // 设置目的端口为80
    w5500_socket_command(1, Sn_CR_CONNECT);

网络摄像头(只有一条网线)同时需要:

  1. Socket 0: TCP服务器,端口80 → 提供视频流(RTSP)

  2. Socket 1: TCP服务器,端口81 → 提供配置网页

  3. Socket 2: UDP客户端,端口5000 → 发送运动检测报警

  4. Socket 3: TCP客户端,端口8000 → 连接云存储服务

用户场景:

  1. 手机看实时视频 (通过Socket 0)

  2. 同时用电脑改摄像头设置 (通过Socket 1)

  3. 摄像头检测到人,发送报警到手机 (通过Socket 2)

  4. 所有录像自动备份到云端 (通过Socket 3)

相关推荐
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码4 天前
嵌入式学习路线
学习
毛小茛4 天前
计算机系统概论——校验码
学习
babe小鑫4 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms4 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下4 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。4 天前
2026.2.25监控学习
学习
im_AMBER4 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J4 天前
从“Hello World“ 开始 C++
c语言·c++·学习