为什么 ip4 不改成 999.999.999.999 的形式?

2023-04-03 09:14:04 +08:00
 tool2d
IPv6 只对机器友好,对人类实在是太不友好了。

我算了一下,如果 IPV4 全部是三位 999 ,那 4 个部分加一起,就是 9999 亿个数字,按照地球人口 99 亿来计算,每一个人能分到 100 个公网 IP4 Plus ,完全够用了。

我自己最多需要 10 个公网 IP ,还可以剩余 90 个。
19250 次点击
所在节点    随想
177 条回复
shyangs
2023-04-03 10:18:46 +08:00
@des
@WebKit

地球現在有 80 億人口, 每個人可以分到多少個 IPv6 位址? 如果火星殖民,地球+火星人口翻倍,又能分到多少?

除非 AI 導致奇點降臨,搞成銀河帝國,星際聯邦,與外星人聯網,否則我想像不到 IPv6 要怎麼用完。
Felldeadbird
2023-04-03 10:22:01 +08:00
楼主这个问题是抛开了历史包袱去提问。
WebKit
2023-04-03 10:23:24 +08:00
@shyangs 物联网啊。如果你要让你家里的每个设备都能远程控制,比如共享单车,如果每个单车都要一个 ip ,你想想这有多少
watzds
2023-04-03 10:24:48 +08:00
@tool2d 协议都定好了,这么改多少设备要报废,要重装系统?

没办法一定要改的时候,这不 IPV6 不是出来了吗
zmqiang
2023-04-03 10:25:52 +08:00
@tool2d 已经部署出去的上多少亿的设备,谁去升级,谁去匹配?甚至不是软件,有很多还是硬件需要升级。如果是完全新建一个网络,没问题。但现实中,是需要兼容的。
aulayli
2023-04-03 10:25:55 +08:00
你主动去百度或者谷歌一下就不会来问这个问题了。
shyangs
2023-04-03 10:26:51 +08:00
@WebKit

你先算下我提出的問題,我不信你一個人有超過千萬億輛的單車。

地球人 80 億每個人養一億窩螞蟻,每隻螞蟻分配一個 ip ,都用不完 IPv6.
xtinput
2023-04-03 10:27:34 +08:00
@tool2d 人均 100 也不够用呀,我们公司大楼有 10 万多个物联网设备节点,目前都是 r485 的,如果用 ip····
ip 地址不是给你看的,是给路由器识别的,999.999.999.999 怎么存储?路由器读取数据是一个 byte 一个 byte 的读取的,6 位那也是 255.255.255.255.255.255
adoal
2023-04-03 10:29:43 +08:00
写成十进制数字( 0~255 )只是为了方便人来看的一种 notation 而已。

其本质在于协议里的设计是二进制( 00000000~11111111 )的,按十进制的“整数”边界来切分必然切不整齐。

There are 10 kinds of people those who know binary and those who don't.
neptuno
2023-04-03 10:30:02 +08:00
是这样的,本质上就是个地址嘛,设置多长都可以,但你得看历史,可能当时就觉得不可能人人都有电脑
WebKit
2023-04-03 10:34:40 +08:00
@shyangs 是啊,ipv6 设计的目的就是不会被用完啊。如果简单就用完了还设计 ipv6 干啥。ipv6 可以给地球的每粒沙分配一个地址
bigtan
2023-04-03 10:34:52 +08:00
IP 无论是过去还是现在基本上都是硬件实现吧 如果加一位数全球都换一遍设备不现实 所以不到万不得已不会升级 即使升级也希望一次性一劳永逸
mcone
2023-04-03 10:35:05 +08:00
看到标题以为是个钓鱼贴,直到我看到了楼上某人的回复

> 其实可以的,一个 byte 存不进去那就用 2 个咯。这玩意儿又不收钱,估计是以前的人没想到这么多 ip 都快被用完了。。。
协议不要钱,但是实现协议的设备,哪个不要钱?

> 所有楼上那些扯计算机原理的都是瞎扯蛋。。。。
可能说这句话的人,可能就没有学过计网或者组原,至少连发展历史都不知道……
SimonOne
2023-04-03 10:35:09 +08:00
@c3de3f21 #54 钓友下饵的时候就该明白了,鱼钓不到,别的啥都能钓到。被咬了不赖别人。
oneisall8955
2023-04-03 10:38:53 +08:00
隔这钓鱼呢?
libook
2023-04-03 10:38:58 +08:00
当初设计 IPv4 的时候,计算机还是个新奇玩意,设计者觉得这些需要网络的特殊机构永远也不可能填满 IPv4 的地址,后来谁也没想到互联网能发展到这种程度,而且只有三四十年就爆炸成这样了,恨不得每盏灯都要接入网络。

计算机界很多问题都是这样来的,比如千年虫问题。

因为计算机二进制的特点,所以计算机界普遍习惯使用 2 的 n 次方来取整;如果用 5 字节的话二进制就是 1 后面 40 个 0 ,无论用两个 32 位的单元还是用 1 个 64 位的单元都会有空间浪费(是的,因为他们也是使用 2 的 n 次方的思路来设计的,而且有可能就是两两相拼来扩展的);所以比 IPv4 ( 4 字节)更长的地址就会首先考虑 8 字节和 16 字节。
不选择 8 字节的原因可能是标准制定组织对互联网的发展相对乐观,认为 8 字节无法满足未来几十年的需要,不希望短期内再遇到 IPv4 一样的窘境,毕竟升级协议对全世界来说都是一个极大成本的事情。当然人们只能根据当前的认知来估算,也没准很快 IPv6 也不够用了。

IPv6 本身是个技术性需求,对绝大多用户来说应该不需要去阅读和记忆这个地址,所以咱们技术人员群体是否觉得记忆起来麻烦,本身就不是高优先级考虑的事情。

其实技术人员也知道这玩意有点反人类,所以也搞出了很多起因技巧来缓解问题,比如:
1. 使用缩写形式:IPv6 地址中连续的多个 0 可以缩写为一个"::",这样可以减少地址的长度,使得地址更易于阅读和记忆。例如,2001:0db8:0000:0000:0000:ff00:0042:8329 可以缩写为 2001:db8::ff00:42:8329 。
2. 用域名或 hostname 。
3. 有一些工具可以将 IPv6 地址转换为易于记忆的字符串。例如,将 IPv6 地址转换为类似于"tide:map:win:rich"的字符串,这些字符串更容易记忆。
4. 使用 IPv6 前缀:IPv6 地址中的前缀可以用来标识网络或子网,这可以减少地址的长度,并帮助人们更好地理解 IPv6 地址。例如,2001:db8:abcd:1234::/64 中的"/64"表示子网的前缀长度。
AMZsowhat
2023-04-03 10:40:11 +08:00
我的评价是: 壹万亿.壹万亿.壹万亿.壹万亿
jmliang
2023-04-03 10:40:13 +08:00
我还以为进了知乎
fisherwei
2023-04-03 10:41:56 +08:00
tool2d
2023-04-03 10:43:40 +08:00
@xtinput IPV6 里,有个特殊格式,叫 ipv4 映射地址。

比如 1.2.3.4 可以映射到::ffff:1.2.3.4

同理,只要把 999.999.999.999 通过规则,自动化映射到 ipv6 的一小部分保留空间就可以了。这样至少比手工输入一个 ipv6 ,要省事不少。你连接一个 ssh 地址,就不用输入一大串十六进制的 ip6 ,只需要十进制的 ipv4 plus 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/929294

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX