我了解到 UDP 套接字完全由目标 IP 和目标端口标识。IP 确实位于 IP 数据报的报头中,但是当数据报到达其目的地时,只有有效载荷被发送到上层协议。如果两个主机向具有相同 IP 和端口的主机发送 UDP 段,套接字如何知道将响应发送到哪个 IP,因为有效载荷不包含源 IP,并且套接字未通过源 IP 标识?
答案1
TCP 数据包需要像 UDP 数据报一样封装在 IP 中。两者都有端口号,但没有用于传送的地址。
对于 UDP/IP 或 TCP/IP,需要一个 5 元组来识别连接:
- 协议。(TCP、UDP)
- 源 IP 地址。
- 源端口。
- 目标 IP 地址。
- 目标端口。
一个不太恰当的类比:想象一下发送几个实体包裹。UDP 本身就只是写某人的公寓号码,没有任何街道地址,这当然行不通。添加 IP 意味着写目的地和回邮地址并添加邮资,这样就可以发送了。(TCP 意味着更高级的邮政费率,允许跟踪包裹以确保送达,并对包裹进行编号,以便了解其顺序。)