《计算机网络简易速速上手小册》第5章:无线网络和移动通信(2024 最新版)
5.1 WLAN的工作原理 - 揭秘无线局域网络的魔法
5.1.1 基础知识
无线局域网络(WLAN)允许设备通过无线方式连接到一个局部区域网络,主要基于IEEE 802.11标准,俗称Wi-Fi。WLAN的核心是无线路由器,它不仅充当着网络中各设备间通信的中介,还连接到互联网,为设备提供网上冲浪的能力。
- 频段:WLAN通常在2.4GHz和5GHz频段上工作,5GHz提供更快的速度,而2.4GHz则提供更远的覆盖范围。
- 加密:为了保护传输的数据,WLAN支持多种加密协议,如WPA2和WPA3,确保通信安全。
- 接入点(AP):无线接入点提供无线设备连接到有线网络的接口,多个AP可以扩大网络覆盖范围。
5.1.2 重点案例:使用 Python 监控 WLAN 状态
虽然 Python 不能直接管理无线硬件,但我们可以使用它来监控 WLAN 的状态,例如,检查当前连接的网络强度。
import subprocessdef check_wifi_strength():command = "netsh wlan show interfaces"result = subprocess.run(command, capture_output=True, text=True, shell=True)if result.stdout:lines = result.stdout.split('\n')for line in lines:if "信号" in line or "Signal" in line: # 根据系统语言选择print(line.strip())else:print("Failed to check WLAN strength.")check_wifi_strength()
这个简单的函数使用Windows的netsh
命令来获取当前连接的WLAN信号强度,对于诊断网络问题非常有用。
5.1.3 拓展案例1:使用 Python 创建简单的网络扫描器
我们可以用Python来开发一个简单的网络扫描器,以发现附近的WLAN网络。
import subprocessdef scan_wifi_networks():command = "netsh wlan show networks mode=Bssid"networks = subprocess.check_output(command, shell=True).decode('utf-8', errors="ignore")print(networks)scan_wifi_networks()
这个脚本利用netsh
命令列出了所有可见的WLAN网络及其BSSID,对于寻找和诊断网络非常有帮助。
5.1.4 拓展案例2:使用 Python 切换 WLAN 网络
在某些情况下,自动切换到最优的WLAN网络可能是必需的。以下是如何使用Python脚本来实现这一功能的基础示例。
def connect_to_wifi(ssid, password):config = f"""<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"><name>{ssid}</name><SSIDConfig><SSID><name>{ssid}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><connectionMode>auto</connectionMode><MSM><security><authEncryption><authentication>WPA2PSK</authentication><encryption>AES</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>passPhrase</keyType><protected>false</protected><keyMaterial>{password}</keyMaterial></sharedKey></security></MSM></WLANProfile>"""command = f'netsh wlan add profile filename="profile.xml" interface="Wi-Fi" user=current'with open("profile.xml", "w") as file:file.write(config)subprocess.run(command, shell=True)connect_command = f'netsh wlan connect name="{ssid}" ssid="{ssid}" interface="Wi-Fi"'subprocess.run(connect_command, shell=True)connect_to_wifi("YourSSID", "YourPassword")
在使用这段脚本之
前,请确保替换YourSSID
和YourPassword
为你想连接的网络SSID和密码。这个示例首先创建了一个包含网络配置的XML文件,然后使用netsh
命令添加该配置文件并连接到网络。
通过这些案例,你不仅学到了WLAN的基础知识,还掌握了如何使用Python进行WLAN状态监控、网络扫描和自动切换网络。这些技能在日常生活和工作中都极其实用,帮助你更好地管理和优化你的无线网络连接。
5.2 移动网络演进 - 从模拟到 5G 的旅程
5.2.1 基础知识
移动网络技术的发展可以被视为通信技术进步的缩影,从1G的模拟语音通信到5G的高速数据传输,每一代技术的演进都极大地扩展了移动通信的能力和应用。
- 1G:1980年代,第一代移动通信技术,提供了基本的模拟语音服务。
- 2G:1990年代初,引入数字通信,支持文本消息(SMS)和低速数据传输。
- 3G:2000年代初,提高了数据传输速率,支持了视频通话和移动互联网接入。
- 4G LTE:2010年代,大幅提升了数据传输速率,实现了高清视频流、在线游戏和高速互联网接入。
- 5G:最新一代移动通信技术,进一步提高了速度和减少了延迟,支持大规模物联网应用、增强现实(AR)和虚拟现实(VR)。
5.2.2 重点案例:使用 Python 监控网络信号强度
虽然Python无法直接访问移动网络硬件,但我们可以编写脚本来分析和监控移动网络连接的信号强度,特别是在与移动设备或模块如4G/5G模块交互时。
# 此示例假设你有一个可以通过AT命令查询网络状态的4G/5G模块连接到计算机import subprocessdef check_signal_strength():# 发送AT命令查询信号强度,这里使用的命令和设备依赖于你的硬件command = 'echo "AT+CSQ" > /dev/ttyUSB2'process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)output, error = process.communicate()if error:print(f"Error: {error}")else:print(f"Signal strength: {output}")check_signal_strength()
请根据你的硬件和环境调整命令和设备路径。
5.2.3 拓展案例1:使用 Python 和 API 获取当前的移动网络状态
许多现代移动设备和模块支持通过API查询网络状态。以下是一个使用Python请求网络状态API的示例,这可以应用于那些提供了REST API接口的移动网络模块或设备。
import requestsdef get_network_status(api_url):response = requests.get(api_url)if response.status_code == 200:data = response.json()print(f"Network status: {data['status']}")else:print("Failed to get network status")get_network_status('http://your-device-api/network-status')
在使用此脚本之前,需要将your-device-api
替换为你的设备API的实际URL。
5.2.4 拓展案例2:使用 Python 分析移动网络性能数据
假设我们有一组移动网络性能的日志数据,我们可以使用Python来分析这些数据,识别网络性能的趋势和问题。
import pandas as pd# 假设我们有一个CSV文件,记录了网络性能数据
def analyze_network_performance(csv_file):df = pd.read_csv(csv_file)# 示例:计算平均下载速度avg_download_speed = df['download_speed'].mean()print(f"Average download speed: {avg_download_speed} Mbps")analyze_network_performance('network_performance.csv')
在运行此脚本之前,请确保已安装Pandas库,并且你有一个包含download_speed
列的 CSV 文件,记录了下载速度的数据。
通过这些案例,你不仅对移动网络的发展有了基本的了解,还学会了如何使用 Python 进行移动网络的监控、状态查询和性能分析。这些技能对于优化网络连接、提高移动应用的性能非常有用。
5.3 无线安全协议 - 加固你的无形城墙
5.3.1 基础知识
无线安全协议是无线网络中不可或缺的,它们确保数据在空中传输时的安全性。随着无线技术的发展,安全协议也在不断进化,以应对日益增长的安全威胁。
- WEP (Wired Equivalent Privacy):最早的无线安全协议,目前已被证明容易受到攻击,不再推荐使用。
- WPA (Wi-Fi Protected Access):WEP的替代者,提供了更强的安全性,但随着时间的推移,其某些实现也显示出弱点。
- WPA2 (Wi-Fi Protected Access 2):目前最广泛使用的无线安全协议,采用了AES加密算法,提供了更加强大的安全保障。
- WPA3 (Wi-Fi Protected Access 3):最新的安全协议,进一步增强了无线网络的安全性,引入了更强的加密方法和改进了公共网络的安全性。
5.3.2 重点案例:使用 Python 扫描网络安全协议
虽然Python本身不提供直接扫描无线网络安全协议的功能,我们可以通过调用系统命令或使用第三方库来实现这一功能。以下是一个使用Python和scapy
库扫描附近无线网络并识别它们使用的安全协议的示例。
首先,确保安装scapy
:
pip install scapy
然后,运行以下脚本:
from scapy.all import *def scan_wifi_security():networks = {}def packet_handler(pkt):if pkt.haslayer(Dot11Beacon):ssid = pkt[Dot11Elt].info.decode()bssid = pkt[Dot11].addr2try:security = pkt.sprintf("{Dot11Beacon:%Dot11Beacon.cap%}").split('+')[1]except IndexError:security = 'unknown'networks[bssid] = {'SSID': ssid, 'Security': security}sniff(iface="wlan0", prn=packet_handler, timeout=10)for bssid, info in networks.items():print(f"{info['SSID']} - {info['Security']}")scan_wifi_security()
请将"wlan0"
替换为你的无线接口名称。
5.3.3 拓展案例1:使用 Python 验证 WPA2 网络的密码强度
我们可以编写一个Python脚本,利用已知的密码字典对WPA2网络进行密码强度测试(注意:仅在你拥有网络的合法权限下进行)。
# 此案例为概念性描述,未提供完整代码,因涉及安全和合法性问题。def test_wpa2_password_strength(ssid, password_file):print(f"Testing password strength for SSID: {ssid}")# 读取密码文件,尝试连接到网络,记录成功的密码# 注意:实际操作应确保遵守法律法规test_wpa2_password_strength("YourSSID", "passwords.txt")
5.3.4 拓展案例2:使用 Python 监控无线网络的安全事件
通过监听网络上的特定事件,我们可以使用Python来监控可能的安全威胁,如异常的认证尝试。
# 此案例同样为概念性描述,具体实现需根据实际情况和法律法规进行。def monitor_security_events(interface):print(f"Monitoring security events on {interface}")# 使用Scapy或类似工具监听无线网络事件,如认证失败、奇怪的MAC地址等monitor_security_events("wlan0")
通过这些案例,你已经了解了无线安全协议的重要性以及如何使用Python进行基本的无线网络安全扫描和监控。这些技能对于保护你的无线网络不受未授权访问和其他安全威胁至关重要。
相关文章:

