网络编程
文章平均质量分 79
jiatingqiang
用计算机的视角,观察、体验、追求世界! ---知其然更要知其所以然---
展开
-
用ioctl获得本地ip地址
用ioctl获得本地ip地址原创 2011-02-28 20:31:00 · 719 阅读 · 0 评论 -
内核模块编程实例+经典内核Makefile
内核模块编程实例//hello.c#include #include MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "Hello, world\n"); return 0;}static void hello_exit(void){转载 2012-03-07 14:14:12 · 1373 阅读 · 0 评论 -
Linux下Socket相关头文件总结
一 三种类型的套接字:1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务。数据被看作是字节流,无长度限制。例如FTP协议就采用这种。2.数据报式套接字(SOCKET_DGRAM) 提供无连接的数据传输服务,不保证可靠性。3.原始式套接字(SOCKET_RAW) 该接口允许对较低层次协议,如IP,ICMP直接访问。二转载 2011-12-15 21:06:29 · 785 阅读 · 0 评论 -
[转] [献给想深入学习网络编程的朋友] C,C++网络编程学习简明指南
[转] [献给想深入学习网络编程的朋友] C,C++网络编程学习简明指南C,C++网络编程学习简明指南 1. 扎实的C,C++基础知识 参考资料《C程序设计》,《C++ primer》。 2. TCP/IP协议 经典书是:W.Richard Ste转载 2011-09-13 21:48:21 · 832 阅读 · 0 评论 -
学习网络编程的十个步骤
经过多年的网络编程实践之后,个人觉得初学网络编程者可以从以下几个步骤开展: 1)下载一个可以互动的学习工具,通过这个与这个工具互动,我们可以及时的学到每个api的结果如果。我个人强烈推荐一个互动好工具,即python,下载地址http://www.python.or转载 2011-09-13 21:47:32 · 645 阅读 · 0 评论 -
Linux内核发送构造数据包的方式
本文欢迎自由转载,但请标明出处,并保证本文的完整性。 作者:Godbach 日期:2009/09/01一、构造数据包简析这里并不详细介绍如何在内核中构造数据包,下文如有需要会在适当的位置进行分析。这里简单的分析讲一下内核态基于Netfilt转载 2011-07-05 00:08:27 · 886 阅读 · 0 评论 -
struct sockaddr与struct sockaddr_in的区别和联系
<br />最近在看网络编程部分内容,刚开始接触结构体struct sockaddr和struct sockaddr_in的时候,极其迷惑,在网上翻了不少帖子,慢慢有那么点清晰了。呵呵,现在结合一篇网友的文章,对这两个结构体进行解读。<br /><br />在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下:<br />typedef unsigned short sa_family_t;<br />struct sockaddr转载 2011-05-07 08:33:00 · 608 阅读 · 0 评论 -
Linux内核线程编程方法(经典)
<br /><br />Linux内核线程编程方法<br /> <br />内核经常需要在后台执行一些操作,这种任务就可以通过内核线程(kernle thread)完成--独立运行在内核空间的标准进程。内核线程和普通的进程间的区别在于内核线程没有独立的地址空间,mm指针被设置为NULL;它只在 内核空间运行,从来不切换到用户空间去;并且和普通进程一样,可以被调度,也可以被抢占。实际上,内核线程只能由其他内核线程创建,在现有的内核线程中创建一个新的内核线程的方法:<br /><br />kthread_cre转载 2011-06-02 20:53:00 · 1450 阅读 · 0 评论 -
TCP/IP网络编程之四书五经
<br />TCP/IP协议是当前广域网和局域网通用的网络协议,因此,基于TCP/IP的编程就格外重要。从应用上来说,现在直接利用C层次Socket API进行TCP/IP编程的人确实越来越少了,各种现成的框架(如ACE、Java、.NET FCL)和控件(如IP*Works)大大简化了TCP/IP编程的难度。但是,如果想要在这个领域达到融会贯通的地步,不打下坚实的基础是不可想象的。正如Richard Stevens在TCP/IP Illustrated中所说,在网络编程领域,开发者所遇到的实际问题中,大约原创 2011-04-13 20:09:00 · 665 阅读 · 0 评论 -
printk()函数的使用详解
printk()函数的总结<br /><br />我们在使用printk()函数中使用日志级别为的是使编程人员在编程过程中自定义地进行信息的输出,更加容易地掌握系统当前的状况。<br />对程序的调试起到了很重要的作用。<br />(下文中的日志级别和控制台日志控制级别是一个意思)<br /><br />printk(日志级别 "消息文本");这里的日志级别通俗的说指的是对文本信息的一种输出范围上的指定。<br />日志级别一共有8个级别,printk的日志级别定义如下(在linux26/includeli原创 2011-03-31 22:59:00 · 788 阅读 · 0 评论 -
修改以及重构SKB
修改以及重构SKB测试环境:<br /> CentOS5.3 2.6.18<br />工具:<br /> sendip和wireshark<br /> sendip可以发送各种数据包,确实方便.wireshark图形化的显示对于分析整个数据包还是相当不错的...<br /> <br />一:内核态基于Netfilter构造数据包<br />主要有两种方式:<br />1. alloc_skb申请一个skb结构体,然后根据实际的应用填充不同的成员,或者基于当前数据包的skb,<br />转载 2011-03-31 22:57:00 · 1260 阅读 · 0 评论 -
[linux内核编程入门].1.1.构建自己的内核模块
[内核编程入门]构建自己的内核模块<br />虽然Linux是个宏内核系统,但是内核允许在运行时动态地加载或卸载模块。这项特性为Linux内核开发与使用带来了很多方便,比如基本内核映像可以做得足够小,新功能和驱动程序可以以模块的形式提供。同时,这样做也方便调试。本文中将描述如何构造一个最简单的内核模块。<br /><br />1. 编写一个简单的内核模块<br />模块文件中需要有入口点和出口点,这是加载与卸载模块时要被调用的。这两个接口在include/linux/init.h定义,相当于模块的“构造”与原创 2011-04-01 09:37:00 · 571 阅读 · 0 评论 -
网卡如何发送、接收数据包
0推荐网线可以看作一个高速公路,物理帧也就是辆汽车,网卡呢?或许是个加油站吧。从这个角度将,汽车和加油站没有绝对的对应关系,所有的汽车都可以进入该加油站。 正常情况:网线上的物理帧首先被网卡芯片获取,网卡芯片会检查物理帧的CRC,保证完整性。其次,网卡芯片将物理帧头去掉,得到MAC包。网卡芯片检查MAC包内的目的MAC地址信息,和本网卡的MAC地址是否一致?不一致,抛弃。网卡芯片将MAC帧拷贝到网卡内部的缓冲区,触发中断。驱动程序通过中断,将MAC包拷贝到系统中,构建sk_buff。告诉上层。上层去掉MAC原创 2011-04-01 09:13:00 · 1310 阅读 · 0 评论 -
A example of NF_IP_PRE_ROUTING module(转载)
A example of NF_IP_PRE_ROUTING module转载 2011-03-27 19:51:00 · 2739 阅读 · 1 评论 -
A example of NF_IP_PRE_ROUTING module(转载)
1、要做什么在netfilter Hook点注册一个自己的Hook函数,截取每一个数据包读取文件,获取IP列表Ip匹配是否进行重定向的工作,是否丢弃等2、netfilter结构以及HOOK点的选择 Fig.1 Hook Point of netfilter<br />[选择]NF_IP_PRE_ROUTING(local process所发送的包不在限制之列)3、NF_IP_PRE_ROUTING下优先级的选择<br /> Hook点的Hook函数依照优先级一次执行。<br />转载 2011-03-27 19:50:00 · 1041 阅读 · 0 评论 -
Linux TCP/IP协议栈的通用编码模式解析
和其他内核功能一样,每个网络功能都是内核成员中的一个。因此,它必须合理且公平的使用内存, CPU和其他共享资源。绝大多数功能并非内核中一段独立的程序,而是根据该功能而或多或少的与内核中其他部分相互影响。因此它们总是试图,尽可能的,使用类似的体系结构来实现类似的功能。对许多内核组件来说有些需求是通用的,比如为同一数据结构分配好几个实例,或者跟踪一个数据结构的参考以避免不安全的内存重分配,等等。下转载 2012-03-28 11:29:33 · 1076 阅读 · 0 评论