同一台机 TCP 和 UDP 能否使用同一个端口号?
可以,一个 Socket 由 协议、ip 地址、端口号 所构成的三元组唯一标识。
实验
使用 netcat 简单做一个实验,首先开四个终端。
nc -ul 8888 # 开启一个 UDP 服务,端口号为 8888
nc -l 8888 # 开启一个 TCP 服务,端口号为 8888
nc -u 127.0.0.1 8888
nc 127.0.0.1 8888
均能正常收发消息。
日常吐槽
这本书的槽点总结一下就两点:
- 不想让你看懂
- 硬凑答案
本章吐槽的就是第二点,这点是真恶心。
看答案,你给我解释解释什么叫 端口号具有做本地意义 ?
本人妄自揣测一下作者的意思
- 标志一个 Socket 用的是 IP 和 端口号。因为 IP 不同,所以端口号可以相同。
- 一个主机可以有不同的 IP 地址,所以同一个主机上的 Socket 可以用不同的端口号。
不管是那种解读,他背地含义是不是被 IP:端口号 标识?协议 俩字我都没见到。这显然是在硬凑答案。