在 Cisco Packet Tracer 中模拟两台计算机网线直连。
虽然在计算机网络笔记中,我们已经大致总结了网络直连的方式,将两台计算机设备连接到一起。但是依然有很多细节需要补充,主要是 Cisco Packet Tracer 的具体使用。
使用Cisco Packet Tracer进行实验
Cisco Packet Tracer 是可以模拟 ping 命令的,而且方式有两种。
使用命令的方式
这是最标准的方式,实际的工作中,我们也是经常使用 ping 命令来进行网络连接测试的。
首先点击我们想要输入命令的设备:

然后选择 Desktop,再选择 Command Prompt:

然后输入命令,例如我要去 ping PC1,它的 IP 地址设置为了 192.168.1.11,命令应该为 ping 192.168.1.11:

同理,反过来用 192.168.1.11 去 192.168.1.10 也是一样的做法
使用仿真模式
我们还可以使用仿真模式来进行测试,Cisco Packet Tracer 的仿真模式非常强大,我们可以看到更多细节,是非常推荐的实验方式:
先选择切换到仿真模式:

然后让 PC0 给 PC1 发包,这就等价于 Ping 命令:

接下来就可以点继续键,观看整个 ping 的过程了:

在这边我们能看到详细的记录:

我们看到了三个 ICMP,第一个的 Last Device 为空,而 At Device 为 PC0,这代表 ICMP 开始;第二个的 Last Device 为 PC0,At Device 为 PC1,说明包已经从 PC0 送达了 PC1;最后一个代表的是从 PC1 送回 PC0,PC0 收到回复,认定 ping 通了。
这里其实反映了一个事实,ping 命令走的是 ICMP 协议。
在计算机网络笔记中,我们说,最终数据要送到网卡上,这就需要拿到 MAC 地址,但是我们 ping 的过程中没有看到获取 MAC 地址的操作啊,那是如何确定目标计算机的 MAC 地址的呢?
为了弄清楚这个问题,我直接重新配置了计算机的 IP 地址,PC0 设置为 192.168.1.20,PC1 设置为 192.168.1.21,看看此时会发生什么:

除了我们之前看到的 ICMP 以外,还多了 ARP,ARP 是广播协议,他让包能够在同一网段内广播,虽然第一次 ping 的时候,ICMP包因为没有 MAC 地址而没有真正发成功,但是随即就是用了 ARP 协议对与 PC0 直接相连的同一网段的设备进行广播,广播的目的就是给所有设备发请求,找到目标 IP 地址对应的计算机的 MAC 地址,然后拿回给 PC0,ARP 也和 ICMP 看起来类似,有三个 ARP,分析起来类似,PC0 在拿到 PC1 的 MAC 地址以后,继续使用 ICMP,这一次也是三个 ICMP,PC0得到了 PC1 的回复,ping 通了。
我们可以再详细地看看,点击第一次 ICMP:

我们发现,确实有 IP 地址,但是没有 MAC 地址:

于是来看接下来的第一个 ARP:

发现这个 ARP 中有 MAC 地址,开始从 PC0 的 MAC 地址发向一个全 1 的地址,全 1 的 MAC 地址表示广播,任何一个相连的同网段设备都可以接收:

接下来的两个 ARP 就是代表了 PC0 发送广播,然后 PC1 在收到广播以后返回 MAC 地址的过程。
总的来说,并没有违反需要 MAC 地址这一规则,知识获取 MAC 地址的任务并不是靠 ICMP 协议,而是交给了 ARP 广播协议,此外,ARP 广播协议是有缓存的,广播一次拿到了 MAC 地址以后就不用再次 ARP 了,他会查找缓存,所以我们在跟换 IP 之前,我的只有三个ICMP不需要 ARP。
额外提醒:在计算机网络笔记中,我们看到了一张图,表示了计算机网络信息传输的具体过程,所以这张图也是类似的看法,输入是从底层往高层看,输出是从高层往底层看:
