Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >localhost,127.0.0.1 ,0.0.0.0区别

localhost,127.0.0.1 ,0.0.0.0区别

作者头像
OwenZhang
发布于 2021-12-08 09:06:20
发布于 2021-12-08 09:06:20
2K00
代码可运行
举报
文章被收录于专栏:Owen's WorldOwen's World
运行总次数:0
代码可运行

1. 问题引入

之前在使用tomcat的时候,启动tomcat默认都会绑定到127.0.0.1这个地址,最近在使用hexo写博客的时候发现通过 hexo server命令启动服务的时候绑定的ip地址是0.0.0.0。那么这两个IP地址到底有什么不同呢?

在讲解两个地址的不同之前,我们先回顾一下IP地址的基础知识。

2. IP地址分类

2.1 IP地址表示

IP地址由两个部分组成,net-id和host-id,即网络号和主机号。 net-id:表示ip地址所在的网络号。 host-id:表示ip地址所在网络中的某个主机号码。

即:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  IP-address ::=  { <Network-number>, <Host-number> }
复制代码

2.2 IP地址分类

IP地址一共分为5类,即A~E,它们分类的依据是其net-id所占的字节长度以及网络号前几位。

  • A类地址:网络号占1个字节。 网络号的第一位固定为0。
  • B类地址: 网络号占2个字节。 网络号的前两位固定为10。
  • C类地址: 网络号占3个字节。 网络号的前三位固定位110。
  • D类地址: 前四位是1110,用于多播(multicast),即一对多通信。
  • E类地址: 前四位是1111,保留为以后使用。 其中,ABC三类地址为单播地址(unicast),用于一对一通信,是最常用的。

2.3 特殊IP地址

特殊IP地址就是用来做一些特殊的事情。RFC1700中定义了以下特殊IP地址。

  1. {0,0}:网络号和主机号都全部为0,表示“本网络上的本主机”,只能用作源地址。
  2. {0,host-id}:本网络上的某台主机。 只能用作源地址。
  3. {-1,-1}: 表示网络号和主机号的所有位上都是1(二进制),用于本网络上的广播,只能用作目的地址,发到该地址的数据包不能转发到源地址所在网络之外。
  4. {net-id,-1}:直接广播到指定的网络上。 只能用作目的地址。
  5. {net-id,subnet-id,-1}:直接广播到指定网络的指定子网络上。 只用作目的地址。
  6. {net-id,-1,-1}:直接广播到指定网络的所有子网络上。 只能用作目的地址。
  7. {127,}:即网络号为127的任意ip地址。 都是内部主机回环地址(loopback),永远都不能出现在主机外部的网络中。

3. 问题解答

接下来我们来看之前问过的问题:127.0.0.1和0.0.0.0地址的区别是什么? 我们先来看下共同点:

  1. 都属于特殊地址。
  2. 都属于A类地址。
  3. 都是IPV4地址。

接下来我们分别看下这两个地址:

0.0.0.0

IPV4中,0.0.0.0地址被用于表示一个无效的,未知的或者不可用的目标。

  • 服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务。
  • 路由中,0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。

用途总结

  • 当一台主机还没有被分配一个IP地址的时候,用于表示主机本身。 (DHCP分配IP地址的时候)
  • 用作默认路由,表示”任意IPV4主机”。 用来表示目标机器不可用。
  • 用作服务端,表示本机上的任意IPV4地址。

127.0.0.1

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容器测试的时候绑定的本机地址。

localhost

相比127.0.0.1,localhost具有更多的意义。localhost是个域名,而不是一个ip地址。之所以我们经常把localhost与127.0.0.1认为是同一个是因为我们使用的大多数电脑上都讲localhost指向了127.0.0.1这个地址。 在ubuntu系统中,/ets/hosts文件中都会有如下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1   localhost
127.0.1.1   jason-Lenovo-V3000
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
复制代码

上面第一行是几乎每台电脑上都会有的默认配置。 但是localhost的意义并不局限于127.0.0.1。

localhost是一个域名,用于指代this computer或者this host,可以用它来获取运行在本机上的网络服务。 在大多数系统中,localhost被指向了IPV4的127.0.0.1和IPV6的::1。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
127.0.0.1    localhost
::1          localhost
复制代码

所以,在使用的时候要注意确认IPV4还是IPV6

4. 总结

