6 从物理层到MAC层

news/2024/7/10 3:10:36 标签: macos, 服务器, 负载均衡
1、实现局域网中玩游戏

在早期的80后的大学宿舍中,组件一个宿舍的局域网,以便于宿舍内部可以玩游戏.

第一层(物理层)

1.首先是实现电脑连接电脑,需要依靠网线,有两个头。
2.一头插在一台电脑的网卡上,另一头插在另一台电脑的网卡上。
3.但是在当时,普通的网线这样是通不了的,所以水晶头要做交叉线,用的就是所谓的1326 交叉接法。
4.水晶头的第 12 和第 36 脚,它们分别起着收、发信号的作用。将一端的 1 号和 3 号线、2 号和 6号线互换一下位置,就能够在物理层实现一端发送的信号,另一端能收到。
5.除了网线要交叉,还需要配置这两台电脑的 IP 地址、子网掩码和默认网关,这三项必须配置成为一个网络,可以一个是192.168.0.1/24,另一个是 192.168.0.2/24,否则是不通的

两台电脑之间的网络包,包含 MAC 层,要完整
到此为止,两台电脑已经构成了一个最小的局域网,也即LAN。可以玩联机局域网游戏

怎么把三台电脑连在一起呢?
Hub(也就是集线器):
这种设备有多个口,可以将宿舍里的多台电脑连接起来。但是,和交换机不同,集线器没有大脑,它完全在物理层工作。它会将自己收到的每一个字节,都复制到其他端口上去(Hub 采取的是广播的模式)。这是第一层物理层联通的方案.

第二层(数据链路层)

1.如果每一台电脑发出的包,宿舍的每个电脑都能收到,那就麻烦了。这就需要解决几个问题:
//=====================================
1. 这个包是发给谁的?谁应该接收?
2. 大家都在发,会不会产生混乱?有没有谁先发、谁后发的规则?
3. 如果发送的时候出现了错误,怎么办?
//这几个问题,都是第二层,数据链路层,也即 MAC 层要解决的问题

MAC:
全称是Medium Access Control,即媒体访问控制
控制什么呢?
其实就是控制在往媒体上发数据的时候,谁先发、谁后发的问题。防止发生混乱

1.这解决的是第二个问题。这个问题中的规则,学名叫多路访问
2.有很多算法可以解决这个问题。就像车管所管束马路上跑的车,能想的办法都想过了
//比如接下来这三种方式
1.方式一:分多个车道。每个车一个车道,你走你的,我走我的。这在计算机网络里叫作信道划分
2.方式二:今天单号出行,明天双号出行,轮着来。这在计算机网络里叫作轮流协议;
3.方式三:不管三七二十一,有事儿先出门,发现特堵,就回去。错过高峰再出。我们叫作随机接入协议。著名的以太网,用的就是这个方式

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

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

1.这种组网的方法,对一个宿舍来说没有问题,但是一旦机器数目增多,问题就出现了.
2.因为 Hub 是广播的,不管某个接口是否需要,所有的 Bit 都会被发送出去,然后让主机来判断是不是需要.
3.把不需要的包转发过去,纯属浪费。看来Hub 这种不管三七二十一都转发的设备是不行了,需要点儿智能的

改进的原理:

1.因为每个口都只连接一台电脑,这台电脑又不怎么换 IPMAC 地址,只要记住这台电脑的 MAC 地址,如果目标 MAC 地址不是这台电脑的,这个口就不用转发了。
//谁能知道目标 MAC 地址是否就是连接某个口的电脑的 MAC 地址呢?
2.这就需要一个能把 MAC 头拿下来,检查一下目标 MAC 地址,然后根据策略转发的设备

交换机

1.交换机怎么知道每个口的电脑的 MAC 地址呢?这需要交换机会学习。
2.一台 MAC1 电脑将一个包发送给另一台 MAC2 电脑,当这个包到达交换机的时候,一开始交换机也不
知道 MAC2 的电脑在哪个口,所以没办法,它只能将包转发给出了来的那个口之外的其他所有的口。
3.但是,这个时候,交换机会干一件非常聪明的事情,就是交换机会记住,MAC1 是来自一个明确的口。以后有包的目的地址是 MAC1 的,直接发送到这个口就可以了。
4.当交换机作为一个关卡一样,过了一段时间之后,就有了整个网络的一个结构了,这个时候,基本上不用广播了,全部可以准确转发。
5.当然,每个机器的 IP 地址会变,所在的口也会变,因而交换机上的学习的结果,我们称为转发表,是有一个过期时间的。

有了交换机,一般来说,你接个几十台、上百台机器打游戏,应该没啥问题。你可以组个战队了。能上网了,就可以玩网游了。


http://www.niftyadmin.cn/n/5153905.html

相关文章

双向链表相关代码

DLinkList.h // // DLinkList.hpp // FirstP // // Created by 赫赫 on 2023/10/31. // 双向链表相关代码&#xff1a;双向链表、循环双向链表#ifndef DLinkList_hpp #define DLinkList_hpp #include <stdio.h> #include <stdlib.h> #include <iostream>…

C++入门指南:string类文档详细解析(非常经典,建议收藏)

C入门指南&#xff1a;string类 一、 string类解读二、 string类的常用接口说明2.1 string类对象的常见构造2.2 string类对象的容量操作2.3 string类对象的访问及遍历操作2.4 string类对象的修改操作2.5 string类非成员函数 一、 string类解读 string类文档 具体如下&#xff…

【LeetCode】187. 重复的DNA序列

187. 重复的DNA序列 难度&#xff1a;中等 题目 DNA序列 由一系列核苷酸组成&#xff0c;缩写为 A, C, G 和 T.。 例如&#xff0c;"ACGAATTCCG" 是一个 DNA序列 。 在研究 DNA 时&#xff0c;识别 DNA 中的重复序列非常有用。 给定一个表示 DNA序列 的字符串 …

二维码智慧门牌管理系统升级:一键报警让你的生活更安全!

文章目录 前言一、升级解决方案的特点二、实施步骤 前言 随着科技的不断进步&#xff0c;我们的生活正在逐渐变得更加智能化。可以想象一下&#xff0c;如果你家的门牌也能拥有这种智能升级&#xff0c;将会带来怎样的改变&#xff1f;今天&#xff0c;让我们一起探讨这令人兴…

使用腾讯云服务器建站流程(新手站长指南)

使用腾讯云服务器搭建网站全流程&#xff0c;包括轻量应用服务器和云服务器CVM建站教程&#xff0c;轻量可以使用应用镜像一键建站&#xff0c;云服务器CVM可以通过安装宝塔面板的方式来搭建网站&#xff0c;腾讯云服务器网txyfwq.com分享使用腾讯云服务器建站教程&#xff0c;…

请求地址‘/operlog‘,发生未知异常

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是全栈工…

yum

什么是yum? Linux中我们也要进行工具/指令/程序&#xff0c;安装&#xff0c;检查卸载等&#xff0c;需要yum的软件 安装软件的方式&#xff1a; 1.源代码安装--交叉编译工作 2.rpm包直接安装 3.yum / apt-get yum:yum是我们linux预装的一个指令&#xff0c;搜索&#x…

基于SSM的教学管理系统(有报告)。Javaee项目。

演示视频&#xff1a; 基于SSM的教学管理系统&#xff08;有报告&#xff09;。Javaee项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringMvc My…