深入学习网络协议5:从物理层到MAC层:如何在宿舍里自己组网玩联机游戏?
引用上一节我们见证了 IP 地址的诞生或者说是整个操作系统的诞生。一旦机器有了 IP就可以在网络的环境里和其他的机器展开沟通了。故事就从我的大学宿舍开始讲起吧。作为一个八零后我要暴露年龄了。我们宿舍四个人大一的时候学校不让上网不给开通网络。但是宿舍有一个人比较有钱率先买了一台电脑。那买了电脑干什么呢首先有单机游戏可以打比如说《拳皇》。两个人用一个键盘照样打得火热。后来有第二个人买了电脑那两台电脑能不能连接起来呢你会说当然能啊买个路由器不就行了。现在一台家用路由器非常便宜一百多块的事情。那时候路由器绝对是奢侈品。一直到大四我们宿舍都没有买路由器。可能是因为那时候技术没有现在这么发达导致我对网络技术的认知是逐渐深入的而且每一层都是实实在在接触到的。第一层物理层使用路由器是在第三层上。我们先从第一层物理层开始说。物理层能折腾啥现在的同学可能想不到我们当时去学校配电脑的地方买网线卖网线的师傅都会问你的网线是要电脑连电脑啊还是电脑连网口啊我们要的是电脑连电脑。这种方式就是一根网线有两个头。一头插在一台电脑的网卡上另一头插在另一台电脑的网卡上。但是在当时普通的网线这样是通不了的所以水晶头要做交叉线用的就是所谓的 13、26 交叉接法。水晶头的第 1、2 和第 3、6 脚它们分别起着收、发信号的作用。将一端的 1 号和 3 号线、2 号和 6 号线互换一下位置就能够在物理层实现一端发送的信号另一端能收到。当然电脑连电脑除了网线要交叉还需要配置这两台电脑的 IP 地址、子网掩码和默认网关。这三个概念上一节详细描述过了。要想两台电脑能够通信这三项必须配置成为一个网络可以一个是 192.168.0.1/24另一个是 192.168.0.2/24否则是不通的。这里我想问你一个问题两台电脑之间的网络包包含 MAC 层吗当然包含要完整。IP 层要封装了 MAC 层才能将包放入物理层。到此为止两台电脑已经构成了一个最小的局域网也即 LAN。可以玩联机局域网游戏啦等到第三个哥们也买了一台电脑怎么把三台电脑连在一起呢先别说交换机当时交换机也贵。有一个叫做 Hub 的东西也就是集线器。这种设备有多个口可以将宿舍里的多台电脑连接起来。但是和交换机不同集线器没有大脑它完全在物理层工作。它会将自己收到的每一个字节都复制到其他端口上去。这是第一层物理层联通的方案。第二层数据链路层你可能已经发现问题了。Hub 采取的是广播的模式如果每一台电脑发出的包宿舍的每个电脑都能收到那就麻烦了。这就需要解决几个问题这个包是发给谁的谁应该接收大家都在发会不会产生混乱有没有谁先发、谁后发的规则如果发送的时候出现了错误怎么办这几个问题都是第二层数据链路层也即 MAC 层要解决的问题。MAC 的全称是 Medium Access Control即媒体访问控制。控制什么呢其实就是控制在往媒体上发数据的时候谁先发、谁后发的问题。防止发生混乱。这解决的是第二个问题。这个问题中的规则学名叫多路访问。有很多算法可以解决这个问题。就像车管所管束马路上跑的车能想的办法都想过了。比如接下来这三种方式方式一分多个车道。每个车一个车道你走你的我走我的。这在计算机网络里叫作信道划分方式二今天单号出行明天双号出行轮着来。这在计算机网络里叫作轮流协议方式三不管三七二十一有事儿先出门发现特堵就回去。错过高峰再出。我们叫作随机接入协议。著名的以太网用的就是这个方式。解决了第二个问题就是解决了媒体接入控制的问题MAC 的问题也就解决好了。这和 MAC 地址没什么关系。接下来要解决第一个问题发给谁谁接收这里用到一个物理地址叫作链路层地址。但是因为第二层主要解决媒体接入控制的问题所以它常被称为MAC 地址。解决第一个问题就牵扯到第二层的网络包格式。对于以太网第二层的最开始就是目标的 MAC 地址和源的 MAC 地址。接下来是类型大部分的类型是 IP 数据包然后 IP 里面包含 TCP、UDP以及 HTTP 等这都是里层封装的事情。有了这个目标 MAC 地址数据包在链路上广播MAC 的网卡才能发现这个包是给它的。MAC 的网卡把包收进来然后打开 IP 包发现 IP 地址也是自己的再打开 TCP 包发现端口是自己也就是 80而 nginx 就是监听 80。于是将请求提交给 nginxnginx 返回一个网页。然后将网页需要发回请求的机器。然后层层封装最后到 MAC 层。因为来的时候有源 MAC 地址返回的时候源 MAC 就变成了目标 MAC再返给请求的机器。对于以太网第二层的最后面是 CRC也就是循环冗余检测。通过 XOR 异或的算法来计算整个包是否在发送的过程中出现了错误主要解决第三个问题。这里还有一个没有解决的问题当源机器知道目标机器的时候可以将目标地址放入包里面如果不知道呢一个广播的网络里面接入了 N 台机器我怎么知道每个 MAC 地址是谁呢这就是 ARP 协议也就是已知 IP 地址求 MAC 地址的协议。在一个局域网里面当知道了 IP 地址不知道 MAC 怎么办呢靠“吼”。广而告之发送一个广播包谁是这个 IP 谁来回答。具体询问和回答的报文就像下面这样为了避免每次都用 ARP 请求机器本地也会进行 ARP 缓存。当然机器会不断地上线下线IP 也可能会变所以 ARP 的 MAC 地址缓存过一段时间就会过期。局域网好了至此我们宿舍四个电脑就组成了一个局域网。用 Hub 连接起来就可以玩局域网版的《魔兽争霸》了。打开游戏进入“局域网选项”选择一张地图点击“创建游戏”就可以进入这张地图的房间中。等同一个局域网里的其他小伙伴加入后游戏就可以开始了。这种组网的方法对一个宿舍来说没有问题但是一旦机器数目增多问题就出现了。因为 Hub 是广播的不管某个接口是否需要所有的 Bit 都会被发送出去然后让主机来判断是不是需要。这种方式路上的车少就没问题车一多产生冲突的概率就提高了。而且把不需要的包转发过去纯属浪费。看来 Hub 这种不管三七二十一都转发的设备是不行了需要点儿智能的。因为每个口都只连接一台电脑这台电脑又不怎么换 IP 和 MAC 地址只要记住这台电脑的 MAC 地址如果目标 MAC 地址不是这台电脑的这个口就不用转发了。谁能知道目标 MAC 地址是否就是连接某个口的电脑的 MAC 地址呢这就需要一个能把 MAC 头拿下来检查一下目标 MAC 地址然后根据策略转发的设备按第二节课中讲过的这个设备显然是个二层设备我们称为交换机。交换机怎么知道每个口的电脑的 MAC 地址呢这需要交换机会学习。一台 MAC1 电脑将一个包发送给另一台 MAC2 电脑当这个包到达交换机的时候一开始交换机也不知道 MAC2 的电脑在哪个口所以没办法它只能将包转发给除了来的那个口之外的其他所有的口。但是这个时候交换机会干一件非常聪明的事情就是交换机会记住MAC1 是来自一个明确的口。以后有包的目的地址是 MAC1 的直接发送到这个口就可以了。当交换机作为一个关卡一样过了一段时间之后就有了整个网络的一个结构了这个时候基本上不用广播了全部可以准确转发。当然每个机器的 IP 地址会变所在的口也会变因而交换机上的学习的结果我们称为转发表是有一个过期时间的。有了交换机一般来说你接个几十台、上百台机器打游戏应该没啥问题。你可以组个战队了。能上网了就可以玩网游了。小结好了今天的内容差不多了我们来总结一下有三个重点需要你记住第一MAC 层是用来解决多路访问的堵车问题的第二ARP 是通过吼的方式来寻找目标 MAC 地址的吼完之后记住一段时间这个叫作缓存第三交换机是有 MAC 地址学习能力的学完了它就知道谁在哪儿了不用广播了。

