一根网线直连的2台不同网段的PC,怎样ping通?

目录

一、准备

二、同网段的2台PC直连,可以ping通的原因

三、不同网段的2台PC直连,怎样才能ping通

四、总结


一、准备

1.1 准备2台机器设置为不同的网段,并用一根网线连接起来。(这里使用两台linux系统的arm开发板)

设置其中一台为的ip为1.1.1.1,子网掩码为 255.255.255.0,在命令行输入命令:

ifconfig eth0 1.1.1.1 netmask 255.255.255.0

设置另一台机器的ip为 2.2.2.2,子网掩码为 255.255.255.0

ifconfig eth0 2.2.2.2 netmask 255.255.255.0

 

1.2 了解 ping命令 的基本原理

ping命令是基于ICMP协议且用于检测主机到主机之间是否可通信的命令。

ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机。

ping过程:源主机发生ICMP包到目的主机,目的主机收到后发送ICMP应答包给源主机,源主机在一定时间内收到后则认为目的主机可达。

 

二、同网段的2台PC直连,可以ping通的原因

假设有一台机器的ip为 1.1.1.1,子网掩码为 255.255.255.0,另一台机器的ip为 1.1.1.2,子网掩码为 255.255.255.0;那么这两台机器为什么能够ping得通呢?

原因:当我们设置ip地址时,系统会默认为我们添加一个 “同网段的路由信息” 到路由表。

所以,ping同网段的ip时,系统就能在路由表找到路由信息,然后发送ICMP包出去;同样,另一台也能通过默认的路由信息返回应答包。

一根网线直连的2台不同网段的PC,怎样ping通?_第1张图片

 

三、不同网段的2台PC直连,怎样才能ping通

由前面可以知,ping命令的ICMP包能发送出去是因为路由表有对应网段的路由信息。那么,不同网段的2台机器ping不通的原因可能就是路由表里没有目的网段的路由信息。所以我们可以尝试添加路由信息来使不同网段的2台机器ping通。

3.1 往ip地址为 1.1.1.1 的机器添加 2.2.2.0 的路由信息,使 ICMP 包可以发送到目的ip为 2.2.2.X 的主机,使用这个命令添加路由信息:

route add -net 2.2.2.0 netmask 255.255.255.0 dev eth0

3.2 往ip地址为 2.2.2.2 的机器添加 1.1.1.0 的路由信息,使目的主机可以返回 ICMP 应答包:

route add -net 1.1.1.0 netmask 255.255.255.0 dev eth0

3.3 在 1.1.1.1 主机 ping 目的ip为 2.2.2.2 的主机,可以正常ping通

一根网线直连的2台不同网段的PC,怎样ping通?_第2张图片

3.4 在 2.2.2.2 主机 ping 目的ip为 1.1.1.1 的主机,也正常ping通

一根网线直连的2台不同网段的PC,怎样ping通?_第3张图片

 

四、总结

两台不同网段的pc直连,之所以ping不通是因为两台pc的路由表都没有目的网段的路由信息,添加完对应网段的路由信息后就可以ping通。

以下是ip为 1.1.1.1 的机器操作的整个流程,有收获的话,点个赞让我知道 ^_^

一根网线直连的2台不同网段的PC,怎样ping通?_第4张图片

 

 

 

 

 

 

你可能感兴趣的:(linux系统,开发工具,ping)