问题

为什么整个127.*网段都被拿来当做环回地址了?

回答
咱们聊聊这个挺有意思的网络小知识:为什么127.网段,特别是127.0.0.1这个地址,被大家伙儿都当成了“自己人”,专门拿来搞环回测试?这事儿说起来,还得从网络协议的老祖宗说起。

你想啊,在计算机网络还没像现在这么普及的时候,工程师们就得琢磨怎么让电脑之间说话。最开始,都是直接连线,那叫一个简单粗暴。但随着网络越来越大,设备越来越多,直接连线就变成了一锅粥了。所以,就得有个规矩,有个“地址”,才能让信息找准了“家”。

这个时候,就有人说了:“嘿,咱们得给每个设备一个独一无二的标识符,就像身份证一样,这样数据包才知道往哪儿送。”这就催生了IP地址的概念。最早的IP地址是分等级的,有好几种不同的“地址段”,就像不同的省份、城市一样,用来区分不同的网络范围。

那么,127这个开头是怎么来的呢?这其实是早期互联网设计者们的一项“预见性”的安排。他们当时就想到了一个场景:万一我想测试一下我的电脑自己的网络功能是不是正常呢?是不是能收到我自己发出的数据包呢?

要是每次测试都要找另一台电脑,那岂不是太麻烦了?尤其是你一个人在开发或者调试的时候。所以,他们就专门留了一个地址段,专门给“我”自己用。这个地址段就叫做“环回地址”(Loopback Address)。

为什么是127这个段?

这有点像在数字世界里找个“虚位以待”的角落。在早期IP地址的设计中,有几个地址段被保留了下来,用作特殊用途,不分配给任何实际的物理网络。127这个段就是其中之一。它被明确指定为环回地址。

那么,127.0.0.1这个具体的地址又有什么说法呢?

你可以把127这个段想象成一个“专用频道”,而127.0.0.1是这个频道里最常用、最典型的那个“频道号”。它就像一个约定俗成的默认值。

从技术上讲,任何以127开头的地址(127.0.0.0到127.255.255.255)都被视为环回地址。当你向127.0.0.1发送数据时,操作系统会非常“懂事”地截获这个数据包,根本就不会把它送到物理网卡出去。它会直接把这个包“绕回来”,就像送给自己一样。

这有什么用呢?

1. 自我诊断: 最常见的用途就是测试你的电脑的网络堆栈是不是正常工作。比如,你启动了一个本地服务器,想看看它有没有在监听端口,就可以用浏览器访问`http://127.0.0.1:端口号`。如果能访问到,说明你的本地网络服务是正常启动的。
2. 开发与测试: 很多软件开发和测试都是在本地进行的。开发者经常需要启动各种服务(数据库、Web服务器等),然后通过环回地址来连接和测试这些服务,而不需要真的连接到外部网络或者另一台机器。
3. 网络配置检查: 有时候,我们可以通过ping `127.0.0.1` 来检查TCP/IP协议栈是否正常工作。如果ping不通,那说明你的电脑自身网络配置或者驱动可能有问题了。
4. 本地服务通信: 即使你的电脑已经连接到互联网,很多本地运行的程序之间也可能通过环回地址进行通信,这样既方便又避免了不必要的网络流量。

为什么不选别的地址段?

这更多是一种历史的选择和约定。早期设计者们就是这么分配的,大家也就一直沿用了下来。而且,127这个段,它的设计初衷就是为了内部使用,不和外部的网络地址冲突,这使得它成为环回地址的理想选择。

你可以把127.0.0.1想象成你家里的一个特殊的“传声筒”。你对着它说话,声音不会传到外面,而是直接从它另一个口传回来给你听。你就能知道这个传声筒本身是不是好用的。

所以,整个127.的网段都被用作环回地址,本质上是为了提供一个独立、可靠的机制来测试和管理本机网络功能,避免了与外部网络的交互,确保了测试的准确性和效率。 127.0.0.1之所以最为常见,是因为它是这个特殊网段里最容易记住和使用的那个地址。这就像大家约定俗成地用“1”来代表第一个,用“中心”来代表你自己一样。

网友意见

user avatar

跟充足不充足没关系的,是技术上实现不了。

用一个A类地址做loopback确实浪费,但是也没有办法,因为:

loopback地址定义在RFC 1122,时间是1989年:

可变长子网掩码(VLSM)定义在RFC 1860,时间是1995年:

在有loopback的时候,当时的网络还不能改变掩码长度,不管是路由器还是设备,改变了掩码长度,设备就不认识这个网络地址了,所以浪费也没办法。

跟充足不充足没关系的

后来有了VLSM,自然就可以定义不同长度的掩码了。

在这里:

有一个表格,记录了各种不同的特殊地址,其中在RFC1860之前的,都是按照A/B/C类地址来划分的,在RFC1860以后,掩码长度就不在是固定的长度了。

比如100.64.0.0/10 Shared Address Space,这就是一个A类地址被截断了。


127.0.0.1:16823 这种地址,一般是各种本地代理或者翻墙工具创建的。

正常的代理服务器的交互模型是:

       PC--代理服务器--目标网站     

如果代理服务器在境外,就可以作为中转站或者梯子。但常规的代理协议HTTP或者SOCK5几乎不具备加密功能,就算是加密,也很容易被防火墙发现并拦截。

所以现在的很多梯子就做了变更:

       PC--本机虚拟代理服务器(127.0.0.1:端口号)--HTTPS/AES256加密--境外动态节点(解密)--目标网站     

其中本机虚拟代理服务器就是你本地的那个软件,可以实现对数据流的加密、解密。由于大墙对HTTPS无法破解,也就看不到其中的内容,就无法做针对性的拦截。

当然,不仅仅是这类软件,还有一些监听软件也会使用loopback地址来做数据监听。


loopback这么多,也有好处,就是可以在本机虚拟多个网卡,用来模拟一个复杂的网络拓扑,不过对于一般用户来说,确实没什么用。


继续补充,在当时的场景下为什么选择一个A类地址作为loopback,而不是B类/C类,因为127正好是INT8_MAX,这个定义比较特殊,而其它的IP地址很难找到相似的定义,况且当年B/C类地址几乎是没有分配的。

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有