- 浏览: 315078 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
JQ_AK47:
...
Linux下直接发送以太包 -
winsen2009:
谢谢分享,如果能再来一个列子就更好了,刚接触看完还是不懂的用
UNPv1_r3读书笔记: SCTP编程
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,
严禁用于任何商业用途。
msn: yfydz_no1@hotmail.com
来源:http://yfydz.cublog.cn
严禁用于任何商业用途。
msn: yfydz_no1@hotmail.com
来源:http://yfydz.cublog.cn
1. 前言 连接(ip_conntrack)的计数是很重要的, 用来表示正在使用该连接的用户的数量, 当计数为0时, 将 释放该连接的内存, 本文讨论一下连接计数的变化情况。 内核代码版本2.6.19.2. 2. 初始化 在连接分配函数中计数初始化为1. /* net/ipv4/netfilter/ip_conntrack_core.c */ struct ip_conntrack *ip_conntrack_alloc(struct ip_conntrack_tuple *orig, struct ip_conntrack_tuple *repl) { ...... atomic_set(&conntrack->ct_general.use, 1); ...... } 3. 计数增加1 调用以下函数时会增加连接的计数: /* net/ipv4/netfilter/ip_conntrack_core.c */ struct ip_conntrack_tuple_hash * ip_conntrack_find_get(const struct ip_conntrack_tuple *tuple, const struct ip_conntrack *ignored_conntrack) int __ip_conntrack_confirm(struct sk_buff **pskb) static inline void nf_conntrack_get(struct nf_conntrack *nfct) 以下两个函数也会增加计数, 不过在函数出口处就会调用ip_conntrack_put()函数减少计数, 因此实 际不改变连接计数: static int early_drop(struct list_head *chain) static struct ip_conntrack * get_next_corpse(int (*iter)(struct ip_conntrack *i, void *data), void *data, unsigned int *bucket) 4. 计数减少1 最常见的减少计数是: static inline void ip_conntrack_put(struct ip_conntrack *ct) 实际该函数直接调用了 static inline void nf_conntrack_put(struct nf_conntrack *nfct) 而在释放skb数据包函数中也会减少连接计数: void __kfree_skb(struct sk_buff *skb) 5. 变化情况总结 当一个数据包进入时, 如果是新连接, 会在ip_conntrack_alloc()函数中将连接计数初始化为1, 如 果是已建连接的后续包, 会通过ip_conntrack_find_get()函数将数据包和连接联系起来, 并增加连 接; 然后进入规则处理, 如果丢包, 会最终调用__kfree_skb()函数减少连接计数, 而如果顺利通过, 会在出netfilter架构前调用__ip_conntrack_confirm(), 如果是新包, 会继续增加计数(此时计数至 少为2), 而已连接包则不会再增加计数;数据包出netfilter架构后, 正常发出后, 数据包本身也被 释放, 连接计数再减1, 这样如果没有数据包附着于该连接, 该连接的计数将剩1, 等连接超时后, 调 用death_by_timeout()函数, 其中调用了ip_conntrack_put()减少连接计数, 此时连接计数为0, 将 调用destroy_conntrack()函数释放连接的资源。注意,ip_conntrack_get()函数不影响计数。 发表于: 2008-01-05,修改于: 2008-01-05 22:09,已浏览2410次,有评论1条 推荐 投诉 网友: xiaosuo 时间:2008-01-06 15:05:49 IP地址:221.238.129.★ ip_conntrack_get不增加引用计数确实是挺奇怪的,奈何历史原因,也许以后会改变,变得更加统一些,xx_get增加计数,xx_put减少计数。
发表评论
-
Linux内核中流量控制(24)
2011-01-10 16:33 2210本文档的Copyleft归yfydz所 ... -
Linux内核中流量控制(23)
2011-01-10 16:30 1493本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(22)
2011-01-10 16:29 1939本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(21)
2011-01-10 16:28 1357本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(20)
2011-01-10 16:27 1525本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(19)
2011-01-10 16:27 1979本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(18)
2011-01-10 16:26 1572Linux内核中流量控制(18) ... -
Linux内核中流量控制(17)
2011-01-10 16:25 1951本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(16)
2011-01-10 16:25 1807本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(15)
2011-01-10 16:24 1892本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(14)
2011-01-10 16:23 1961本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(13)
2011-01-10 16:22 2638本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(12)
2011-01-10 16:21 2110本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(11)
2011-01-10 16:21 3236本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(10)
2011-01-10 16:20 2007本文档的Copyleft归yfydz所 ... -
Linux内核中流量控制(9)
2011-01-10 16:19 1833本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(8)
2011-01-10 16:18 1498本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(7)
2011-01-10 16:18 2926本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(6)
2011-01-10 16:17 1495本文档的Copyleft归yfydz所有,使用GPL发布,可以 ... -
Linux内核中流量控制(5)
2011-01-10 16:16 1730本文档的Copyleft归yfydz所有,使用GPL发布,可以 ...
相关推荐
FDC2214_纸张计数装置完整代码 后端cstm32f103zet6使用IIC与FDC2214电容传感模块连接,获取被测纸张厚度变化的数值,通过查表法计算纸张数量,发送给串口屏显示,具有自校准,无纸提示.zip
stm32f103zet6使用IIC与FDC2214电容传感模块连接,获取被测纸张厚度变化的数值,通过查表法计算纸张数量,发送给串口屏显示,具有自校准,无纸提示,自校准后能准确测量1到82张A4纸,彩色卡纸也可以,人民币也可以,...
(4) 实验内容2:使用VerilogHDL语言设计一个模16计数器,含计数使能端(en)与异步清零端(clr),当en为高电平时开始计数,为低电平时停止计数,将计数器与7段数码显示译码器使用原理图进行连接,并仿真及下载。...
18.7.1 到不存在的端口的连接请求 187 18.7.2 异常终止一个连接 187 18.7.3 检测半打开连接 188 18.8 同时打开 189 18.9 同时关闭 191 18.10 TCP选项 191 18.11 TCP服务器的设计 192 18.11.1 TCP服务器端口号 193 ...
将信号的正负变化次数计数,并且计数时间控制为1S即为频率计,本设计将定时器(定时为1S),计数器、显示器等主要部件连接起来,
该软件在设计时考虑了隐私,因为只能输出一系列信号电平和每天都在变化的不可追踪的ID。如何安装npm install 6sense先决条件是 具有监控功能的wifi接口。快速开始6sense每个部分基本上都是连接加密狗的有限状态机。...
2.1.2 状态译码器(74LS138) 图3 74LS138译码器 74LS138译码器输出的状态控制数码管的亮与灭,它有6个状态,连接到数码管的位选, 达到点亮数码管点亮的要求。 2.1.3 数据显示电路 图4 显示电路图 数据显示电路由...
最关键的是 这个系统在你的电脑上可以运行起来,...这里面有好多工具如:编辑工具,时间工具,在线计数,统计访问量,在线聊天,购物车,图片切换,变化这个网页的背景......等等,如果你是初学者这个东西是值得的。
实现了设备自动化控制——缺料检测、自动计数、镦压异常、不合格品分离(头部厚度尺寸、钉脚于头部同心度变化产生不合格)等检测控制;实现了车间数字化生产控制——以40台设备为一个组,可通过一台终端(上位机)与...
摇动提供的水银开关,通过水银与导线的接触与断开实现高低电平转换(利用延时进行去抖),然后我们是通过利用电平转换触发中断,跳转到中断程序进行计数值加一,用来实现计数,然后每当计数值发生变化(即又摇了一...
首先确 定单位延时时间程序(根据CPU的频率不同而有所变化)。然后确定每个音符演奏需要几 个单位时间,将这个值送入DL中,调用DALLY子程序即可。 下面提供了乐曲《友谊地久天长》实验参考程序。 频率表和时间表是...
首先确 定单位延时时间程序(根据CPU的频率不同而有所变化)。然后确定每个音符演奏需要几 个单位时间,将这个值送入DL中,调用DALLY子程序即可。 下面提供了乐曲《友谊地久天长》实验参考程序。 频率表和时间表是...
实物方面:在最小系统板用杜邦线连接各个模块进行调试,逐个编写代码测试没问题,就将代码组合起来。系统开机整个进行初始化:有io口、串口、OLED驱动、ds1302驱动、按键引脚等。先读取ds1302的实时时间,显示出来。...
角度位移传感器是利用角度变化来定位物体位置的电子元件。适用于汽车,工程机械,宇宙装置、飞机雷达天线的伺服系统以及注塑机,木工机械,印刷机,电子尺,机器人,工程监测,电脑控制运动器械等需要测量位移的场合...
由于要尽可能的使用最少的元件,在满足设计要求的前提下,我将P1.7口与P3.4口( 即T0)用导线连接,在设定程序时,利用T1定时的同时在P1.7口输出一个设定好的方波 ,以便直观的检测频率计数器的软件、硬件是否达到...
控制十位的3- 8译码器的A1,A0一起控制十位从0-2变化。 4、完整的闹钟电路图(ewb设计图) 四、电路安装及调试 电路安装要求 1.布局合理 2.导线横平竖直,且不要从集成块上跳线 3.导线紧贴面包板,连接可靠 4.交叉线...
角度位移传感器是利用角度变化来定位物体位置的电子元件。适用于汽车,工程机械,宇宙装置、飞机雷达天线的伺服系统以及注塑机,木工机械,印刷机,电子尺,机器人,工程监测,电脑控制运动器械等需要测量位移的场合...
本系统采用测量频率法,可将频率脉冲直接连接到AT89C51的T0端,将T/C1用做定时 器。T/C0用做计数器。在T/C1定时的时间里,对频率脉冲进行计数。在1S定时内所计脉 冲数即是该脉冲的频率。见图1: 图1测量时序图 由于...
说明:用于连接到oracle数据库,也可实现用户的切换 用法:conn 用户名/密码 [as sysdba/sysoper] 注意:当用特权用户连接时,必须带上sysdba或sysoper 例子: 3. 断开连接(disc) 说明:断开与当前数据库的连接 ...
本系统采用测量频率法,可将频率脉冲直接连接到AT89C51的T0端,将T/C1用做定时 器。T/C0用做计数器。在T/C1定时的时间里,对频率脉冲进行计数。在1S定时内所计脉 冲数即是该脉冲的频率。见图1: 图1测量时序图 由于...