linux
文章平均质量分 76
jiangyi711
这个作者很懒,什么都没留下…
展开
-
netfilter与用户空间通信
在做p2p流控的时候,学习到了linux用户空间与内核通信的方法。在http://www.ibm.com/developerworks/cn/linux/l-netlink/index.html一文中详细介绍了几种方法。我们的内核态环境是有用户上下文的,所以采用的是copy_from_user()/copy_to_user()方法实现内核态和用户态的数据拷贝。但是这两个函数会引发阻塞,所以只能用在原创 2009-11-06 02:38:00 · 581 阅读 · 0 评论 -
linux netfilter
netfilter 是一种内核中用于扩展各种网络服务的结构化底层框架。netfilter的设计思想是生成一个模块 结构使之能够比较容易的扩展。新的特性加入到内核中并不需要从新启动内核。这样,可以通过简单的构造一个内核模块来实现网络新特性的扩展。给底层的网络特性扩展带来了极大的便利,使更多从事网络底层研发的开发人员能够集中精力实现新的网络特性。netfilter有4大特性:1. 每一个协议定义"h原创 2009-11-05 16:19:00 · 957 阅读 · 1 评论 -
linux字节序转换函数和地址转换函数
刚才阅读代码的时候看到了一个字节排序函数,一时想不起具体用法了。想想学习linux下的网络编程也不少时间了,这些字节排序和转换的函数还是不太清楚,容易混淆。今天索性把这方面的知识汇总一下,争取以后能够熟练的认识和运用。字节顺序函数:小端字节序:将低序字节存储在起始地址。(linux)大端字节序:将高序字节存储在起始地址。(网络字节序)举个例子:对于整数0x12345678来说,在不同的系统中存放的原创 2009-11-06 01:40:00 · 6129 阅读 · 3 评论 -
linux进程和线程
这两天一直在看linxu进程和线程的东西,总是效率比较低,这么一点基础的东西还看了这么久。该自我反省一下。首先来看看进程。进程分为三个部分,进程控制块,程序段和数据段。进程是一个有生命的实体,程序是一个没有生命的实体。只有CPU赋予程序生命的时候,程序才成为一个活动的实体,我们称之为“进程”。每一个进程都有自己的地址空间。一般包括文本区(代码区),数据区,堆栈。文本区存储程序执行的代码;数据区原创 2009-11-06 02:45:00 · 526 阅读 · 0 评论 -
多线程下安全的信号处理
最近项目上出现了一个小问题,今天把这个问题修补了一下。为此在博客上也做个记录。 问题是有关端口绑定引起的,原来我们在做测试的时候,一般用ctrl+c退出server程序,这样退出有一个问题。上次bind的端口仍然被占用着,如果马上重新执行server程序,那么会出现"bind listening sockey falure!"的情况,这样的话要等待一会儿,才能重新运行程序。为此我修改了一下代码原创 2009-11-08 14:20:00 · 2330 阅读 · 1 评论 -
Linux文件类型及如何查看,修改文件读写权限
现在使用 ls -l 命令,查看详细信息格式的文件列表,您将会看到如下内容: total 5drwxr-x--- 4 user group 4096 Mar 10 00:37 filenamedrwxr-xr-x 21 user group 4096 Mar 10 20:16 文件名-rw------- 1 user group 524 Mar 10 00:40 a-rw-r--r转载 2010-05-05 16:26:00 · 11768 阅读 · 1 评论 -
linux内核sk_buff的结构分析
转载自:http://simohayha.javaeye.com/blog/556168我看的内核版本是2.6.32. 在内核中sk_buff表示一个网络数据包,它是一个双向链表,而链表头就是sk_buff_head。在老的内核里面sk_buff会有一个list域直接指向sk_buff_head也就是链表头,现在在2.6.32里面这个域已经被删除了。 而sk_buff的内存布局可以分作3个段,第一个就是sk_buff自身,第二个是linear-data buff,第三个是paged-data buff(也就转载 2010-09-08 01:54:00 · 2282 阅读 · 0 评论