网络配置心得-从switch网络加速出发

news2024/11/26 2:34:52

背景:

在PC上玩战地5饱受外挂毒打,早想接触主机游戏又没有机会。最近突然有个好机遇带我入坑switch,那肯定得赶紧体验一下啊~~
被安利的游戏是斯普拉遁3(splatoon3),是一款switch独占的第三人称射击游戏,主要的玩法就是PVP。这里就存在一个问题,任天堂似乎没有取得GFW的白名单,因此直接在switch上下载游戏速度极慢,同样的由于PVP模式服务器搭建在国外,游戏中按照正常网络裸连后在游戏中匹配基本匹配不到对友和对手。基于此,想办法连接到国外服务器愉快游戏就是本文讲述的核心目的。本人非网络工程科班出身,只有一些最基础网络工程的常识,因此在了解学习这方面内容主要是发现现象,推测,查询资料,验证的模式进行的。本文主要记录在此过程中学习到的一些知识和心得。

通用解决方案–网游加速器

既然连接国外服务器是个问题,那肯定已经有成熟的解决方案,即使用国内一些厂商提供的加速器,如UU加速器。接下来以UU为例,使用方式很简单(简单吧!一个月30),在PC机安装后,选择斯普拉遁3,加速,然后出现以下界面:
在这里插入图片描述
按照其要求,首先加速的PC和switch要在同一个路由下,即属于同一个局域网。然后要求在switch按照显示的IP,网关,子网掩码,和DNS设置,再连接至局域网内即可。操作方式很简单。
话虽如此,但是在实操阶段仍然出现问题,即当我配置完毕后,尝试接入局域网时,switch会提示接入局域网但,但“DNS解析失败”,无法接入互联网,百度找到的解决办法包括但不限于:重启电脑,重启switch,重启路由器,更换DNS,关闭PC防火墙等等,均无效果。这些操作都是治标不治本,了解其中原理才是解决问题的王道。

从IP地址出发

网上有一大堆对IP的解释,按照我的理解,简单的说就说在公网中IP就是唯一的地址,理论直接定位到终端。
那这里第一个问题,以IPv4为例,IPv4是由0.0.0.0-255.255.255.255,32bit的数据构成,最多可以编码2^32即4,294,967,296个地址,那如果我们所使用的每一个设备都占用一个公网IP,全球40多亿网民,每个人还不一定只有一台设备,IP肯定不够了。解决方案就是使用网关,将相近设备组成局域网然后该局域网内设备对公网共用一个IP,从而大大减少公网IP的占用率。

由IP到网关,以及NAT
由上引出第二个问题,局域网内设备对公网共用IP,那局域网连接公网时或者公网往局域网传输数据时如何精准定位到数据请求和接受的终端?实际上仍然是用IP,只不过现在的IP是局域网IP。而代表局域网接收公网数据,将公网IP翻译为对应请求数据的局域网IP,是通过NAT(Network Address Translation)协议实现的。翻译完毕后将数据传送到局域网IP对应的终端,是上述网关要做的事情。所以按照我的理解,从概念上网关是设备,NAT是网关设备中常用的协议,一个是硬件一个是软件。

因此,假如我们的PC连接至路由器并成功连接网络,那PC中网络设置的网关对应的地址就是路由器的地址,往往就是我们配置路由器的局域网IP地址(常见的由192.168.0.1;192.168.1.1;192.168.31.1等等)。在此,不难推测路由器的基本原理–一个集成各项网络协议固件的嵌入式硬件,监听局域网中的网络请求并将其传输到公网,接收数据后再将数据传回请求终端。

