自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 资源 (5)
  • 收藏
  • 关注

原创 Linux内核发送网络数据

我们开始今天对 Linux 内核⽹络发送过程的深度剖析。还是按照我们之前的传统,先从⼀段代码作为切⼊。上述代码中,调⽤ send 之后内核是怎么样把数据包发送出去的。本⽂基于Linux 3.10,⽹卡驱动采⽤Intel的igb举例。

2024-05-14 21:12:24 965

原创 内核是如何接收⽹络包的?

⽹络模块是 Linux 内核中最复杂的模块了,看起来⼀个简简单单的收包过程就涉及到许多内核组件之间的交互,如⽹卡驱动、协议栈,内核ksoftirqd 线程等。

2024-04-15 15:17:20 1298

原创 Linux网络内核基础框架

内核提供了一系列操作缓冲区的函数,包含上层协议模块需要发送数据包或网络设备准备接收数据包

2024-03-08 00:44:37 1235

原创 Makefile整理代码

Makefile 是一个包含一系列规则的文本文件,用于告诉构建工具 make 如何构建软件项目。

2024-02-18 22:25:46 392

原创 linux GDB and GDB Sever

GDB(GNU Debugger)是一个用于调试程序的强大工具。它是GNU项目的一部分,支持多种编程语言,包括C、C++等。GDB 提供了一组命令和功能,允许跟踪检查程序的内部状态,跟踪代码的执行过程,以及定位和修复程序中的错误。:set follow-fork-mode parent 是 GDB 的一个命令,用于在多进程调试时控制在 fork() 调用之后 GDB 应该跟踪哪个进程。问题出在:函数accessInvalidMemory,代码的第五行。前面是单子进程的调试。

2024-01-13 16:04:54 1129

原创 linux线程与进程

在Linux系统中,进程(Process)和线程(Thread)是操作系统中两个重要的概念,它们都是用于执行程序的执行单元,但有一些关键的区别。

2024-01-01 13:36:00 1030

原创 进程间通信

进程间通信(Inter-Process Communication,IPC)是指在操作系统中,两个或多个独立的进程之间进行数据交换和信息共享的机制。

2023-12-22 16:27:47 147

原创 Netlink通信

Netlink 是 Linux 内核与用户空间进程之间进行通信的机制之一

2023-12-16 17:46:18 823

原创 函数指针与指针函数

- 指针函数本质是一个函数,其返回值为指针。 - 函数指针本质是一个指针,其指向一个函数。

2023-12-14 11:31:37 156

原创 基于ubuntu tun虚拟网卡设备完成ping的发送与模拟接收

前面我们初步认识了什么是tun设备及基础的工作原理与接收文件的设备文件(节点)、虚拟网卡的启动、添加路由表等操作,为什么进一步理解tun设备与协议栈的通信理解,这次我们将应用层控制tun设备发送ping,通过read读取到,后经过手动组装icmp网络包write到协议栈,模拟远程主机回复给我们的 icmp reply,顺便熟悉下icmp 网络包的协议。

2023-09-06 17:15:25 1077

原创 Linux tun虚拟网卡通信初识

Linux TUN 设备是一种虚拟网络设备,用于在用户空间和内核空间之间建立数据通道,使用户空间程序可以通过这个设备与内核网络栈进行交互。TUN 设备是一种通用的网络隧道设备,常用于实现虚拟专用网络(VPN)和其他网络隧道技术。

2023-08-08 20:13:52 2506

原创 成为wifi驱动工程师应该从什么开始学习

写了这么多文章,都很零散,这次收集整理了下我们应该学习的大概框架和思路,希望大家喜欢,如果有其他的想要学习的或者思考的想法可以在评论区发言哦,我会尽量出一些实践的小原理的文章分享出来,谢谢!作为初学者想成为驱动工程师,首先需要打下坚实的计算机基础,然后逐步学习与驱动开发相关的知识和技能。以下是初学者成为驱动工程师的建议学习路径:参考书籍和在线资源:阅读与驱动开发相关的书籍和在线资源,这将帮助你加深对驱动开发的理解。成为WiFi驱动工程师是一个专业性较高的领域,需要对计算机网络、操作系统、无线通信以及硬件驱动

