最近在看大佬的计算机网络学习讲解:
【网络】半小时看懂<计算机网络>
受益良多,言犹在耳
计算机网络就是实现计算机进行通信的,通过01
这样的高低电频来进行传输数据;
如果说要通信的计算机比较多呢?采用互相连接,这样虽然也行的通,但是如果计算机越来越多呢?这样的通信过于冗余.
(1)那么也就有了通信转发的概念,比如说A机器想要给E机器发数据,可以通过A->B->E;
就无需连接过多的通信线了;
(2)然后就是网络标识, 比如说要把A机器要给C机器发数据,那么C机器就得标识自己的身份是C.
关于转发
呢,早期有这么一个设备 : HUB集线器;
它主要可以用来做消息的转发,使用简单的双绞线
即可完成连接;
但是集线器有个缺点;
比如说现在 A计算机在发数据, B计算机也发来数据了;
可是HUB集线器
只是负责接收/转发 电信号;没法区分信号数据;
在处理的时候就会把A和B发来的信号给杂糅起来,发给了其他的设备,这样可能就会导致出现冲突域
, 可能A只是想给C发数据,没想到C收到的数据中还有B发给D的数据.
针对这个缺点,又诞生了CSMA/CD 协议;
数据在发送前先进行载波侦听
,观察这个数据链路中是否存在其他的机器在发送数据;若发现没有这里才能放心的发送自己的数据;
CSMA协议要求站点在发送数据之前先监听信道。如果信道空闲,站点就可以发送数据;如果信道忙,则站点不能发送数据。但是,如果两个站点都检测到信道是空闲的,并且同时开始传送数据,那么这几乎会立即导致冲突。另外,站点在监听信道时,听到信道是空闲的,但这并不意味着信道真的空闲,因为其他站点的数据此时可能正在信道上传送,但由于传播时延,信号还没有到达正在监听的站点,从而引起对信道状态的错误判断。
对于上面提到的早期计网结构,还是有缺点的.
(1)进行数据的广播,会让带宽比较低效;
(2)在同一时刻,只能有一台机器在数据链路上发送数据,导致数据链路的利用率比较低.
所以:这种HUB集线器的结构仅适用于在物理层工作的小型计网结构.
集线器工作于 物理层
那么交换机SW [Switch] 交换机就诞生了.
这个交换机
功能很像集线器
,可是它比较厉害了.
集线器
只是提供了转发消息数据的功能,他没有标识的作用; [也就是说集线器
只是将消息广播出去,让机器设备自己来判断消息是不是发给自己的].交换机
真正做到了记录地址
, 记录的是地址 -- 端口之间的映射关系
.这里的地址指的是MAC地址
.啥是MAC地址: 可以看自己电脑的网络物理地址,分为6段,每一段都是8比特,也就是48比特.
这个MAC地址在每个设备出厂时就已经给定了;当然也是可以修改的.
那么交换机SW 怎么记录地址和端口映射
的呢?
实际在交换机中维护了一张 映射关系表
;
交换机SW
的亮点2 : 它是全双工的;
集线器
使用的是双绞线
来连接设备;在工作时只能有一个设备来发送数据的;网线
,里面有8根线,正常情况下有 4 根线正常工作;即可实现数据的全双工通信; [比如说A机器在发送数据的同时还可以接受数据]. 数据链路不会出现冲突域:[A在发数据的时候,B也可以发送数据].比如说现在一个交换机连接了ABC三个设备, 交换机的映射表本来是空的;
学过OSI七层模型都知道,这个交换机,位于数据链路层
;
这个数据链路层包含了数据头
和数据部分
.
数据头中记录了:源MAC地址
和 目的MAC地址
.
数据部分即网络层
分发来的ip数据包;其中也是包含了数据头
与数据内容;数据头
包含ip源地址
ip目的地址
;
交换机还有一个特点就是可以进行桥接
比如说交换机甲和乙连接在一块了,目前:
那么接着来看交换机有什么缺点:
一般情况下,每个交换机中可维护的映射表记录在几千多条,这个存储量还是比较小的,如果说要维持全球范围内的计算机,从效率上来看还是比较吃力的, 不断地连接交换机可能会出现消息洪泛
.
所以说交换机适应于在一个小规模的局域网内进行消息传输,比如说几千个设备组成的一个局域网,
但是交换机想要连接跨局域网的网络连接,就可能无法达到预期的效果.
那么对于不同网络之间的连接,就可以使用路由器.
在同一个网络内的设备传递消息,内部转发即可, 而 不同网络间的消息传递 需要通过 路由器
进行消息转发.
网络作为一个抽象的概念,网络的标识认定采用了Ip地址
进行标识, 两个作用:
在本地命令ping 虚拟机的ip;
在网络中的每个设备都有自己维护的一张路由表;
在路由器中也维护了一个路由表,标识了对应IP的设备在哪里.
引入路由器
是为在 跨网络的时候完成消息数据的通信,注意ip地址是不能直接作为通信使用的,那么实际的通信还需要解析Ip地址, 然后通过Mac物理地址
进行通信.
比如这样一个案例:
- 路由器的ip
192.168.1.52
先使用ARP协议(地址解析协议),查找ip为192.168.1.254
设备的MAC地址
;即在网络中广播询问谁的ip地址是1.254,找到后解析得到mac地址.- 得到mac地址后,即可在数据链路层进行传输了