如何在宿舍中自己组网玩联机游戏(MAC、ip、CRC)——组队开黑联机走起

2023-11-05 07:30

本文主要是介绍如何在宿舍中自己组网玩联机游戏(MAC、ip、CRC)——组队开黑联机走起,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        机器想要在网络环境中和其他机器开展沟通,就必须拥有自己的ip地址。那么怎样才能将两台电脑连接起来呢?

        你会说,买个路由器不就行了。(路由器通过路由链路将不同ip地址的机器连接在一起。所以无线网是通过路由器将手机与电脑的网线链路在一起,这样手机就可以进入电脑所在的网络)。

        但当没有路由器时该怎么办呢?下面就来介绍如何通过物理层和链路层搭建一个局域网。

一、第一层:物理层

        使用路由器构建局域网是直接从第三层即ip所在层(网络层)实现的。

        那么物理层究竟可以折腾什么呢?

        在物理层,我们通过电脑连电脑的网线将两台电脑连接在一起。这种方式就是一根网线,有两个头。一头插在一台电脑的网卡上,另一头插在另一台电脑的网卡上。但是在当时,普通的网线这样是通不了的,所以水晶头要做交叉线,用的就是所谓的 1-3、2-6 交叉接法。

        水晶头的1,2脚:收信号;水晶头的3,6脚:发信号; 将一端的1和3号线换一下位置,2和6号线换一下位置,这样的线两端各连上一台计算机,就可以实现通信,当然,两台计算机的 IP 要配在一个网络中才行; 这样组成的局域网叫 LAN;

        当然电脑连电脑,除了网线要交叉,还需要配置这两台电脑的 IP 地址、子网掩码和默认网关。要想两台电脑能够通信,这三项必须配置成为一个网络,可以一个是 192.168.0.1/24,另一个是 192.168.0.2/24,否则是不通的。

        此时这两台电脑已经构成一个最小的局域网了,这两台电脑之间的网络包包含MAC层,网络包不可以是“空中楼阁”,必须包含下层。

        当需要在这个最小的局域网中接入第三台电脑时该怎么办呢?

        有一个叫做 Hub 的东西,也就是集线器。这种设备有多个口,可以将宿舍里的多台电脑连接起来。但是,和交换机不同,集线器没有大脑,它完全在物理层工作。它会将自己收到的每一个字节,都复制到其他端口上去。这是第一层物理层联通的方案。

集线器hub工作在物理层,且是广播模式

二、数据链路层(MAC层)

2.1 hub的缺点

1. 这个网络包是发送给谁的?谁应该接受?

2. 同时很多台机器发送网络包会不会产生混乱?如何确定先后顺序?

3. 如果包发送时出错该怎么办?

2.2 解决问题一

        解决发给谁,谁接受的问题,这里用到一个物理地址叫作链路层地址即MAC地址。解决第一个问题就牵扯到第二层的网络包格式。对于以太网,第二层的最开始,就是目标的 MAC 地址和源的 MAC 地址。

         接下来是类型,大部分的类型是 IP 数据包,然后 IP 里面包含 TCP、UDP,以及 HTTP 等,这都是里层封装的事情。有了这个目标 MAC 地址,数据包在链路上广播,MAC 的网卡才能发现,这个包是给它的。MAC 的网卡把包收进来,然后打开 IP 包,发现 IP 地址也是自己的,再打开 TCP 包,发现端口是自己,也就是 80,而 nginx 就是监听 80。

 

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

CRC(循环冗余检测)使用的算法是XOR异或算法。 这个CRC(循环冗余检测)解决的是:在网络上传输数据出错的问题。 现在终于知道为什么其他层都只是加个头部。而数据链路层不仅得加头部还得加尾部。 加头部加的是源MAC地址和目标MAC地址,是为了解决这个网络包发给谁的问题。 加尾部加的是CRC(循环冗余检测),是为了解决这个网络包在网络上传输数据出错的问题。       

        ARP协议:在一个局域网里面,当知道了 IP 地址,不知道 MAC 怎么办呢?靠“吼”。(所谓吼就是广播的意思)

        为了避免机器每次都使用ARP协议发送ARP请求,在每台机器的本地会进行ARP缓存。--<(只要涉及到缓存,那就是空间换时间的设计思想)。 1、一般机器都是先查本地ARP缓存。 2、本地ARP缓存查不到,再去发送ARP请求在局域网中去找目标IP地址对应的MAC地址。

2.3 解决问题二

        MAC 的全称是 Medium Access Control,即媒体访问控制。控制什么呢?其实就是控制在往媒体上发数据的时候,谁先发、谁后发的问题。防止发生混乱。这解决的是第二个问题。这个问题中的规则,学名叫多路访问。(MAC层和MAC地址是两码事)

1.方法一:

        分多个车道。每个车一个车道,你走你的,我走我的。这在计算机网络里叫作信道划分;(有点像多线程的思想)

