0

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

 1 year ago
source link: https://www.v2ex.com/t/929294
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  随想

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

  tool2d · 13 小时 51 分钟前 · 10895 次点击
IPv6 只对机器友好,对人类实在是太不友好了。

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

我自己最多需要 10 个公网 IP ,还可以剩余 90 个。
154 条回复    2023-04-03 21:50:19 +08:00
Rocketer

Rocketer      13 小时 49 分钟前 via iPhone   ❤️ 77

你……没学过网络基础知识?

你以为 IP 地址是十进制的?

那只是方便记忆和输入而已。
saka0609

saka0609      13 小时 48 分钟前

你以为十进制呢?
ahhui

ahhui      13 小时 48 分钟前   ❤️ 4

???一个 byte 如何存进去 999???
楼主不如更进一步,IP 地址用字符串表示吧,要多少有多少???
cmdOptionKana

cmdOptionKana      13 小时 48 分钟前

可能因为 ip 地址根本不需要对人类友好(这个因素的优先度很低),另外 999 只能满足人联网,不能满足物联网。
Rocketer

Rocketer      13 小时 47 分钟前 via iPhone   ❤️ 53

这算是典型的思而不学吧?
mineralsalt

mineralsalt      13 小时 47 分钟前

你要学计算机的基本原理, 这世界上的一切都是有规则的和继承的. 十进制 255 是 8 位二进制数, 对应一个字节
xixibb

xixibb      13 小时 44 分钟前

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

所有楼上那些扯计算机原理的都是瞎扯蛋。。。。
ahhui

ahhui      13 小时 43 分钟前

@xixibb 开啥玩笑? tcp/ip 协议出现的时候路由器内存能有几个 G 了?还计算机原理都是扯淡都出来了。
InDom

InDom      13 小时 42 分钟前

@xixibb 以前可能 byte 确实挺贵的, 带宽低吧, 而且如果是 两个 byte , 我猜肯定会是 1024, 而不是 999 了, 那到最后会有人来问: 为什么不是 9999 啊?
cmdOptionKana

cmdOptionKana      13 小时 41 分钟前   ❤️ 16

@saka0609
@mineralsalt

楼主的表达有瑕疵,但他真正的问题很显然不是为何 ip4 是现在这个样子,而是在推翻 ip4 的前提下,推出 ip5 也好、ip6 也好、ip7 也好,新的 ip 地址为什么要 ip6 那么复杂,简单点短点也够用。

既然问题是推翻 ip4 ,那么 ip4 的历史和现状就不重要了,多少进制也不影响新的 ip 地址设计。
xixibb

xixibb      13 小时 41 分钟前

@ahhui 那你就告诉我吧,技术上能不能做到,成本会不会特别高?
tool2d

tool2d      13 小时 41 分钟前

@ahhui "一个 byte 如何存进去 999"

ip4 只有 4 个 byte ,可以再多 2 个 byte 啊,一共 6byte ,这样就能表示 999 了。

主贴写了 IP4 Plus ,Plus 等于多 byte 的进化版本。

ip6 有 16 个 byte ,也太多了,目前完全用不上。
asche910

asche910      13 小时 40 分钟前   ❤️ 2

但凡学过计网,也问不出这个问题
nothingistrue

nothingistrue      13 小时 40 分钟前   ❤️ 4

楼主只是随便想一下,没想到楼下还有更甚的。计算机的概念,不让人扯计算机原理,这已经不止是无知了。
neurocomputing

neurocomputing      13 小时 40 分钟前   ❤️ 2

这里不应该是码农社区吗?
ahhui

ahhui      13 小时 38 分钟前

@xixibb
@tool2d ip 地址就是 byte 序列?它不需要路由器路由消息?不需要路由器查路由表?一个有限的空间(内存)能存多少路由表?这些协议当初的定义都是在寸土寸金的有限条件下设计取舍的,哪里来的成本会不会特别高?(当然会),哪里来的可以再多 2 个 byte ?(闲得慌)
banmuyutian

banmuyutian      13 小时 38 分钟前

楼主先从计算机网络学起吧,不是一言两语能说完的
Jaron0608

Jaron0608      13 小时 37 分钟前 via Android

赞同 10 楼,上边扯计算机原理的有点偏题了哈
gbw1992

