Two. 网卡,驱动基础知识

📅 2026/7/19 8:25:33
Two. 网卡,驱动基础知识
一、NATNAT网络地址转换的基本概念NATNetwork Address Translation是一种在IP数据包通过路由器或防火墙时修改其源或目标IP地址的技术。主要用于解决IPv4地址短缺问题允许多个设备共享一个公共IP地址访问互联网。NAT的工作原理NAT设备如路由器在私有网络如家庭或企业局域网与公共互联网之间充当中间层。当内部设备发送数据包时NAT会将私有IP地址和端口号替换为公共IP地址和临时端口号并在转换表中记录映射关系。返回的数据包根据转换表重新映射到内部设备。NAT的主要类型静态NATStatic NAT一对一固定映射将私有IP直接绑定到公共IP通常用于服务器对外提供服务。动态NATDynamic NAT从公共IP池中动态分配地址映射关系不固定但同一时间仍是一对一。PAT端口地址转换或NAT Overload多对一映射通过不同端口号区分内部设备。最常见的家庭路由器使用方式允许多个设备共享单一公共IP。NAT的优缺点优点节省IPv4地址空间。隐藏内部网络拓扑提升安全性。简化网络管理无需为每台设备配置公共IP。缺点可能影响某些需要端到端连接的应用如IPsec、P2P。增加网络延迟因需处理地址转换。调试复杂日志中显示的IP可能是转换后的地址。NAT的应用场景家庭和企业网络共享单一宽带连接。云服务器通过NAT网关访问互联网。IPv4与IPv6过渡技术如NAT64。NAT配置示例以Cisco路由器为例interface GigabitEthernet0/0 ip address 192.168.1.1 255.255.255.0 ip nat inside ! interface GigabitEthernet0/1 ip address 203.0.113.2 255.255.255.0 ip nat outside ! ip nat pool PUBLIC_POOL 203.0.113.10 203.0.113.20 netmask 255.255.255.0 ip nat inside source list INTERNAL_ACL pool PUBLIC_POOL overload ! access-list INTERNAL_ACL permit 192.168.1.0 0.0.0.255NAT与IPv6的关系IPv6的普及旨在解决地址短缺问题但NAT仍可能用于安全或过渡场景如NAT64。IPv6更鼓励端到端直接通信。如需进一步技术细节可参考RFC 3022传统NAT或RFC 5382NAT行为规范。二、USB网卡USB网卡简介USB网卡USB Network Adapter是一种通过USB接口连接电脑或其他设备提供有线或无线网络连接功能的外置硬件。适用于内置网卡损坏、设备无网卡接口如超薄笔记本或需要扩展多网络连接的场景。主要类型1. USB有线网卡通过USB接口转换为RJ45网口支持有线网络连接。常见速率100Mbps、1Gbps千兆。2. USB无线网卡提供Wi-Fi连接功能分为2.4GHz单频或双频2.4GHz/5GHz。支持协议Wi-Fi 4802.11n、Wi-Fi 5802.11ac、Wi-Fi 6802.11ax。3. 多功能USB网卡集成有线、无线、蓝牙等功能适合需要多协议支持的用户。选择要点兼容性确认操作系统支持Windows/macOS/Linux。检查USB接口版本USB 2.0/3.0/3.1高速网卡需USB 3.0以上。性能参数有线网卡优先选择千兆1Gbps型号。无线网卡双频段、高传输速率如Wi-Fi 6。品牌与稳定性常见品牌TP-Link、D-Link、ASUS、腾达、绿联。优先选择带散热设计或免驱版本Plug-and-Play。使用方法驱动安装部分网卡需手动安装驱动官网下载对应系统版本。免驱版插入后自动识别。连接步骤将USB网卡插入设备空闲USB口。系统自动识别或安装驱动后进入网络设置配置连接。有线网卡需插入网线无线网卡搜索Wi-Fi并输入密码。常见问题解决无法识别设备更换USB接口或尝试另一台电脑。检查设备管理器中的驱动状态重新安装驱动。速度不达标确认路由器或网线支持网卡速率如千兆网需Cat5e以上网线。避免使用USB扩展坞直连设备USB口。信号弱无线网卡调整网卡位置或使用延长线远离干扰源。更换为双频段或外置天线型号。适用场景笔记本内置网卡故障或性能不足。台式机无无线功能需扩展Wi-Fi。临时网络需求如会议室多设备接入。三、单片机与linux主要区别Linux 应用层与底层寄存器操作的区别Linux 应用层程序运行在用户空间无法直接修改硬件寄存器。这种限制是由操作系统内核的设计和硬件保护机制决定的。用户空间程序对硬件的访问需要通过内核提供的接口例如系统调用或设备文件。直接操作寄存器需要在内核空间或通过特定的驱动模块实现。寄存器操作的限制原因现代操作系统采用分层保护机制用户空间程序运行在较低的权限级别。硬件寄存器属于特权资源只有内核或驱动运行在高权限级别时才能访问。x86架构中用户态程序试图执行特权指令如IN/OUT或MOV到控制寄存器会触发处理器异常由内核处理并可能终止违规进程。间接操作寄存器的方法通过内核提供的/dev/mem或/dev/port设备文件可以间接访问物理内存和I/O端口。需要以root权限打开这些设备并使用mmap或ioctl进行操作。编写内核模块是更安全的寄存器操作方式。内核模块运行在内核空间可以导出接口供用户空间程序调用同时进行必要的权限检查。安全性与稳定性考虑直接操作寄存器可能破坏系统稳定性。内核通过调度程序和硬件抽象层管理资源绕过这些机制可能导致冲突或崩溃。现代系统通常提供标准化的硬件访问接口如GPIO子系统或IIO框架这些接口比直接寄存器操作更安全可靠。tips:关键就是MMU(Memory Manager Uint)内存管理单元的把控。通过页表mmap内存映射也是通过open打开驱动程序权限开放之后才能访问四、应用层与驱动层通信mpu 应用层通过open read write函数1.应用层函数会执行汇编指令swi导致发生异常2.cpu swi异常处理函数内核提供用户态 》 内核态3.通过R0判断分辨原因哪个函数驱动 上面框架 硬件操作字符设备’ C ‘驱动驱动的定义驱动Driver是计算机系统中的一种特殊程序用于充当操作系统与硬件设备之间的桥梁。它负责将操作系统的指令转换为硬件能够理解的信号同时将硬件状态反馈给操作系统。没有驱动硬件设备无法被系统识别或正常工作。如何写驱动①根据chr_devs[n]数据确定主设备号n,②构造结构体file_operations(文件操作)。③注册major register_chrdev( 0 , hello , hello_drv )④入口modules_init(init)在init里面找到注册函数然后应用层写open直接调用结构体file_operations中的open函数。