127.0.0.1 是一个环回地址。并不表示“本机”。0.0.0.0才是真正表示“本网络中的本机”。 在实际应用中,一般我们在服务端绑定端口的时候可以选择绑定到0.0.0.0,这样我的服务访问方就可以通过我的多个ip地址访问我的服务。

比如我有一台服务器,一个外网地址A,一个内网地址B,如果我绑定的端口指定了0.0.0.0,那么通过内网地址或外网地址都可以访问我的应用。但是如果我只绑定了内网地址,那么通过外网地址就不能访问。所以如果绑定0.0.0.0,也有一定安全隐患,对于只需要内网访问的服务,可以只绑定内网地址。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年10月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
彻底明白127.0.0.1和0.0.0.0地址的区别是什么?
首先,0.0.0.0是不能被ping通的。0.0.0.0称为“unspecified”,即未指定(即无效的,无意义的)地址。从功能上看,一般用于某些程序/网络协议中不便使用具体ip的特殊情况(说白了就是一个用于某些比较坑的情况的“占位符”),比如DHCP客户端还未获取到ip的时候规定使用0.0.0.0作“源地址”,或者在服务器中,0.0.0.0并不是一个真实的的IP地址,它表示本机中所有的IPV4地址。服务器不指定在哪个网卡上监听时,也使用0.0.0.0,这个时候监听本机中所有IP的端口。
徐建国
2021/12/07
3.4K1
0.0.0.0、127.0.0.1和localhost之间的区别
localhost localhost其实是个域名,而不是一个ip地址。之所以我们经常把localhost与127.0.0.1认为是同一个是因为我们使用的大多数系统上都默认localhost指向了127.0.0.1这个地址。 在linux系统中,/ets/hosts文件中都会有如下内容:
用户1679793
2019/12/31
4.2K0
0.0.0.0 与 127.0.0.1的区别
严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一律送进去。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。
科控物联
2022/03/29
4.7K0
0.0.0.0 与 127.0.0.1的区别
127.0.0.1 vs 0.0.0.0 vs localhost vs 主机IP
说明:上一篇写完《当你输入URL到页面显示经历了什么--URL到IP地址》之后读了好几本关于网络的书(当然都是跳着读),发现期初想的太简单,还是遗漏了许多,后面等慢慢熟悉了整个网络连接之后再继续写。这次先插播一篇: 本地在做开发的时候肯定会起服务器,这就会牵扯到访问地址的问题:要么自定义域名;要么直接IP地址访问。可是这里的IP地址该用哪个?或者说 127.0.0.1 vs 0.0.0.0 vs localhost vs 主机IP 这些有何区别?下面查阅了一些资料做个分享: localhos
前端黑板报
2018/01/29
3.1K0
127.0.0.1 vs 0.0.0.0 vs localhost vs 主机IP
你真的了解127.0.0.1和0.0.0.0吗~
事出有因,前段时间老大让小姐姐在测试环境搭建一个ELK。我说我搭好了,但Kibana端口不知为啥没暴露出去,其他机子访问不了我的Kibana但确可以ping通这台机子...一个小伙伴马上用netstat命令确定到我把Kibana IP绑到127.0.0.1上了,然后我就收到了组内一堆 “ ..... ” 的回复。。
范蠡
2020/05/06
1.3K0
你真的了解127.0.0.1和0.0.0.0吗~
彻底搞明白webpack-dev-server 配置 host 0.0.0.0作用
今天在研究 webpack-dev-server 配置 host 时,看到手册中这样的一句话:
用户7413032
2020/06/11
8.8K0
计算机网络知识总结:ip地址、分类及什么样的ip主机地址可以分配给主机使用
两级的 IP 地址可以记为: IP 地址 ::= { <网络号>, <主机号>} 简而言之就是:IP地址 = 网络号+主机号
鲲志说
2025/04/07
2290
计算机网络知识总结:ip地址、分类及什么样的ip主机地址可以分配给主机使用
网络编程入门如此简单(四):一文搞懂localhost和127.0.0.1
本文由萤火架构分享,原题“localhost和127.0.0.1的区别是什么?”,原文链接“juejin.cn/post/7321049446443417638”,下文进行了排版和内容优化。
JackJiang
2024/09/26
2350
网络编程入门如此简单(四):一文搞懂localhost和127.0.0.1
计算机网络基础
IP地址由网络号(包括子网号)和主机号组成,网络号(包括子网号)相同意味着在同一网段下。在IPv4中,IP地址是一个32位的整数,对应4个字节,通常用x.x.x.x的点式十进制方式来表示。
雨临Lewis
2022/01/12
7210
计算机网络——IPv4详解
十进制正整数转8位无符号二进制数 除2取余法 (130)10 = (10000010)2 130 / 2 = 65 余 0 65 / 2 = 32 余 1 32 / 2 = 16 余 0 16 / 2 = 8 余 0 8 / 2 = 4 余 0 4 / 2 = 2 余 0 2 / 2 = 1 余 0 1 / 2 = 0 余 0 凑值法 (必须熟记8位二进制各位的权值 128 64 32 16 8 4 2 1) 举例 (171)10 = (10101011)2 = (1 x 128 + 0 x 64 + 1 x 32 + 0 x 16 + 1 x 8 + 0 x 4 + 1 x 2 + 1 x 1)10
王同学要努力
2022/11/15
1.6K0
计算机网络——IPv4详解
ensp学习第十三弹简单ipv6网络
近乎无限的地址接口;层次化地址结构;即插即用;简单的报文头部;安全特性;移动性;增强QoS特性等
用户8447427
2022/08/18
2.2K0
ensp学习第十三弹简单ipv6网络
硬核图解!断网了,还能ping通 127.0.0.1 吗?为什么?
可能看到标题,你就知道答案了,但是你了解背后的原因吗?那如果把 127.0.0.1 换成 0.0.0.0 或 localhost 会怎么样呢?你知道这几个IP有什么区别吗?
9号同学
2021/07/07
9210
硬核图解!断网了,还能ping通 127.0.0.1 吗?为什么?
网际协议IP
IP地址:一个IP地址惟一地标识了Internet上的一台主机,IPv4协议使用32位地址,这表示地址空间是2^32。而IPv6协议使用128位地址,地址空间为2^128。 表示方法:点分十进制表示:每个字节用一个十进制数表示。
十二惊惶
2024/02/28
1350
网际协议IP
网络地址 0.0.0.0 与回环地址 127.0.0.1 的区别
通常指的是127.0.0.1,而0.0.0.0是一个特殊的地址,用于指代本机的所有IP地址,包括回环地址。
Srlua
2024/03/01
1.2K0
网络地址 0.0.0.0 与回环地址 127.0.0.1 的区别
IPv4协议之分类的 IP 地址
如果用点分十进制记法表示的地址,则按第1 字节表示的十进制数来判定地址类别:A类为0~127,B类为128~191,C类为192~223,D类为224~239,E类为240~255。
一个风轻云淡
2024/02/07
2710
网络工程师入门系列 | IP子网划分
这其中除了段0和段127之外,还有一些IP地址因为有其他的用途,是不可以用作普通IP的。还有一部分被用作私有IP地址。
网络技术联盟站
2019/12/30
1.1K0
网络工程师入门系列 | IP子网划分
【TCP/IP】IP地址分类和特殊IP地址
IP地址是因特网技术中的一个非常重要的概念,IP地址在IP层实现了底层网络地址的统一,使因特网的网络层地址具有全局唯一性和一致性。IP地址含有位置信息,反映了主机的网络连接,使因特网进行寻址和路由选择的依据。
全栈程序员站长
2022/08/12
5.1K0
【TCP/IP】IP地址分类和特殊IP地址
子网划分和计算方法(附习题详解)
把十进制数的IP地址换算成二进制数,把子网掩码也由十进制数换算成二进制数,两对二进制数对齐做“与”运算,即可得出网络号。
全栈程序员站长
2022/09/14
9K0
子网划分和计算方法(附习题详解)
猫头虎分享:localhost和127.0.0.1的区别是什么?
在本篇技术博客中,猫头虎博主将带大家深入探索localhost与127.0.0.1的微妙区别。本文适合各级读者,无论你是初学者还是资深开发者,都可以从中获益。我们将覆盖关键词如网络编程、IP地址、DNS解析、IPv4、IPv6、性能差异等,确保你能从百度搜索轻松找到本文。
猫头虎
2024/04/07
1570
关于IP地址的一些相关知识点
IP地址是一个32位二进制数(但是用十进制描述)的地址,由4个8位字段组成,每个字段之间用点号隔开,用于标识TCP/IP宿主机。
宸寰客
2020/07/23
7370
推荐阅读
相关推荐
彻底明白127.0.0.1和0.0.0.0地址的区别是什么?
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验