gbw1992      13 小时 37 分钟前   ❤️ 1

"可以再多 2 个 byte " 这是历史的局限性,当初比尔盖茨还说过"640K 内存都足够了"
yunyuyuan

yunyuyuan      13 小时 36 分钟前   ❤️ 2

+2 个比特的话,是 2^10 ,即 1023.1023.1023.1203
这个 999 ,很难让人不联想到楼主没搞明白 10 进制和 2 进制
choury

choury      13 小时 35 分钟前   ❤️ 2

现在 ipv4 协议里面只有 4 位存 ip 地址,不管要想加几个 byte ,它都不是 ipv4 协议了因为不兼容了。所以反正加都加了,为什么不多加几个 byte ,不然过几年又不够了,再搞个 ipv8 ?
CodeCodeStudy

CodeCodeStudy      13 小时 33 分钟前

IP v4 是由 4 个字节组成的,所以 192.168.1.1 就是由 4 个部分组成,每个部分是一个字节,一个字节 8 位,2 的 8 次方就是 256 ,所以每个部分的取值从 0 到 255
rwecho

rwecho      13 小时 31 分钟前 via Android   ❤️ 1

@tool2d 按物联网算,不能按人。一个人不知道要联系多少 IP 。并且 999 也不好记忆。这个结论应该是很多人讨论和商讨后给出的一个折中方案。所以 IPv6 是怎么来的?
Eytoyes

Eytoyes      13 小时 31 分钟前   ❤️ 3

实际上所谓 ipv4+和迭代 ipv6 设备成本是一样

老旧设备不更换升级两个都用不了

那么为什么不直接迭代升级到 ipv6 并兼容 ipv4 呢
hhjswf

hhjswf      13 小时 29 分钟前 via Android

为什么要对人类友好,二进制 16 进制对人类不友好是不是也得改?
luomao

luomao      13 小时 29 分钟前   ❤️ 1

一开始我以为是 op 钓鱼,没想到真的能调出这么多鱼
cassyfar

cassyfar      13 小时 28 分钟前

“可以再多两 Byte”啊?

计算机还可以 0 和 1 之外加个 -1 ,直接实现 AI 觉醒。
msg7086

msg7086      13 小时 26 分钟前

谁告诉你一个人分到 100 个公网 IP 就够用了?
Tink

Tink      13 小时 25 分钟前

现在 v6 就是解决这个问题的
Tink

Tink      13 小时 25 分钟前

以前设备性能根本不够的查表的
abc0123xyz

abc0123xyz      13 小时 24 分钟前   ❤️ 1

我只记得
2 进制 11111111 -> 10 进制 255
剩下的还给老师了😂
Kiriya

Kiriya      13 小时 24 分钟前

8 位 2 进制最大 1111 1111 换成十进制就是 255 ,所以 ipv4 0.0.0.0-255.255.255.255
thosai

thosai      13 小时 24 分钟前   ❤️ 1

我感觉楼主只是提了一个问题,可能没考虑那么全面,楼上的没必要冷嘲热讽,一棒子打死提问题的人
dqzcwxb

dqzcwxb      13 小时 23 分钟前

我吃第八个馒头就饱了,前七个没必要吃啊
makelove

makelove      13 小时 21 分钟前

要说 ipv4 4 个字节也将就全人类用了,v6 直接来个 16 字节,确实可能是被网络升级的麻烦搞怕了想一步到位用到世界末日,当然了 16 字节的好处是可以用得很奢侈
yolee599

yolee599      13 小时 21 分钟前

OP 是骗回复的吧,既然 999 可以那干脆多加几个 9 不是更好
Cat7373

Cat7373      13 小时 18 分钟前

@InDom #9

到大宇宙时代,就会发现地球上每粒沙子都有一个 IP 地址,还是不够用,我们需要银河系每粒沙子都有一个才行
wy315700

wy315700      13 小时 18 分钟前   ❤️ 7

楼上很多人提到了计算机原理
但是感觉没提明白


IP 地址是 80 年代提出来的,当时主流芯片都是 16 位和 32 位的。
估计当时的人觉得 16 位肯定不够用,就把 IP 地址定义成了 32 位,方便在一个指令里计算。如果按楼上所说,

至于 xx.xx.xx.xx 只是为了方便人读写而已。

