IP报文解析及基于IP 数据包的洪水攻击
| 版本(4bit) | 报头长度(4bit) | 优先级和服务类型(8bit) | 总长度(16bit) | |
| 标识(16bit) | 标志(3bit) | 分段偏移(13bit) | ||
| 存活期(8bit) | 协议(8bit) | 报头校验和(16bit) | ||
| 源IP地址(32bit) | ||||
| 目的IP地址(32bit) | ||||
| 选项(0或32bit,若有的话) | ||||
| 数据(可变) | ||||
版本 IP版本号。
报头长度 32位字的报头长度(HLEN)。
优先级和服务类型 服务类型描述数据报将如何被处理。前3位表示优先级位。
总长度 包括报头和数据的数据包长度。
标识 唯一的IP数据包值。
标志 说明是否有数据被分段。
分段偏移 如果数据包在装人帧时太大,则需要进行分段和重组。分段功能允许在因特网上存在有大小不同的最大传输单元(MUT)。
存活期(TTL) 存活期是在数据包产生时建立在其内部的一个设置。如果这个数据包在这个TTL到期时仍没有到达它要去的目的地,那么它将被丢弃。这个设置将防止IP包在寻找目的地的时候在网络中不断循环。
协议 上层协议的端口(TCP是端口6;UDP是端口17(十六进制)) 。同样也支持网络层协议,如ARP和ICMP。在某些分析器中被称为类型字段。下面将给出这个字段更详细的说明。
报头校验和 只针对报头的循环冗余校验(CRC)。
源IP地址 发送站的32位IP地址。
目的IP地址 数据包目的方站点的32位IP地址。
选项 用于网络检测、调试、安全以及更多的内容。
数据 在IP选项字段后面的就是上层数据。
对应于Jpcap包中IPPacket类:看一下具体的文档,得到了对应的关系:
构造IPv4包的方法
| Method Summary | |
|---|---|
void |
setIPv4Parameter(int priority, Sets the IPv4 parameters |
实例:ipp. setIPv4Par ameter ( 0, false, false, false,0, tr ue , tr ue , false, 4, 1, 255, 230, / / 230 未定义协议
new IPAddr ess( 110. 110. 17. 101) ,
new IPAddr ess( "210. 40. 7. 149") ) ;
version:v4/v6
priority:优先权 /** Priority (class) (v4/v6) */
public byte priority;
服务类型设置: d_flag - IP flag bit: [D]elay 表示要求有更低的时延
t_flag - IP flag bit: [T]hrough 表示要求有更高的吞吐量
r_flag - IP flag bit: [R] eliability 表示要求更高的可靠性
rsv_tos - Type of Service (TOS) 服务类型
数据偏移设置: rsv_frag - Fragmentation Reservation flag 有无碎片标识
dont_frag - Don't fragment flag 末尾碎片标识
more_frag - More fragment flag 尚有碎片表示
offset – Offset 数据块偏移
IP数据报识别标志:ident – Identifier 上层协议调用
offset:分段偏移
ttl:存活时间 Time To Live
protocol:协议(int类型)这个是源码中给出的协议类型号
/** Protocol number for ICMP */
public static final short IPPROTO_ICMP = 1;
/** Protocol number for IGMP */
public static final short IPPROTO_IGMP = 2;
/** Protocol number for IP in IP */
public static final short IPPROTO_IP = 4;
/** Protocol number for TCP */
public static final short IPPROTO_TCP = 6;
/** Protocol number for UDP */
public static final short IPPROTO_UDP = 17;
/** Protocol number for IPv6 */
public static final short IPPROTO_IPv6 = 41;
/** Protocol number for IPv6 hop-by-hop option */
public static final short IPPROTO_HOPOPT = 0;
/** Protocol number for routing header for IPv6 */
public static final short IPPROTO_IPv6_Route = 43;
/** Protocol number for fragment header for IPv6 */
public static final short IPPROTO_IPv6_Frag = 44;
/** Protocol number for IPv6 ICMP */
public static final short IPPROTO_IPv6_ICMP = 58;
/** Protocol number for no next header header for IPv6 */
public static final short IPPROTO_IPv6_NoNxt = 59;
/** Protocol number for destination option for IPv6 */
public static final short IPPROTO_IPv6_Opts = 60;
src:源IP
dst:目的IP
之后是基于IP 数据包的洪水攻击的原理:
用未定义协议字段构造IP 包进行洪水攻击构造一个IP 数据包, 在上层协议中用不属于任何已分配定义的协议类型表示此字段。目的IP 指向欲攻击主机, 源IP 采用伪
装, 服务类型字段选默认, 数据块偏移设为无碎片无偏移, T TL 设为最大值255, 协议字段填入任一未分配的协议类型, 最后在校验和处填入正确的校验码进行发送。注意此时
只进行了IP 数据报首部校验和的计算, 对IP 数据报的数据段可进行随意的构造。
由于IP 校验码无误, IP 数据包是合理的, 不会在传输过程中因协议字段的变化而丢弃。但是由于其上层协议是未知的, 所以到达目的主机后不能进行进一步的数据处理,
也不会像SYN 洪水攻击那样进行TCP 数据报校验和的检验。此时, 系统认为此数据包的协议没有连同数据包发送过来或是系统不支持此协议, 于是直接向发送此数据包的源IP
位置回执一个ICMP 包, 以通知对方IP 数据报的协议未能同时送达。
在这种情况下, 被攻击主机虽然没有建立一个连接, 也不会有等待延时, 但是大量的此种数据包发送出来进行攻击, 特别是形成DDoS 攻击时, 系统资源会消耗殆尽, 造成很
大的危害。
ICMP的回送类型:
| 3 | 2 | Protocol Unreachable——协议不可达 | x |
IP报文解析及基于IP 数据包的洪水攻击的更多相关文章
- Tcp/ip 报文解析
在编写网络程序时,常使用TCP协议.那么一个tcp包到底由哪些东西构成的呢?其实一个TCP包,首先需要通过IP协议承载,而IP报文,又需要通过以太网传送.下面我们来看看几种协议头的构成 一 .Ethe ...
- lua中是 ffi 解析 【是如何处理数据包的/pkt是如何传进去的】 fsfsfs
lua中的ffi是如何解析的呢? 拿bcc中对proto的解析说起: metatype是有大学问的: ffi.metatype(ffi.typeof('struct ip_t'), { __index ...
- 基于IPV6数据包分析(GNS3)
1:实验拓扑 2:检测路由之间的连通性 路由器R4 ping 各路由器 R1路由表 R4路由表 3:抓包分析 A:回送请求报文(Echo Request) (128) Type=128, ...
- 基于IPV6数据包的分析(GNS3)
一.实验拓扑 二.路由配置 1.路由R1的详细配置(以R1为例,R2与R3相同) R1(config)#interface fastEthernet 0/1 R1(config-if)#ipv6 ad ...
- 数据包接收系列 — IP协议处理流程(一)
本文主要内容:在接收数据包时,IP协议的处理流程. 内核版本:2.6.37 Author:zhangskd @ csdn blog IP报头 IP报头: struct iphdr { #if defi ...
- 转自:Tsihang 三层网络设备对于IP报文的分片和重组处理原理
三层网络设备对于IP报文的分片和重组处理原理 对于网络分片,我一年前就想整理出来,虽然说网络上的资料很多,但是真正掌握精髓的除非真正做过分片程序,不然很难将协议栈整体联系起来理解.这篇文章,包括设计分 ...
- IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习
相关学习资料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/I ...
- Socket: Java Socket 几个重要的TCP/IP选项解析(转)
Socket选择可以指定Socket类发送和接受数据的方式.在JDK1.4中共有8个Socket选择可以设置.这8个选项都定义在java.net.SocketOptions接口中.定义如下: publ ...
- Wireshark-过滤器-数据包解析
目录 过滤器 数据包解析 参考 推荐阅读: https://www.cnblogs.com/zwtblog/tag/计算机网络/ 过滤器 显示过滤器 和 捕获过滤器,俩者使用非常类似. 在Wiresh ...
随机推荐
- QCon 2015 阅读笔记 - 移动开发最佳实践
所有ppt下载地址:http://pan.baidu.com/s/1mg9o4TM 下面是移动开发实践部分的阅读笔记. 移动开发网络性能优化实践 - 陈浩然 (携程) 携程是非常标准的移动App架构, ...
- 12月2日,上海Cloud Foundry Summit, Azure Cloud Foundry 团队期待和你见面!
12月2日,上海Cloud Foundry Summit, Azure Cloud Foundry 团队期待和你见面! 12日2日对中国Cloud Foundry的用户和开源社区来说,是极有意义的一天 ...
- Singleton模式写法
public class Singleton { /** * 类级的内部类,也就是静态的成员式内部类,该内部类的实例与外部类的实例 * 没有绑定关系,而且只有被调用到才会装载,从而实现了延迟加载 */ ...
- 计算机网络——TCP/IP协议族详解
一.OSI七层协议体系结构域TCP/IP四层体系结构对比 ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是 ...
- DBA一天干的活
一.检查活动状态 通过查询基本视图,确认数据库和实例处于正常运行状态,可以对外提供数据服务. 1.1实例状态 SELECT instance_name,status FROM v$instance; ...
- SpringMVC注解@initbinder解决类型转换问题
在使用SpringMVC的时候,经常会遇到表单中的日期字符串和JavaBean的Date类型的转换,而SpringMVC默认不支持这个格式的转换,所以需要手动配置,自定义数据的绑定才能解决这个问题.在 ...
- XSS 前端防火墙(5): 整装待发
到目前为止,我们把能用前端脚本防御 XSS 的方案都列举了一遍. 尽管看起来似乎很复杂累赘,不过那些是理论探讨而已,在实际中未必要都实现.我们的目标只是为了预警,能发现问题就行,并非要做到滴水不漏的程 ...
- top命令 Linux查看CPU和内存使用情况
一.top命令 top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要.但是,它的缺点是会消耗很多系统资源. 在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分 ...
- 【python】python+behave自动化
留坑,后面再写,先写下request对http请求的校验.
- USB鼠标过一段时间后失灵问题的修复
现象: USB鼠标计算机锁屏一段时间后,不能动了,拔下来重新插上后,又恢复正常了. 原因: 这是系统默认USB电源管理造成的.一段时间不用后,自动关闭了USB电源. 解决方法: 1.进入设备管理器 在 ...