这里有个容易令人confuse的点,如下图为switch连接网络成功的截图,其中有个指标为NAT类型,我一开始就很自然地认为那是网速快慢的评价指标,但是在理解NAT的作用后,就有个疑问,既然NAT只是一个协议,协议怎么能衡量网速呢?果然一查发现将NAT类型与网速挂钩是错误的,网速更加直接的评价指标用下面的“连接速度”更加合适。NAT类型描述的是网络的开放程度,越A越开放,数据来者不拒,越后越封闭,传输数据前双方互联的要求就越高。根据我的查询,NAT可以从技术上分为四种类型:full cone NAT,restricted cone,port restricted cone NAT和symmetric NAT,NS(Nintendo switch)将full cone NAT划分为A,其他三种划分为B,因此NAT类型主要和你的连接模式有关,而非和网速有关,NAT类型也是可以通过设置修改的(参考下放链接)。但是不是理论越A网速越快?毕竟所说的越OPEN嘛,这个我就不知道了。之后再试试。
NAT相关参考:NAT类型介绍 ,NAT类型介绍2,switch NAT类型以及修改类型,VPN与NAT
在这里插入图片描述

回到switch加速配置要求–背后的原理
回到我们的问题,在将PC与switch连接在一个局域网后,我被要求按照图一设置IP,掩码与网关,DNS。
此时出现一些比较混乱的局面:
我的PC的局域网IP地址是192.168.31.197
switch的局域网IP是172.24.32.197,网关是172.24.31.197,
UU生成的虚拟网卡IP是172.19.83.237
按照正常理解,switch的数据肯定是要从我PC上走的,所以172.24.31.197这个网关IP对应的应该是我的PC才对,然而此IP实际上和我真实的IP网关不在一个段儿上,而后面两个数又如此相似,所以推测是APR欺骗策略,即192.168.31.197为了和switch 172.24.32.197 握手,声称自己是172.24.31.197,从而实现握手。这里有个知识点是,局域网内的数据包传递是认的实际上是设备MAC,而非认准IP,因此PC欺骗switch实现握手后,172.24.31.197这个就没有用了,switch的数据会向实现握手的MAC,也就是我的PC(192.168.31.197)发送数据。我通过wireshark抓包验证了这一想法。
在这里插入图片描述
紧接着我们就能抓到UU的虚拟网卡(172.19.83.237)开始与另一个IP(172.19.83.238)开始进行数据交换,以及PC(192.168.31.197)与UU加速器设置的一些位于广东的一些IP之间进行握手和数据交换(如下图),广东的服务器可能与国外服务器有专线所以速度更快。
在这里插入图片描述
switch连入网络的同时,虚拟网卡的两个IP之间的交互:
在这里插入图片描述
综上,可以推测这是通过VPN的形式进行链接加速,流程为PC申请与服务器交互,信息被网卡截获(NAT),走隧道到172.19.83.238处理后返回,解析为广东服务器从而实现数据传输和加速。(这段描述是根据个人理解的推测,如有大佬觉得有问题请指出)。

直接使用魔法尝试加速?

我的目的是为了连接到外网的服务器,那是否可以直接使用现成的魔法实现加速呢?答案是可以的,但是和国外服务器专线比起来,稳定性很差,而且由于没有专门的设计,NAT类型为B,但是下载速度是优于UU加速器的,所以只能说术业有专攻,该花的钱还得花。
操作方式,在PC梯子软件设置全局模式并开启“允许局域网加入”,届时会有一个端口开放。然后switch支持http协议的代理服务器,在switch开启代理服务器,IP地址写PC的IP,端口写梯子软件告诉你的端口。然后switch的流量就会经过PC然后以PC的身份收发数据,再由PC传回。
在这里插入图片描述
区分VPN与代理
两者之间还是有区别的,而国内似乎非常喜欢混淆这两个概念。相关的帖子有很多,我就不在这专门写了。
参考:代理(Proxy)和VPN的区别
说一些结论,我们常用的梯子实际上大部分都是代理,不是VPN。因为VPN有数据加密的功能,而虚拟网卡正好可以实现截获数据并进行加密的功能,因此区分两者主要的方式通常就是看开启连接后是否会多出一个多出虚拟网卡。有网卡是VPN,没有网卡是代理。
从抓包分析也可以看出区别:
上述游戏加速器是VPN抓包结果,不再赘述,而代理开启时抓包结果如下:
不开代理的情况下,刷新某网站,PC与某网站 IP之间直接尝试连接(灰色阴影部分),结果没有响应也正常。
在这里插入图片描述
开启代理后,刷新某网站,不再会看到DNS以及某网站本身的IP等信息,只能看到PC在和某台电脑之间交互
在这里插入图片描述

