本文原创为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) {…
本文原创为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/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/10162853 Jack:我想知道用户如何把数据发送到内核空间的? 我:你觉得哪里比较难理解呢? Jack:一般程序员会在程序里通过socket变量获得一个文件描述符,然后通过write把定义好的字符串写入到该描述符. 我:是的.你有什么不明白的吗? Jack:可是,我不知道这个write底层到底会做什么. 我:这个write底层会调用sock_sen…
http://blog.sina.com.cn/s/blog_6b94d5680101vfqv.html Linux内核源代码情景分析---第五章 文件系统  5.1 概述 构成一个操作系统最重要的就是 进程管理 与 文件系统: 有些操作系统有进程管理而没有文件系统,有些操作系统有文件系统而没有进程管理(MSDOS):两者都没有那就不是操作系统了: 狭义的文件:指磁盘文件,进入指可以是有序地存储在任何介质中(包括内存)的一组信息. 广义的文件:(unix把外部设备也当成文件)凡是可以产生或消耗信…
Linux内核源代码获取方法 什么叫Linux 什么叫Linux内核 Linux内核源代码的获取 什么叫Linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议.它支持32位和64位硬件.Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统.Linux最早是由芬兰黑客 Linus Torvalds为尝试在英特尔x86架构上提…
在windows下解压缩Linux内核源代码出现重复文件原因 2009年06月30日 13:35 来源:ChinaUnix博客 作者:embededgood 编辑:周荣茂     原因一.因为在Linux下文件名是大小写敏感的,而Windows下文件名则是大小不敏感,所以对于同一目录下如果有两个文件不同名但大小写不一样时在windows下会有问题.如kernel source中的include/linux/netfilter_ipv4/存在ipt_ecn.h和ipt_ECN.h,在linux这是…
说明:只供学习交流 一,目录结构 Linux内核源代码采用树形结构进行组织,非常合理地把功能相关的文件都放在同一个子目录下,使得程序更具有可读性. 二,目录结构 arch目录 arch是architecture的缩写.内核所支持的每种CPU体系,在该目录下都有对应的子目录.每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等 | --x86  /* 英特尔cpu及与之相兼容体系结构的子目录*/ | |--boot   /*引导程序*/…
Linux内核源代码目录树结构. arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录.和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分).mm(内存管理).math-emu(浮点单元仿真).lib(硬件相关工具函数).boot(引导程序).pci(PCI总线)和power(CPU相关状态). block:部分块设备驱动程序. crypto:常用加密和散列算法(如AES.SHA等),还有一些压缩和CRC校验算法. Documentation:关…