2023-07-22 12:19:37 752 1

原创 IP地址转换函数

在Unix网络编程中,我们常用到地址转换函数,它将ASCII字符串(如"206.62.226.33")与网络字节序的二进制值(这个值保存在套接口地址结构中)间进行地址的转换。当然也包含主机字节序与网络字节序的转换结构体熟悉// ip地址的网络字节序 };上述结构体为 struct sockaddr_in 中的参数 3 struct sockaddr_in {// 地址簇 in_port_t sin_port;// 端口的网络字节序 struct in_addr sin_addr;概念熟悉。

2023-07-21 12:57:29 292

原创 Ioctl()方式实现与驱动交互简洁框架

ioctl是linux中一种除read和write之外的数据传递机制以上函数参数的含义如下。inode和fp用来确定被操作的设备。request就是用户程序下发的命令。args就是用户程序在必要时传递的参数。在2.6.36以后ioctl函数已经不存在了,用unlocked_ioctl和compat_ioctl两个函数代替。参数去除了原来ioctl中的structinode参数,返回值也发生了改变。新的代码。

2023-06-14 10:58:06 1672

原创 实现ifconfig配置功能基础框架

因为要实现类似ifconfig工具的作用,所以我们先要了解下argc和argv,接触linux系统,我们往往就需要用命令行的方式来编译和执行程序。那么在命令行方式下,此时这两个参数就很有作用了,能够非常方便地帮助我们实现一些功能。

2023-05-31 23:34:20 652

原创 ifconfig工具与驱动交互解析(ioctl)

如上主要讲的是设置和获取,希望能够抛砖引玉,让大家学到更多。

2023-05-30 00:19:51 1020

原创 linux ioctl 理解

在计算机中,ioctl(input/output control)是一个专用于设备输入输出操作的系统调用,该调用传入一个跟设备有关的请求码,系统调用的功能完全取决于请求码。ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制ioctl函数其中fd就是用户程序打开设备时使用open函数返回的文件描述符,cmd就是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,有或没有是和cmd的意义相关的。

2023-05-22 21:07:59 927

原创 Linux socket

套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。应用程序也可以用IP+端口号进行唯一标识。那么这个程序的入口就被称作Socket。建立连接发送数据接收数据。我们可以把Socket编程理解为对TCP协议的具体实现。

2023-05-10 16:07:04 1486

原创 Linux字符设备驱动

代码结构简单,旨在用最简单的原理理解最主要的框架逻辑,细节需要自行延伸。-----------------学习的基础底层逻辑。

2023-05-01 23:20:17 885

原创 字符、块、网络设备

网络设备是特殊设备的驱动,它负责接收和发送帧数据,可能是物理帧,也可能是ip数据包,这些特性都有网络驱动决定。一个字节一个字节读写的设备,读取数据需要按照先后顺序读取,常见的字符设备有鼠标、键盘、串口、控制台和LED设备,每个字符设备在/dev目录下对应一个设备文件,linux用户程序通过设备文件(或称设备节点)来使用驱动程序操作字符设备。这些设备文件和普通文件之间的唯一差别在于对普通文件的访问可以前后移动访问位置,而大多数字符设备是一个只能顺序访问的数据通道。,设备驱动的代码量占了大部分内核程序。

2023-04-30 22:23:00 1388

原创 钩子函数理解

某些情况下,对于需求不明朗,可能还不知道它会完成什么功能,这时候留下函数指针作为接口,可以挂上不同的函数完成不同的功能,究竟执行什么功能由钩子函数的编写者完成。在的代码中,常常把挂钩子的过程叫做注册,会提供一个注册函数,让使用者把自己编写的钩子函数挂在已经声明的函数指针上,这个注册函数的参数就是我们的函数指针了。max,min函数就是钩子函数了,把函数指针g_pFun指向函数Max,Min的过程,就是“挂钩子”的过程,把钩子函数“挂”到函数指针上,很形象。是通过函数指针来实现的。

2023-04-25 00:25:46 759

原创 基于LINUX实现ping发送与接收