后来 ipv6 在 90 年代定义的时候,64 位处理器出来了,但是怕 64 位的 IP 地址重蹈覆辙,还是不够用,于是就用了 64 位的两倍宽度,128 位。


不让人提计算机原理非蠢即坏
BiChengfei

BiChengfei      13 小时 17 分钟前

999 在技术上完全可以实现,但 999.999.999.999 ,绝对不够用
lonccc

lonccc      13 小时 17 分钟前

@xixibb #9 block+1
NoOneNoBody

NoOneNoBody      13 小时 15 分钟前   ❤️ 1

解决提问的人是人类共识,不仅是某些人才会,🐶
BingoXuan

BingoXuan      13 小时 15 分钟前

@xixibb
存两个 byte 进去,还要给每个段做大小端转换。硬件设计和驱动设计又更加复杂了,成本更高了。还不如全部一个 byte ,不够用再说
belin520

belin520      13 小时 10 分钟前

@nothingistrue “我不管什么科学,我不管什么定律,我在网上讨论就是要特立独行,就是要赢”,大部分人的心态,程序员尤甚
mangoDB

mangoDB      13 小时 8 分钟前

关键字:32 位 点分十进制
Danfi

Danfi      13 小时 8 分钟前

因为你现在是以现代人的眼光看待历史
des

des      13 小时 7 分钟前 via iPhone

ipv4 发明电脑的那个时候,很多电脑也就 16k ~ 64k 内存

@tool2d “ip6 有 16 个 byte ,也太多了,目前完全用不上。”

有没有一种可能 ipv4 的时候也是这么想的?
wulili

wulili      13 小时 4 分钟前

ipv6 的格式看着确实挺难受的,虽然这不是为人类设计的,但是搞这方面的技术还是难免会经常和 ip 打交道。
相比 999 ,那感觉不如设计成 65535.65535.65535.65535 ,刚好 64 位。
至于说未来够不够用,我觉得真到了那时候,现有的 ipv6 会一样不够用。
也许未来等量子通信或者其他革命性的通信手段问世,甚至都不需要 ip 协议了,会产生一种全新的概念体系。
WebKit

WebKit      13 小时 4 分钟前 via Android

@tool2d ip6 有 16 个 byte ,完全用不上?你让我想起来了盖茨的 5M 足够所有人使用了
Shura

Shura      13 小时 3 分钟前

这就是典型的民科思维
Cat7373

Cat7373      13 小时 1 分钟前   ❤️ 1

@wulili #48 那为什么不设计成 4294967295.4294967295.4294967295.4294967295 呢,刚好 128 位🐶
langmanxiaoa

langmanxiaoa      13 小时 0 分钟前

别钓了别钓了
kkwa56188

kkwa56188      12 小时 59 分钟前

c3de3f21

c3de3f21      12 小时 53 分钟前   ❤️ 10

擦了,大家攻击性真强啊,好像毒蛇一样
ys0290

ys0290      12 小时 53 分钟前 via iPhone

999 看起来方便,其实还是很快会不够用,不如一步到位用现在的 ipv6 ,至少把那个不得不换的时间推迟到无法预期的时候
adian

adian      12 小时 49 分钟前

有这种问题很正常吧,刚接触计算机网络,都是先知道 IP 这个东西,再知道内部的原理,概念的抽象程度够用就行,再说你要问大伙儿 ABCDE 类 IP 等等细节,大伙儿一时半会也反应不上来的。
昨天刚有消息,移动网络 IPv6 流量超过 IPv4
deplivesb

deplivesb      12 小时 49 分钟前

民科的既视感
wulili

wulili      12 小时 49 分钟前

@Cat7373 那也太长了点。。。阅读性和记忆性和现在的 ipv6 一样差。64 位对应的 65535 好歹是个比较折中的数字,这个容量在计算机领域也很常见,大家都比较熟悉
lonenol

lonenol      12 小时 47 分钟前   ❤️ 1

大早上被你逗笑了。。
Vraw5

Vraw5      12 小时 47 分钟前

多加 2 byte ,换一次设备。再过几十年又不够用了,再加 2 byte ,再换一次设备。
op 不当天朝管理员真可惜了,直接拉动 GDP 的飞升,要啥房地产
shyangs

shyangs      12 小时 46 分钟前