相关新闻

48路无纸记录仪:工业数据采集与并行处理技术解析

48路无纸记录仪:工业数据采集与并行处理技术解析

1. 48路无纸记录仪:工业数据采集的"全能选手" 在工业自动化领域,数据记录仪就像产线的"黑匣子",而48路无纸记录仪则是这个领域的重型装备。我第一次接触这类设备是在某化工厂的DCS系统改造项目中——当时需要同时监测反应…

2026/7/26 6:11:58 阅读更多 →
Umi-OCR完全指南:3分钟掌握离线文字识别技巧

Umi-OCR完全指南:3分钟掌握离线文字识别技巧

Umi-OCR完全指南:3分钟掌握离线文字识别技巧 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。 项…

2026/7/26 20:23:34 阅读更多 →
3分钟安装Figma中文插件:让设计工具说你的母语!

3分钟安装Figma中文插件:让设计工具说你的母语!

3分钟安装Figma中文插件:让设计工具说你的母语! 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma全英文界面而头疼吗?每次设计时都要在脑海…

2026/7/26 20:23:34 阅读更多 →

最新新闻

大厂Java技术栈与微服务架构深度解析

大厂Java技术栈与微服务架构深度解析

1. 大厂Java技术栈全景解析 最近三年头部互联网企业的Java技术栈已经形成了相对稳定的技术矩阵,根据我对阿里、腾讯、字节等大厂的跟踪观察,当前主流技术栈呈现明显的分层特征: 1.1 基础能力层 大厂对Java基础能力的考察始终保持着极高标准…

