背景:
一开始做前后端交互时,是直接在pycharm的终端上运行指令
Python manage.py runserver 0.0.0.0:8000
使服务器开在这个ip地址上,被前端访问到项目。但是每次我都是使用pycharm启动一次项目,又用终端使用这个命令启动一次项目,之前一直云里雾里也没有管,今天使用终端启动时报错大概意思是没有Django这个模块,我才真正重视起了这里面的知识点,当然以下学习到的知识点跟报错没有任何关系(我猜测报错只是因为系统在终端启动时Django没有被加载出来,因为我用pycharm启动的时候是可以正常启动的,还能在Postman上面发送请求)
以下用作整理知识点,巩固知识
0.0.0.0、localhost、127.0.0.1
共同点
- 都属于特殊地址。
- 都属于A类地址。
- 都是IPV4地址。
不同点
0.0.0.0
严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。
它表示的是这样一个集合:
1、所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。
2、对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一 律送进去。
3、如果在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。
也就是说0.0.0.0就是表示所有的IP地址.
比如一个tomcat配置文件中,如果监听的IP地址设置了 0.0.0.0 就表示你的这个tomcat服务器监听在本机的所有IP地址上,通过任何一个IP地址都可以访问到tomcat.
如果本地的IP地址有 192.168.1.10, 172.16.2.10,那么访问你这个tomcat http://192.168.1.10:8080/ http://172.16.2.10:8080/ 都可以访问
另外,0.0.0.0是不能被ping通的
用途:
- 用作服务端,表示本机上的任意IPV4地址。
127.0.0.1
首先我们要先知道一个概念,凡是以127
开头的IP地址,都是回环地址,其所在的回环接口一般被理解为虚拟网卡,并不是真正的路由器接口。
所谓的回环地址,通俗的讲,就是我们在主机上发送给127
开头的IP地址的数据包会被发送的主机自己接收,根本传不出去,外部设备也无法通过回环地址访问到本机。
最后127.0.0.1属于{127,}集合中的一个,而所有网络号为127的地址都被称之为回环地址,所以回环地址!=127.0.0.1,它们是包含关系,即回环地址包含127.0.0.1。
用途
- 回环测试,通过使用ping 127.0.0.1 测试某台机器上的网络设备,操作系统或者TCP/IP实现是否工作正常。
- DDos攻击防御:网站收到DDos攻击之后,将域名A记录到127.0.0.1,即让攻击者自己攻击自己。
- 大部分Web容器测试的时候绑定的本机地址。
localhost
相比127.0.0.1,localhost具有更多的意义。localhost是个域名,而不是一个ip地址。之所以我们经常把localhost与127.0.0.1认为是同一个是因为我们使用的大多数电脑上都讲localhost指向了127.0.0.1这个地址。
但是localhost的意义并不局限于127.0.0.1。
localhost是一个域名,用于指代this computer或者this host,可以用它来获取运行在本机上的网络服务。
在大多数系统中,localhost被指向了IPV4的127.0.0.1和IPV6的::1。
127.0.0.1 localhost
::1 localhost
所以,在使用的时候要注意确认IPV4还是IPV6(IPv4和IPv6是不同类型的IP地址。它们的主要用途相同,标记不同的用户,并且让用户能通过IP进行通信。主要区别在于IPv6是最新一代的IP地址。)
总结
127.0.0.1 是一个环回地址。并不表示“本机”。0.0.0.0才是真正表示“本网络中的本机”。
在实际应用中,一般我们在服务端绑定端口的时候可以选择绑定到0.0.0.0,这样我的服务访问方就可以通过我的多个ip地址访问我的服务。
比如我有一台服务器,一个外放地址A,一个内网地址B,如果我绑定的端口指定了0.0.0.0,那么通过内网地址或外网地址都可以访问我的应用。但是如果我之绑定了内网地址,那么通过外网地址就不能访问。 所以如果绑定0.0.0.0,也有一定安全隐患,对于只需要内网访问的服务,可以只绑定内网地址。
另外,使用pycharm启动项目与使用pycharm的终端启动项目都是一样的启动项目,只不过pycharm启动项目时默认本地,将项目启动在127.0.0.1上,这样别人访问不了我们的项目,所以如果使用终端将项目启动到0.0.0.0前端就可以访问了,但如果在pycharm的设置中把ip的localhost改为我们本机的ip,这样不需要使用终端启动,直接用pycharm启动,前端也可以访问到我们的项目