计算机网络到底讲了些什么

小智:大鹏哥,我最近看了下计算机网络,把书上的内容都过了一遍,可是感觉还是串不起来,不知道计算机网络到底讲了些什么内容,也不知道重点在哪里,你能不能给我梳理梳理呀!

计算机为什么要联网

大鹏:行,那咱们就从“计算机网络”这五个字说起,计算机网络,顾名思义,就是由计算机组成的网络,那计算机组成网络要干什么呢?我们知道,不联网的计算机只能单兵作战,只能玩单机游戏,只能简单的处理文档,而通过联网,计算机可以玩网游,可以看电影,可以聊QQ,总之,计算机联网之后功能大大扩展。那回到刚刚计算机要组成网络的问题,很显然,计算机组网是为了计算机能相互通信,是为了避免信息孤岛,能够将网络中的信息传播到各个地方。 计算机间的通信跟人与人之间沟通对话很类似,人与人沟通对话使用语言,语言有很多种,但是每种语言都有自己的语义语法,就是语言得讲究一定规则,这样掌握同种语言的人对话,大家才能理解彼此话语的含义,那么在计算机通信中,我们把这种通信的规则叫做网络协议,像人类语言有很多种一样,网络协议也有很多种,用来适应不同场景的通信。

网络分层的好处

小智:嗯,这个我知道,我在书里面是看到了各种各样的网络协议,书里面还提到了网络分层的事情呢,像什么ISO七层模型,还有个什么五层模型,不同层里面还有不同协议,可我就是没弄明白,网络为什么要分层呢?

大鹏:你这个问题问得很好,其实说到网络分层,我个人的理解,分层设计的好处是每个层次只负责自己的那部分事情,一层套一层,自己那层的任务完成了就交给下一层处理,各司其职,每层都遵守自己的规则,配合起来完成网络通信的工作,不至于大家都搅在一起,职责不明,看起来混乱。网络通信的这种分层模型从设计之初到现在,历经几十年也不曾变化,就和我们前面谈到冯诺依曼的计算机模型一样,可见其伟大高明之处。

网络层次划分

小智:嗯嗯,你这么说我就大概明白为什么要分这么多层了,可是书上为什么又是说七层模型又是说五层模型呢,搞得我有点晕呢。

大鹏:网络分层,ISO标准组织分层是分为七层,而实际我们都是按五层模型来说的,我工作这么多年,也没人跟我谈七层模型了,也就是标准是标准,我们理解还是按五层来理解,因为按五层来划分其实更合理,我们也不用去纠结这个,我们只要知道五层模型分别是物理层、数据链路层、网络层、传输层和应用层。层次之间的关系看看下面这个图。

 

小智:那我现在就很想知道每个分层里面包含哪些内容?每一层到底都要干些什么,你再给我讲讲呗。

大鹏:每一层里面包含的内容主要有不同的网络协议以及计算机的标识,计算机的标识就类似于人跟人对话,我们得知道是谁跟谁对话,比如张三跟李四对话,那张三李四就是这个标识。

物理层

我们先来看物理层,物理层其实我们关注得不多,物理层主要是要解决通信链路的问题,可以这么理解,我们人说话也是要借助媒介的,高中课程里面我们就知道,说话声音是通过空气传播的,那计算机网络协议也得承载在一个物理媒介中传播,比如我们能看到的网线、光纤以及计算机的网卡等等,物理媒介主要是决定了网络通信的速率,对于物理传输,工程实践中关注得比较多,我们只做了解即可。

数据链路层

物理层之上是数据链路层,计算机在数据链路层的标识我们叫它mac地址,这个mac地址在我们的电脑,网络和共享中心上就可以查看到,看看这个图:

 

mac地址其实是配在我们电脑的网卡上的,每块网卡都有一个mac地址,是网卡出厂时就配置好的。在数据链路层,跟mac地址相关的协议就是以太网协议,以太网协议简单来说就是记录两台计算机通信的源mac地址和目的mac地址。

