linux – Ping并使用三个八位位组的ipv4地址.它为什么有效?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – Ping并使用三个八位位组的ipv4地址.它为什么有效?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1223字,纯文字阅读大概需要2分钟。
内容图文
偶然我有一个错字,并发现我可以ping和ssh到IP地址10.8.290 …正确的一个八位字节丢失.有人可以向我解释一下吗?这是协议的一部分还是一些linux-black-magic(我使用的是Debian)?
user@ws:~$ping -c3 10.8.290
PING 10.8.290 (10.8.1.34) 56(84) bytes of data.
64 bytes from 10.8.1.34: icmp_req=1 ttl=62 time=0.910 ms
64 bytes from 10.8.1.34: icmp_req=2 ttl=62 time=0.686 ms
64 bytes from 10.8.1.34: icmp_req=3 ttl=62 time=0.708 ms
--- 10.8.290 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.686/0.768/0.910/0.100 ms
user@ws:~$ssh root@10.8.290
The authenticity of host '10.8.290 (10.8.1.34)' can't be established.
ECDSA key fingerprint is 21:bd:7e:fb:1e:6d:1e:c1:e9:11:c0:a9:73:a8:cf:85.
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.
解决方法:
它的工作原理是因为你在ip地址的第三个字节使用值290.一个字节可以存储0到255之间的值,给出256个值.由于IPv4地址是4字节值,因此将290传递到第三字节导致整数溢出到第4字节 – > 290 – 256 => 34
它与协议“功能”无关. ping只是不验证目标命令行参数的各个八位字节的值,只是将它传递给较低级别??的C函数inet_aton()(aton表示ascii为number).这导致ping 10.8.1.34.
我不确定,但我希望其他版本的ping(在Windows上,BSD)表现相同.
内容总结
以上是互联网集市为您收集整理的linux – Ping并使用三个八位位组的ipv4地址.它为什么有效?全部内容,希望文章能够帮你解决linux – Ping并使用三个八位位组的ipv4地址.它为什么有效?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。