ICMP协议是面向连接的协议,用于传输错误报告控制信息。
这是一个非常重要的协议,对网络安全非常重要。
它是TCP / IP协议族的子协议,属于网络层协议。
它主要用于在主机和路由器之间传输控制信息,包括报告错误,交换限制控制和状态信息。
当IP数据无法访问目标时,IP路由器无法以当前传输速率等转发数据包,ICMP消息ICMP消息会自动发送,以提供一致且易于理解的错误报告信息。
发送的错误消息将返回到发送原始数据的设备,因为只有发送设备才是错误消息的逻辑接收者。
然后,发送设备可以确定基于ICMP消息发生的错误类型,并确定如何更好地重发失败的数据报。
但ICMP的唯一功能是报告问题而不是纠正错误。
纠正错误的任务由发送者完成。
每个ICMP消息都直接封装在IP数据报中,因此ICMP不可靠,就像UDP一样。
虽然ICMP包含在IP数据报中,但ICMP消息通常与普通IP数据报不同,而不是作为IP的子协议。
在许多情况下,有必要查看ICMP消息的内容,然后将相应的错误消息发送到最初生成IP数据包的程序,即导致ICMP消息传输的IP数据包。
我们经常在网络中使用ICMP协议。
例如,我们经常使用Ping命令检查网络(Linux和Windows)。
这个“Ping”进程实际上是使用ICMP协议的过程。
还有其他网络命令,例如tracert Tracert命令,它们也基于ICMP协议。
ICMP协议对网络安全非常重要。
ICMP协议本身的特性使其非常容易用于攻击网络上的路由器和主机。
例如,1999年8月,海信集团“奖励”50万元来测试防火墙,其防火墙遭遇ICMP攻击高达334,050次,占攻击总数的90%以上!可以看出,ICMP的重要性永远不会被忽视!例如,“Ping of Death”和“Ping of Death”。
可以使用不超过64 KB的操作系统指定的ICMP数据包的最大大小向主机发起攻击。
“死亡之平”的原则攻击是:如果ICMP数据包的大小超过64KB限制,主机将出现内存分配错误,导致TCP / IP堆栈崩溃,导致主机崩溃。
此外,将ICMP数据包长时间连续发送到目标主机最终会使系统瘫痪。
大量ICMP数据包将形成“ICMP风暴”,这使得目标主机消耗大量CPU资源并且耗尽。
从技术角度来看,ICMP是一种“错误检测和奖励机制”。
其目的是使我们能够检测网络的连接状态并确保连接的准确性。
其功能主要是:终端主机是否存在。
•建立和维护路由信息。
•重定向数据传输路径。
·数据流控制。
键入D错误消息或信息消息。
错误消息可能是目标文件不可用,数据包太大,超时,参数问题等。
可能的信息消息是:回应请求,回应应答,组成员查询,组成员报告,组成员减少。
代码D每种消息类型都有许多不同的代码。
无法获取目标文件的示例是可能的消息是目标文件没有路由,禁止与目标文件的通信,非邻居,没有可用的地址,并且没有可用的端口。
有关详细信息,请参阅相关标准。
校验和D计算校验和时,校验和字段设置为0.标识符D有助于匹配请求/答复的标识符,可以是0.序列号D帮助匹配请求/答复的序列号,可以是0.地址掩码D 32位掩码地址。
Unsignedshortchksum(addr,len)unsignedshort * addr; / *检查数据起始地址(注意它是2个字节)* / intlen; / *检查数据的长度,以字节为单位* / {intsum = 0; / * checksum * / intnleft = len; / *未累积的数据长度* / unsignedshort * p; / *遍历临时指针,单位为2个字节* / unsignedshorttmp = 0; / *奇数长度使用* / while(nleft> 1){sum + = * p ++; / * addition * / nleft- = 2; } if(nleft == 1)/ *奇数长度* / {*(unsignedchar *)& amp; ; tmp = *(& amp;(unsignedchar *)p); / *最后一个字节被按下为2字节的高字节* / sum + = tmp; } sum + =(sum& gt;& gt; 16)+(sum& amp; 0xffff); / *高位低加* /和+ =和& gt;& gt; 16; / *当前一步溢出时,溢出位也加到sum * / tmp = ~sum; / *音符类型转换,当前校验和是16位* / returntmp; }