在服务器中,0.0.0.0 指的是本机上的所有IPV4地址
如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务。
127.0.0.1:回环地址
该地址指电脑本身,主要预留测试本机的TCP/IP协议是否正常。只要使用这个地址发送数据,则数据包不会出现在网络传输过程中。
127.0.0.1属于{127,}集合中的一个,而所有网络号为127的地址都被称之为回环地址,所以回环地址!=127.0.0.1
,它们是包含关系,即回环地址包含127.0.0.1
。
回环地址:所有发往该类地址的数据包都应该被loop back。
用途:
* 回环测试,通过使用ping 127.0.0.1 测试某台机器上的网络设备,操作系统或者TCP/IP实现是否工作正常。
* DDos攻击防御:网站收到DDos攻击之后,将域名A记录到127.0.0.1,即让攻击者自己攻击自己。
* 大部分Web容器测试的时候绑定的本机地址。
可以理解为本机有三块网卡,一块网卡叫做 loopback(这是一块虚拟网卡),另外一块网卡叫做 ethernet (有线网卡),另外一块网卡叫做 wlan(无线网卡)。
总结
127.0.0.1 是一个环回地址。并不表示“本机”。0.0.0.0才是真正表示“本网络中的本机”。
在实际应用中,一般我们在服务端绑定端口的时候可以选择绑定到0.0.0.0,这样我的服务访问方就可以通过我的多个ip地址访问我的服务。
比如我有一台服务器,一个外放地址A,一个内网地址B,如果我绑定的端口指定了0.0.0.0,那么通过内网地址或外网地址都可以访问我的应用。但是如果我之绑定了内网地址,那么通过外网地址就不能访问。 所以如果绑定0.0.0.0,也有一定安全隐患,对于只需要内网访问的服务,可以只绑定内网地址。
查看服务器开放的端口
linux运维都需要对端口开放查看 ,netstat 就是对端口信息的查看,
netstat 可以查看系统的网络状况,比如开了哪个端口,哪个ip与我们机器连接最多之类的
[root@iz2ze5is23zeo1ipvn65aiz ~]# netstat -nlt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3346/nginx: master
tcp 0 0 127.0.0.1:8081 0.0.0.0:* LISTEN 2493/docker-proxy-c
tcp 0 0 127.0.0.1:8082 0.0.0.0:* LISTEN 5529/docker-proxy-c
tcp 0 0 127.0.0.1:8083 0.0.0.0:* LISTEN 17762/docker-proxy-
tcp 0 0 127.0.0.1:8084 0.0.0.0:* LISTEN 2743/docker-proxy-c
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2155/sshd
看到 查询的有Local、Address、Foregin、Program name
Local :访问端口的方式,0.0.0.0 是对外开放端口,说明80端口外面可以访问;127.0.0.1 说明只能对本机访问,外面访问不了此端口;
Address:端口
Foregin Address:对外开放,一般都为0.0.0.0:*
Program name:此端口是那个程序在用,程序挂载此端口
重点说明 0.0.0.0 是对外开放,通过服务域名、ip可以访问的端口
127.0.0.1 只能对本机 localhost访问,也是保护此端口安全性
::: 这三个: 的前两个”::“,是“0:0:0:0:0:0:0:0”的缩写,相当于IPv6的“0.0.0.0”,就是本机的所有IPv6地址,第三个:是IP和端口的分隔符