@des
@WebKit

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

除非 AI 導致奇點降臨,搞成銀河帝國,星際聯邦,與外星人聯網,否則我想像不到 IPv6 要怎麼用完。
Felldeadbird

Felldeadbird      12 小时 43 分钟前

楼主这个问题是抛开了历史包袱去提问。
WebKit

WebKit      12 小时 42 分钟前 via Android

@shyangs 物联网啊。如果你要让你家里的每个设备都能远程控制,比如共享单车,如果每个单车都要一个 ip ,你想想这有多少
watzds

watzds      12 小时 40 分钟前

@tool2d 协议都定好了,这么改多少设备要报废,要重装系统?

没办法一定要改的时候,这不 IPV6 不是出来了吗
zmqiang

zmqiang      12 小时 39 分钟前

@tool2d 已经部署出去的上多少亿的设备,谁去升级,谁去匹配?甚至不是软件,有很多还是硬件需要升级。如果是完全新建一个网络,没问题。但现实中,是需要兼容的。
aulayli

aulayli      12 小时 39 分钟前 via Android

你主动去百度或者谷歌一下就不会来问这个问题了。
shyangs

shyangs      12 小时 38 分钟前

@WebKit

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

地球人 80 億每個人養一億窩螞蟻,每隻螞蟻分配一個 ip ,都用不完 IPv6.
xtinput

xtinput      12 小时 37 分钟前

@tool2d 人均 100 也不够用呀,我们公司大楼有 10 万多个物联网设备节点,目前都是 r485 的,如果用 ip····
ip 地址不是给你看的,是给路由器识别的,999.999.999.999 怎么存储?路由器读取数据是一个 byte 一个 byte 的读取的,6 位那也是 255.255.255.255.255.255
adoal

adoal      12 小时 35 分钟前   ❤️ 1

写成十进制数字( 0~255 )只是为了方便人来看的一种 notation 而已。

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

There are 10 kinds of people those who know binary and those who don't.
neptuno

neptuno      12 小时 35 分钟前

是这样的,本质上就是个地址嘛,设置多长都可以,但你得看历史,可能当时就觉得不可能人人都有电脑
WebKit

WebKit      12 小时 30 分钟前 via Android

@shyangs 是啊,ipv6 设计的目的就是不会被用完啊。如果简单就用完了还设计 ipv6 干啥。ipv6 可以给地球的每粒沙分配一个地址
bigtan

bigtan      12 小时 30 分钟前

IP 无论是过去还是现在基本上都是硬件实现吧 如果加一位数全球都换一遍设备不现实 所以不到万不得已不会升级 即使升级也希望一次性一劳永逸
mcone

mcone      12 小时 30 分钟前   ❤️ 2

看到标题以为是个钓鱼贴,直到我看到了楼上某人的回复

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

> 所有楼上那些扯计算机原理的都是瞎扯蛋。。。。
可能说这句话的人,可能就没有学过计网或者组原,至少连发展历史都不知道……
SimonOne

SimonOne      12 小时 30 分钟前   ❤️ 1

@c3de3f21 #54 钓友下饵的时候就该明白了,鱼钓不到,别的啥都能钓到。被咬了不赖别人。
oneisall8955

oneisall8955      12 小时 26 分钟前

隔这钓鱼呢?
libook

libook      12 小时 26 分钟前

当初设计 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

AMZsowhat      12 小时 25 分钟前

我的评价是: 壹万亿.壹万亿.壹万亿.壹万亿
jmliang

jmliang      12 小时 25 分钟前

我还以为进了知乎
tool2d

tool2d      12 小时 21 分钟前

@xtinput IPV6 里,有个特殊格式,叫 ipv4 映射地址。

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

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

Ericcccccccc      12 小时 21 分钟前

想想你自己一只手拿着一个盒子, 每个盒子刚刚好装一个球, 这个时候你说我要装第三个.

实在是装不下.
Ericcccccccc

Ericcccccccc      12 小时 20 分钟前

你说的再多几位就和你多长几只手差不多.
fisherwei

fisherwei      12 小时 20 分钟前

@xixibb
技术上不能完全做到,成本会高出天际

你不要总盯着自己电脑上的 IP 地址看,如果搞出这种 1 个 byte 不够用,2 个用不完的 IP 地址,子网怎么划分? BGP 表要怎么做?路由搜索怎么搜?
phub2020