《计算机网络简易速速上手小册》第5章:无线网络和移动通信(2024 最新版)
5.1 WLAN的工作原理 - 揭秘无线局域网络的魔法 5.1.1 基础知识 无线局域网络(WLAN)允许设备通过无线方式连接到一个局部区域网络,主要基于IEEE 802.11标准,俗称Wi-Fi。WLAN的核心是无线路由器,它不仅充当着网络中各设…...

2024PMP考试新考纲-近年PMP真题练一练和很详细解析(3)
今天华研荟继续为您分享和解析PMP真题,一方面让大家感受实际的PMP考试和出题形式,另一方面是通过较详细的解题思路和知识讲解帮助大家最后一个多月有效备考,一次性3A通过2024年PMP考试。 2024年PMP考试新考纲-近年真题随机练一练 (注&#x…...

java SpringBoot2.7整合Elasticsearch(ES)7 进行文档增删查改
首先 我们在 ES中加一个 books 索引 且带有IK分词器的索引 首先 pom.xml导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>applicatio…...

动态内存管理(2)
文章目录 4. 几个经典的笔试题4.1 题目14.2 题目24.3 题目34.4 题目4 5. C/C程序的内存开辟6. 动态通讯录7. 柔性数组7.1 柔性数组的特点7.2 柔性数组的使用7.3 柔性数组的优势 4. 几个经典的笔试题 4.1 题目1 #include <stdio.h> #include <stdlib.h> #include …...

使用 git 上传文件时,运行 命令 git pull origin 时未成功,出现报错信息
项目场景: 背景: 使用 git 上传文件时,运行 命令 git pull origin 时未成功,出现报错信息 问题描述 问题: $ git pull origin print --allow-unrelated-histories error: Pulling is not possible because you hav…...

Linux文件编译
目录 一、GCC编译 1.直接编译 2.分步编译 预处理: 编译: 汇编: 链接: 3.多文件编译 4.G 二、Make 1.概述 2.使用步骤 3.makefile创建规则 3.1一个基本规则 3.2两个常用函数 4.示例文件 三、GDB 示例:…...

homeword_day1
第一章 命名空间 一.选择题 1、编写C程序一般需经过的几个步骤依次是( B ) A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 2、所谓数据封装就是将一组数据和与这组数据…...

ChatGPT论文指南|ChatGPT论文写作过程中6个润色与查重提示词
论文完成初稿之后,一般情况下,宝子们还需要找专家给我们提出评审意见。找专家评审其实并不容易,即使对老师来说,找人评审论文也是一件苦活。我们这个时候可以通过文字提示让 ChatGPT充当我们的评审专家,为论文提出问题…...

论文阅读:Learning Lens Blur Fields
这篇文章是对镜头模糊场进行表征学习的研究,镜头的模糊场也就是镜头的 PSF 分布,镜头的 PSF 与物距,焦距,光学系统本身的像差都有关系,实际的 PSF 分布是非常复杂而且数量也很多,这篇文章提出用一个神经网络…...

SpringBoot整合Knife4j接口文档生成工具
一个好的项目,接口文档是非常重要的,除了能帮助前端和后端开发人员更快地协作完成开发任务,接口文档还能用来生成资源权限,对权限访问控制的实现有很大的帮助。 这篇文章介绍一下企业中常用的接口文档工具Knife4j(基于…...

爬虫(三)
1.JS逆向实战破解X-Bogus值 X-Bogus:以DFS开头,总长28位 答案是X-Bogus,因为会把负载里面所有的值打包生成X-Boogus 1.1 找X-Bogus加密位置(请求堆栈) 1.1.1 绝招加高级断点(日志断点) 日志断点看有没有X-B值 日志…...

03 动力云客项目之登录功能后端实现
1 准备工作 1.1 创建项目 使用Spring initializr初始化项目 老师讲的是3.2.0, 但小版本之间问题应该不大. 1.2 项目结构 根据阿里巴巴Java开发手册确定项目结构 1.3 分层领域模型 【参考】分层领域模型规约: • DO(Data Object)&am…...

时光峰峦文物璀璨,预防性保护筑安全
在璀璨的历史长河中,珍贵文物如同时间的印记,承载着过往的辉煌。《人文山水时光峰峦——多彩贵州历史文化展》便是这样一场文化的盛宴,汇聚了众多首次露面的宝藏。然而,文物的保存对环境要求极为苛刻,温湿度波动都可能…...
Redis面试题43
人工智能在未来会有哪些可能的发展趋势? 答:人工智能在未来将继续迎来许多可能的发展趋势,以下是一些可能的方向: 更强大的算法和模型:人工智能算法和模型将不断改进和优化,为更复杂的数据和问题提供更强大…...

Redis -- list列表
只有克服了情感的波动,才能专心致志地追求事业的成功 目录 列表 list命令 lpush lpushx rpush rpushx lrange lpop rpop lindex linsert llen lrem ltrim 阻塞命令 小结 列表 列表相当于 数组或者顺序表。 列表类型是用来存储多个有序的字符串&…...

【MATLAB】使用梯度提升树在回归预测任务中进行特征选择(深度学习的数据集处理)
1.梯度提升树在神经网络的应用 使用梯度提升树进行特征选择的好处在于可以得到特征的重要性分数,从而识别出对目标变量预测最具影响力的特征。这有助于简化模型并提高其泛化能力,减少过拟合的风险,并且可以加快模型训练和推理速度。此外&…...

神经网络 | 基于多种神经网络模型的轴承故障检测
Hi,大家好,我是半亩花海。本文主要源自《第二届全国技能大赛智能制造工程技术项目比赛试题(样题) 模块 E 工业大数据与人工智能应用》,基于给出的已知轴承状态的振动信号样本,对数据进行分析,建…...

matplot画3D图的时候报错
使用matplot画3D图的时候,报这个错。 ERROR: Could not find a version that satisfies the requirement mpl_toolkits (from versions: none) ERROR: No matching distribution found for mpl_toolkits 要使用升级命令升级matplot而不是安装 pip install --upgr…...
如何使用LNMP让网站顺利工作?
如何使用LNMP让网站顺利工作? 1. Nginx的安装和部署 2. nginxphpmysql 3. nginx php-fpm安装配置 4. Nginx配置性能优化的方法 5. 如何使用Nginx实现限制各种恶意访问...

最新AI系统ChatGPT网站H5系统源码,支持Midjourney绘画局部编辑重绘,GPT语音对话+ChatFile文档对话总结+DALL-E3文生图
一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧。已支持GPT…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...