随笔分类 -  Linux内核游记

1

摘要:原创作品,转载请标明。专栏地址:http://blog.csdn.net/column/details/linux-kernel-net.html[系统运维]Linux内核--网络栈实现分析(一)--网络栈初始化[系统运维]Linux内核--网络栈实现分析(二)--数据包的传递过程(上)[系统运维]Linux内核--网络栈实现分析(三)--驱动程序层+链路层(上)[系统运维]Linux内核--网络栈实现分析(四)--网络层之IP协议(上)[系统运维]Linux内核--网络栈实现分析(五)--传输层之UDP协议(上)[系统运维]Linux内核--网络栈实现分析(六)--应用层获取数据包(上)[系 阅读全文

posted @ 2012-12-19 18:10 yming0221 阅读(248) 评论(0) 推荐(0)

摘要:本文分析基于Linux Kernel 3.2.1原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7996528更多请查看专栏http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明1、套接字的绑定创建完套接字服务器端会在应用层使用bind函数进行套接字的绑定,这时会产生系统调用,sys_bind内核函数进行套接字。系统调用函数的具体实现SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr 阅读全文

posted @ 2012-09-19 23:41 yming0221 阅读(380) 评论(0) 推荐(0)

摘要:本文分析基于Linux Kernel 3.2.1原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7984238更多请查看专栏http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明1、系统初始化过程中会调用sock_init函数进行套接字的初始化,主要是进行缓存的初始化static int __init sock_init(void) { int err; //初始化.sock缓存 sk_init(); //初始化sk_buff缓存 skb_... 阅读全文

posted @ 2012-09-16 16:18 yming0221 阅读(373) 评论(0) 推荐(0)

摘要:本文分析基于Linux Kernel 3.2.1原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7979838更多请查看专栏http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明Linux内核中协议族有INET协议族,UNIX协议族等,我们还是以INET协议族为例。下面是内核中的协议族声明:/* Supported address families. */ #define AF_UNSPEC 0 #define AF_UNIX 1 /* Unix domai. 阅读全文

posted @ 2012-09-14 20:16 yming0221 阅读(440) 评论(0) 推荐(0)

摘要:本文分析基于Linux Kernel 3.2.1原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7972647更多请查看网络栈分析专栏http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明1、alloc_skb()函数该函数的作用是在上层协议要发送数据包的时候或网络设备准备接收数据包的时候会调用alloc_skb()函数分配sk_buff结构体,需要释放时调用kfree_skb()函数。static inline struct sk_buff *alloc_s 阅读全文

posted @ 2012-09-13 17:00 yming0221 阅读(623) 评论(0) 推荐(0)

摘要:本文分析基于Linux Kernel 3.2.1原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7971463更多请查看专栏http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明几个月之前做了关于Linux内核版本1.2.13网络栈的结构框架分析并实现了基于Netfilter的包过滤防火墙,这里以内核3.2.1内核为例来进一步分析,更全面的分析网络栈的结构。1、先说一下sk_buff结构体这个结构体是套接字的缓冲区,详细记录了一个数据包的组成,时间、网络设备、 阅读全文

posted @ 2012-09-12 18:23 yming0221 阅读(489) 评论(0) 推荐(0)

摘要:测试内核版本:Linux Kernel 2.6.35----Linux Kernel 3.2.1原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7572382更多请查看专栏http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明知识基础:本防火墙的开发基于对Linux内核网络栈有个良好的概念,本人对网络栈的分析是基于早期版本(Linux 1.2.13),在明确了网络栈架构的前提下,上升一步分析高级版本内核中的Netfilter防火墙实现原理,然后进行模块或内核编 阅读全文

posted @ 2012-05-16 15:05 yming0221 阅读(592) 评论(0) 推荐(0)

摘要:本文分析基于Linux Kernel 1.2.13原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7555870更多请查看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析、”(下)“表示分析是从上向下分析。在博文Linux内核--网络栈实现分析(三)--驱动程序层(链路层)(上)中对网络设备结构,网络设备初始化等函数有了初步认识,并列出了设备的 阅读全文

posted @ 2012-05-11 09:49 yming0221 阅读(188) 评论(0) 推荐(0)

摘要:本文分析基于Linux Kernel 1.2.13原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7552455更多请查看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析、”(下)“表示分析是从上向下分析。上篇博文分析传输层最终会调用函数ip_queue_xmit()函数,将发送数据的任务交给网络层,下面就分析了下该函数:该函数的主要函数调用关 阅读全文

posted @ 2012-05-10 12:35 yming0221 阅读(202) 评论(0) 推荐(0)

摘要:本文分析基于Linux Kernel 1.2.13原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7549340更多请查看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析、”(下)“表示分析是从上向下分析。上篇分析了应用层经过BSD socket层到INET socket层的函数调用关系和数据的处理流程,INET层会调用具体的传输层协议,还是以 阅读全文

posted @ 2012-05-09 12:08 yming0221 阅读(181) 评论(0) 推荐(0)

摘要:本文分析基于Linux Kernel 1.2.13原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7547826更多请查看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析、”(下)“表示分析是从上向下分析。下面是发送数据的流程:应用层发送数据包的入口函数是BSD socket层的sock_write()函数,在分析该函数之前,先分析下socke 阅读全文

posted @ 2012-05-09 11:52 yming0221 阅读(209) 评论(0) 推荐(0)

摘要:本文分析基于Linux Kernel 1.2.13原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7545855更多请查看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析、”(下)“表示分析是从上向下分析。在博文Linux内核--网络栈实现分析(二)--数据包的传递过程(上)中分析了数据包从网卡设备经过驱动链路层,网络层,传输层到应用层的过程。 阅读全文

posted @ 2012-05-08 13:26 yming0221 阅读(278) 评论(0) 推荐(0)

摘要:本文分析基于内核Linux 1.2.13原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7541907更多请看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析、”(下)“表示分析是从上向下分析。上篇博文分析了传输层从网络层获取数据包后将数据包缓存结构sk_buff挂载到特定的sock结构的接收队列中。这里接着分析应用程序是如何从传输层获取网络数 阅读全文

posted @ 2012-05-07 14:54 yming0221 阅读(220) 评论(0) 推荐(0)

摘要:本文分析基于Linux Kernel 1.2.13原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/7532512更多请看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析、”(下)“表示分析是从上向下分析。这里看看数据包从IP层是如何交给传输层来处理的,为了方便,这里传输层以UDP协议为例来分析。从ip_rcv()函数中可以看到 ... 阅读全文

posted @ 2012-05-04 18:06 yming0221 阅读(389) 评论(0) 推荐(0)

摘要:本文分析基于Linux Kernel 1.2.13原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7514017更多请看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析、”(下)“表示分析是从上向下分析。简单分析了链路层之后,上升到网络层来分析,看看链路层是如何为其上层--网络层服务的。其实在驱动程序层和网络层直接还有一层是接口层,叫做驱动程序 阅读全文

posted @ 2012-04-28 13:06 yming0221 阅读(431) 评论(0) 推荐(0)

摘要:本文分析基于Linux Kernel 1.2.13原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7497260更多请看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析、”(下)“表示分析是从上向下分析。经过前面两篇博文的分析,已经对Linux的内核网络栈的结构有了一个模糊的认识,这里我们开始从底层开始详细分析Linux内核网络栈的实现。由于这 阅读全文

posted @ 2012-04-25 15:23 yming0221 阅读(267) 评论(0) 推荐(0)

摘要:本文分析基于Linux Kernel 1.2.13原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7492423更多请看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析、”(下)“表示分析是从上向下分析。上一篇博文中我们从宏观上分析了Linux内核中网络栈的初始化过程,这里我们再从宏观上分析一下一个数据包在各网络层的传递的过程。我们知道网络的O 阅读全文

posted @ 2012-04-24 12:42 yming0221 阅读(185) 评论(0) 推荐(0)

摘要:本文分析基于内核Linux Kernel 1.2.13原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7488828更多请看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明以后的系列博文将深入分析Linux内核的网络栈实现原理,这里看到曹桂平博士的分析后,也决定选择Linux内核1.2.13版本进行分析。原因如下:1.功能和网络栈层次已经非常清晰2.该版本与其后续版本的衔接性较好3.复杂度相对新的内核版本较小,复杂度低,更容易把握网络内核的实质 阅读全文

posted @ 2012-04-23 13:51 yming0221 阅读(317) 评论(0) 推荐(0)

摘要:主机:Gentoo Linux 11.2 with linux kernel 3.0.6硬件平台:FL2440(S3C2440)with linux kernel 2.6.35原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/7207908*接上文ARM-Linux驱动--MTD驱动分析(二)本文分析MTD设备的分区管理机制分区管理实际上是将一个MTD设备分成几个分区,将其作为单独的MTD原始设备进行管理。1、分区的结构体描述结构体mtd_part/* Our partition node structure */ //分区结 阅读全文

posted @ 2012-01-17 23:18 yming0221 阅读(478) 评论(0) 推荐(0)

摘要:主机:Gentoo Linux 11.2 with linux kernel 3.0.6硬件平台:FL2440(S3C2440)with linux kernel 2.6.35原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/7205713*接上文ARM-Linux驱动--MTD驱动分析(一)1、mtd_notifier结构体//MTD设备通知结构体 struct mtd_notifier { void (*add)(struct mtd_info *mtd);//加入MTD原始/字符/块设备时执行 void (*remo.. 阅读全文

posted @ 2012-01-16 15:06 yming0221 阅读(409) 评论(0) 推荐(0)

1

导航