Linux下IP――分片与重组
http://blog.csdn.net/Suprman/archive/2006/08/30/1144759.aspx
原理介绍
为一个数据包片再次分片
为数据包分片和为数据包片再次分片之间的细微差别就在于网关处理MF比特的不同。但一个网关为原来为分片的数据包分片时,除了末尾的数据包片,它将其余所有分片上的MF比特都置为一,最后一片为0。然而,当网关为一个非末尾的数据包片再次分片时,它会把生成的所有子分片中的MF比特全部设置为1,因为所有这些子分片都不可能是整个数据包的末尾的数据包片。
对于分片,需要拷贝IP首部和选项,以及数据。而选项的拷贝要注意:根据协议标准,某些选项只应当出现在的一个数据包片中,而其他一些则必须出现在所有的数据包中。
数据包重组
数据结构
为了使数据包的重组效率更高,用于保存数据包的数据结构必须能够做到:
在一组数据包片中快速插入新的数据包片;
有效地判断一个完整的数据包是否已经全部抵达;
具有数据包片超时机制(ip_expire),并且,如果在重组完成之前定时器溢出,则删除数据包片。
为构成某一个特定数据包的一组数据包片快速定位;
互斥操作
重组程序代码使用了一个互斥信号量。Ipfrag_lock
在链表中加入一个数据包片
查找方式:链表的线性查找
溢出时的丢弃
分片列表空间以全满的情况下:丢弃对应的数据包的所有分片。Ip_evictor
测试是否组成一个完整的数据包ip_frag_queue
判断IP_MF位是否为0!
将数据包片组装成完整的数据包LAST_IN,ip_frag_reasm
数据包片链表的维护管理
为了使丢失数据包片的数据包不再浪费存储资源 ,并防止因为标示符字段的重新使用而给IP带来混乱,但已经不可能再受到剩余数据包片时,IP必须定期检查数据包片列表。
Ipq_unlink
Ipq_put
Ipq_kill
Ipqhashfn
Linux下的实现
IP分片
如何提高分片处理的效率
ip_fragment(非UDP使用)
典型调用者
ip_sendà ip_fragment(skb, ip_finish_output);一般从转发来
&nbs
相关文档:
int Daemon(char* szExecName = NULL)
{
int res = 0;
pid_t pc;
pc = fork();
if(pc < 0)
{
fprintf(stderr,"ERROR_Deamon()_fork(): failed!");
return -1;
}
else if(pc == 0) //sub process
{
}
else if( ......
本文详细介绍了音频CD的基本知识,以及如何在Linux下编写实用的CD播放软件,内容涵盖音轨处理、播放控制和音量调节等诸多方面。
在目前的多媒体应用中,CD所承担的重要作用早已勿庸置疑,本文详细介绍了音频CD的基本知识,以及如何在Linux下编写实用的CD播放软件,内容涵盖音轨处理、播放控制和音量调节等诸多方面。
音频 ......
一、Linux加载u盘
Linux如何加载(优)U盘
第一步,以root用户登陆
先加载USB模块 modprobe usb-storage
用fdisk -l 看看磁盘的设备
假如U盘是sda
第二步,确定在 目录 /mnt 下建立了 文件夹 /usb,如果未建立可键入一下命令: mkdir /mnt/usb & ......
入侵检测系统(IDS)是对计算机和网络系统资源上的恶意使用行为进行识别和响应的处理系统,它像雷达警戒一样,在不影响网络性能的前提下,对网络进行警戒、检测,从计算机网络的若干关键点收集信息,通过
分析这些信息,查看网络中是否有违反安全策略的行为和遭到攻击的迹象,从而扩展了系统管理员的安全管理能力 ......
环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是bash,但也可以重新设定或切换到其它的 Shell。对于UNIX,可能是CShelll。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量 ......