在 TCP 中连接多个 IP 地址
Posted
技术标签:
【中文标题】在 TCP 中连接多个 IP 地址【英文标题】:Connecting Between Multiple IP Address in TCP 【发布时间】:2021-10-28 00:10:54 【问题描述】:当我从 DNS 服务器询问某处.com 时,它按以下顺序为我解析 4 个 IP:
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
我的问题是如果第一个 IP(192.168.1.1) 不起作用会发生什么?
哪个服务或协议切换到下一个 IP?
还有其他服务,如 telnet、... (telnet somewhere.com 443
)?
【问题讨论】:
请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。 【参考方案1】:首先,当进行查找时,返回的列表没有任何顺序,它有点随机。这有助于确保一个系统不会过载。
如果列表中的第一个地址失败会发生什么,将取决于应用程序的编写情况。
假设会发生什么,如果第一个 IP 地址失败,那么应用程序应该然后尝试下一个并遍历列表,直到列表用完或建立连接。您可以通过许多软件看到这一点。但是,很多开发者都很懒惰,只尝试第一个返回。我可以想到很多会发生这种情况的应用程序。
当您看到应用程序请求 ANY 并期望 IPv4 地址并且返回的列表包含 IPv6 地址时,这并不有趣,只是为了让软件吐槽。
【讨论】:
感谢您的回答,但我认为操作系统会像 tcp 重传间隔一样处理这个问题,... 你错了。操作系统不会遍历 IP 地址列表,这是留给应用程序的。去看看一些网络代码,你会看到这一点,特别是 C 中的绑定调用及其结构中包含的内容。以上是关于在 TCP 中连接多个 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章
mysql 指定多个IP 绑定监听地址 bind_address