1.通过网线直连的两台终端设备
# 连接它们
连接两台终端设备最简单的方式是什么?其一当然是直接通过一条网线来连接。
假设我们准备了两台 PC,并用铜交叉线连接了它们:
仅是如此还是不够的,我们还需要为他们配置一下 IP 地址:
# Ping
相信你应该对 Ping 这个命令有所耳闻,其作用是探测本机与网络中另一主机之间是否可达 (大白话就是连接正不正常),基于 ICMP 协议 (现在不清楚这些协议也没关系,后面会讲)。
如果配置正确,我们的两台设备应该是能够 Ping 通的。
配置完 IP 地址之后,我们尝试一下用 192.168.1.10
这台设备去 Ping 192.168.1.11
。
可以看到它们之间是连通的!
在此之上我们就可以使用耳熟能详的 UDP、TCP 协议去交换数据了。
# MAC
设备之间不是通过 IP 去识别设备身份的,而是使用一个叫 MAC 地址的东西:
MAC 地址(英语:Media Access Control Address),直译为媒体访问控制地址,也称为局域网地址(LAN Address),以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的地址。在 OSI 模型中,第三层网络层负责 IP 地址,第二层数据链接层则负责 MAC 地址。MAC 地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的 MAC 地址。 – 摘自维基百科
简而言之,在每一台终端设备的网卡中,都会存在 MAC 地址,该地址应当是在出厂时就确定的、全世界唯一的地址。
处于统一网段内的设备的网络通信的部分过程是这样的:
- PC0 期望将某个数据包发送给 PC1,就需要为这个数据包的目标 MAC 地址字段填写为 PC1 的 MAC 地址。
- 在我们的示例中,PC0 会通过这一个接口让数据包流向 PC1。
- PC1 收到之后,检查一下这个数据包是不是发给它自己的 (即检查数据包中的目标 MAC 地址和本机网卡 MAC 地址是否匹配),如果是的话就会接收并向上层转发,如果不是则丢弃,负责此工作的是位于 TCP/IP 分层模型中的数据链路层。
我们查看一下 PC0 和 PC1 的 MAC 地址:
以上的 Physical Address 就是这两台设备的网卡对应的 MAC 地址了,但是现在又会有一个新的问题:PC0 如何得知 PC1 的 MAC 地址?我们在 Ping 时只填写了目标 IP,并未填写目标 MAC;
关于这个问题你可以先思考一下 and 查阅资料,不懂也没关系,后续我会再详细解答。