底层网络知识详解从二层到三层
从物理层到MAC层
第一层(==物理层==)
第二层(==数据链路层==)
问题
- 这个包是发给谁的?谁应该接收?
- 大家都在发,会不会产生混乱?有没有谁先发、谁后发的规则?
- 如果发送的时候出现了错误,怎么办?
数据链路层(又称作MAC层)
- MAC : Medium Access Control 媒体访问控制
媒体访问控制。控制什么呢?其实就是控制在往媒体上发数据的时候,谁先发、谁后发的问题。防止发生混乱。这解决的是第二个问题。这个问题中的规则,学名叫多路访问。
- 多路访问
- 信道划分
- 轮流协议
- 随机接入协议
- 链路层地址(通常称为MAC地址)
- 网格包格式
- 对于以太网来说,第二层的最开始为目标的MAC地址和源的MAC地址
- 网格包格式
| 目标MAC | 源MAC | 类型 | 数据 | CRC |
|---|---|---|---|---|
| 6bytes | 6bytes | 2bytes | (46-1500bytes) | 4bytes |
类型
- 类型0800:IP数据包
- IP 里面包含 TCP、UDP,以及 HTTP 等,这都是里层封装的事情。
- 类型0860:ARP请求,应答
- 类型0800:IP数据包
CRC(循环冗余检测)
- 通过 XOR 异或的算法,来计算整个包是否在发送的过程中出现了错误,主要解决第三个问题。
ARP协议
- 概念:已知 IP 地址,求 MAC 地址的协议。
在一个局域网里,当知道了IP地址而不知道MAC地址该怎么做?靠吼
广而告之,发送一个数据包,谁是目标IP谁来回答
- 具体请求回答报文格式如下
为了避免每次都用 ARP 请求,机器本地也会进行 ARP 缓存。当然机器会不断地上线下线,IP 也可能会变,所以 ARP 的 MAC 地址缓存过一段时间就会过期。
局域网
- 交换机
- 功能:知道目标 MAC 地址是连接某个口的电脑的 MAC 地址
一台 MAC1 电脑将一个包发送给另一台 MAC2 电脑,当这个包到达交换机的时候,一开始交换机也不知道 MAC2 的电脑在哪个口,
所以没办法,它只能将包转发给除了来的那个口之外的其他所有的口。就是交换机会记住,
MAC1 是来自一个明确的口。以后有包的目的地址是 MAC1 的,直接发送到这个口就可以了。
总结:我不知道你找谁,但是我知道你是谁,以后也知道怎么找到你
- 转换表
当交换机作为一个关卡一样,过了一段时间之后,就有了整个网络的一个结构了,这个时候,基本上不用广播了,全部可以准确转发。当然,每个机器的 IP 地址会变,所在的口也会变,因而交换机上的学习的结果,我们称为转发表,是有一个过期时间的。
总结
- MAC 层是用来解决多路访问的堵车问题的;
- ARP 是通过吼的方式来寻找目标 MAC 地址的,吼完之后记住一段时间,这个叫作缓存;
- 交换机是有 MAC 地址学习能力的,学完了它就知道谁在哪儿了,不用广播了。
问题:
1.在二层中我们讲了 ARP 协议,即已知 IP 地址求 MAC;还有一种 RARP 协议,即已知 MAC 求 IP 的,你知道它可以用来干什么吗?
2.如果一个局域网里面有多个交换机,ARP 广播的模式会出现什么问题呢?