最后

背后的原理我们大概清楚了,那么回到最最一开始问题,即尝试接入局域网时,switch会提示接入局域网但,但“DNS解析失败”。通过了解背后的机制,最后我终于找到了核心原因,那就是加速器当时没有连上他的服务器,因为我什么都没改什么都没做,晚上就连上了。(大哭)

总结

看起来简单的操作背后还是鱿点东西的。欢迎大家批评指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/621614.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python将yyyymmdd转换成yyyy-mm-dd的方法

Python将yyyymmdd转换成yyyy-mm-dd的方法 Python语言不仅易于学习,而且是一种功能强大的语言,广泛应用于数据分析、人工智能和Web开发等领域。在实际开发过程中,我们经常遇到需要将日期格式转换为其他格式的需求。本文将介绍如何使用Python将…

抖音账号矩阵系统|源码|开源代码独立部署难度

抖音账号矩阵系统,短视频账号矩阵系统源码, 短视频矩阵是一种常见的视频编码标准,它通过将视频分成多个小块并对每个小块进行压缩来实现高效的视频传输。在本文中,我们将介绍短视频矩阵的原理和实现,并提供示例代码。 …

谈谈IPv6

最近,在B站看到一个讲解IPv6背景的视频比较热门,而评论区则对IPv6技术有许多误解,这也反映出大家或许对这一新的协议不够了解,本文就谈谈我们生活中的IPv6。 另:前述的B站视频地址电子监听、全国断网,棱镜…

Spring Boot 监听器详解

Spring Boot 3.x系列文章 Spring Boot 2.7.8 中文参考指南(一)Spring Boot 2.7.8 中文参考指南(二)-WebSpring Boot 源码阅读初始化环境搭建Spring Boot 框架整体启动流程详解Spring Boot 系统初始化器详解Spring Boot 监听器详解 监听器的介绍 通过前面的几篇文章&#xff0c…

基于三种机器学习模型的岩爆类型预测及Python实现

写在前面 由于代码较多,本文仅展示部分关键代码,需要代码文件和数据可以留言 然而,由于当时注释不及时,且时间久远,有些细节笔者也记不清了,代码仅供参考 0 引言 岩爆是深部岩土工程施工过程中常见的一种地…

GitHub创建新的项目

想把最近自己做的一些东西整理一下上传到网上进行保存,然后就想到了Github,结果发现自己不会上传,所以去BiliBili大学学习了一下,一下内容主要参考《【程序员一定要掌握的技巧】使用Git上传本地代码到GitHub教程》。 使用Git上传本…

Win10每次开机鼠标桌面右键都会显示撤销删除解决方法

Win10每次开机鼠标桌面右键都会显示撤销删除解决方法分享。有用户电脑开机的时候,就会自动弹出撤销删除的窗口了。那么这个问题是怎么回事呢?接下来我们就一起来看看以下的详细操作方法教学吧。 情况一: 如果是联想,在联想管家把联…

Android 中的 NDK 到底是什么?(详细解析+案例实战)

NDK 提供了一系列的工具,帮助开发者快速开发 C (或 C )的动态库,并能自动将 so 和 java 应用一起打包成 apk;这些工具对开发者的帮助是巨大的 什么是 NDK ? Android 原生开发包 NDK(Native Delopment kits )将用于 Android 平台上…

Vue中process.env关键字,process.env.VUE_APP_BASE_API

