Linux内核:sk_buff解析】的更多相关文章

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/11539695 关于socket与sock的关系再简单说一下. socket是面向文件与API的,拿来给application程序员fuck. 而sock是面向数据包的,用来发送用户的数据和接收网卡传到内核的数据. 我们再看一下sock的结构体定义. struct sock { ... volatile unsigned long wmem_alloc…
本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/11619609 我的朋友里,至少有2.5个神童. 有的书上说,一个人的能力取决于他的朋友圈子的能力.所以,我是幸运的,因为我的很多朋友都比我更优秀. 雅丽是公认的神童.北漂族.帅气.博学.擅长多国语言,同时,公认的Oracle大神.他自认是个文科生,跟计算机毫无关系,不过大量的兄弟伙在他们的Oracle数据库快死的时候会向雅丽求救,同时,获得起死回生的…
本文原创为freas_1990,转载请标明出处http://blog.csdn.net/freas_1990/article/details/10223581 TCP状态转移的原理并不高深,但是处理逻辑比较复杂,以下是TCP状态转移图.出自<TCP/IP协议详解:卷2>——W.Richard Stevens 这些状态是怎么实现的呢? 我们来看一下内核源代码.(server端部分) int tcp_rcv(struct sk_buff *skb, struct device *dev, stru…
本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/10162853 Jack:我想知道用户如何把数据发送到内核空间的? 我:你觉得哪里比较难理解呢? Jack:一般程序员会在程序里通过socket变量获得一个文件描述符,然后通过write把定义好的字符串写入到该描述符. 我:是的.你有什么不明白的吗? Jack:可是,我不知道这个write底层到底会做什么. 我:这个write底层会调用sock_sen…
1. 前言 本文将介绍ARM64架构下,Linux kernel和启动有关的配置项. 注1:本系列文章使用的Linux kernel版本是“X Project”所用的“Linux 4.6-rc5”,具体可参考“https://github.com/wowotechX/linux.git”. 2. Kconfig文件 ARM64架构中和Boot有关的配置项,非常简单,主要包括ACPI.命令行参数和UEFI几种.这些配置项位于“ arch/arm64/Kconfig”中,具体如下: 1: menu…
1. 前言 对刚接触Linux kernel的同学来说,遇到的第一个问题就是:我该从哪里入手?. 话说Linux kernel的打开方式是多种多样的:从简单的设备驱动入手:从源代码的目录结构入手:从kernel的启动过程入手:从大的功能模块入手:等等.不管怎样,每条都是正途(条条大路通罗马嘛). 而本文(以及随后的系列文章),将从Linux kernel的配置项入手,从整体上认识Linux kernel.之所以这么做,原因有二: 1)Linux kernel的配置项数目繁多,以至于进行kerne…
以前进过一些公司看到一些服务器,把环境搭建都搭建在etc里面,而且都乱套了.在找PHP配置文件和apache的conf文件都难找到, 我们应该大致的了解下linux的文件分布 /etc : 放置系统重要配置文件 /dev : 放置驱动文件 /boot : 系统重要激活文件 /home : 放置项目文件,经常操作的,比如FTP,svn放置区域 /lib : 放置系统函式库, 系统配置文件 /lost and /found : 缓存文件 /mnt : 挂载目录 /proc : 文件都放置在内存内 /…
本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/11264237 大家都知道TCP是面向stream,而UDP是面向datagram的. 那,到底什么是stream呢? 我们来看一下以下代码 /* Now we need to check if we have a half built packet. */ if ((skb = tcp_dequeue_partial(sk)) != NULL) {…
1.struct page /* Each physical page in the system has a struct page associated with * it to keep track of whatever it is we are using the page for at the * moment. Note that we have no way to track which tasks are using * a page, though if it is a pa…
一.内核功能.内核发行版 1.到底什么是操作系统 (1)linux.windows.android.ucos就是操作系统: (2)操作系统本质上是一个程序,由很多个源文件构成,需要编译连接成操作系统程序(vmlinz.zImage): (3)操作系统的主要作用就是管理计算机硬件,给应用程序提供一个运行环境. 2.操作系统核心功能(管理资源) (1)内存管理 如果没有操作系统,内存需要程序自己来管理.譬如在uboot中要使用哪块内存,由程序自己决定的,没有注册也没有限制.此时如果程序不小心把同一块…