客户端绑定如何影响tcp连接?
我有一个带有两个IP地址的客户端系统:10.172.12.13和58.53.12.15 服务器还配置为具有两个IP地址:10.172.12.18和58.53.12.17 现在,在客户端,我首先绑定到本地地址和端口(端口为0),然后执行TCP非阻塞连接 奇怪的行为是,如果我指定10.172.12.13作为要绑定的本地地址,然后连接到服务器中的58.53.12.17,那么它将无法连接,导致错误为“主机不可访问” 但是,如果我在客户机中将本地地址指定为58.53.12.15&然后尝试连接到服务器中的58.53.12.17,它就会连接 最有趣和令人惊讶的方面是,在执行上述操作之后,如果我再次将10.172.12.13作为本地地址绑定并连接到58.53.12.15,它现在将成功连接。但是,这种情况只发生几分钟。一段时间后,10.172.12.13作为本地地址的连接再次失败客户端绑定如何影响tcp连接?,c,linux,sockets,bind,connect,C,Linux,Sockets,Bind,Connect,我有一个带有两个IP地址的客户端系统:10.172.12.13和58.53.12.15 服务器还配置为具有两个IP地址:10.172.12.18和58.53.12.17 现在,在客户端,我首先绑定到本地地址和端口(端口为0),然后执行TCP非阻塞连接 奇怪的行为是,如果我指定10.172.12.13作为要绑定的本地地址,然后连接到服务器中的58.53.12.17,那么它将无法连接,导致错误为“主机不可访问” 但是,如果我在客户机中将本地地址指定为58.53.12.15&然后尝试连接到服务器中的5
请某人解释发生了什么事?绑定如何影响TCP连接?通常您从不将客户端套接字绑定到特定接口。通过将其绑定到10.172.12.18(局域网接口),由于专用网络的可见性,您将只能与局域网连接通信 要通过Internet连接到服务器,您只需创建套接字并将其直接连接到外部IP,在您的情况下,外部IP为58.53.12.17 若您想确保客户端将连接到本地可见的服务器,而不是通过Internet,那个么绑定到本地IP可能很有用 这两个IP地址也不一样。阅读一些关于私有和公共IP地址以及它们存在的原因的信息
通过仍然绑定的客户端套接字访问外部IP可能是路由器优化的结果,这些优化将捕获一些路由,并且在没有大的更改的情况下从捕获中使用它们。几分钟后,它会发现路由数据略有不同,并将清除缓存。(这只是想法,可能是完全错误的)您的服务器端知道如何达到10.172.12.13吗?10.0.0.0/8是专用地址。公共互联网不知道如何路由到它们。我希望
ip路由显示
,ip路由显示缓存
,ip路由从58.53.12.15获得58.53.12.15
,ip路由从10.172.12.13获得58.53.12.15
和ip路由刷新缓存
会有所启发。