常用网络设备到底是哪一层的设备?
- 集线器(HUB)是一层设备;
- 交换机(SWITCH)是二层设备;
- 路由器(ROUTER)是三层设备;
物理层的连通
两台机器在物理层连通(1-3,2-6 交叉接法)
- 水晶头的1,2脚:收信号;
- 水晶头的3,6脚:发信号;
- 将一端的1和3号线换一下位置,2和6号线换一下位置,这样做出来的线,两端各连上一台计算机,就可以实现通信,当然,两台计算机的 IP 要配在一个网络中才行;
- 这样组成的局域网叫 LAN;
多台机器在物理层连通(集线器 HUB)
- 集线器(HUB)是物理层设备,有多个端口;
- 会将收到的每个字节都转发的其他端口,即广播;
数据链路层(MAC层)的连通
- MAC:Medium Access Control,媒体访问控制;
数据链路层(MAC层)要解决的问题
- 包发给谁?
- 就是发出去的包要包含目标 MAC 地址;
- 这里有个前提:已知目标 IP 地址,求目标 MAC 地址;
- 已知目标 IP 地址,求目标 MAC 地址,就是 ARP 协议的任务;
- ARP 求目标 MAC 地址的过程:
- 查看本地 ARP 缓存能否命中;
- 如果没命中,发送 ARP 广播;
- 目标 IP 机器回复;
- 接收到回复,缓存 IP,MAC 映射;
- 怎么发?
- 如果用一层设备组网,包发到集线器(HUB)后,向所有网口广播;
- 如果用二层设备组网,包发到交换机后,交换机只会将包发到目标网口;
- 交换机知道每个网口连的计算机的 MAC 地址;
- 怎么知道的呢?
- 一开始交换机也不知道,但是,每有一个包到达交换机,交换机是可以知道到达这个网口的包的源 MAC 地址,久而久之,交换机就知道了每个网口后面连的计算机的 MAC 地址了;等交换机把整个网络的结构都了解了,再有包到达,就无须广播,而直接把包交给目标 MAC 地址所连的网口了;
- 谁接收?
- 到了第二层,就是软件层面的问题了,物理层负责将收到的包广播到所有的端口,保证的是电信号的到达;
- 电信号到达网卡后,网卡上的软件要能从电信号里剥出目标 MAC 地址;
- 如果目标 MAC 地址是自己,则交由第三层的软件,剥出目标 IP 地址;
- 如果目标 IP 地址是自己,则交由第四层软件,剥出目标端口;
- 如果目标端口也是自己,则交由应用层软件,剥出 HTTP 报文;
- 谁先发,谁后发?
- 就是要解决多路访问问题;
- 解决方案:信道划分、轮流协议、随机接入协议;
- 发送出错怎么办?
- 对于以太网,二层包的最后是 CRC(循环冗余检测),通过 XOR 异或算法检测包在发送过程中是否出错;