总所周知,现在是个智能手机的时代。到处都是WIFI,遍地都是各种APP。微信,支付宝、京东、百度等等已经成为了生活中必不可少的组成部分。移动支付也占据了消费的主要地位。连路边摆地摊的都必须弄一个收款二维码。智能手机占据了生活的大部分时间。移动互联网的时代已经来临了。
通信
但是你知道网络是如何通信的么?看一下最简单的拓扑
PC1 和 PC2是怎样通信的?
PC1和PC2是如何通信的?
这里使用华为eNSP模拟器,构建一个最简单的网络拓扑。只有两台主机和一个交换机。在这个网络中,交换机充当HUB,不涉及任何配置,只是加电而已。
现在我们给PC1配置IP地址:10.10.10.10,PC2配置IP地址:10.10.10.20
PC1:10.10.10.10
PC2:10.10.10.20
基本的网络
配置好IP地址,现在这个简单的网络环境就已经搭建完成。
如图,你认为PC1和PC2是怎样通信的?它们位于同一个LAN中,通过交换机相连。PC2到底是发送报文“PC1,你在么?” 。还是使用PC1的IP地址并发送报文“10.10.10.10,你在么?”。还是使用PC2的MAC地址呢?
答案是:PC2与PC1通信时,实际上是使用PC1的MAC地址。MAC地址就是硬件地址,烧录在PC的网卡中。
原因如下:
使用PC2 ping PC1 的IP地址,ping 10.10.10.10
ping 10.10.10.10
我们使用 Wireshark 捕获数据包
捕获到的ARP数据包
28 57.424000 HuaweiTe_fa:60:68 Broadcast ARP Who has 10.10.10.10? Tell 10.10.10.20不了解数据包?点击这里
这个数据包表明,PC2知道自己的MAC和IP,但不知道PC1的MAC和IP。因此PC2发送了一个数据链路层的广播。其目标地址为(ff:ff:ff:ff:ff:ff),并发送一个IP LAN广播,其目标地址是10.10.10.255。
29 57.440000 HuaweiTe_ac:06:5a HuaweiTe_fa:60:68 ARP 10.10.10.10 is at 54:89:98:ac:06:5a
30 57.471000 10.10.10.20 10.10.10.10 ICMP Echo (ping) request (id=0xe9d3, seq(be/le)=1/256, ttl=128)
31 57.471000 10.10.10.10 10.10.10.20 ICMP Echo (ping) reply (id=0xe9d3, seq(be/le)=1/256, ttl=128)
这三个数据包表明,PC1的响应。现在PC2终于知道PC1的MAC地址。我们看到有10.10.10.20到10.10.10.10的数据包,这个是刚刚使用PC2 ping PC1。PC2和PC1完成通信。