网络基础-ICMP协议

ICMP(Internet Control Message Protocol, Internet控制消息协议)
复制代码
ICMP协议是IP协议的辅助协议,用于在IP网络上发送控制消息,它通常被用于诊断网络故障、执行网络管理任务以及提供一些错误报告;对于收集各种网络信息、诊断 和排除各种网络故障等方面起着至关重要的作用。
ICMP协议涉及的一些常见数据包类型:
复制代码
Echo Request (Type 8): 发送此类型的数据包以请求目标主机响应;通常用于Ping命令。
Echo Reply (Type 0): 响应Echo请求的数据包。包含与Echo请求相同的数据。
Destination Unreachable (Type 3): 当目标主机无法访问时发送的数据包。可能是因为网络不可达、主机不可达或端口不可达等原因。
Source Quench (Type 4): 当路由器或主机希望通知发送方减慢发送速度时发送的数据包。
Redirect (Type 5): 当路由器希望通知发送方通过另一个路由器发送数据时发送的数据包。
Time Exceeded (Type 11): 当数据包在路由器上的生存时间(TTL)过期时发送的数据包。
Parameter Problem (Type 12): 当IP头部中的某些字段有问题时发送的数据包。
Timestamp Request (Type 13): 请求目标主机发送当前时间的数据包。
Timestamp Reply (Type 14): 响应Timestamp请求的数据包,包含发送时间和接收时间。
Address Mask Request (Type 17): 请求目标主机发送子网掩码的数据包。
Address Mask Reply (Type 18): 响应Address Mask请求的数据包,包含子网掩码信息。
常用的基于ICMP协议应用
1.ping:

当你使用命令行工具或者网络诊断工具执行ping时,实际上在使用ICMP协议发送和接收消息来测试你计算机和目标主机之间的连接性和延迟;这个命令通常在Windows、Linux和其他类Unix系统上都是可用的。

ping命令的工作原理:

复制代码
1.发送Echo请求: 执行ping命令并指定目标主机的地址时,计算机会发送一个ICMP Echo请求消息到目标主机。
2.等待Echo回复: 一旦目标主机收到Echo请求消息,它会生成并发送一个Echo回复消息作为响应;这个回复消息携带着与请求中相同的数据。
3.计算往返时间(Round-Trip Time,RTT): 一旦计算机收到了Echo回复消息,它会记录当前时间,并计算发送Echo请求和接收Echo回复之间的时间差。这个时间差就是往返时间(RTT),它表示了数据从计算机发送到目标主机并返回的时间。
4.显示结果: ping命令会显示每个Echo请求的往返时间,并且通常还会显示每个请求的成功率(通常以百分比形式);此外,一般还会显示有关网络状态的统计信息,如平均往返时间、最小和最大往返时间等。
ping命令的用途:
复制代码
检测网络连接性: 通过发送Echo请求并接收Echo回复,可以确定目标主机是否可达;如果主机不可达,ping命令会显示请求超时或者目标不可达的消息。
测量延迟: 往返时间(RTT)可以用来评估计算机与目标主机之间的通信延迟;较低的RTT通常表示更快的网络连接。
诊断网络问题: 如果ping命令显示了不寻常的延迟或者丢包率,这可能表明网络中存在问题,如拥塞、路由问题或者网络设备故障等。
2.traceroute (tracert)

Traceroute是一种网络诊断工具,用于确定数据包从源主机到目标主机之间经过的路径;它通过发送一系列的数据包,并记录每个数据包经过的路由器,从而帮助用户了解网络中的延迟和网络拓扑。

traceroute工作原理
复制代码
1,发送数据包: Traceroute发送一系列的UDP数据包(在Unix/Linux系统上,默认使用UDP,而在Windows系统上则默认使用ICMP)到目标主机,每个数据包的TTL(生存时间)逐渐增加。
2.路由器处理: 当数据包到达网络中的路由器时,路由器会将TTL减1,并检查TTL是否变为0。如果TTL变为0,路由器将丢弃数据包并发送一个ICMP "Time Exceeded"消息给发送主机。
3.记录路由器信息: Traceroute捕获"Time Exceeded"消息,并记录下每个路由器的IP地址和响应时间。
4.重复过程: Traceroute重复发送数据包,每次增加TTL,直到数据包到达目标主机。通过收集每个路由器的响应,Traceroute能够构建出数据包从源主机到目标主机的完整路径。

在思科设备和Linux系统中使用traceroute命令,在华为、华三设备和Windows中使用tracert命令进行使用。

输出解释:

Traceroute的输出通常会显示每个路由器的IP地址、主机名(如果可解析)、每个路由器的响应时间(通常以毫秒为单位),以及整个路径的总响应时间。这些信息可用于诊断网络问题和评估网络性能。

应用用途:
复制代码
网络故障排除: Traceroute可用于诊断网络连接问题,如确定数据包在网络中的哪个节点丢失或受阻。
网络性能评估: 通过分析Traceroute的输出,可以评估网络中各个节点的延迟,并确定数据包传输的瓶颈所在。
网络拓扑发现: Traceroute可以用来发现网络中的路由器和主机,从而帮助绘制网络拓扑图和理解网络架构。
相关推荐
van叶~3 分钟前
Linux探秘坊-------15.线程概念与控制
linux·运维·服务器
2301_780789664 小时前
UDP和TCP的主要区别是什么
服务器·网络协议·web安全·网络安全·udp
_丿丨丨_5 小时前
XSS(跨站脚本攻击)
前端·网络·xss
一只栖枝6 小时前
HCIA-Security 认证精讲!网络安全理论与实战全掌握
网络·web安全·网络安全·智能路由器·hcia·it·hcia-security
FileLink跨网文件交换6 小时前
文件摆渡系统十大软件|文件摆渡系统如何构建网络安全呢?
网络
一个龙的传说7 小时前
linux 常用命令
linux·服务器·zookeeper
斯是 陋室9 小时前
在CentOS7.9服务器上安装.NET 8.0 SDK
运维·服务器·开发语言·c++·c#·云计算·.net
晨欣9 小时前
大型语言模型(LLM)在网络安全中最具商业价值的应用场景(Grok3 回答 DeepSearch模式)
网络·web安全·语言模型
有书Show10 小时前
个人IP的塑造方向有哪些?
网络·网络协议·tcp/ip
HHRL-yx10 小时前
C++网络编程 5.TCP套接字(socket)通信进阶-基于多线程的TCP多客户端通信
网络·c++·tcp/ip