今天我发现该命令:
php -S 0:8888
与localhost相同,在localhost上启动服务器
php -S 0.0.0.0:8888
而且,将Safari浏览到:
http://8
将重定向到:
http://0.0.0.8
此外,我发现Safari将以其他方式重定向http://1.2和http://1.2.3。
是否有任何说明这一点的书面标准或约定,或者我是否在两种不同的软件中找到了类似的复活节彩蛋?
答案 0 :(得分:1)
不是官方,但它是一个非常接近的RFC草案。它没有定义这种行为,但是它提到了它并使其合法化。
与此同时,一个非常流行的IP网络实现在 它自己的方向。 4.2BSD引入了一个函数inet_aton(),该函数的 工作是将字符串解释为IP地址。它 解释了[MTP]中提到的两种语法(请参见上文): 单个数字给出整个32位地址,并以点分隔 八位位组值。它还解释了两种中间语法:八位位组- 点八位字节点16位(用于B类地址)和八位字节- 点24位,用于A类地址。它也允许一些 灵活地指定各个数字部分:它 除十进制外,还允许八进制和十六进制,区分 通过使用包含前缀“ 0”的C语言语法来生成这些半径 或“ 0x”,并允许数字任意长。
4.2BSD inet_aton()已被广泛复制和模仿,因此 IPv4地址文本表示形式的事实上的标准。 尽管如此,这些替代语法现在已不再使用 (如果他们曾经有过重要的用途)。他们唯一的实际用途 现在看到的是对地址的故意混淆:提供一个IPv4 地址是人们喜欢的一个32位十进制数字 希望隐藏URL中编码的真实位置。所有 除十进制八位字节外的其他形式都被视为非标准形式(尽管 具有广泛的互用性),并且是不可取的。
https://tools.ietf.org/html/draft-main-ipaddr-text-rep-02
而且,我们可以看到这段代码至今仍然有效:
给出整个32位地址的单个数字
❱ ping 2321319336
PING 2321319336 (138.92.133.168): 56 data bytes
...
八位字节-点-八位字节-dot-16位,用于B类地址
❱ ping 172.16.2342
PING 172.16.2342 (172.16.9.38): 56 data bytes
....
八位点24位,用于A类地址
❱ ping 10.45253
PING 10.45253 (10.0.176.197): 56 data bytes
...
请注意,RFC 3896 explicitly defines是URI中的IP地址,用点分四进制十进制表示形式,因此从技术上来讲,URI中根本不允许使用这些快捷方式!
答案 1 :(得分:0)
IPv4地址是一个无符号的32位整数。按字节的点分表示法只是一种(更易于理解的)变体-很多时候,您可以将两种表示法互换使用:
ping 8.8.8.8
ping 134744072