1.process.env 是Node.js 中的一个环境 打开命令行查看环境: 2.process.env与Vue CLI 项目 Vue Cli 有以下三种运行模式 development 模式用于 vue-cli-service serve test 模式用于 vue-cli-service test:unit production 模式用于 vue-cli-service build 和 vue-c…

pip安装教程 python(针对于Windows系统)

1.什么是pip pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。 目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具。 pip 官网:https://pypi.org/project/pip/ 2.判断本机是否安装p…

chatgpt赋能python:Python中如何将NaN变为0

Python中如何将NaN变为0 Python是一种动态、强类型的编程语言,因其简单易学、功能强大,被广泛应用于各种领域。其中NumPy和Pandas是数据科学界最常用的Python库,而在数据处理中,处理缺失值通常是必不可少的。本文将介绍如何使用P…

学成在线----day3

1、JSR303校验 对填入的数据自动做一些约束 package com.xuecheng.content.model.dto;import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data;import javax.validation.constraints.NotEmpty; import javax.validati…

PyCharm安装教程(2023年,3月)

下载PyCharm之前需要准备下载Python 链接:Python安装教程 一、PyCharm下载 1、进入JetBrains官网: 官网地址:https://www.jetbrains.com/ 2、点击【Developer Tools】 开发者工具,选择【PyCharm】点击跳转到PyCharm界面。点击…

【Docker】 7.Docker Internet

文章目录 Docker InternetDocker Internet CommandDocker Bridge Internetdocker Host InternetDocker Container InternetDocker None Internet Docker Internet Docker 网络架构采用的设计规范是CNM(Container Network Model)。CNM中规定了Docker网络…

RK3588平台开发系列讲解(同步与互斥篇)自旋锁死锁实验

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、自旋锁死锁二、实验程序的编写2.1、驱动程序编写2.2、编写测试 APP沉淀、分享、成长,让自己和他人都能有所收获!😄 📢自旋锁若是使用不当就会产生死锁,在本篇将会对自旋锁的特殊情况-死锁进行讲解。 一、自…

0801详解-redux-react

文章目录 1 redux1.1 概述1.2 示例实现页面数字的加、减1.3 异步加-异步action 2 react-redux2.1 概述2.2 优化示例代码 3 数据共享4 redux开发者工具5 小结5.1 求和案例_redux精简版5.2 求和案例_redux完整版5.3 求和案例_redux异步action版5.4 求和案例_react-redux基本使用5…

【哈士奇赠书活动 - 25期】-〖Python自动化办公应用大全(ChatGPT版) 〗

文章目录 ⭐️ 赠书 - 《Python自动化办公应用大全(ChatGPT版)》⭐️ 内容简介⭐️ 作者简介⭐️ 编辑推荐⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书 - 《Python自动化办公应用大全(ChatGPT版)》 ⭐️ 内容简介 本书全面系统地介绍了P…

使用YOLOv5实现图片、视频的目标检测

推断的准备工作 接下来我将从官方代码开始,一步一步展示如何进行图片、视频识别 首先从GitHub下载官方代码(也可以从下面链接获取): 链接:https://pan.baidu.com/s/16wzV899D90TY2Xwhx4TwhA 提取码:vzvj …

MYSQL必知必会,详尽入门,一文帮你学会SQL必知必会

目录 前言 数据库的概念和术语 SQL语言和组成 DDL show : 展示当前已有的数据库或者表 create :创建一个数据库或者一个表 drop :删除表、数据库对象或者视图 alter :修改现有的数据库对象,例如 修改表的属性或者字段 (…

geth下载安装配置环境及联盟链的搭建

以太坊概论考察课 更具课堂教学讲解,参考开放资料。使用所学的知识,创建项目并完成要求的内容。包含的功能和要求具体如下: 一:安装并运行geth客户端 1、下载安装geth 首先下载geth:https://geth.ethereum.org/dow…