自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

知秋一叶

这世界里的每一个人,每一个东西,包括高山大海,刀剑风云,其本质都是一串数字流。

  • 博客(357)
  • 资源 (2)
  • 收藏
  • 关注

原创 Linux 网络协议栈开发(八)—— 基于VLAN的二层转发

一、VLAN是什么       (这里不详细介绍VLAN,只做简单说明)        VLAN(Vitual Local Area Network,虚拟局域网)是将物理网络划分成多个逻辑局域网的技术。一个VLAN就是一个广播域,亦即一个逻辑子网,在其内的站点可位于不同物理LAN上,但站点间像在同一个普通局域网上那样自由通信而不受物理位置的限制。利用VLAN技术,网络管理者可根据实际应用需

2018-01-16 21:06:05 2605

原创 Linux 网络协议栈开发(七)—— Netfilter 概述及其hook点

Netfilter概述         Netfilter/IPTables是Linux2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性。其重要工具模块IPTables从用户态的iptables连接到内核态的Netfilter的架构中,Netfilter与IP协议栈是无缝契合的,并允许使用者对数据报进行过滤、地址转换

2018-01-14 16:22:20 3352

原创 Linux 网络协议栈开发(六)—— 二层桥转发蓝图(下)

上一节我们了解到,数据包如何走进桥,这一节我们简单看看,入口帧处理函数br_handle_frame_finish.  作用:br_handle_frame_finish函数主要是决策将不同类别的数据包做不同的分发路径。其函数处理的过程如下图所示:首先判断该数据包是否符合桥转发的条件:(1)桥端口状态是否是开启状态,如果没有开启则丢掉数据

2018-01-14 16:18:29 3572 1

原创 Linux 网络协议栈开发(五)—— 二层桥转发蓝图(上)

一、看一张桥转发时函数调用的一个基本蓝图。这张图中,简单的展示了,数据的接收和发送,其中还包括netfilet的钩子点所处的位置。需要说明的是:1).我们先暂时忽略数据包从一开始是怎么从驱动进入到netif_receive_skb的,因为这个暂时不影响我们理解这幅图的流程。2).由于桥转发的篇幅较大,图中没有标示出,数据包中途被丢弃的情况。约定数

2018-01-14 16:11:40 3216

原创 Linux 网络协议栈开发(四)—— 二层桥实现原理

