目录
[引入 -- 教室说话](#引入 -- 教室说话)
局域网
介绍
- 指连接在有限地理范围内的计算机和网络设备的网络
- 在局域网中,相连的主机可以直接通信,而不需要经过公共网络,这使得局域网内部的数据传输更加快速和高效
- 局域网的技术保证,就是局域网协议,例如以太网(Ethernet)、Wi-Fi等
共享资源
在局域网中,设备可以共享一些资源
- 如打印机、文件服务器、互联网接入等,以提高效率和便利性
- 或者我们家里比较常见的 : 连接相同网络的手机和电视,手机可以投屏在电视上(投屏的过程就是数据交互的过程)
以太网
介绍
它是最常用的有线局域网技术之一,支持各种设备之间的数据通信
以太网支持多种拓扑结构,包括星型、总线型和环型等
- 在星型拓扑中,设备连接到中央交换机或集线器
- 在总线型拓扑中,设备通过共享同一条总线进行通信
- 而环型拓扑中设备连接成一个环状结构
以太网可以使用不同的物理介质传输数据
- 包括双绞线、光纤和同轴电缆
- 最常见的是使用双绞线
数据在以太网中以数据帧的形式传输
其中,以太网协议就在数据链路层
以太网内部通信过程
引入 -- 教室说话
我们结合网络通信的知识,来仔细梳理一下我们是如何接收别人的谈话信息的:
- 一个教室里,有老师和多位学生,当老师在课堂上点某个学生(比如张三)回答问题时,老师说的话每个人都可以听见(也就是都能接收到这个数据)
- 但是因为叫的是张三,其他人将自己的名字(也就是标识)和"张三"进行比对,发现对不上,他们就知道叫的不是自己,也就不关心了(相当于将收到的报文丢弃)
- 张三当然也听见了,他知道老师在和自己说话(进行了比对,比对成功,于是报文一直传输到用户层),于是他按照老师所给的信息做出了处理(回答问题)
- 而当张三回话时,其他学生依然都能听见,但一想就知道他在和老师说话(也就是比对的过程),也就不管了(丢弃了)
- 老师自然也知道张三在对自己说话(进行了比对),于是仔细听张三在说什么(报文一直传输到用户层),并做出相应的处理
- 这样就完成了一次老师和张三的对话
总结
- 根据上面的过程,我们可以知道,每个主机就相当于里面的人,都要有自己的标识符(对于人来说是名字,对于网络设备来说是mac地址)
- 而且,两次通信都有一个共同点 -- 每句话大家都是可以听见的,且都有"接收到 -- 进行比对 -- 处理"的过程
mac地址
介绍
每个网络设备都有一个唯一的mac地址,用于在局域网中标识设备
- 在数据链路层中使用,用于识别网络中的源和目标设备,确保数据帧被正确发送和接收
- mac地址通常是一个48bit位的十六进制数,分为六组,每组由两个字符表示,中间用冒号或破折号分隔(例如,00:1A:2B:3C:4D:5E)
mac地址伪造
- 某些网络设备可能允许用户通过软件手段更改MAC地址
- 通常用于网络安全或隐私保护的目的
使用过程
- 当a主机想要和b主机通信,需要将[自己的mac地址]和[目标主机的mac地址]由数据链路层封装进报头里:
- 局域网内部的所有主机的网卡都会收到a主机发来的报文
- 但在链路层经过解析对比后,发现自身mac地址和目标mac不匹配,就会直接将报文丢弃 ; 如果匹配,就将有效载荷上传至上一层
数据暴露问题
引入
我们已经知道了,局域网内发出的报文,所有相连的主机都可以收到
那么,这样不会出现数据暴露问题吗?
- 一般来说,在链路层中就会把不属于自己的报文丢弃掉,但是,这并不是完全的安全机制,因为链路层的amc地址是可以伪造的
- 除此之外,网卡有多种工作模式,也可能会抓取不属于自己的数据
网卡的工作模式
正常模式
网卡只接收发送给它的数据包
混杂模式
网卡会接收通过网络传输的所有数据包(也被叫做网络抓包模式)
一般用于网络监控和分析工具
解决
- 使用加密协议(如SSL/TLS)保护局域网内的通信,确保数据在传输过程中得到保护,即使被拦截也难以解密
- 将敏感数据和普通数据隔离开来,例如,将敏感数据流量与普通数据流量分开到不同的网络子网中
以太网的碰撞问题
引入
当教室里有不少人在说话时,你和同学说话很可能就听不清,而且教室越大,人越多,越吵闹
介绍
类比在以太网中,多个设备共享同一传输介质
- 当两个设备同时尝试在介质发送信号时,可能发生碰撞
- 因为电信号的传播速度有限,设备可能在同一时间尝试发送数据
- 且和教室同理,局域网范围越大,碰撞几率越大(因为主机数量增加了)
- 而碰撞会导致数据丢失和损坏,所以我们要避免碰撞
碰撞检测
- 设备在发送数据之前首先侦听传输介质,以检测是否有其他设备正在发送数据
- 如果传输介质空闲,设备可以尝试发送数据
- 在发送数据的同时,设备会继续侦听传输介质,以确保在发送的同时没有其他设备尝试发送数据
- 设备继续侦听传输介质,同时检测是否发生碰撞(通常通过监测发送的信号与传输介质上的反射信号之间的不匹配来检测)
- 如果设备检测到碰撞,它会立即停止发送数据,且执行碰撞避免算法,减少再次发生碰撞的可能性
总结
总之,是要保证同一时间只有一台主机在传输消息
- 不用担心效率问题,电信号传输很快的
交换机
还可以在局域网过大时引入交换机
交换机用于判定通信双方的主机是否在自己的同一侧
- 如果在,信号就不必转发到另一侧了
- 这样就可以有效降低局域网碰撞的概率
- (相当于局部缩小了局域网的范围,自动划分出两个碰撞域)
还可以判定是否发生碰撞
- 如果发生,也就没必要将出错的报文转发至另一侧了
换个角度看通信过程
每个主机的网卡都可以向局域网传输信号
- 那它是不是也就相当于是临界资源?
为了避免碰撞问题,我们需要保证同一时间只有一台主机发
- 是不是就相当于保证了互斥性,和同一时间保证只有一个线程访问临界资源是一样的道理?
当然,这里的保护并不是通过加锁来完成,而是一旦碰撞了就重新发送
- 也就是说,他假设自己在发送时,不会有其他主机来干扰,出问题了再想办法解决
- 这不就是乐观锁的思想吗:
总结
局域网是被多台主机共享的临界资源