sockets - 为什么UDP套接字是通过目的IP地址和目的端口来识别的?

标签 sockets networking udp

根据 Kurose 等人的“Computer networking: a top-down approach”,UDP 套接字完全由目标 IP 和目标端口识别。

这里为什么需要目标IP?我认为 UDP 只需要用于多路分解的目标端口。

最佳答案

机器可能有多个IP,不同的socket可能绑定(bind)到不同IP上的同一个端口。它需要使用目标 IP 来知道传入的数据报应该发送到这些套接字中的哪个。

事实上,为每个 IP 使用不同的套接字是很常见的。发送回复时,我们要确保源 IP 与请求的目标 IP 相匹配,以便客户端可以知道响应来自它发送到的同一服务器。通过为每个 IP 使用不同的套接字,并从请求进入的同一个套接字发送回复,可以保持这种一致性。一些套接字实现有一个扩展,允许在发送回复时设置源 IP,因此它们可以对所有 IP 使用单个套接字,但这不是标准套接字 API 的一部分。

关于sockets - 为什么UDP套接字是通过目的IP地址和目的端口来识别的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29297340/

相关文章:

c - 我是 C 网络的新手,我需要将字符串(字符数组)从命令行参数发送到服务器

Java - AttachNotSupportedException : Unable to open socket file: HotSpot VM not loaded

c - TCP 连接错误 115 Operation in Progress 是什么原因?

c - 使用消息结构的 UDP 聊天服务器

javascript - 是否可以从即将关闭的 ZMQ 套接字获取数据?

c - 使用 pthread 时 Accept() 返回对 stdout (1) 的引用

linux - 多重连接会提高网速吗?

python套接字错误: AF_INET address must be tuple,不是str

c - 接收多播数据包的用户缓冲区大小?

android - Android4.0及之前版本UDP发送