原来 IP 地址还可以用混合进制或是整数来表示

2014-05-18 03:28:43 +08:00
 caoyue
比如,下面这些可以表示同一个 IP:
http://0x7f.0.000000000001
http://017700000001
http://2130706433
http://0x7f000001
http://127.1
3742 次点击
所在节点    分享发现
14 条回复
leecade
2014-05-18 06:08:42 +08:00
谢谢 长知识了,

所有浏览器 / 端 都支持吗?
Xrong
2014-05-18 08:35:25 +08:00
楼主是从《Web之困》2.1.4节看到的么?
riaqn
2014-05-18 09:02:05 +08:00
@leecade 这个特性是由socket库提供的
man inet_aton

只要用这个函数来解析ip字符串的,都支持这些表示格式。
akfish
2014-05-18 09:32:13 +08:00
我在想要是某个IP地址的某种进制表达恰好是靓号。。。
Delbert
2014-05-18 11:08:53 +08:00
是的,所有的浏览器都可以
Delbert
2014-05-18 11:09:20 +08:00
@akfish 谁闲的没事输入IP啊,抢注域名才是正道。
akfish
2014-05-18 11:29:31 +08:00
@Delbert IP这种当然是可遇不可求,要受地域限制,投资投机都不现实。
不过你觉得什么域名干得过Google DNS的8.8.8.8和4.4.4.4?
caoyue
2014-05-18 11:38:52 +08:00
@Xrong
搜索的时候发现个奇葩的 IP 地址居然可以访问,然后好奇了解了下。
这本书看起来不错,感谢:)

@riaqn
是的,而且不同系统都实现了这个特性。
但是我还没有搜索到相关的文档,rfc 2396 和 rfc 1738 也都是语焉不详。
vmebeh
2014-05-18 11:40:56 +08:00
反了吧

IPv4
“由32位二进制数组成,为便于使用,常以XXX.XXX.XXX.XXX形式表现,每组XXX代表小于或等于255的10进制数。”
http://zh.wikipedia.org/wiki/IP%E5%9C%B0%E5%9D%80
riaqn
2014-05-18 12:05:31 +08:00
@caoyue
rfc的那几个标准不了解,看了下rfc2396, 实际上只是规定了URI的格式,对ipv4的格式仅限于
IPv4address = 1*digit "." 1*digit "." 1*digit "." 1*digit
至于rfc1736……好吧我没看懂他在说什么

然后是inet_aton(),在manual上,有句话:inet_aton() is not specified in POSIX.1-2001, but is available on most systems.
riaqn
2014-05-18 12:13:29 +08:00
@akfish 8.8.8.8 和 8.8.4.4
vibbow
2014-05-18 16:31:22 +08:00
@akfish http://88888888/
SoloCompany
2014-05-20 23:11:33 +08:00
在看 google safe browsing api 的时候有留意过这个,不过没去查过 rfc

这一节
https://developers.google.com/safe-browsing/developers_guide_v2#Canonicalization

> If the hostname can be parsed as an IP address, it should be normalized to 4 dot-separated decimal values. The client should handle any legal IP- address encoding, including **octal**, **hex**, and **fewer than 4 components**

以及这个用例
> Canonicalize("http://3279880203/blah") = "http://195.127.0.11/blah”;
Delbert
2014-05-22 16:32:38 +08:00
@akfish
当属 2.3.3.3 了……233333333333333333333

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

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

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

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

© 2021 V2EX