- 博客(49)
- 资源 (15)
- 收藏
- 关注
转载 struct ethhdr、ether_header、iphdr、tcphdr、udphdr
************************eth的结构**************************************struct ethhdr {unsigned char h_dest[ETH_ALEN];unsigned char h_source[ETH_ALEN];__be16 h_proto;} __attribute__((packed));
2013-04-28 15:00:44 1088
转载 SIOCGIFFLAGS, SIOCSIFFLAGS
SIOCGIFFLAGS, SIOCSIFFLAGS读取 或 设置 设备的 活动标志字. ifr_flags 包含 下列值 的 屏蔽位:设备标志IFF_UP 接口正在运行.IFF_BROADCAST 有效的广播地址集.IFF_DEBUG 内部调试标志.IFF_LOOPBACK 这是自环接口.IFF_POINTOPOINT 这是点到点的链路接口.IFF_RUNNING 资源已分配.IFF_NOARP
2013-04-28 09:50:56 4705
转载 Linux如何在系统启动时自动加载内核模块
为搞清楚如何在系统启动时自动加载模块,搜索了好久,网上有很多人提出这个问题,但都没有正确的答案,无论是中文社区还是英文社区,大家的回答都没有讲到点子上,无非是围绕modprobe.conf、modprobe讲来讲去的,要不就是针对特定问题尝试不同的方法。有的还建议把 modprobe modulename写入rc.local,却不曾想,rc.local的执行被放在整个启动顺序的很后面,而启动ini
2013-04-28 09:28:42 1091
转载 netmap userguide
.\" Copyright (c) 2011 Matteo Landi, Luigi Rizzo, Universita` di Pisa.\" All rights reserved..\".\" Redistribution and use in source and binary forms, with or without.\" modification, are perm
2013-04-27 17:18:18 2350
转载 ethhdr、ether_header、iphdr、tcphdr、udphdr 结构介绍
http://blog.csdn.net/petershina/article/details/8573853************************eth的结构**************************************struct ethhdr {unsigned char h_dest[ETH_ALEN];unsigned char h_s
2013-04-25 14:21:25 1483
转载 ubuntu 升级内核实战
ubuntu 12.04内核是linux 3.2.0-24,其实升级到最新版本3.3.4也没什么很大意义,主要是集成了一些新的驱动和一些普通用户用不到的功能,所以基本上本文纯属折腾,但不要随便升级当班设备啊!好了,不废话了,我们开始...........首先是准备条件:①、有一台装有ubuntu 12.04的机器②、先移步到http://www.kernel.org/下载l
2013-04-24 11:55:22 980
转载 高性能网络I/O框架-netmap源码分析(3)
高性能网络I/O框架-netmap源码分析(3)作者:gfree.wind@gmail.com博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net微博:weibo.com/glinuxerQQ技术群:4367710前面学习了netmap对e1000网卡驱动的修改,今天开始进入netmap的核心代码。一切从init开始
2013-04-24 11:19:09 1584
转载 高性能网络I/O框架-netmap源码分析(2)
作者:gfree.wind@gmail.com博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net微博:weibo.com/glinuxerQQ技术群:4367710前面e1000_probe的分析,按照Linux驱动框架,接下来就该e1000_open。netmap并没有对e1000_open进行任何修改,而是改动了e10
2013-04-24 11:15:20 1600
转载 NAPI机制分析
http://hi.baidu.com/eli_li/item/6d698232847da4fedf2221eeNAPI 的核心在于:在一个繁忙网络,每次有网络数据包到达时,不需要都引发中断,因为高频率的中断可能会影响系统的整体效率,假象一个场景,我们此时使用标准的 100M 网卡,可能实际达到的接收速率为 80MBits/s,而此时数据包平均长度为 1500Bytes,则每秒产生的中
2013-04-23 17:29:42 1101
转载 NAPI
NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后 POLL 的方法来轮询数据。随着网络的接收速度的增加,NIC 触发的中断能做到不断减少,目前 NAPI 技术已经在网卡驱动层和网络层得到了广泛的应用,驱动层次上已经有 E1000 系列网卡,RTL8139 系列网卡,3c50X 系列等主流的网络适
2013-04-23 17:15:23 909
转载 Linux网卡数据包的接收
Linux网卡数据包的接收 一、从网卡说起这并非是一个网卡驱动分析的专门文档,只是对网卡处理数据包的流程进行一个重点的分析。这里以Intel的e100驱动为例进行分析。大多数网卡都是一个PCI设备,PCI设备都包含了一个标准的配置寄存器,寄存器中,包含了PCI设备的厂商ID、设备ID等等信息,驱动程序使用来描述这些寄存器的标识符。如下:[Copy
2013-04-23 16:29:46 2808
转载 实现了一个比nginx速度更快的HTTP服务器
http://www.cnblogs.com/clowwindy/archive/2011/09/23/a_http_server_faster_than_nginx.html首先承认这个标题标题党了:)。在上次的FreeBSD和linux的nginx静态文件性能对比测试 后,我萌发了自己动手做一个简单的Web Server来搞清楚nginx高性能背后的原理的想法。最后成功实现了一个基
2013-04-23 14:35:34 1449
转载 Linux的epoll模型
http://www.cnblogs.com/jankie/archive/2011/05/19/2050881.htmlLinux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。1、为什么select落后首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有
2013-04-23 14:03:21 769
转载 USB装系统、装LINUX、装Ubuntu10.10全攻略!!
http://hi.baidu.com/ppaoc/item/792bf01c14d736dabf904256一种方法:通用Linux USB安装器安装1.Universal-USB-Installer-1.8.0.4.exe(安装至U盘)2.利用XP/Vista/7系统制作U盘启动器 (Win 98/2K 不可以)3.U盘应格式化为Fat324.USB计算机BIOS要
2013-04-23 10:31:56 1191
转载 有关 apache 模块的调试
有关 apache 模块的调试的一些小知识,供朋友们学习参考。在编译apache时,增加-g选项:# ./configure CFLAGS="-g" --with-included-apr --with-php --with-mysql --with-su***ec --with-mpm=prefork --enable-so --enable-cgi --enable-rewrite
2013-04-22 11:42:41 1165
转载 linux查看网卡型号、驱动版本、队列数
http://blog.chinaunix.net/uid-24830931-id-3345567.html一、如何查看网卡生产厂家和型号? lspci命令 查看基本信息 lspci, 详细信息lspci -vvv 00:00.0 Host bridge: Intel Corporation 5520 I/O Hub to ESI Port (rev 13)00:0
2013-04-18 11:48:55 4705
转载 高性能网络I/O框架-netmap源码分析(1)
作者:gfree.wind@gmail.com博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net微博:weibo.com/glinuxerQQ技术群:4367710前几天听一个朋友提到这个netmap,看了它的介绍和设计,确实是个好东西。其设计思想与业界不谋而合——因为为了提高性能,几个性能瓶颈放在那里,解决方法自然也是类
2013-04-17 14:30:59 2359
转载 lwip源码分析6——tcp层
http://blog.chinaunix.net/uid-9863638-id-1996367.htmllwip源码分析6——tcp层2010-1-16TCP层:看了这么久,终于到tcp层了,用凌总的话来说就是进入主战场了,兴奋啊,哈哈。回顾一下tcp的特性,就当重温comer的第一卷:1. 滑动窗口的概念:Tcp是通过正面确认和重传技术来保证可靠性的,但
2013-04-17 14:27:16 2036
转载 lwip源码分析5——udp层
http://blog.chinaunix.net/uid-9863638-id-1996363.htmlUDP层:2010-1-15written by leeming看了这么久的网络协议代码,发现在这几层的处理大同小异,主要就是对数据包协议处理,一层层剥离、判断,分析,辨别,因为即使到了udp层依旧是不可靠的无连接的交付服务,所以在udp这一层的代码还是相对比较简单的。先说
2013-04-17 14:25:09 1370
转载 lwip源码分析4——ip层
http://blog.chinaunix.net/uid-9863638-id-1996361.htmlIP层(先主要研究ipv4)written by leeming简述:Ip层的目的有三个:a. ip层定义了在整个tcpip互联网中使用的数据传送基本单元,其他的高级协议都是放 在ip层的数据区的。(ICMP, IGMP(这两个仍然属于ip协议的一部分)
2013-04-17 14:19:23 1234
转载 lwip源码分析3----嵌入式LwIP协议栈的内存管理
http://blog.chinaunix.net/uid-9863638-id-1996358.html摘要:在内存需求分析的基础上,阐述了LwIP TCP/IP协议栈中pbuf结构的基本原理和内存管理机制的实现。这对在嵌入式系统中实现TCP/IP协议栈,进行网络连接有重要意义。 关键词:TCP/IP协议LwIP协议栈内存管理pbuf结构 目前,在嵌入式
2013-04-17 14:17:07 1098
转载 lwip源码分析2----ARP
http://blog.chinaunix.net/uid-9863638-id-1996357.html2010-1-61. ARP:从功能上来说,arp可以简单的分成两个部分:a. 当我要向目的ip发送一个数据包的时候,需要通过arp实现ip到物理地址(一般为mac地址)的映射------------》ethernet_output函数b.
2013-04-17 14:04:38 1041
转载 lwip源码分析1------综述及设备驱动层
http://blog.chinaunix.net/uid-9863638-id-1996356.htmlLwip学习笔记1:2010-1-4 至2010-1-8Written by leeming leeming.cublog.cn1.tcpip一般的实现方式有:●每一层一个进程,网络接口层,ip层,tcp层,应用程序层,这个方法的好处是各层之间结构清晰明了,
2013-04-17 13:52:22 1799
转载 关于LWIP
5推荐http://blog.sina.com.cn/s/blog_a6f07d72010168mv.htmllwip是一个轻量级的TCP/IP协议栈(Lightweight TCP/IP Stack)实现,最初是瑞士计算机科学学院Adam Dunkels编写的一个应用于无操作系统的嵌入式系统中的TCP/IP协议栈,后来作为一个开源(open source)
2013-04-12 16:24:12 1263
转载 Linux内核网络协议栈2-socket从库函数到内核
一、socket()库函数到系统调用,再到内核1、Linux运行的C库是glibc;2、socket()调用如下:1) socket()->__socket():glibc-2.3.6/sysdept/generic/socket.c (weak_alias(name1, name2))2) __socket():glibc-2.3.6/sysdept/unix/sysv/linu
2013-04-12 11:19:52 1007
转载 向busybox中添加命令
注意: 个人使用的busybox 是1.21.0 其中 Kbuild Config.in usage.h applets.h 均是由 Kbuild.src Config.src 等gen 的,所以修改生成的文件的文件, 而不是Kbuild等。注释里有说明,其它的参考 别的命令来写。第一种方法向 BusyBox添加一个新命令非常简单,这是因为它具有良好定义的体系结构。第一个步骤是为新
2013-04-12 09:22:15 5929
转载 Linux网络协议栈学习
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1950411最近学习linux内核网络协议栈,把数据包接收流程大致理了一下,前面也看了瀚海书香兄的总结,感觉总结的比我精炼,抓住了主干,是一目了然的那种我的这篇本来是自己看得,因此把我自己学习中一些遇到的问题写了出来,可能其他人会觉得废话比较多,呵呵另外,因为我看的书U
2013-04-12 09:11:53 1087
转载 ip_route_input() -- IP路由(输入路由)
ip_rcv_finish() --> ip_route_input() ip_route_input()给进来的包skb查找路由,现在缓冲区的路由hash表中查找,如果没找到,在调用ip_route_input_slow()到路由表中查找。 The function ip_route_input() is invoked for each IP packet arri
2013-04-10 15:31:44 5677 3
转载 __skb_dequeue()
_skb_dequeue() -- 将sk_buff链表的第一个节点从队列中摘除,并返回该节点process_backlog() --> __skb_dequeue() /usr/src/linux-2.6.19/include/linux/skbuff.hstatic inline struct sk_buff *__skb_dequeue(struct sk_buf
2013-04-10 15:28:59 3071
转载 net_rx_action() -- 软中断处理函数
/usr/src/linux-2.6.19/net/core/dev.cstatic void net_rx_action(struct softirq_action *h){ struct softnet_data *queue = &__get_cpu_var(softnet_data); unsigned long start_time = jiffies
2013-04-10 15:27:29 3932
转载 process_backlog() -- 处理从网卡上读取的sk_buff队列
net_rx_action() --> process_backlog() 前面已经说过,软中断处理函数net_rx_action调用设备的poll方法(默认为process_backlog),而process_backlog函数将进一步调用netif_receive_skb()将数据包传上协议栈,如果设备自身注册了poll函数,也将调用netif_receive_skb()函
2013-04-10 15:26:48 2963
转载 netif_receive_skb()
process_backlog() --> netif_receive_skb()/usr/src/linux-2.6.19/net/core/dev.cint netif_receive_skb(struct sk_buff *skb){ struct packet_type *ptype, *pt_prev; struct net_device
2013-04-10 15:26:18 1840
转载 ip_rcv() -- IP层接收sk_buff
netif_receive_skb() --> ip_rcv() 当一个IP包被接收到网卡中时,函数ip_rcv被底层的函数netif_receive_skb()调用。 First, the function rejects packets not addressed to the local computer. For example, the promiscuo
2013-04-10 15:25:45 2643
转载 ip_rcv_finish
ip_rcv() --> ip_rcv_finish() ip_rcv_finish()在完成包接收后进行路由处理 The function ip_route_input() is invoked within ip_rcv_finish(skb) to determine the route of a packet. The skb->dst pointer of th
2013-04-10 15:25:07 1802 1
转载 ebtables之BROUTING和PREROUTING的redirect的区别
http://blog.csdn.net/dog250/article/details/7269212ebtables和iptables实用工具都使用了Netfilter框架,这是它们一致的一方面,然而对于这两者还真有一些需要联动的地方。很多人不明白ebtales的broute表的redirect和nat表PREROUTING的redirect的区别,其实只要记住两点即可,那就是对于相同点
2013-04-10 14:10:53 1782
转载 linux内核的一些预定义
http://article.phpfans.net/?do=Show&id=Mjc3NTkx所有的内核代码,基本都包含了linux\compile.h这个文件,所以它是基础,打算先分析这个文件里的代码看看,有空再分析分析其它的代码。首先印入眼帘的是对__ASSEMBLY__这个宏的判断,这个变量实际是在编译汇编代码的时候,由编译器使用-D这样的参数加进去 的,AFLAGS这个变量也定
2013-04-10 13:46:12 673
转载 ubuntu 2.6 编译内核
声明:本文是个人参考网上有关资料,编译2.6.25内核的总结,如按本文步骤编译内核造成的责任和本文作者无关。 本文放在本人的blog上面:http://hi.baidu.com/ffbp89/ 本文还有姊妹篇《老笔记本编译2.6.20内核指导》 如果有修改,也在blog上。 欢迎转载本文,但是请不要取消本声明。 写这篇东西主要是教学目的,学生可以结合编译内核复习shell的有关
2013-04-10 12:01:20 1097
转载 Linux设备驱动中的并发控制总结
http://www.cnblogs.com/yangzd/archive/2010/10/16/1852975.html并发(concurrency)指的是多个执行单元同时、并行被执行。而并发的执行单元对共享资源(硬件资源和软件上的全局、静态变量)的访问则容易导致竞态(race conditions)。 SMP是一种紧耦合、共享存储的系统模型,它的特点是多个CPU使用共同的系
2013-04-10 11:38:38 666
转载 Linux 2.6内核中新的锁机制--RCU
一、 引言https://www.ibm.com/developerworks/cn/linux/l-rcu/众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了广泛的使用。但是随着计算机硬件的快速发展,获得这种锁的开销相对于CPU的速度在成倍
2013-04-10 11:17:52 844
转载 netfilter与用户空间通信二法
http://blog.csdn.net/wangxing1018/article/details/4295536netfilter与用户空间通信二法声明:此文章只是 陈鑫在Linux 系统内核空间与用户空间通信的实现与分析 的笔记,结合自己在一些开源项目看到的体会,仅此而已。原理性的东西都在 陈鑫 的文章中有详尽的说明和解释。如果侵犯了作者的权利,请通知我,我会及时删除。
2013-04-10 11:08:33 1218
uthash hash string
2013-09-04
cJSON解析json数据
2013-09-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人