Pc1
|
nic
|
172.16.3.10
|
R1
|
Fa0/0
|
172.16.3.1
|
|
Se0/0
|
172.16.2.1
|
R2
|
Fa0/0
|
172.16.2.2
|
|
Se0/0
|
172.16.1.1
|
Pc2
|
Fa0/0
|
172.16.1.10
|
网络通信都是双向的。数据包必须在相关设备之间进行双向传输。比如,只有pc1发出的数据包能到达pc2且pc2返回的数据的数据包能到达pc1时,pc1和pc2才能正常通信。
如果某一个方向的路由不正常,通信就会产生问题。用ping命令测试的话,就会返回各种错误。最常见的就是超时和不可达。
当路由器的接口配置好后,直连路由会被添加到路由表中。此是R1的路由表如下。
从pc1 ping 172.16.1.10。返回如下结果:
返回结果显示目标主机不可达。当数据包到达R1时,R1的路由表中没有到达R2的路由,该数据包被R1丢弃并向源地址发送一个目标地址不可达的消息。当PC1接收到这个消息时,ping结果就显示这个消息。
为了让数据包能够到达R2,在R2上添加一条静态路由:ip route 172.16.1.0 255.255.255.0 172.16.2.2,此时路由表为:
此时从pc1
ping 172.16.1.10,返回如下结果:
此时为超时,为什么?添加静态路由后,数据包可以到达R2。然后到达pc2,pc2接受到这个数据包后,会向pc1发送一个数据包,说我已经接受到pc1你发送的包了。该数据包到达R2后,因为没有R2路由表中没有能到达R1的路由,该数据包被抛弃。结果R1一直没有接到数据包,一定时间后,ping就返回时。
再在R2上再添加一条静态路由,ip route 172.16.3.0 255.255.255.0 172.16.2.1。这时,双向路由都正常了,pc1可以ping通pc2了。
通过分析,可以总结如下:不同IP网段的主机ping测试(pc1 ping pc2),如果返回不可达消息,表示在正向路径上(pc1到pc2)的某一台路由器缺少到目的网络的路由,如果返回超时,表示反向路径(pc2到pc1)中的某一台路由器缺少到源地址的路由。
当然,以上分析只考虑的路由器,假设所有主机IP设置都正确,主机都允许ping。
分享到:
相关推荐
如果返回False,说明在超时时间内未收到应答,可能是网络不通或者目标IP不可达。 TIdIcmpClient还提供了一些其他高级功能,如自定义ICMP报文数据、支持多目标Ping等。开发者可以根据实际需求进行更复杂的配置和扩展...
6. **超时和重试机制**:在实际的ping程序中,我们需要设定超时限制,如果在指定时间内没有收到回应,就认为目标主机不可达。同时,为了提高成功率,可以设置重试次数。 7. **控制台输出**:程序的输出应该包括每个...
- `IP_STATUS_BASE`至`MAX_IP_STATUS`:定义了ICMP回显应答的各种状态码,如`IP_SUCCESS`表示成功,`IP_DEST_HOST_UNREACHABLE`表示目标主机不可达等。根据返回的状态码,我们可以判断ping的结果。 在实际应用中,...
Log.d("PingResult", "IP不可达: " + future.toString()); } } executor.shutdown(); // 关闭线程池 ``` 5. **用户界面**: 在Android应用的UI部分,可以展示ping的结果,例如在一个ListView或RecyclerView中...
它不直接传输用户数据,而是用来报告网络中可能出现的问题,如数据包无法到达目标地址、超时或路由不可达等。在ping命令中,ICMP被用来发送echo请求(类型8)和echo应答(类型0)报文,通过接收回显应答来判断目标...
7. **运行结果**:程序运行后,会根据接收到的ICMP响应次数(icmpcount)来判断目标主机是否可达。如果收到回应,表明目标主机在线;如果没有收到回应或收到错误消息,可能表示目标主机离线或网络问题。 通过这个...
4. **错误处理**:处理可能出现的异常,如网络不可达、超时等情况,并提供相应的提示。 5. **实时更新**:如果需要,可以添加定时器,定期执行Ping命令,以实时监控网络状态。 除了基本的Ping功能,窗体版的Ping...
其他状态可能表示网络问题或目标不可达。 ```csharp if (reply.Status == IPStatus.Success) { Console.WriteLine($"Roundtrip time: {reply.RoundtripTime}ms"); Console.WriteLine($"IP Address: {reply....
PingReply对象包含以下关键属性,用于判断IP地址是否可达: - `Status`:表示ping操作的状态,如Success表示成功,TimedOut表示超时等。 - `RoundtripTime`:往返时间,单位为毫秒。 - `Address`:接收到回应的IP...
它通过发送ICMP(Internet Control Message Protocol)回显请求报文到目标主机,并接收回应来检查网络是否可达。`ping`命令非常实用,但在进行长时间监控或者需要分析数据时,将输出结果保存为日志文件会更加方便。...
5. **错误处理**:ping程序还需要处理各种可能的网络错误,如网络不可达、主机不可达或端口不可达等。这些错误通常通过ICMP错误报文传递,例如“目的地不可达”或“超时”。 6. **命令行界面**:在操作系统中,ping...
1. **理解Ping命令**:Ping是基于Internet控制消息协议(ICMP)的一种网络诊断工具,通过发送ICMP回显请求报文到目标主机,再接收返回的回显应答报文,从而判断目标主机是否可达以及网络的延迟。基本的ping命令只能...
Ping命令通过发送ICMP (Internet Control Message Protocol) 回声请求消息给目标,并接收ICMP回应来确认目标是否可达。 #### 二、Ping命令的基本应用 1. **基本格式**:`ping IP地址` 或 `ping 域名` - 例如:`...
2. ICMP报文类型:ICMP报文有多种类型,如目标不可达、超时、参数问题、源端抑制、重定向、回声请求、回声应答等。 3. Ping命令实现:Ping命令是基于ICMP协议原理的,用于测试目标主机是否可到达。Ping程序发送一份...
- 如果连接失败,可能表示目标IP不可达或网络问题,可以根据需要向用户显示错误信息。 4. **优化与改进** - 为了模拟多次ping,可以将上述步骤放入循环中,记录每次的响应时间并计算平均值。 - 添加线程休眠,...
ping命令通过发送ICMP(Internet Control Message Protocol)回显请求包到目标主机,并等待接收回显应答包,以此来检查网络是否可达以及评估网络延迟。当ping命令成功接收到回显应答时,表示源主机与目标主机之间的...
匹配到第二个字符串,说明目标IP可达。在`run`方法中,根据匹配结果打印相应的信息。 主程序部分,我们创建了一个包含多个IP地址的列表`host`,然后为每个IP地址创建一个`PING`类的实例,并将其添加到线程列表`T_...