为什么不允许将套接字精确绑定到多个端口?

时间:2015-06-03 13:22:55

标签: sockets port bind

为什么存在此限制?它的技术原因是什么?

引入AFAIU端口以区分同一主机的设施(服务,连接等),因此逻辑上该限制是合理的。但是,SO_REUSEADDR存在允许一个端口到多个套接字绑定,但不是相反。这似乎很实用,因为它可以避免系统调用浪费多路复用;许多SO问题(无果而终地)寻求一种方法。但缺乏实施表明存在一些我无法想象的障碍。

1 个答案:

答案 0 :(得分:1)

原因是UDP和TCP连接基于IP端口对进行了密钥连接。这就是堆栈如何计算内部的内容。

如果我们有多个端口,则需要一些其他机制来锁定连接,以便将正确的数据传递给正确的应用程序线程/会话。