2. 方法二:

        今天单号出行,明天双号出行,轮着来。这在计算机网络里叫作轮流协议;

3. 方法三:

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

2.4 解决问题三(循环冗余检测算法:二进制流作为多项式系数进行多项式乘除法运算在合并时进行模2运算)

CRC 算法的基本思想是将传输的数据当做一个位数很长的数。将这个数除以另一个数。得到的余数作为校验数据附加到原数据后面。例如:

6、23、4 可以看做一个2进制数: 0000011000010111 00000010

假如被除数选9,二进制表示为:1001

则除法运算可以表示为:

 

可以看到,最后的余数为1。如果我们将这个余数作为校验和的话,传输的数据则是:6、23、4、1。

CRC 算法和这个过程有点类似,不过采用的不是上面例子中的通常的这种除法。在CRC算法中,将二进制数据流作为多项式的系数,然后进行的是多项式的乘除法。还是举个例子吧。

比如说我们有两个二进制数,分别为:1101 和1011。

1101 与如下的多项式相联系:1x3+1x2+0x1+1x0=x3+x2+x0

1011与如下的多项式相联系:1x3+0x2+1x1+1x0=x3+x1+x0

两个多项式的乘法:(x3+x2+x0)(x3+x1+x0)=x6+x5+x4+x3+x3+x3+x2+x1+x0

得到结果后,合并同类项时采用模2运算。也就是说乘除法采用正常的多项式乘除法,而加减法都采用模2运算。所谓模2运算就是结果除以2后取余数。比如3 mod 2 = 1。因此,上面最终得到的多项式为:x6+x5+x4+x3+x2+x1+x0,对应的二进制数:111111

加减法采用模2运算后其实就成了一种运算了,就是我们通常所说的异或运算:

0+0=00-0=0
0+1=10-1=1
1+1=01-0=1
1+0=11-1=0

常用多项式如下:

详见:循环冗余校验(CRC)算法入门引导

三、局域网

        通过hub连接在机器数目少时可以接受,但机器数目一旦增多就会出现问题。因为 Hub 是广播的,不管某个接口是否需要,所有的 Bit 都会被发送出去,然后让主机来判断是不是需要。这种方式路上的车少就没问题,车一多,产生冲突的概率就提高了。而且把不需要的包转发过去,纯属浪费。

        此时我们就需要使用到交换机

        交换机怎么知道每个口的电脑的 MAC 地址呢?

        这需要交换机会学习。一台 MAC1 电脑将一个包发送给另一台 MAC2 电脑,当这个包到达交换机的时候,一开始交换机也不知道 MAC2 的电脑在哪个口,所以没办法,它只能将包转发给除了来的那个口之外的其他所有的口。但是,这个时候,交换机会干一件非常聪明的事情,就是交换机会记住,MAC1 是来自一个明确的口。以后有包的目的地址是 MAC1 的,直接发送到这个口就可以了。(交换机第一次不知道目标是谁,会进行广播,一旦发现这个目标,就会记录下目标的地址,下一次发送会针对性的发送。即交换机的学习过程

这篇关于如何在宿舍中自己组网玩联机游戏(MAC、ip、CRC)——组队开黑联机走起的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_45749480/article/details/120103420
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/348325

相关文章

如何在Mac上彻底删除Edge账户? 手动卸载Edge浏览器并清理残留文件技巧

《如何在Mac上彻底删除Edge账户?手动卸载Edge浏览器并清理残留文件技巧》Mac上的Edge账户里存了不少网站密码和个人信息,结果同事一不小心打开了,简直尴尬到爆炸,想要卸载edge浏览器并清... 如果你遇到 Microsoft Edge 浏览器运行迟缓、频繁崩溃或网页加载异常等问题,可以尝试多种方

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

电脑蓝牙连不上怎么办? 5 招教你轻松修复Mac蓝牙连接问题的技巧

《电脑蓝牙连不上怎么办?5招教你轻松修复Mac蓝牙连接问题的技巧》蓝牙连接问题是一些Mac用户经常遇到的常见问题之一,在本文章中,我们将提供一些有用的提示和技巧,帮助您解决可能出现的蓝牙连接问... 蓝牙作为一种流行的无线技术,已经成为我们连接各种设备的重要工具。在 MAC 上,你可以根据自己的需求,轻松地

如何关闭Mac的Safari通知? 3招教你关闭Safari浏览器网站通知的技巧

《如何关闭Mac的Safari通知?3招教你关闭Safari浏览器网站通知的技巧》当我们在使用Mac电脑专注做一件事情的时候,总是会被一些消息推送通知所打扰,这时候,我们就希望关闭这些烦人的Mac通... Safari 浏览器的「通知」功能本意是为了方便用户及时获取最新资讯,但很容易被一些网站滥用,导致我们

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I