把"谁听门铃"和"谁去按门铃"分开想,一句话就能拆清楚:
-
**"我自己的端口号"**------叫**源端口**,随便挑(操作系统自动从 49152-65535 里抓一个临时号,用完就扔)。
-
**"我要去的端口号"**------叫**目的端口**,必须跟对方"开门营业"的号对上,否则敲错门。
用 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 站的真实流程
- 你在地址栏敲 `www.bilibili.com`,浏览器先问 DNS:"这域名在哪?"
DNS 回答:"202.112.23.56"(举例)。
- 浏览器构造 TCP 包:
源端口:本机随机 62788
目的端口:远程 **443**(因为地址栏是 https://)
-
数据包冲到 202.112.23.56 这台服务器,服务器的操作系统看到"目的端口 = 443",就把它交给**监听在 443 的那个进程**------通常是 nginx/Apache。
-
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的强大之处!你的设备可以同时:
-
作为服务器:Socket 0监听80端口,提供Web配置页面
-
作为客户端: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);
网络摄像头(只有一条网线)同时需要:
Socket 0: TCP服务器,端口80 → 提供视频流(RTSP)
Socket 1: TCP服务器,端口81 → 提供配置网页
Socket 2: UDP客户端,端口5000 → 发送运动检测报警
Socket 3: TCP客户端,端口8000 → 连接云存储服务
用户场景:
手机看实时视频 (通过Socket 0)
同时用电脑改摄像头设置 (通过Socket 1)
摄像头检测到人,发送报警到手机 (通过Socket 2)
所有录像自动备份到云端 (通过Socket 3)