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. jprofiler安装和配置

    转:http://www.cnblogs.com/adolfmc/archive/2013/06/09/3129358.html 注意:安装前先用rpm -q jprofiler查询linux上是否已 ...

  2. 使用 ServKit(PHPnow) 搭建 PHP 环境[图]

    http://servkit.org/guide 搭建 PHP 其实不很难,只是有点繁琐.要是自己搭建一次 PHP + MySQL 环境很是费时.更糟的是,很多新手在配置 PHP 时常常出现这样那样的 ...

  3. [Leetcode][Python]56: Merge Intervals

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 56: Merge Intervalshttps://oj.leetcode. ...

  4. IOS 打印网络请求全链接

    NSMutableString *urlStr = [NSMutableString stringWithFormat:@"%@?",request.URL]; ;i<[pa ...

  5. Hive的UDF实现及注意事项

    Hive自身查询语言HQL能完毕大部分的功能,但遇到特殊需求时,须要自己写UDF实现.下面是一个完整的案例. 1.eclipse中编写UDF ①项目中增加hive的lib下的全部jar包和Hadoop ...

  6. unity tips

    1.在unity 的mecanim中,如果一个动画指向两个或两个以上的动画,那么在inspector中,transitions中可以看到所有的过渡路径,这些路径是有先后顺序的.

  7. Mongodb中Sharding集群

    随着mongodb数据量的增多,可能会达到单个节点的存储能力限制,以及application较大的访问量也会导致单个节点无法承担,所以此时需要构建集群环境,并通过sharding方案将整个数据集拆分成 ...

  8. Javascript进阶篇——( JavaScript内置对象---上-Date,string,charAt,indexOf,split,substring,substr)笔记整理

    什么是对象JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法.对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等:对象的方法:能够在 ...

  9. win8下 web测试 之 hosts绑定

    从这个开始,开启web测试之旅 绑定hosts: 1.在C:\Windows\System32\drivers\etc下找到 hosts 文件 2.将hosts文件复制到一个地方: 3.修改hosts ...

  10. vs2010 中检测到有潜在危险的 Request.Form 值

    解决方法 : 一般在网上搜只有以下两种处理方式: 1.在报错的页面前吧<%Page%>标签中增加validateRequest="false"的属性为false 如下所 ...