场景:
当我们对tcp服务器进行监听的时候,可能需要用到ip地址,比如使用httplib::Service::listen(ip, port),而当我们访问tcp服务器时也需要ip地址
但这两个ip是不同的!
每个云服务器通常都会有一个公网IP地址和一个私有IP地址。公网IP地址是服务器在互联网上的唯一标识,可以从互联网上的任何地方访问。私有IP地址只能在云网络内部访问。可以把私有IP看成是局域网IP,也就是云服务器直接连接的网络接口的IP地址
当服务器设置监听时,它会在其直接连接的网络接口的IP地址上等待请求。它需要监听它自己网络接口的实际IP地址。这样,它就可以接收到发送到这个地址的所有请求。在云服务器环境中,这通常是一个私有IP地址,可以用指令 ifconfig 查询,inet就是私有IP。这个地址是在云网络内部使用的。
当客户端(例如,一个在互联网上的浏览器)想要连接到服务器时,它需要使用服务器的公网IP地址。这是因为公网IP地址是你的服务器在互联网上的唯一标识,客户端需要主动去找服务器,任何在互联网上的设备都可以用它来找到你的服务器。然后,云服务提供商会使用NAT(网络地址转换)技术,将公网IP地址转换为私有IP地址,然后将数据路由到正确的服务器。
总结:对于云服务器来说进行监听只会在自己的本地运行,等待外部请求,所以要用最小作用域的ip(也就是私有IP)。而对提交请求方来说要主动去找服务器,所以用公网ip。