关于ping

今天上网闲逛,本来是为了找找关于版本管理的文章,结果发现一篇讲ping的问题,比较有趣,就关注了一下。

以下为原帖:
小土豆在一个小技巧中,我描述了一个关于ping的技巧。接下来有了一个关于ping的问题,感谢m3rcury提供给我这样一个好的问题。在通常思路看来,ping 218.24.178.155与ping 218.024.178.155会有什么样的区别?我认为是一样的。然而实际却大相径庭。ping 218.24.178.155会如人所愿的ping 218.24.178.155,而ping 218.024.178.155却会到218.20.178.155上去

Ping
Ping

m3rcury证明了这个问题的操作系统无关性:他在FreeBSD证明了这一点。部分的猜测,是在证明这和进制有关。使用进制转换器,可以看到8进制的24,在10进制下得到了20,但事情并没有想像的那么简单,如果说,ping是在将8进制数转换为10进制,那么是否可以推断ping能够将所有值的8进制转换为10进制?然而218.24.178.155的八进制结果332.30.262.233,在ping的时候却会提示unknow host。此外,一个常识是,这是一个二进制的世界,然而ping似乎却是十进制的。

11011010.10100.10110010.10011011是218.24.178.155的二进制数,但如果ping,同样会提示unknow host。我在寻找答案。

我打开命令提示符,一试,还真是这样,为什么呢?很快我就想到也许原帖的猜测不全对。于是我又做了一个测试,ping 218.0×24.178.155。

Ping

由此我们可以看出,其实ping并不会自己对所有值的进制自动进行转换,所以332.30.262.233是个不合法的IP地址。我想,导致这种变化的原因在于C语言中会把0开头的数认作8进制的,而把0x开头的数认作16进制,这就造成了024变成20,0×24变成36。

当前没有评论!

第一个在本文留言。

发表评论

名字(必须)
邮箱(必须),(不会被公布)
网址(推荐)

字体为 粗体 是必填项目,邮箱地址 永远不会 被公布。

允许部分 HTML 代码:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
URLs(网站链接)必须完整有效 (比如: http://www.palfans.net),所有标签都必须完整的关闭。

超出部分系统将会自动分段及换行。

请保证评论内容是与日志或 Blog 内容相关的,灌水、攻击性或不恰当的评论 可能 会被编辑或删除。