关于ICMP的小总结
来源:互联网 发布:电脑语音读书软件 编辑:程序博客网 时间:2024/05/21 09:54
ICMP分属于网络层,用来传递差错报文以及其他需要注意的信息。
Ping程序中就是通过ICMP报文数据中存放发送请求的时间值来计算往返时间。
TraceRoute程序是通过ICMP和IP报文中的TTL选项结合起来来实现的(TTL是由发送端初始设置的一个8bit字段)。
请求端发送一个TTL字段为1的IP数据报给目的主机。处理这份数据报的第一个路由器将TTL减1,丢弃该数据报,这时返回一个超时ICMP报文。这样就获得了第一个路由器的地址。继续这个过程直至到达目标主机。但是此时有个问题,主机接受了报文时并不会返回一个差错ICMP,这时如何如何判断已经到达目的主机呢?这个时候Traceroute程序发送一份UDP数据报给目的主机,但是它选择一个不可能的值作为UDP端口号(大于30000)。这时目标主机会返回一个端口不可达的错误,此时Tracerout程序只要区分接收到的是超时还是端口不可达即可。
还有一种利用TraceRoute来确定路径MTU以用来判断IP是否分片等内容。具体的是发送分组,并设置“不分组”的标识,发送的第一个分组长度正好与出口MTU相等,每次收到ICMP“不能分片”差错时就减小分组长度。如果路由器发送的ICMP差错报文是新格式,包含出口的MTU,那么就用该值来替代,否则就用下一个最小的MTU代替。
0 0
- 关于ICMP的小总结
- 关于ICMP报文的问题
- 关于hibernate 的小总结
- 关于qsort()的小总结
- 关于排序的小总结
- 关于Nodejs的小总结
- ICMP小贴
- 关于内部排序的小总结
- 关于Json的一点小总结,
- 关于优化的一点小总结
- 关于操作符重载的小总结
- 关于内存对齐的小总结
- 关于Date的一些小总结
- Android关于联网操作的小总结
- 关于输入的一点小总结
- 关于内存管理的一点小总结
- 关于内存对齐的小总结
- 关于“手机”一些术语的小总结
- poj 2774 Long Long Message 后缀数组模板
- C# XmlWriter
- 解决Ajax创建对象兼容性
- 不要与组织怄气
- 从ViewController初始化一直谈到强制横屏
- 关于ICMP的小总结
- 为什么通过空指针(NULL)可以正确调用类的部分成员函数
- .net开发下简单的增删改查
- ios 成员变量 属性
- 微信开发本地调试
- usb-OTG-ADP-HNP-SRP
- break,return,continue
- JVM hang时,Eden区100%,所有线程包括gc线程被 blocked分析
- android获得屏幕高度和宽度