2026/7/30 10:49:22 阅读更多 →
C++集群聊天客户端核心模块:登录、注册与退出业务的设计与实现

C++集群聊天客户端核心模块:登录、注册与退出业务的设计与实现

1. 项目概述与核心价值最近在重构一个老旧的即时通讯系统,其中客户端的登录、注册、退出模块是用户旅程的起点和终点,也是系统安全与稳定性的基石。这个“集群聊天服务器项目”的客户端业务模块,远不止是发个请求、收个响应那么简单。它涉及到…

2026/7/30 10:49:22 阅读更多 →
论文写作软件核心需求与选型指南

论文写作软件核心需求与选型指南

1. 论文写作软件的核心需求解析写论文这件事,从本科到博士再到学术生涯,每个阶段都像在升级打怪。十年前我们还在用WordEndNote的组合硬扛,现在市面上已经涌现出几十种号称能"拯救学术狗"的写作工具。但选择太多反而让人更焦虑——…

2026/7/30 10:49:22 阅读更多 →
前端成功转型AI全栈,我踩过的坑都替你填上了

前端成功转型AI全栈,我踩过的坑都替你填上了

一、为什么选择从前端转向AI全栈 做了几年前端开发后,我发现自己陷入了技术瓶颈期:每天重复着页面切图、接口联调、状态管理,虽然熟练但成长空间越来越小。AI浪潮袭来时,我意识到这是一个难得的转型窗口——前端工程师对交互、可…

2026/7/30 10:49:22 阅读更多 →
如何快速掌握微信自动抢红包:新手指南与完整教程

如何快速掌握微信自动抢红包:新手指南与完整教程

如何快速掌握微信自动抢红包:新手指南与完整教程 【免费下载链接】WeChatLuckyMoney :money_with_wings: WeChats lucky money helper (微信抢红包插件) by Zhongyi Tong. An Android app that helps you snatch red packets in WeChat groups. 项目地址: https:…

2026/7/30 10:49:22 阅读更多 →
3分钟搞定Android Studio中文界面:告别英文困扰,拥抱中文开发体验

3分钟搞定Android Studio中文界面:告别英文困扰,拥抱中文开发体验

3分钟搞定Android Studio中文界面:告别英文困扰,拥抱中文开发体验 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePa…

2026/7/30 10:48:22 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