linuxnetworkstackhack.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linuxnetworkstackhack

Linux内核网络协议栈Hack快速入门 Samuelchen QQ空间产品中心 培训目标 熟悉基本的Linux内核编程方法 掌握常见的内核协议栈修改和优化原理 掌握常见的调试优化方法和工具 从内核层次理解和调优网络应用 Linux内核网络协议栈Hack 基本知识 协议栈架构 优化实例 参考文件 基本知识点-内核程序架构 #include linux/kernel.h #include linux/config.h #include linux/version.h #include linux/module.h static int war2089_background( void ) { printk(0\nIn 2089,one way happens between human and robots.\n) } static int __init war2089_init( void ) { printk(0\nMy is demo programme,starting...\n); } /*模块注销入口*/ static void __exit war2089_exit( void ) { printk(0\nMy is demo programme,exit...\n); } #ifdef __KERNEL_MODULE__ module_init(war2089_init) module_exit(war2089_exit) #endif 基本知识点-内核编译 1、配置内核 1)cd /usr/src/linux/ make menuconfig; 修改内核配置,并保存 2)make -j 10 bzImage 编译内核,采用10个线程编译 3)make -j 10 modules; 编译模块 4)make install 安装内核 5)make modules_install 安装模块 基本知识点-定时器 static void war2089_apple_producer_timer_handle( unsigned long data) { war2089_apple_producer_timer.expires = jiffies+5*HZ; if ( time_to_exit ) return ; spin_lock(attack_lock); robots[robot_count]=R; robots[robot_chairman_pos]=R; robot_chairman_pos = random_num()%robot_count; robots[robot_chairman_pos]=H; spin_unlock(attack_lock); robot_count++; if (robot_count = MAX_ROBOT_COUNT) robot_count=0; add_timer(robot_producer_timer); } 基本知识点-时钟与时间 内核的全局变量jiffies,应用中只能读。 jiffies的值是当每次timer中断产生后,就会加1. 而HZ预示了你1秒发生多少次timer中断,所以 一秒jiffies增加的数值肯定就等于HZ的值 2.4是100次 2.6中的HZ默认为1000次 可以直接通过HZ来计时 基本知识点-内存使用 32vs64: 32位:稳定支持4GB,超过4GB容易down.3GB以下是用户空间,3GB以上是内核空间.4KB/Page 64位:128G, 8KB/Page 地址分类: 逻辑地址:请求控制器的地址 线性地址:从0开始寻址的内存.Intel使用段式寻址 物理地址:物理总线地址 基本知识点-内存使用 内核栈内静态分配 32位:8K,64位:16K 逻辑地址到物理地址转化 phyaddr = __pa(_mapd)PAGE_SHIFT; 如何在内核分配较大的静态内存 启动时候指定参数.. 基本知识点-中断与延后处理 驱动buffer穿越网络芯片、网卡驱动、IP协议栈的力量 中断驱动机制 分为硬中断和软中断机制. 硬件中断完成链路帧到达通知,并告诉CPU可以去处理收到链路帧等。 通常是在设备驱动中注册硬件中断处理函数来实现该机制。 软件中断是驱动整个TCP/IP协议栈的核心力量。对应网络协议栈有 专有的软中断标识,如NET_TX_SOFTIRQ,NET_RX_SOFTIRQ。也可以增加自定义的入口。 如: open_softirq(NET_TX_SOFTIRQ, net_tx_action, NULL); --注册 raise_softirq(NET_TX_SOFTIRQ); --触

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档