学校网站 建设 价格,做网站用啥框架,深度科技商业官方网站,淘数据ICMP协议#xff0c;全称 Internet Control Message Protocol#xff0c;就是互联网控制报文协议。我们其实对它并不陌生#xff0c;我们平时经常使用的”ping“一下就是基于这个协议工作的。网络包在异常复杂的网络环境中传输时#xff0c;常常会遇到各种各样的问题。当遇…ICMP协议全称 Internet Control Message Protocol就是互联网控制报文协议。我们其实对它并不陌生我们平时经常使用的”ping“一下就是基于这个协议工作的。网络包在异常复杂的网络环境中传输时常常会遇到各种各样的问题。当遇到问题的时候要抛出异常要传出消息来报告情况这样才可以调整传输策略。CMP 报文是封装在 IP 包里面的。因为传输指令的时候肯定需要源地址和目标地址。它本身非常简单只带了类型请求代码和校验码。ICMP 报文有很多的类型不同的类型有不同的代码。最常用的类型是主动请求为 8主动请求的应答为 0。主动请求比如ping就是主动请求并且获得主动应答的 ICMP 协议。所以ping 发的包也是符合 ICMP 协议格式的只不过它在后面增加了自己的格式。对 ping 的主动请求进行网络抓包称为 ICMP ECHO REQUEST。同理主动请求的回复称为ICMP ECHO REPLY。比起原生的 ICMP这里面多了两个字段一个是标识符标识符很好理解用来区分一个是序号用来验证网络数据传输的可靠性。在选项数据中ping 还会存放发送请求的时间值来计算往返时间说明路程的长短。下一个是差错报文类型也就是遇到问题时抛异常的。最常用的是以下几个终点不可达为 3源抑制为 4超时为 11重定向为 5。第一种是终点不可达。就是没有传输到对应的接收方。而关于为什么没有传输到也会有具体的原因在代码中表示就是网络不可达代码为 0主机不可达代码为 1协议不可达代码为 2端口不可达代码为 3需要进行分片但设置了不分片位代码为 4。第二种是源站抑制也就是让源站放慢发送速度。一次送太多了接收不过来。第三种是时间超时也就是超过网络包的生存时间还是没到。第四种是路由重定向也就是让下次发给另一个路由器。差错报文的结构相对复杂一些。除了前面还是 IPICMP 的前 8 字节不变后面则跟上出错的那个 IP 包的 IP 头和 IP 正文的前 8 个字节。抛出异常后我们可以查看 ICMP 的前 8 字节IP 数据包的头及正文前 8 字节来确认出错原因。此文章为3月Day1学习笔记内容来源于极客时间《趣谈网络协议》强烈推荐此课程