用Wireshark抓取一个ping包,(最高层是ICMP协议,也是属于网络层,在IP协议之上)查看IP协议层
protocal字段表示IP协议上层协议,此为ICMP。
此外,设计TTL可以有效地防止数据包环路,有时候,拓扑过于复杂,处于疏忽,路由器Bug之类的,会不知道怎么转发数据包。会出现下面的情况
图片来自拼客学院院长手绘:
所以TTL很有效解决了这个问题。
另外,Linux下的traceroute hostname 和 Windows下的tracert hostname 也是发送一个ICMP 数据包来测试的,原理就是Ping。使用的就是TTL字段。
Windows的更清楚。
原理:
对于第一个路由,IP协议的TTL字段属性设置为1,到第一个路由-1=0就回来了,因此获取到了第一跳路由信息。
对于第二个路由,TTL = 2,到第二个路由器TTL减到0,转发信息会主机,也获取了。
对于第三个路由,TTL = 3,以此类推
。。。。
————————————————
版权声明:本文为CSDN博主「Chgl16」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenbetter1996/java/article/details/80869679
阅读(1589) | 评论(0) | 转发(0) |