(转自 http://blog.csdn.net/u010246947/article/details/18223263)网桥原理:    网桥工作在链路层,所以它是二层的东西,对于以太网来说网桥和二层网络设备交换机的工作方式几乎是一样的,每个交换机包含一系列以太网接口,交换机通过其内部的硬件交换芯片实现对这些以太网接口出入报文的二层接收转发及过滤等二层qos功能,网桥在功能上和交换机

2018-01-14 15:42:28 10153 1

原创 Linux 网络协议栈开发(三)—— 链路层基础

(转自 http://blog.csdn.net/u010246947/article/details/18223085)一、链路层原理:1、链路层在干什么:  在报文接收方向上,网卡驱动把接收到的数据按照其对应的链路层协议(如以太网)组装成报文,然后把它上交给链路层,接口是netif_receive_skb,至此网卡驱动的任务就结束了,报文交给链路层处理;

2018-01-14 15:28:15 1658

原创 Linux 网络协议栈开发(二)—— 二层桥转发基础

做为网络设备,二层转发是最基本的功能。要想继续学习linux 内核协议栈,必须明白二层转发的流程。这篇文章举例讲一讲二层转发的流程。  二层转发是根据报文的目的MAC直接进行转发,转发过程中不用对报文的头部做任何的修改。  三层转发是根据报文的ip 地址来进行转发,并且要对报文的二层头部进行相应的修改。  进行二层转发的设备一般叫做网桥(bridge)。桥可以是

2018-01-14 15:07:43 5733

原创 Linux 网络协议栈开发(一)—— 网络协议栈内核分析

1. Linux 网络路径1.1 发送端1.1.1 应用层(1) Socket应用层的各种网络应用程序基本上都是通过 Linux Socket 编程接口来和内核空间的网络协议栈通信的。Linux Socket 是从 BSD Socket 发展而来的,它是 Linux 操作系统的重要组成部分之一,它是网络应用程序的基础。从层次上来说,它位于应用层,是操作系

2018-01-14 14:50:03 6026 10

原创 Linux内核态与用户态通信篇(一)—— Netlink

转自 http://blog.csdn.net/u012819339/article/details/51334600linux-3.10.36版本的内核相比linux-2.6.36版本中netlink的代码有所变化,以前的代码已经不能成功编译了。netlink是linux内核的一套基于socket的通信机制,那么,只需要知道怎么创建套接字,发送数据,接收数据就行了。

2017-08-12 21:44:23 6537

原创 网络协议篇之DHCP协议(一)—— DHCP协议基础

一,动态主机配置协议DHCP1,DHCP简介DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。DHCP的前身是BOOTP协议(Bootstrap Protocol),BOOTP

2017-08-12 21:39:33 25129 1

原创 网络协议篇之CWMP协议(三)—— RPC方法

一、CWMP方法       ACS对CPE的管理和监控是通过一系列的操作来实现的,这些操作在CWMP协议里称为RPC方法。主要方法的描述如下:Get:ACS使用该方法可以获取CPE上参数的值。Set:ACS使用该方法可以设置CPE上参数的值。Inform:当CPE与ACS建立连接时,或者底层配置发生改变时,或者CPE周期性发送本地信息到ACS时,CPE都要通过该方法向ACS发起通

2017-08-12 21:34:04 4258 2

原创 网络协议篇之CWMP协议(二)—— CWMP(TR-069)业务流程

一、 CWMP(TR-069)业务流程        软件架构以及协议的具体解析过程二、 CWMP(TR-069)通信过程        我们来看一个tr069协议完整的通信过程.

2017-08-12 21:13:43 18950 2

原创 网络协议篇之CWMP协议(一)—— CWMP(TR-069)基础

一、CWMP(TR-069)概述        CWMP(CPE WAN Management Protocol,CPE广域网管理协议)是由DSL(Digital Subscriber's Line,数字用户线路)论坛发起开发的技术规范之一,编号为TR-069,所以又被称为TR-069协议。它提供了对下一代网络中家庭网络设备进行管理配置的通用框架、消息规范、管理方法和数据模型。

2017-08-12 21:01:20 16798

原创 网络协议篇之SNMP协议(二)—— 管理信息库MIB及OID

上篇文章提到一套完整的SNMP系统主要包括管理信息库(MIB)、管理信息结构(SMI)及SNMP报文协议。       本篇我们来学习管理信息库(MIB)一、管理信息库MIB       任何一个被管理的资源都表示成一个对象,称为被管理的对象。MIB是被管理对象的集合。它定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。每个SNMP设备(Agent)都

2017-08-12 20:13:58 28975 2

原创 网络协议篇之SNMP协议(一)——SNMP报文协议

前言:最近工作中遇到大量的网络协议开发,现就其中一些网络协议的基础知识进行整理,文中借鉴了一些大神的整理,后面会贴上链接,如侵删)

2017-08-12 19:45:02 57144 5

转载 常用字符串解析与处理方法

一、字符串中变量提取      ① scanf,可以通过特定的格式将一个字符串的变量直接分离出来,如下:对“IPAddr=192.168.2.1:12345,ID=25535,Time=3,Speed=10END”进行参数提取可以用paraCnt= sscanf(paraStr,"%[^=]=%[^:]:%[^,],%[^,],%[^,],%[^E]",headerTemp

2016-12-08 22:10:42 4275

原创 route命令详解与使用实例

1.   使用背景需要接入两个网络,一个是部署环境所在内网环境,这个环境是上不了外网, 外网环境很可能是一个无线网络。如果两者都连接上,很可能导致有一方不能起作用,即外网或内网上不了,常常需要使用繁琐的“禁用网络连接”、“启用网络连接”的操作来进行内外网的切换,甚是麻烦。为了解决这个问题,可以使用route命令来使得同时内外网都可用。2.   rou

2016-11-29 22:56:35 28404 3

原创 iptables配置——NAT地址转换

iptables nat 原理同filter表一样,nat表也有三条缺省的"链"(chains):    PREROUTING:目的DNAT规则  把从外来的访问重定向到其他的机子上,比如内部SERVER,或者DMZ。          因为路由时只检查数据包的目的ip地址,所以必须在路由之前就进行目的PREROUTING DNAT;          系统先P

2016-11-29 22:30:11 64711

原创 iptables详解

一:前言防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代

2016-11-29 22:27:28 1145

原创 /etc目录介绍

/etc 是Linux下的配置文件的老家, 很多管理和使用的修改都在这里3. 网络配置文件3.1 /etc/hosts#/etc/hosts#文件格式: IPaddress hostname aliases#文件功能: 提供主机名到IP地址的对应关系,建议将自己经常使用的主机# 加入此文件中,也可将没有DNS记录的机器加入到此文件中,#

2016-11-27 09:53:28 4810

原创 linux下C程序插入执行shell脚本

最近在看深入理解计算机系统,看到一个函数叫做execve(),这个函数很有意思,可以在一个进程插入另外一个进程执行,但是又不像fork()一样产生一个子进程,execve()插入的进程和原进程共享进程号,就好像执行这进程就像执行过程调用一般随意。函数原型如下:int execve(const char *filename, char *const argv[], char *con

2016-11-27 09:49:31 3638 1

原创 route命令参数详解,linux添加删除路由命令

Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table)。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设

2016-11-24 23:00:11 15229

转载 ip route默认路由设置

下面介绍ip的替代命令的配置替代ifconfig的命令(手工,非dhcp)配置ip地址的基本配置如下ip addr add 1.2.3.4/24 dev eth3使能ip地址ip addr set dev eth3 up替代NetworkManager的命令(除前述ip addr外,还有dns配置)下面是dns配置,如下vi /etc

2016-11-24 22:56:18 34185 2

原创 IP、Route相关命令基础知识

1.基础知识1.1 路由 (Routing)1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库)    基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址等属性来选择转发路径。ip rule 命令:Usage: ip rule [ list | add | del ]

2016-11-24 22:29:30 28167

原创 USB linux NCM usbnet驱动详解

cdc_ncm -> usbnet device -> net_deviceenum流程,cdc_ncm的probe中直接调用usbnet_probe,usbnet_probe中会分配network_device和usbnet,并调用cdc_ncm的bind回调进行cdc_ncm的附加descriptor的解析,之后调用init_status对NCM的第一个

2016-11-23 19:48:42 12372

原创 linux ACM驱动详解

Module_init中会注册tty_driver,tty_device会在acm usb_driver的probe中注册。每个ACM设备都由2个Interface组成,第一个interface有一个interrupt endpoint主要负责控制,第二个interface主要负责数据传输,有2个endpoint,有可能是两个int,也有可能是2个bulk。他们都是成对出现的。比如:这

2016-11-16 21:30:07 9915 2

原创 USB协议分析仪在实际USB连通中的作用

在现代电子设备中,越来越多的使用USB接口,不仅因为其使用方便,即插即拔,更因为其价格低廉,协议开放,而广泛使用在各种电子设备上,并且已经发展为不可缺少的一种接口形式。但USB接口的开发过程中,对于工程师来说还是会遇到这样或那样的问题,如何提高调试效率,缩短研发周期,就需要一种调试测试工具——USB协议分析仪。USB协议分析仪     USB协议分析仪是协议层的分析工具,是测试设备的一种。

2016-11-06 21:47:45 9800

转载 USB鼠标抓包数据

先看下上面的图,相信这个图很好理解吧?恩,看着挺熟悉的吧?下面还是介绍下吧。公司是有USB分析仪,不过看过,没用过,这东西特贵。至于用,也是很简单的,插好线后,设置一些功能,点一下运行就OK,然后就有上面的图了。上图是用国嵌资料中的,公司里的东西,不好拿来用。USB数据是由二进制数字串构成的,首先数字串构成域(有七种),域再构成包,包再构成事务(IN、OUT、SETUP),事务最后构成传输

2016-11-06 21:41:23 5589

转载 USB2.0协议分析

一、USB硬件介绍1.1、概述        一条USB传输线分别由地线、电源线、D+和D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500mA(可以在编程中设置)。        USB设备可以直接和HOST通信,或者通过Hub和Host通信。一个USB系统中仅有一个

2016-11-06 21:38:30 8137

原创 如何实现自定义 USB Bulk 批量传输设备

厂商自定义设备的开发除了要完成设备硬件以及固件程序开发外,还需要开发操作系统端的设备驱动程序,还要开发设备应用程序。       厂商自定义 USB 设备的端点可以自由地选择采用哪种传输方式(control transaction 控制传输、bulk transaction 批量传输、interrupt transaction 中断传输、isochronous transfer 实时传输)

2016-10-30 19:22:49 14245 4

原创 usb中的endpoint(端点)和传输模式

端点:端点位于USB 外设内部,所有通信数据的来源或目的都基于这些端点,是一个可寻址的FIFO。每个USB 外设有一个唯一的地址,可能包含最多十六个端点。主机通过发出器件地址和每次数据传输的端点号,向一个具体端点(FIFO)发送数据。每个端点的地址为0 到15,一个端点地址对应一个方向。所以,端点2-IN 与端点2-OUT 完全不同。 每个器件有一个默认的双向控制端点0,因

2016-10-30 18:51:42 18564 2

转载 USB中CDC-ECM的了解和配置

USB中典型类及子类:类别解释子类典型应用IC芯片备注UVC视频类 免驱USB摄像头  CDC通讯类RNDIS 

2016-10-30 13:23:03 9307 2

转载 USB gadget设备驱动解析

利用Linux USB gadget设备驱动可以实现一些比较有意思的功能,举两个例子: 1、一个嵌入式产品中的某个存储设备,或是一个存储设备的某个分区,可以作为一个U盘被PC;设别,从而非常方便的完成文件交互,这个功能被广泛的应用于手机、数码相机等产品中。2、一个嵌入式设备通过USB连接到你的PC后,在你的PC端会出现一个新的网络连接,在嵌入式设备上也会有一个网卡设备,你可以配置它们的IP地址,并

2016-10-30 13:01:26 15254

转载 usb驱动的基本结构和函数简介

几个重要的结构struct--接口[plain] view plaincopystruct usb_interface   {           /* array of alternate settings for this interface,            * stored in no particu

2016-10-30 12:59:42 3776

转载 嵌入式Linux系统实现3G网卡拨号

本文介绍在嵌入式Linux中,实现3G联网的基本方法。包括驱动配置,和联网的过程。也对在PC上实现3G的过程进行了介绍。硬件:3g usb模块(华为ce189的3g网卡)+一张sim卡(电信cdma2000)软件系统:Linux主要内容:一、在pc端确认拨号功能可用二、在嵌入式端的实现三、其它一、在pc端确认拨号功能可用===============

2016-10-11 23:13:29 3102

转载 linux -- 嵌入式Linux下3G无线上网卡的驱动

软件:TI定制的嵌入式arm-linux,内核版本2.6.37.简介:由于3G无线上网卡工作模式相同,故其移植也大多雷同,故本次开发同样适用于其他嵌入式开发板,如DM6446,ARM等等。同样,也适用于其他联通、移动或电信的3G上网卡,尤其是华为的上网卡,如最常用的华为E160, E160G, E169, E180, E230, E270(+), E280, E630, E870,

2016-10-11 22:15:41 2548

转载 嵌入式3G上网

一、需要的源码包:  (1) usb库:libusb-0.1.12.tar.gz       http://sourceforge.net/projects/libusb/files/libusb-1.0/    chinaunix       (2) usb_modeswitch-1.1.9.tar.bz2        http://www.draisbergh

2016-10-11 22:12:25 1012

转载 3G卡片在开发板上的详细解决方法(适用于大多数3G卡片)

http://blog.csdn.net/ipromiseu/article/details/5154004一. 环境1. 开发板内核:linux kernel 2.6.142. 3G卡片:HUAWEI E1750二. 相关工具与库文件下载1. usb_modeswitch-1.0.6.tar.bz2(http://www.draisberghof.de

2016-09-14 19:22:14 1161

转载 在ARM-linux上实现4G模块PPP拨号上网

转自 http://blog.sina.com.cn/s/blog_7880d3350102wb92.html在ARM平台上实现4G模块的PPP拨号上网,参考网上的资料和自己的理解,从一无所知到开发完成花了一周多。最后看到ARM板ping通www.baidu.com时甚是高兴,现将此过程整理如下。当然,除此之外要做的工作还有很多。4G模块使用的SIMTECH 的SIM7100C

2016-09-14 19:12:52 10071 3

原创 龙尚3G、4G模块嵌入式Linux系统使用说明

驱动部分:1.kernle/drivers/usb/serial/option.c的结构体数组static struct usb_device_id option_ids[]中增加加入产品的VID和PID      { USB_DEVICE( 0x1c9e, 0x9e00 ) }  //   U5300v/C7500 evdo{ USB_DEVICE( 0x1c9e, 0x9603

2016-09-11 22:00:17 11879

98DX3336芯片手册

98DX3336

2016-07-06

vim配置(程序自动补全)

使用过Source Insight的人一定对它的自动补全功能印象深刻,在很多的集成开发环境中,也都支持自动补全。vim做为一个出色的编辑器,这样的功能当然少不了。至于如何实现程序自动补全,网上教程很多。这里,我将自己用的配置文件发给大家,大家可以移步(待会会补上地址),只要简单的两步,就能实现vim的程序自动补全功能,大大增加了在vim上的开发效率。

2015-12-26

空空如也

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

TA关注的人

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