snort IP defragment 模型:

BSD favors an original fragment with an offset that is less than or equal to a subsequent fragment.
BSD-right favors a subsequent fragment when the original fragment has an offset that is less than or equal to the subsequent one.
Linux favors an original fragment with an offset that is less than a subsequent fragment.
First favors the original fragment with a given offset.
Last favors the subsequent fragment with a given offset.
                                                          
 
可以看到:
 
前三个 BSD, BSD right, Linux 都是按 offset 排序后重组。
BSD 与  Linux 类似,都是将当前包用完,再找 offset 最小的包补上;差别仅在于 offset 相同时,BSD取旧,Linux取新。而 BSD right 则相比 BSD 差别在于,前者在任何重叠区域都使用新包,除了新包是旧包子集且 offset 更大的情况(新包 offset > 旧包 offset 并且 新包 end <= 旧包end 的情况)。
 
First,Last 比较简单,仅仅是时间维度上。
 

snort frag 模块:

 
frag2 :
检测到IP分组的first,last后,则分组遇到一个新包都会遍历整个组以判断分组是否完善。
 
frag3:
支持多种IP分组合并策略
在分组中插入每个包的时候,都会与目的位置的 left,right 判断是否有重叠,如果有重叠,则根据合并策略会调整 current,left,right 包的 offset,size值,如果调整后现有组中有size小于零的包直接从组中删除,如果当前根据合并策略可以丢弃则丢弃。
组中每插入一个包,都会将包 size (去除重叠后得出来的长度) 累加于 frag_bytes。
包未设置 more fragemnt,则设置组大小 calculated_size。
 
如果已发现分组 first,last 且 frag_bytes >= calculated_size(理论上 > 不会发生),则认为分组已经完善。
 
 
重组时会创建一个新的 Packet。
链路层 header, pcap header 的时间戳 是取的当前触发 Frag3Rebuild 的包,即此分组中最后捕获到包。
IP header,从当前包中拷贝头,并清除 Fragment 标志及偏移,从组中拷贝 IP Options。
 
 
snort 2.8.3 的 frag3 还不支持IPv6的,但 2.9.4 的 frag3 支持。
 
 

IP defragment的更多相关文章

  1. TCP/IP协议栈在Linux内核中的运行时序分析

    网络程序设计调研报告 TCP/IP协议栈在Linux内核中的运行时序分析 姓名:柴浩宇 学号:SA20225105 班级:软设1班 2021年1月 调研要求 在深入理解Linux内核任务调度(中断处理 ...

  2. 理解 Linux 网络栈(1):Linux 网络协议栈简单总结

    本系列文章总结 Linux 网络栈,包括: (1)Linux 网络协议栈总结 (2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3)QEMU/KVM + Vx ...

  3. Linux内核--网络栈实现分析(四)--网络层之IP协议(上)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7514017 更多请看专栏,地址 ...

  4. Tcp/ip 报文解析

    在编写网络程序时,常使用TCP协议.那么一个tcp包到底由哪些东西构成的呢?其实一个TCP包,首先需要通过IP协议承载,而IP报文,又需要通过以太网传送.下面我们来看看几种协议头的构成 一 .Ethe ...

  5. 网站定位之---根据IP获得区域

    记得以前做一个培训机构网站时候需要定位,那时候用的搜狐的api,不是很精准. demo:https://github.com/dunitian/LoTCodeBase/tree/master/NetC ...

  6. 通过 floating IP 访问 VIP - 每天5分钟玩转 OpenStack(126)

    前面我们是直接用 curl 测试 VIP,在更为真实的场景中通常会使用 floating IP 访问 VIP. 下面我们给 VIP 关联一个 floating IP,再进行测试. 访问 Project ...

  7. PHP获取客户端IP

    /** * 获取客户端IP */ function getClientIp() { $ip = 'unknown'; $unknown = 'unknown'; if (isset($_SERVER[ ...

  8. 获取 dhcp IP 过程分析 - 每天5分钟玩转 OpenStack(91)

    前面我们已经讨论了 DHCP agent 的配置以及 namespace 如何隔离 dnsmasq 服务,本节将以 cirros-vm1 为例分析获取 DHCP IP 的详细过程. 在创建 insta ...

  9. Java获取本机的IP与MAC地址

    有些机器有许多虚拟的网卡,获取IP地址时会出现一些意外,所以需要一些验证: // 获取mac地址 public static String getMacAddress() { try { Enumer ...

随机推荐

  1. SPI总线的4种工作模式

    spi总线的4种工作模式 0 to 4 modes SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC6 ...

  2. N-Queens II 解答

    Question Follow up for N-Queens problem. Now, instead outputting board configurations, return the to ...

  3. 如何把apache和nginx 加入到系统服务,用service 命令来控制启动、停止

    1 把apache 加入到系统服务,即用service 命令来控制Apache 启动.停止  如果Linux服务器上默认安装了httpd的话(用rpm -qa|grep httpd查看),那你就可以用 ...

  4. 【Python】Coding the Matrix:Week 5: Dimension Homework 5

    这一周的作业,刚压线写完.Problem3 没有写,不想证明了.从Problem 9 开始一直到最后难度都挺大的,我是在论坛上看过了别人的讨论才写出来的,挣扎了很久. Problem 9在给定的基上分 ...

  5. Conquering Keokradong && Get the Containers(二分)

    Conquering Keokradong Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

  6. HDU 1559 最大子矩阵 (DP)

    题目地址:pid=1559">HDU 1559 构造二维前缀和矩阵.即矩阵上的点a[i][j]表示左上方的点为(0,0),右下方的点为(i,j)的矩阵的和.然后枚举每一个矩阵的左上方的 ...

  7. 左右HttpClient上传的方法来解决中国的乱码

    二手HttpClient人们都知道通过addTextBody方法来加入要上传的文本信息,可是,假设要上传中文的话.或还有中文名称的文件会出现乱码的问题,解决的方法事实上非常easy: 第一步:设置Mu ...

  8. 基于express框架的应用程序骨架生成器介绍

    作者:zhanhailiang 日期:2014-11-09 本文将介绍怎样使用express-generator工具高速生成基于express框架的应用程序骨架: 1. 安装express-gener ...

  9. 数据文件、日志文件、归档文件、控制文件、参数文件及RMAN备份数据库信息查询

    一.查看数据库信息:=====================1.数据文件 SQL> SELECT FILE#,STATUS,ENABLED,NAME FROM V$DATAFILE; FILE ...

  10. pl sql练习(4)

    1.ROW_NUMBER 返回连续的排位,不论值是否相等 select deptno,ename,sal, row_number () over (partition by deptno order ...