网络层

数据链路层往上就是网络层了,网络层协议当然就要数大名鼎鼎的IP协议了,IP协议对应的计算机标识是IP地址,如果把mac地址和ip地址做一个对比的话,我们可以这么简单理解,有了mac地址,就相当于咱们有了身份证,可以在国内到处耍了,但是要出国耍,那咱们还得再搞个IP地址,就相当于我们出国得办护照。让我们来看下我们电脑的ip地址:

 

传输层

网络层之上是传输层,前面讲到数据链路层有mac地址,网络层有IP地址,其实有了这两种地址,网络中的两台计算机已经能找到对方了,那我们还要传输层做什么呢?

其实是这样的,打开我们的电脑,我们可以看到电脑系统上安装有各种各样的软件,比如QQ、王者荣耀、腾讯视频等等这些,两台电脑通信,最终还是两台电脑上的软件通信,要详细的区分两台电脑到底是哪些软件相互通信,就要用到传输层了,传输层有一个重要的概念叫做端口,简单理解,端口其实就是用来区分各个软件的,另外,传输层涉及到的两个大名鼎鼎的协议就是tcp协议和udp协议,这两个协议各有所长,但是都有端口的概念包含在其中。

应用层

最上一层就是应用层了,应用层面向的是最终的用户了,离我们最近,也最好理解,那么应用层要解决什么问题呢?

应用层要解决的其实就是我们在使用各种软件时需要遵守的规则,比如我们打开浏览器浏览新闻,比如我们发送邮件,比如我们传输文件,比如我们远程登录一台服务器,这些都与应用层协议有关,由于我们使用电脑的功能场景非常多,所以应用层协议的种类非常多,变化也非常快,有大家公知耳熟能详的http、ftp等等协议,也有大厂家比如鹅厂的QICQ等协议,这也再次印证了计算机网络分层的好处,像网络层传输层这些底层层次保持长久不变,而应用层随着网络应用的丰富,可以支持扩展,满足实际应用场景的需求。

关于两台电脑在五层通信的模型,我们看看下面这张图:

学习计算机网络的重点

小智: 大鹏哥,你这样一讲,我思路就清晰了很多,那你再跟我说说,我学计算机网络,到底该重点学些啥?

大鹏: 这个问题从我大学毕业到现在参加工作十年,其实我也一直在思考回想,一本计算机网络教材那么多内容,都是我要掌握的吗? 为什么教材要整那么多内容,还写的晦涩难懂呢? 其实过了这么久,我也终于想明白了,计算机网络作为一个计算机学科分支,从写教材的人来说,其实是站在一个学术角度,需要完整展现计算机网络知识体系的角度去写的,那么对于我们读者受众来说,哪些才是我们需要重点掌握的呢?

这个问题其实还是要看我们以后的职业规划,如果我们是奔着做计算机学术研究的,那我们的知识层面必须全面一些,对于物理层包括信息编码、传输介质这些知识也都必须得掌握;

如果我们是有志从事网络工程工作的,比如做网络设备,路由器交换机防火墙这些,那我们的网络知识就得全面一些,各个网络层次的协议也都得知道;

如果我们只是一个互联网IT行业的码农,其实我们重点要掌握的是ip/TCP协议,我们得知道如何写代码通过tcp或者udp协议与对端通信,知道如何做通信的性能调优等等。

小智:嗯嗯,明白了,我觉得我想做第二种人,所以我要好好学习各个层次的网络协议了。

大鹏:兴趣是最好的老师,只要你感兴趣,什么都好说。今天呢,其实也只是跟你一起理清了一下思路,后面我们要学习的内容还有很多很多,关于今天所讲的内容,我用下面这张脑图梳理一下,看这个脑图会清晰很多,下次我们再讲讲网络各个层次之间是如何配合工作的。

 

获取更多电子书资料电子书学习资料汇总,请关注我的公众号:【程序员小智和大鹏】,回复“电子书”获取。

 

