一、以太网CSMA/CD算法
- NIC从网络层接收数据报,创建数据帧。
- 监听信道(1-坚持):如果NIC监听到信道空闲,则开始发送帧;如果NIC监听到信道忙,则一直等待到信道空闲,然后发送帧。
- NIC发送完整个帧,而没有检测到其他结点的数据发送,则NIC确认帧发送成功。
- 如果NIC检测到其他结点传送数据,则中止发送,并发送阻塞信号。
- 中止发送后,NIC进入二进制指数退避:
第m次连续冲突后,取n=Min(m, 10)
NIC从{0, 1, 2, …, 2n-1}中随机选择一个数K
NIC等待K·512比特的传输延迟时间,再返回第2步
(连续冲突次数越多,平均等待时间越长)
二、以太网交换机
特点:
- 链路层设备:存储-转发以太网帧;检验到达帧的目的MAC地址,选择性向一个或多个输出链路转发帧;利用CSMA/CD访问链路,发送帧
- 透明:主机感知不到交换机的存在
- 即插即用
- 自学习:交换机无需配置
主机利用共享链路直接连接交换机,交换机缓存帧,并在每段链路上利用CSMA/CD收发帧。由于每段链路是一个独立的冲突域,故交换机可以多端口间同时传输,无冲突存在。
如图,A-A’和B-B’的传输可以同时进行,没有冲突
Q:交换机怎么知道A’可以通过接口4到达,而B’可以通过接口5到达?
A:每个交换机有一个交换表,其中包括主机MAC地址、到达主机的接口、时间戳。
交换机:自学习
交换机通过自学习,获知到达主机的接口信息
- 当收到帧时,交换机“学习”到发送帧的主机(通过帧的源MAC地址),位于收到该帧的接口所连接的LAN网段
- 将发送主机MAC地址/接口信息记录到交换表中
交换机:帧过滤/转发
当交换机收到帧:
- 记录帧的源MAC地址与输入链路接口
- 利用目的MAC地址检索交换表
- if 在交换表中检索到与目的MAC地址匹配的入口
then {
if 目的主机位于收到帧的网段 then 丢弃帧
else 将帧转发到该入口指向的接口
}
else 泛洪 /* 向除收到该帧的接口之外的所有接口转发 */
如上图,例如A要发送数据帧到G,假设此时S1,S2,S3,S4中交换表都为空。S1接受到A发送的数据帧,记录A的MAC地址及端口,由于S1不知道G的MAC地址及端口,故S1泛洪,则有一份数据传送到S4,S4记录A的MAC地址及端口后也泛洪,有一份数据到S3,S3同理记录A的MAC地址及端口并泛洪,将一份数据传送到G,此时G回传确认数据,交换机进行选择性转发,不再泛洪,此时S1,S3,S4学习到G的MAC地址及端口。
交换机 VS. 路由器
两者均为存储转发设备:
路由器:网络层设备(检测网络层分组首部)
交换机:链路层设备(检测链路层帧的首部)
两者均使用转发表:
路由器:理由路由算法(路由协议)计算(设置),依据IP地址
交换机:利用自学习、泛洪构建转发表,依据MAC地址
网络设备对比
参考文献:
哈尔滨工业大学网课《计算机网络之探赜索隐》李全龙