由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全0或全1(具体看实现了,本质一样)如果结果不是全0或全1,那么表示数据错误。注意一下上面说到的ICMP报文格式中的“类型”字段,我们在组包的时候可以向该字段填写不同的值来标定该ICMP报文的类型。Linux ping 命令用于检测主机:执行 ping 会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

2023-04-19 00:06:59 1101

原创 wifi理论数据速率计算

简单的数据速率计算

2023-04-13 00:13:51 3496 5

原创 基于linux 实现DNS Client请求

属于应用层的编程,对于我i们后续的协议理解是很有帮助的。上面提供的所有代码可以直接编译运行,执行的时候请检查电脑是否有网络,否则无法正常执行。

2023-03-05 14:41:58 627

原创 无线网络概论_4

对于由客户端送至服务器的帧而言,发送端就是客户端这边的接入点,而接收端就是服务器这边的接入点将来源地与传送端分开的好处是,当服务器这边的接入点送出必要的802.11响应给对方的接入点时,不会干扰到有线链路层。在infrastructure(基础结构型)网络中,发送端地址即为接入点(AP)上无线接口的地址,同时也是 BSSID最后,该会记载的来源MAC地址。在基础结构型网络里,接入点会以其无线接口的地址创建相应的BSS,这就是为什么接收端地址 (Address 1) 会被设定为 BSSID 的原因。

2023-01-29 11:42:44 914 1

原创 wireshark 分析理解DHCP流程

是一种引导协议,基于IP/UDP协议,也称自举协议,是DHCP协议的前身。

2022-12-12 11:18:54 1524

原创 了解Wi-fi频段概念

信道带宽,应该了解wi-fi频段,这样才能分析有多少信道带宽可用,以及如何在没有任何干扰(失真)的情况下有效地使用它。2.4 GHz Wi-Fi频段:在2.4 GHz频段,可用带宽为100 MHz,范围为2.4-2.5 GHz(2400-2500MHz)。因此,总可用带宽为100MHz,因此也相应地分配了信道宽度,使得信道之间没有重叠。就像如果我们分配20 MHz信道,那么我们只能分配4个信道,如果我们分配了4个以上的信道,那么信道之间会有重叠,并且在传输干扰发生时。5GHz Wi-fi频段:5GHz频段

2022-12-05 11:20:18 10116

原创 如何将驱动编译为kernel 模块

本文章目标平台是PC Linux,不包含其他平台。执行下面的步骤之前,请先编译kernel通过。

2022-11-21 18:13:38 998 2

原创 A-MSDU、A-MPDU、PLCP、MSDU、MPDU、PPDU

A-MPDU:针对MPDU的聚合,将多个MSDUs聚合在一起形成AMSDU,AMSDU+MACheadr之后形成MPDU发送到PHY层。A-MSDU报文是由若干个A-MSDU Subframe组成的,每个Subframe均是由Subframe header (Ethernet Header)、一个MSDU和0-3字节的填充组成。帧聚合技术又包含针对MSDU的聚合(A-MSDU)和针对MPDU的聚合(A-MPDU)。

2022-11-02 14:09:32 3888

原创 管理帧、控制帧与数据帧

802.11将帧的类型分为3种:管理帧、控制帧、数据帧

2022-10-24 17:17:24 2814

原创 无线网络概论_3

整个事务就分为两个步骤,分别由两个工作站控制,在事务过程中,两个station必须相互合作,依次取得网络媒介的控制权以便进行传输操作。图3-5,一开始,原子操作和一般传送并无差别,在可以开始传送之前,原子操作同样必须等候一段时间间隔(DIFS),不过气候的步骤使用SIFS,而非DIFS。利用帧的分段,无线局域网工作站可以让干扰只影响较小的帧片段,而非较大的帧。当上层封包的大小超过网络管理人员所设定的分段阈值,就会进行帧的分段,每个帧片段都有相同的帧序号,以及一个递增的帧片段号以便重组。

2022-09-26 19:13:18 768

原创 无线网络概论_2

