引入:
当两台电脑需要通信时很简单,只需在两台电脑的网口添加一根网线
一、若三台及三台以上电脑要实现通信则不能用单纯用网线连接(网口只有一个),这就出现了集线器
集线器的概念:集线器,英文名又称hub,在osi模型中属于数据链路层。
最大特点:采用共享型模式。
这也成为了集线器的一大缺点,因为假设其中1给2发送信号,则3也会接收到。若集线器连接许多台主机,则所有与其相连的主机都会接收到。
并且只能一个人发送信息,否则会发生碰撞。
二、为了提高用户体验,出现了交换机
交换机概念:交换机(Switch)意为“开关”是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交换机等。
交换机的特点:通过缓存而不会发生碰撞,工作在数据链路层,全双工方式,只给目标主机发送。
而一个重要的问题出现了:交换机怎么做到只给目标主机发送的呢?
这就要引申出了MAC地址(又称物理地址,硬件地址),注意并不是在物理层。(自己可查看自己电脑设备的物理地址),通常物理地址已经固化在适配器的ROM中的地址。
回到正题,交换机通常有一张帧交换表(通过自学习算法建立起来的)查找帧的目的MAC地址对应的端口号,然后转发。
下面介绍自学习算法:
如图所示
1:当主机A想要发送数据给B时:
最开始交换表是空的,交换机还是很笨的,只能先登记,
(交换机1):
MAC地址 | 接口 |
---|---|
A | 1 |
然后盲目转发到各接口,当主机B的网卡收到该帧后,根据帧的目的MAC地址B(具体可了解MAC帧的结构)于是就接受该帧。当然还会发送给接口2但是主机C的网卡判断不是发送给自己的,就丢弃该帧,也会通过交换机2的接口2,进入进入交换机2,先登记,
(交换机2):
MAC地址 | 接口 |
---|---|
A | 2 |
然后转发,交换表中找不到B,于是对该帧盲目转发到各接口,被各主机丢弃。
2:继续,当B➡️A
先登记到交换表中,
(交换机1):
MAC地址 | 接口 |
---|---|
A | 1 |
B | 3 |
转发,交换表中能够找到MAC地址A,然后按照MAC地址A对应的接口1,从接口1转发该帧,主机A的网卡收到该帧后,根据帧的目的MAC地址A,知道是发送给自己的帧,于是接受该帧,很显然交换机2并不能收到该帧。
3:继续,当E➡️A
先登记到交换表中,
(交换机2):
MAC地址 | 接口 |
---|---|
A | 2 |
E | 3 |
然后交换机2开始转发,在帧交换表中可以找到目的MAC地址A,于是从MAC地址A对应的接口2转发该帧,从交换机1的接口4进入交换机1,然后登记,
(交换机1):
MAC地址 | 接口 |
---|---|
A | 1 |
B | 3 |
E | 4 |
交换机对该帧进行转发,在交换表中查找MAC地址A,能找到,所以从接口号一转发该帧(明确的转发),A的网卡收到目的MAC地址A后,接收该帧。
4:继续,G➡️C(丢弃帧情况,图示省略集线器)
主机C,主机G,接口2共享一条总线。当主机G给主机C发送信息时,主机C和接口2都能收到,主机A的网卡收到后,根据帧的目的MAC地址A,就知道是发送该自己的帧就收下该帧。交换机1收到该帧后,先登记,
(交换机1):
MAC地址 | 接口 |
---|---|
A | 1 |
B | 3 |
E | 4 |
G | 2 |
转发,可以从帧交换表中找到该帧的目的MAC地址A,所对应的是接口1,但是该帧正是从接口1进入交换机1的,交换机1不会再此接口转发出去,因为这是没有必要的,于是丢弃该帧。很显然,交换机2不会收到该帧
注意⚠️:随着各主机发送,各主机MAC地址和接口号会记录在帧交换表中,但是这些记录都有自己的有效时间,MAC地址与接口的对应关系不是一成不变的。因为可能更换主机或更换网卡。有些交换机既可以应用存储转发,也可应用直通技术,称为自适应交换机。
三、路由器,包括路由表,IP地址,ARP协议等(待更。。。)