phub2020      12 小时 20 分钟前

@xixibb 在当时的场景下,成本当然高啊。。。当时内存才多少哦
phub2020

phub2020      12 小时 18 分钟前

@xixibb 按老兄你的理解,那为啥长城古人不用全金属来做啊,还更加牢固可靠,你告诉我,成本高不高?
leonshaw

leonshaw      12 小时 17 分钟前

IP 地址不只是标识,它首先是一个地址,要能够路由。目前骨干路由器不可能承载全网的主机路由,所以地址分配必须按段划分,使路由器需要的路由能够聚合、条目尽可能少。
按段划分要么预先规划的很好,要么空间要足够大,不然很容易出现局部不够用的问题。”每人 10 个“这个量级应该是不够的。
另一方面,从路由性能考虑,这个划分应该是按二进制前缀,表示方式也尽量跟二进制接近,不然写个 12.625.920 ,很难看出它最后两个字节是 0.
lizenghui

lizenghui      12 小时 10 分钟前

大哥 是怎么知道 IP4 的 是装修工人给你说的?
emeab

emeab      12 小时 9 分钟前

是的. 早餐只吃第三个包子就好了 前两个不用吃
xtinput

xtinput      12 小时 4 分钟前

@tool2d 它再怎么映射也是以 byte 为单位的,计算机识别都是 2 的指数才能最大效率,要么一个字节要么两个字节,或者 4 个字节,你 999 是怎么搞的?
999 要 1024 ,是 10 位,一个字节 8 位,10 位怎么放?
对于计算机 10 位的数据也要占用两个字节,那么就是 2*4*8=64 位地址,ipv4 是 32 位,ipv6 是 128 位,跳过了 64 位直接到 128 位,原因好像就是之前吃过一次 ipv4 地址不够用的亏,所以就直接上 128 位了
frankies

frankies      12 小时 4 分钟前 via Android

好家伙,还以为点进了知乎。。。
xtinput

xtinput      12 小时 4 分钟前

@Cat7373 数不好记呀
shwnpol

shwnpol      11 小时 55 分钟前

建议先练习一下二进制转 16 进制的习题
lixinrui000

lixinrui000      11 小时 53 分钟前   ❤️ 1

就是设计缺陷。ipv4 数量太少,ipv6 可读性差,楼主的这个设计兼顾了可读性和数量,使用 5bytes 存储,实现上也没问题,就是存在一些浪费。
dcty

dcty      11 小时 53 分钟前

你们说了那么多好不好记的问题,有没有可能通过域名就可以解决了。
GeruzoniAnsasu

GeruzoniAnsasu      11 小时 49 分钟前   ❤️ 1

总觉得这个问题应该出现在弱智吧,但又稍微有点专业,描述起来太复杂没有弱智吧帖子精简有力的趣味
Hellert

Hellert      11 小时 47 分钟前 via Android

都没说到重点,这和 CPU 的字长有关系。
sdwgyzyxy

sdwgyzyxy      11 小时 44 分钟前

有没有可能,这家伙是来骗币的?
cc666

cc666      11 小时 43 分钟前   ❤️ 1

先不说技术上的问题
可能设计 IPv4 的时候,设计这也是这么想的,每人 1 个也够了,然后发展到现在,明显不够了。
如果按照 999.999.999.999 的形式,你想每人 100 个也够了,可能发展一些年后又不够了,100 个只是对你自己来说够而已,网络中还有大量的中间设备,物联网设备,远远比你想得复杂,你这个格式可能过几年就变成了 9999.9999.9999.9999 ,哈哈,全球网络设备再升级一次吧,IPv4 升级到 IPv6 这么多年了还是这样子呢。
并且 IP 划分给每个区域的时候,是按照段划分的,你自己区域的可能用不完,对别的区域来说就缺了。
为啥不直接暴力点上 IPv6 ,至于对人类实在是太不友好这一点,你除了几个内网地址,还能记得住谷歌百度 GitHub 的 IP 地址么?你给我背诵几个看看? IP 地址本来就不是对人类友好的,还能不然要域名干什么?
cc666

cc666      11 小时 42 分钟前

@sdwgyzyxy 糟糕,被骗了

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK