自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 收藏
  • 关注

转载 欢迎使用CSDN-markdown编辑器

摘要本文介绍了contiki netstack的MAC层以下数据收发层次结构,并讨论如何移植新的无线器件做为contiki的无线收发器。 正文 contiki netstack的数据收发层级imageRadio:主要完成物理层无线数据的收发和控制Framer: 完成对数据帧的打包和解析RDC: radio duty cycling, 周期性访问radio,主要为了减少功耗MAC: 数据链路

2016-11-17 15:44:17 540

转载 BlueZ移植与配置(很全面)

Bluez作为当前最成熟的开源蓝牙协议栈,在Linux的各大发行版中已经得到了广泛的应用。在桌面环境下,使用Bluez应该已经没有太大的问题,本文的主要目的是介绍在嵌入式平台上,搭建和配置Bluez的各个Profile运行所需做的工作,讨论可能遇到的问题,介绍一些工具的使用和工作原理。因为本人的能力和测试时间有限,可能下文中有些理解、分析不一定准确,欢迎联系指正。 1 相关说明 1

2015-11-09 15:27:28 7593

转载 MAC802.11数据帧格式

1 MAC802.11数据帧格式首先要说明的是mac802.11的帧格式很特别,它与TCP/IP这一类协议不同,它的长度是可变的。不同功能的数据帧长度会不一样。这一特性说明mac802.11数据帧显得更加灵活,然而,也会更加复杂。mac 802.11的数据帧长度不定主要是由于以下几点决定的 1.1 mac地址数目不定,根据帧类型不同,mac 802.11的mac地址数会不一

2015-09-15 17:42:27 5200 1

转载 欢迎使用CSDN-markdown编辑器

OpenWRT默认使用dnsmasq提供DHCP/DNS服务,通常情况下够用。但如果我们用路由器爬墙,为了解决DNS污染问题,比如用到了ChinaDNS,对于国外域名的解析,会连到国外的DNS上,延迟是比较高的。默认的配置下,dnsmasq对于DNS记录的缓存时间、还有缓存文件大小都比较受限,一条记录可能没多久就被清除出缓冲区,失效了。这时我们就希望有一个缓存功能更强的DNS软件,可以手动改大TTL

2015-09-06 10:12:35 634

转载 openwrt wifi 配置

以Atheros71xx为例,修改路径为:trunk/kernel/mac80211/files/lib/wifi/mac80211.sh代码的尾部即为/etc/config/wireless文件的内容。可修改为出厂时即启动无线,无线的SSID为指定值等等[cpp] view plaincopy        cat config wifi-device  ra

2015-08-19 11:31:01 4837

转载 openwrt系统 sysupgrade 命令执行过程分析

0:扯淡对这个openwrt的细节方面了解的还比较欠缺,故从实际中的经常用的功能说起,研究研究,可以了解更多的细节。在openwrt的页面中已经涉及到下面的内容如:其中在更新系统时候有进行配置保存及恢复的功能。1:sysupgrade是的交互式使用命令如下:经过上面的系统更新之后,会保存上面显示的配置文件中的内容,故更新系统不会影响配置的丢失。3:脚本分析

2015-06-18 10:52:37 1521

转载 OpenWrt系统安全改进<四> --- Web UI权限分级

本章实现了不同用户的不同权限级别,但是严格说来,这种实现方式并不属于安全性的改进,而只是针对用户友好性的改进。而且实现方法太过“丑陋”,在此仅提供思路:一 保存用户信息在dispatcher.lua中用户密码认证处添加保存用户信息的相关语句;二 标签卡的选择在controller/.../下的lua文件中获取之前保存的用户信息,根据需要选择调用entry语句三 字符串修

2015-06-10 09:00:52 734

转载 OpenWrt系统安全改进<五> --- Web 访问权限分级

摘要OpenWrt系统安全改进中介绍的只是在UI层面对用户进行访问控制,对于深层次非法操作并不能起到保护效果。本节介绍针对不同的用户登录请求,使用不同用户启动luci进程,从而实现不同用户进行操作级别的访问控制。机制分析web页面操作涉及到uhttpd和luci两个模块,uhttpd处理http报文,将cgi请求转给luci处理。从代码实现就可以看出这两个模块目前只是针对单用户:1

2015-06-10 08:54:59 1497

转载 Openwrt常用烧写命令 (tftp)

AR系列分区地址 4M flash的分区地址:分区名        起始地址        结束地址         分区长度 uboot        0x9f000000    0x9f020000     0x20000 firmware    0x9f020000    0x9f3e0000     0x3c0000art              0x9f3f00

2015-06-08 15:44:28 5156

转载 (十)洞悉linux下的Netfilter&iptables:网络地址转换原理之SNAT

源地址转换:SNAT    SNAT主要应用于下列场景:    这种情况下,我们只有一个公网地址A,而又有三台主机需要同时上网,这时就需要SNAT了。它的主要作用是将那些由私网发来的数据包skb的源地址改成防火墙的公网地址A,这是因为目的主机在响应源地址为私网地址的数据包时,私网地址不能在网络上路由的缘故。    SNAT仅可以在LOCAL_OUT和POSTROUTING点

2015-05-26 13:10:37 585

转载 (七)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【下】 2012-04-13 21:10:00

连接跟踪系统的初始化流程分析    有了前面的知识,我们再分析连接跟踪系统的初始化ip_conntrack_standalone_init()函数就太容易不过了。还是先上ip_conntrack_standalone_init()函数的流程图:该函数的核心上图已经标出来了“初始化连接跟踪系统”和“注册连接跟踪的hook函数”。其他两块这里简单做个普及,不展开讲。至少让大家明白连接跟踪为

2015-05-26 13:08:15 499

转载 (九)洞悉linux下的Netfilter&iptables:网络地址转换原理之DNAT

网络地址转换:NAT     Netfitler为NAT在内核中维护了一张名为nat的表,用来处理所有和地址映射相关的操作。诸如filter、nat、mangle抑或raw这些在用户空间所认为的“表”的概念,在内核中有的是以模块的形式存在,如filter;有的是以子系统方式存在的,如nat,但它们都具有“表”的性质。因此,内核在处理它们时有很大一部操作都是相同的,例如表的初始化数据、表的注册、

2015-05-26 13:07:53 532

转载 (六)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【中】

Netfilter连接跟踪的详细流程    上一篇我们了解了连接跟踪的基本框架和大概流程,本篇我们着重分析一下,数据包在连接跟踪系统里的旅程,以达到对连接跟踪运行原理深入理解的目的。    连接跟踪机制在Netfilter框架里所注册的hook函数一共就五个:ip_conntrack_defrag()、ip_conntrack_in()、ip_conntrack_local()、ip_co

2015-05-26 13:07:30 490

转载 (八)洞悉linux下的Netfilter&iptables:状态防火墙

基于连接跟踪机制的状态防火墙的设计与实现连接跟踪本身并没有实现什么具体功能,它为状态防火墙和NAT提供了基础框架。前面几章节我们也看到:从连接跟踪的职责来看,它只是完成了数据包从“个性”到“共性”抽象的约定,即它的核心工作是如何针对不同协议报文而定义一个通用的“连接”的概念出来,具体的实现由不同协议自身根据其报文特殊性的实际情况来提供。那么连接跟踪的主要工作其实可以总结为:入口处,收到一个数据

2015-05-26 13:07:17 674

转载 (五)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【上】

如何理解Netfilter中的连接跟踪机制?    本篇我打算以一个问句开头,因为在知识探索的道路上只有多问然后充分调动起思考的机器才能让自己走得更远。连接跟踪定义很简单:用来记录和跟踪连接的状态。问:为什么又需要连接跟踪功能呢?答:因为它是状态防火墙和NAT的实现基础。OK,算是明白了。Neftiler为了实现基于数据连接状态侦测的状态防火墙功能和NAT地址转换功能才开发出了连接

2015-05-26 13:06:44 526

转载 (四)洞悉linux下的Netfilter&iptables:包过滤子系统iptable_filter 2

今天我们讨论一下防火墙的数据包过滤模块iptable_filter的设计原理及其实现方式。    内核中将filter模块被组织成了一个独立的模块,每个这样独立的模块中都有个类似的init()初始化函数。编写完该函数后,用module_init()宏调用初始化函数;同样当模块被卸载时调用module_exit()宏将该模块卸载掉,该宏主要调用模块的“析构”函数。这当中就牵扯到内核ko模块的一些

2015-05-26 13:03:48 763

转载 (二)洞悉linux下的Netfilter&iptables:内核中的ip_tables小觑

Netfilter框架为内核模块参与IP层数据包处理提供了很大的方便,内核的防火墙模块(ip_tables)正是通过把自己所编写的一些钩子函数注册到Netfilter所监控的五个关键点(NF_IP_PRE_ROUTING,NF_IP_LOCAL_IN,NF_IP_FORWARD,NF_IP_LOCAL_OUT,NF_IP_POST_ROUTING)这种方式介入到对数据包的处理。这些钩子函数功能

2015-05-26 13:03:28 415

转载 (三)洞悉linux下的Netfilter&iptables:内核中的rule,match和target

作为ipchains的后继者,iptables具有更加优越的特性,良好的可扩展功能、更高的安全性以及更加紧凑、工整、规范的代码风格。    在2.6的内核中默认维护了三张表(其实是四张,还有一个名为raw的表很少被用到,这里不对其进行分析介绍了):filter过滤表,nat地址转换表和mangle数据包修改表,每张表各司其职。我们对这三张表做一下简要说明:    1)、filt

2015-05-26 13:03:03 597

转载 一)洞悉linux下的Netfilter&iptables:什么是Netfilter? 2

本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之怕生熟了。趁有时间,好好把这方面的东西总结一番。一来是给自己做个沉淀,二来也欢迎这方面比较牛的前辈给小弟予以指点,共同学习,共同进步。    能在CU上混的人绝非等闲之辈。因此,小弟这里说明一下:本系列博文主要侧重于分析Netfilter的实现机制,原理和设计思想层面的东西,同时从用户态的iptables到内核

2015-05-26 13:01:18 772

转载 hostapd源代码分析(二):hostapd的工作机制

在我的上一篇文章《hostapd源代码分析(一):网络接口和BSS的初始化》中,介绍了两个重要的数据结构hostapd_iface和hostapd_data以及网络接口和BSS的初始化设置的过程。下面,我要在这一篇文章中详细介绍hostapd的工作机制。hostapd的模块结构如下从上图中可以看出,hostapd通过一个叫做“event_loop”的核心模块来处理来自各个模块的

2015-05-26 10:11:54 6651

转载 AP模式中多重基础服务集(Multi-BSS)下帧的接收

我们知道,AP模式下的无线网卡可以创建多个基础服务集(Base Service Set, BSS),我们可以为每一个BSS赋予一个SSID,也可以为每一个BSS设置不同的加密方式和密码。通过多个创建多个BSS的方式,就可以让同一个无线路由器提供不同的无线上网服务。那么问题来了,当AP接收到一个帧的时候,如何判断这个帧是否属于这个AP呢?我一开始认为,当AP接收到一个帧的时候,驱动程序便会循环检查每

2015-05-26 10:11:28 2365

转载 hostapd源代码分析(三):管理帧的收发和处理