当然可以,以下是**完整、详细的 Python 实现 Dr.COM 校园网开机自动登录的操作指南**,从环境搭建到最终部署,一步步带你完成。 --- ## ✅ 目标 让电脑**每次开机后自动运行 Python 脚本**,打开桌面上的 `Dr.COM宽带认证客户端.lnk` 并自动填入账号密码并点击登录。 --- ## 🛠 准备工作 ### 1. 安装 Python(若未安装) 前往官网下载安装:[https://www.python.org](https://www.python.org) ✅ 推荐版本:Python 3.9 ~ 3.11 ✅ 安装时务必勾选:**Add to PATH** --- ### 2. 安装所需第三方库 打开命令提示符(CMD)或 PowerShell,运行以下命令: ```bash pip install pywinauto keyboard ``` - `pywinauto`:用于操控图形界面程序(如 Dr.COM 客户端) - `keyboard`(可选):可用于调试按键行为 --- ### 3. 找到 Dr.COM 客户端的真实可执行文件路径 ⚠️ `.lnk` 是快捷方式,不能直接被 Python 启动。你需要找到它指向的原始 `.exe` 文件。 #### 操作步骤: 1. 右键点击桌面的 `Dr.COM宽带认证客户端.lnk` 2. 选择「属性」 3. 查看「目标」字段,例如: ``` "C:\Program Files (x86)\DrCOM\Student\3000011\drcom.exe" ``` 4. 复制这个路径备用 → 这就是你要启动的真实程序路径! 📌 修改脚本中的 `client_path` 为此 `.exe` 路径。 --- ## 🧪 第一步:编写自动化登录脚本 新建一个文件,命名为 `auto_login.py`,内容如下: ```python import time import os from pywinauto import Application # ====== 配置区 ====== EXE_PATH = r"C:\Program Files (x86)\DrCOM\Student\3000011\drcom.exe" # ← 改成你自己的真实路径! USERNAME = "505890" # ← 填你的学号/账号 PASSWORD = "your_password" # ← 填你的密码 # =================== def main(): try: print("正在启动 Dr.COM 客户端...") app = Application(backend="uia").start(EXE_PATH) time.sleep(3) # 等待窗口打开 # 获取主窗口(标题可能含“宽带”、“认证”等关键词) dlg = app.window(title_re=".*宽带.*|.*认证.*|.*Client.*") dlg.wait('exists', timeout=10) # 最多等10秒出现窗口 # 清除已有内容并输入账号密码 edit_username = dlg.children(control_type="Edit")[0] edit_password = dlg.children(control_type="Edit")[1] edit_username.type_keys("%{a}") # 全选 + 删除旧内容(Ctrl+A) edit_username.type_keys(USERNAME) edit_password.type_keys("%{a}") edit_password.type_keys(PASSWORD) # 勾选“记住密码”和“自动登录” checkboxes = dlg.children(control_type="CheckBox") for cb in checkboxes: text = cb.window_text() if "记住" in text or "密码" in text: if not cb.get_check_state(): cb.click_input() elif "自动" in text or "登录" in text: if not cb.get_check_state(): cb.click_input() # 寻找“登录”按钮并点击 buttons = dlg.children(control_type="Button") login_button = None for btn in buttons: if "登录" in btn.window_text() or "connect" in btn.window_text().lower(): login_button = btn break if login_button: login_button.click_input() print("✅ 登录指令已发送!") else: print("❌ 未找到登录按钮,请检查界面元素。") except Exception as e: print(f"❌ 自动登录失败:{e}") input("按回车结束...") # 方便出错时查看错误信息 if __name__ == "__main__": time.sleep(5) # 等待系统开机稳定 main() ``` > 🔍 提示:如果不知道控件名称,可以用微软工具 `Inspect.exe` 查看窗口结构(见下文说明)。 --- ## 🔍 如何精准定位控件?使用 Inspect 工具 1. 下载 [Windows SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/) 或直接搜索下载 `Inspect.exe` 2. 打开 Dr.COM 客户端手动登录一次 3. 运行 `Inspect.exe`,鼠标拖动“探测器”到客户端窗口上 4. 查看各个输入框、按钮的 `ClassName`、`AutomationId`、`Name` 等信息 5. 在代码中更精确地定位它们(比如用 `automation_id=` 参数) 📌 示例(如果你知道 AutomationID): ```python dlg.Edit1.set_text(USERNAME) # 更可靠的方式 ``` --- ## 💾 第二步:将脚本设为开机自启 有两种常用方法: --- ### 方法一:放入「启动」文件夹(推荐新手) 这是最简单的方法。 #### 步骤: 1. 按下键盘 `Win + R`,输入以下命令后回车: ``` shell:startup ``` → 会打开当前用户的“开机启动”文件夹。 2. 把你的脚本打包成 `.exe` 或创建一个 `.bat` 批处理文件来运行它。 --- #### 方式 A:创建批处理文件(.bat) 新建一个文件叫 `run_auto_login.bat`,右键编辑,写入: ```bat @echo off cd /d "C:\path\to\your\script\folder" python auto_login.py ``` 📌 记得把 `"C:\path\to\your\script\folder"` 改成你放 `auto_login.py` 的实际目录! 然后把这个 `.bat` 文件复制到刚刚打开的 `shell:startup` 文件夹里。 --- #### 方式 B:打包成 exe(静默运行) 为了让程序后台运行不弹黑框,我们用 `pyinstaller` 打包为 `.exe`,并隐藏控制台。 安装打包工具: ```bash pip install pyinstaller ``` 在脚本所在目录打开 CMD,运行: ```bash pyinstaller --onefile --noconsole auto_login.py ``` 生成的 `dist/auto_login.exe` 就是一个无窗口运行的独立程序。 👉 把这个 `auto_login.exe` 复制到 `shell:startup` 文件夹即可。 --- ### 方法二:通过任务计划程序(更灵活) 优点:可延时启动、以最高权限运行。 #### 操作步骤: 1. 打开「任务计划程序」(可在开始菜单搜索) 2. 点击右侧「创建基本任务」 3. 名称填写:`Auto Login Dr.COM` 4. 触发器:选择「当计算机启动时」 5. 操作:「启动程序」 - 程序脚本:选择 `auto_login.exe` 或 `python.exe` - 添加参数(如果用 Python 解释器): ``` C:\your_path\auto_login.py ``` - 起始目录:脚本所在的文件夹 6. 勾选「使用最高权限运行」 7. 完成 ✅ 这样即使没有登录用户也能运行(视配置而定) --- ## ⏱ 常见问题与优化建议 | 问题 | 解决方案 | |------|----------| | 窗口没加载完就报错 | 增加 `time.sleep()` 或使用 `.wait('visible', timeout=10)` | | 控件找不到 | 使用 `Inspect.exe` 确认控件层级和名字 | | 开机太快网络未就绪 | 在脚本开头加 `time.sleep(10~15)` 延迟执行 | | 密码明文存储不安全 | 后续可用加密存储或输入时手动输入(进阶) | --- ### ✅ 补充建议 - 测试阶段先把脚本单独双击运行几次,确保能正常登录。 - 成功后再加入开机启动。 - 若学校使用 Web 页面登录,则可用 `selenium` 替代 `pywinauto`。 --- ### 📚 总结知识点 - **GUI 自动化控制**:利用 `pywinauto` 模拟人工操作桌面程序,适用于无开放接口的应用。 - **Windows 开机自启机制**:通过「启动文件夹」或「任务计划程序」实现脚本随系统启动运行。 - **程序延迟与稳定性处理**:合理使用 `time.sleep()` 和 `.wait()` 避免因系统响应慢导致操作失败。 --- ✅ 按照以上步骤操作,你就可以实现:**每次开机自动登录校园网,无需手动打开客户端、输入账号密码!** 如有具体客户端截图或控件信息,我可以进一步帮你调整代码。
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值