每个接入点的硬件设备可以创建两组BSS,其中一组可供客户访问,称之为guest,另外一组则宫内部使用,称之为internal。举个例子,各机构会有访客,其中很多人就有80211设备,而且需要于因特网连接,这些方可并非可信的用户,为了满足要求,将会在相同的实体上另辟两个扩展服务集。和移动电话一样,允许基本服务区域相互重叠,不仅可以让工作站与基本服务区域之间的转换的成功率提高,又可以提高最高层次的网络覆盖。概念上,帧的传递是根据MAC地址,但是帧的传递时不可靠的。

2022-09-12 20:02:52 354

原创 无线网络概论_1

无线网络概论知识点理解

2022-08-31 10:49:52 499

原创 android wifi 抓sniffer log

空口 WiFi log无线产品如蓝牙、zigbee开发过程中,由于没有直接连接,通常开发中都要用到一个dongle用于抓取空中数据包,然后分析定位网络、通讯问题。Wi-Fi开发中同样需要空中抓包,Wi-Fi用于抓包的设备不叫dongle,通常叫sniffer。  无论有线以太网还是无线Wi-Fi,在正常工作模式下,mac层只处理广播包或者发给自己的数据包,目标地址与自己mac地址不符的数据包都将会被丢弃。sniffer其实是将Wi-Fi芯片设置为混杂模式,该模式下Wi-Fi芯片将会把收到的所有数据都传到

2021-10-08 21:21:16 3538 2

转载 android无线调试

直接上操作流程,在网上看到一个写的很简洁的例子:1、手机和电脑连接同一局域网(连同一个 WiFi)2、在手机的设置、网络连接查看连接的 WiFi 下手机的 IP 地址3、手机连上电脑,输入命令:adb tcpip <端口号>,<端口号> 可任意取,只要没被占用,如 66664、拔掉数据线输入命令:adb connect <手机IP地址>:<端口号> ,输出 connected to <手机IP地址> 即为连接成功,如下输入:adb conn

2021-09-07 17:28:04 634

原创 android R wifi setting 开启流程图

前言:分流程进行流程总结,如下流程只包含了用户开启wifi后的一系列服务,状态机变化,及驱动加载流程。流程图:欢迎大佬们提建议,我们可以一起探讨,共同学习

2021-07-19 11:46:00 667 3

原创 andriod R wifi 开启流程

前言:wifi chip 的开机初始化流程在这里我们就后面加上,本博客就暂时只有wifi的开启到wifi的连接成功.虽然都是andriod R,但是还是有可能不同的基线版本代码还是有些许差别,所以我在设备下看了下基线和wifi的软件信息:/system/bin # iwpriv wlan0 version wlan0 version:Host SW:5.2.022.4Z, FW:1.0.1.0.31.0, HW:HW_VERSION=ff

2021-06-23 21:21:02 2031 1

原创 andriod R wifi切换ap失败,并连接上最近一次连接的ap

失敗背景:

2021-05-17 16:45:04 513

原创 andriod 集成三方apk(BaiduNetworkLocation.apk)

前言:一開始因爲

2021-04-28 16:53:20 1318 4

原创 Qcom平台测试wifi TIS需要关闭wifi扫描、漫游和休眠

在测试QCA系列IC wifi功能时,需要禁用wifi扫描、漫游和休眠:1、禁止wifi扫描:描述:因为需要开启wifi时测试wifi TlS,需求是关闭wifi scan 。需要的工具:iwpriv工具免费下载地址:https://download.csdn.net/download/weixin_42271802/16232478禁用方法:进入设备shell(adb shell进入)#iwpriv wlan0 setUnitTestCmd 9 2 1 0#iwpriv wlan0 s

2021-03-30 12:54:18 1607

國內安卓wifi認證wapi功能patch包.7z

國內安卓wifi認證wapi功能patch包

2021-05-03

wifi的iwpriv工具

iwpriv工具

2021-03-30

测试wifi芯片的base.apk测试软件

(无需积分下载)wifi测试工具,包含wifi开关时间测试,首次扫描时间测试,自动连接时间测试,FTP测试,iperf

2021-02-26

teamviewer_15.13.6_amd64.deb

ubuntu安装包

2021-02-20

FDC2214源码及数据手册.zip

2018年ti杯省赛,基于FDC2214的手势识别设计,此中基于keil5平台开发的源码,基于stm32F103zet6单片机,

2020-06-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除