IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 05-从物理层到MAC层 -> 正文阅读

[网络协议]05-从物理层到MAC层

????????第一层(物理层)

? ? ? ? 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。主要任务是确定与传输媒体接口有关的一些特性,定义标准。

? ? ? ? 用两条网线将电脑连接起来,就组成了一个最小的局域网。集线器Hub,这种设备有多个口,可以将多台电脑连接起来,但是和交换机不同,集线器没有大脑,完全在物理层工作,它会将自己收到的每一个字节,都复制到其他端口上去。

? ? ? ? 第二层(数据链路层)

? ? ? ? Hub采取的是广播模式,如果每一台电脑发出的包,宿舍的每个电脑都能收到,那就麻烦了。需要解决几个问题:

? ? ? ? 1.这个包是发给谁的?谁应该接收?

? ? ? ? 2.大家都在发,会不会产生混乱?有没有谁先发、谁后发的规则?

? ? ? ? 3.如果发送的时候出现错误,怎么办?

? ? ? ? 这几个问题,都是在第二层,数据链路层,也即MAC层需要解决的问题。MAC的全称是Medium Acess Control,即媒体访问控制。控制什么呢?其实就是控制在往媒体上发数据的时候,谁先发,谁后发的问题。防止发生混乱。这解决的是第二个问题,这个问题中的规则,学名叫多路访问。有很多算法可以解决这个问题。就像车管所管束马路上跑的车。

? ? ? ? 方式一:分多个车道,每个车道,各走各的,在计算机网络中叫作信道划分。

? ? ? ? 方式二:单双号出行,?轮着来,在计算机网络中叫作轮流协议。

? ? ? ? 方式三:不管三七二十一,有事儿先出门,发现堵车,就回去,错过高峰在出行,这种叫作随机接入协议。著名的以太网就是使用的这个方式。

? ? ? ? 解决了第二个问题,就是解决了媒体接入控制的问题,MAC的问题也就解决好了,这和MAC地址没有什么关系。

? ? ? ? 接下来解决第一个问题:发给谁,谁接收?这里用到一个物理地址,叫作链路层地址,但是因为第二层主要解决媒体接入控制的问题,所以它常被称为MAC地址。

? ? ? ? 解决第一个问题就牵扯到了第二层的网络包格式。对于以太网,第二层的最开始,就是目标的MAC地址和源MAC地址。

? ? ? ? 接下来的是类型,大部分的类型是IP数据包,然后IP里面包含TCP、UDP,以及HTTP等,这都是里层封装的事情。

? ? ? ? 有了这个目标MAC地址,数据包再链路上广播,MAC的网卡才能发现,这个包是给他的,MAC的网卡把包收进来,然后打开IP包,发现IP地址也是自己的,再打开TCP包,发现端口也是自己的,也就是80,而Nginx就是监听80.

? ? ? ? 于是将请求交给Nginx,Nginx返回一个网页。然后将网页需要发回请求的机器。然后层层封装,最后到MAC层。因为来的时候有源MAC地址,返回的时候,源MAC地址就变成了目标MAC地址,再返回给请求的机器。

? ? ? ? 对于以太网,第二层的最后面是CRC,也就是循环冗余检测。通过XOR异或算法,来计算整个包是否在发送的过程中出现了错误,主要解决第三个问题。

? ? ? ? 这里面还有一个没有解决的问题,当源机器知道目标机器的时候,可以将目标地址放入包里面,如果不知道呢?一个广播的网络里面接入了N台机器,怎么知道每个MAC地址是谁的呢?这就是ARP协议,也就是已知IP地址,来求MAC地址的协议。

?

? ? ? ? 在一个局域网里,当知道了IP地址,不知道MAC地址怎么办呢?靠吼来解决。

? ? ? ? 广而告之,发送一个广播包,谁是这个IP谁来回答,具体询问和回答的报文就行下面这样:

?

? ? ? ? 为了避免每次都用ARP请求,机器本地也会进行ARP缓存。当然机器会不断的上线下线,IP也可能会变,所以ARP的MAC地址缓存过一段时间就会过期。?

? ? ? ? 局域网

? ? ? ? 局域网,对于数量少的机器组网没有问题,但是一旦机器的数目增多,问题就出现了,因为Hub是广播的,不管某个接口是否需要,所有的Bit都会被发送出去,然后让主机来判断是不是需要。这种方式路上的车少就没有问题,车一多,产生冲突的概率就提高了。而且把不需要的包转发过去,纯属浪费。Hub这种不管三七二十一的转发设备是不行的,需要智能一点的,因为每个接口都只连接一台电脑,这台电脑又不怎么换IP和MAC地址,只要记住这台电脑的MAC地址,如果目标MAC地址不是这台电脑的,这个口就不用转发了。

? ? ? ? 谁能知道目标MAC地址是否就是连接某个口的电脑的MAC地址呢?这就需要把一个能把MAC头拿下来,检查一下目标MAC地址,然后根据策略转发的设备,这个设备显然是二层设备,称之为交换机。

? ? ? ? 交换机怎么知道每个口的电脑的MAC地址呢?这需要交换机会学习。

? ? ? ? 一台MAC1电脑将一个包发送给另一台MAC2电脑,当这个包到达交换机的时候,一开始交换机也不知道MAC2的电脑在哪个口,所以没办法,它只能将包转发给出了来的那个口之外的其他所有的口。但是,这个时候,交换机就会记住MAC1是来自一个明确的口,以后所有包的目的地址是MAC1的,直接发送到这个口就可以了。

? ? ? ? 当交换机作为一个关卡一样,过了一点时间之后,就有了整个网络的一个结构了,这个时候,基本上就不用广播了,全部可以准确转发。当然,每个机器的IP地址会变,所在的口也会变,因而交换机上的学习结果,我们称之为转发表,是有一个过期时间的。

? ? ? ? 有了交换机,一般来说,接个几十台上百台机器打游戏,应该没啥问题。

? ? ? ? 小结

? ? ? ? 1.MAC层是用来解决多路访问的堵车问题;

? ? ? ? 2.ARP是通过吼的方式来寻找目标MAC地址的,吼完之后记住一段时间,这个叫做缓存;

? ? ? ? 3.交换机是有MAC地址学习能力的,学完了之后就知道谁在哪儿看了,不用广播了。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:49:02  更:2021-09-23 11:49:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:22:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码