这篇文章我来讲解一下hostapd是如何处理IEEE 802.11管理帧的。我们知道,hostapd主要负责管理工作站(station)认证和接入。因此,它只处理管理帧(Management Frame),并不处理数据帧。802.11的管理帧主要有信标帧(beacon)、探测请求帧(probe request)、探测回应帧(probe response)、请求认证帧(authentication

2015-05-26 10:08:26 3889

转载 hostapd源代码分析(一):网络接口和BSS的初始化

最近在做一个基于OpenFlow 协议的无线AP 的项目,于是就分析了hostapd 的源代码,并在原有的基础上添加上我们的代码。经过近半个月的调试和分析,算是基本上搞清楚了hostapd 的运作机制。鉴于网上对于hostapd 的具体资料甚是稀少,所以笔者在此整理学习笔记并在网上与各位读者分享,希望能对读者们有帮助。如果有分析不恰当或者错误的地方,也欢迎各位指正。另外,本文是在读者已经具有IEE

2015-05-26 10:06:25 4106

转载 Linux Wireless架构总结

1.  无线网络驱动(ath9k_htc)     ath9k_htc是一个基于USB接口的SoftMAC无线网络适配器。为了其驱动能正常工作,首先必须调用usb_register来注册驱动定义的usb_driver,以借助USB Core的力量来处理与USB协议相关的事件。其代码如下:[cpp] view plaincopystat

2015-05-23 16:18:03 943

转载 openwrt Makefile理解

本文是本人对OpenWrt的Makefile的理解,并非转载。OpenWrt是一个典型的嵌入式Linux工程,了解OpenWrt的Makefile的工作过程对提高嵌入式Linux工程的开发能力有极其重要意义。OpenWrt的主Makefile文件只有100行,可以简单分为三部分,1~17行为前导部分,19~31为首次执行部分,33~101为再次执行部分。        前导部分CU

2015-05-23 15:29:47 808

转载 openwrt Makefile 理解

本篇的主要目的是想通过分析Makefile,了解openwrt编译过程。着重关注以下几点:openwrt目录结构主Makefile的解析过程,各子目录的目标生成。kernel编译过程firmware的生成过程软件包的编译过程openwrt目录结构官方源下载速度太度,我从github上clone了openwrt的代码仓库。git clone https:/

2015-05-23 15:29:40 1052

转载 OpenWRT添加模块Makefile

第一次接触到openwrt,真是被毁三观啊,不要说makefile,连源代码在哪里都找不到,知道嵌入式系统水深,没想到迈出第一步就没过了脖子。好在旁边有人指点,直接在芯片厂商提供的既有代码上做二次开发,项目进展倒也完全满足了前期计划的目标。但是哥奔的就是嵌入式,这么好的学习机会怎容错过?!目标:在芯片厂商提供的开发包上添加自己的用户态模块和内核态模块,以使我们自己开发的代码与芯片厂商的代码尽可

2015-05-23 11:24:07 704

转载 linux led子系统

数据结构/include/linux/leds.henum led_brightness {     LED_OFF          = 0,     LED_HALF     = 127,     LED_FULL     = 255,};led_classdev代表led的实例:struct led_classdev {     const cha

2015-05-18 13:06:35 436

原创 IEEE 802

IEEE 802[编辑]IEEE 802 指IEEE标准中关于局域网和城域网的一系列标准。更确切的说,IEEE 802标准仅限定在传输可变大小数据包的网络。其中最广泛使用的有以太网、令牌环、无线局域网等。这一系列标准中的每一个子标准都由委员会中的一个专门工作组负责。IEEE 802中定义的服务和协议限定在OSI模型的最低两层(即物理层和数据链路层)。事实上,IEEE

2015-05-18 10:53:45 1503

转载 [经典]Linux内核中ioremap映射的透彻理解

几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:  (1)I/O映射方式(I/O-mapped)  典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的

2015-05-16 10:11:49 346

转载 ioremap

原型: void *ioremap(unsigned long phys_addr, unsigned long size)  void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)  入口: phys_addr:要映射的起始的IO地址;  size:要映射的空间的大小;

2015-05-16 10:11:48 863

转载 mips 存储管理

一.虚拟地址空间地址空间的最大长度与实际可用的物理内存数量无关,因此被称为虚拟地址空间(Virtual Address Space)。这个虚拟地址空间的大小是由计算机的硬件平台决定的,具体来说是由CPU的位数决定的。硬件决定了地址空间的最大理论上限,即硬件的寻址空间大小,比如主流的32位处理器(IA32,MIPS,ARM)等能寻址2^32B,即4GB的大小的地址空间(0~0xFFF

2015-05-16 08:53:54 754

转载 linux devmem 开发工具

在Linux开发中着实用到的调试工具并不是很多。devmem的方式是提供给驱动开发人员,在应用层能够侦测内存地址中的数据变化,以此来检测驱动中对内存或者相关配置的正确性验证。        devmem2使用方法:        devmem2 { address } [ type [ data ] ]                address : 物理地址

2015-05-15 20:15:09 1171

转载 添加复位键按钮

发现uci-defaults 看起来可以注入设置文件#!/bin/sh uci -q show system.@restorefactory[0] || { uci add system restorefactory uci set system.@restorefactory[0].button=reset uci set system.@restorefactor

2015-05-15 13:51:25 3246

转载 openwrt swconfig

swconfig 是OpenWrt用来配置交换机的命令。交换机是二层设备,是我们用来配置vlan的必备利器。swconfig list 现实系统交换机。swconfig dev show现实当前端口配置。所谓家庭路由器=交换机+网络服务程序+无线企业级路由器还有些路由功能等。[objc] view plaincopy

2015-05-15 11:28:30 4536

转载 luci cbi

代码库路径: feeds/lluci/applications/luci-myapp/luasrc/controller/myapp.lua设备上路径: /usr/lib/lua/luci/controller/myapp.lua格式:module("luci.controller.myapp", package.seeall)function index()end注册U

2015-04-02 15:01:27 1036

转载 3G原理

1.   什么是CDMA技术答复:CDMA直译为码分多址,是在数字通信技术的分支扩频通信的基础上发展起来的一种技术。所谓扩频,简单地说就是把频谱扩展。码分多址(CDMA)技术是移动通信系统中所采用的多址方式之一。在移动通信系统中,由于许 多移动台要同时通过一个基站和其它移动台进行通信,因此必须对不同的移动台和基站发出的信号赋予不同的特征,以使基站能从众多的移动台信号中分辨出是哪个移动台

2015-04-01 09:17:32 2418

原创 lua 安装 packet

安装 sudo apt-get install luarocks利用 luarocks工具来安装lua的lib         例如安装 cgilua          luarocks install cgilua

2015-03-31 13:56:25 482

转载 手机ROM简单制作过程

1.安卓基础知识普及:Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4Gingerbread和Android 3.0Honeycomb。①底包:官方的系统包,

2015-03-31 13:49:41 4134 1

转载 linux relay

Relay 要解决的问题对于任何在内核工作的程序而言,如何把大量的调试信息从内核空间传输到用户空间都是一个大麻烦,对于运行中的内核更是如此。特别是对于哪些用于调试内核性能的工具,更是如此。对于这种大量数据需要在内核中缓存并传输到用户空间需求,很多传统的方法都已到达了极限,例如内核程序员很熟悉的 printk() 调用。此外,如果不同的内核子系统都开发自己的缓存和传输代码,造成很大的

2015-03-30 17:04:18 576

空空如也

空空如也

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

TA关注的人

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