网络地址0.0.0.0和127.0.0.1

  多网卡情况下,服务监听端口可以做选择监听那个网卡(的端口);这个时候就需要配置监听的hostIp为0.0.0.0;
  我是在安装elk的elastisearch的时候发现的问题;curl locahost:9200没有问题,但是curl 外网IP:9200的时候则报错:curl: (7) Failed connect to 外网IP:9200; Connection refused;
  后来提交了阿里云的一个工单,提示我通过
1 ss -tnlup | grep 9200
2 tcp LISTEN 0 128 127.0.0.1:9200 *:* users:
  发现绑定的端口是127.0.0.1:9200,于是告诉我需要把监听的端口改为0.0.0.0;于是我在elasticsearch.yml文件中将network.host的值改为了全0,重启服务,搞掂。
 
0.0.0.0在IP地址中代表在这台机器上面所有的IP;这个地址配置如果是用于地址(监听)绑定,那么代表监听本机所有的网卡(IP 地址);但是如果用于配置某个网卡的IP地址,将会导致该网卡丢弃所有的数据包;如果使用这个地址是路由器的上下文,那么就代表默认路由
与之相关的是127.0.0.1(localhost);是一个回环地址(loopback address),所谓的回环,就是本机发送IP协议,通过网卡又走回了本机的TCP协议栈,就是发送协议栈和接收协议栈都是一台物理机,故有回环(loopback)之说;但是注意,操作系统底层将会对该地址进行特殊处理,不会让其访问本机的网络接口(硬件,数据链路层及其以下),只是在IP层以以上层之间流转,也就是说不会有数据包(Datagram);直接在软件层面进行处理。
讲到了这里就牵涉到了网络协议堆栈,我们使用IP地址,其实是Internet Protocal层,现在是该协议的第四个版本(version 4),所以也成为IPv4;因为现在IPV4的地址已经明显不够用了,现在正在缓慢的向IPv6过渡;任何路由器如果接收到了127.0.0.1地址将会被抛弃,因为这个地址在本机将会被处理。
 参考:
 

posted on 2018-08-12 21:21  下士闻道  阅读(995)  评论(0编辑  收藏  举报

导航