局域网里的IGMP ICMP 类型攻击是啥? 有啥危害?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了局域网里的IGMP ICMP 类型攻击是啥? 有啥危害?相关的知识,希望对你有一定的参考价值。

参考技术A 分类: 电脑/网络
问题描述:

局域网里的IGMP ICMP 类型攻击是什么? 有什么危害?

解析:

ICMP:

ICMP 被 IP 层用于向一台主机发送单向的告知性消息。在 ICMP 中没有验证机制,这就导致了使用 ICMP 可以造成服务拒绝的攻击,或者可以支持攻击者截取数据包。

下面列出了几种与 ICMP 协议相关的攻击类型:

ICMP DOS 攻击:攻击者使用 ICMP “时间超出”或“目标地址无法连接”的消息。这两种 ICMP 消息都会导致一台主机迅速放弃连接。攻击只需伪造这些 ICMP 消息中的一条,并发送给通信中的两台主机或其中的一台,就可以利用这种攻击了。接着通信连接就会被切断。当一台主机错误地认为信息的目标地址不在本地网络中的时候,网关通常会使用 ICMP “转向”消息。如果攻击者伪造出一条“转向”消息,它就可以导致另外一台主机经过攻击者主机向特定连接发送数据包。

ICMP 数据包放大(或 ICMP Smurf):攻击者向安全薄弱网络所广播的地址发送伪造的 ICMP 响应数据包。那些网络上的所有系统都会向受害计算机系统发送 ICMP 响应的答复信息,占用了目标系统的可用带宽并导致合法通信的服务拒绝(DoS)。 死 Ping 攻击:攻击者向受害计算机发送一条比最大 IP 数据包容量还要大许多的 ICMP 响应请求数据包。既然所接收到的 ICMP 响应请求数据包的容量远远高于正常的 IP 数据包,受害计算机不能够将这些数据包重新组合起来。这样导致的结果是,操作系统要么瘫痪,要么重启。

ICMP PING 淹没攻击:大量的 PING 信息广播淹没了目标系统,使得它不能够对合法的通信做出响应。

ICMP nuke 攻击:Nuke 发送出目标操作系统无法处理的信息数据包,从而导致该系统瘫痪。

ICMP 攻击的防范:

在网络的关键之处使用防火墙对来源不明的有害数据进行过滤可以有效减轻大多数 ICMP 攻击。另外,你需要按照如下的方法对 ICMP 参数进行设置后就可以在服务与安全之间合理地保持平衡:

支持 PING —允许向外发送 ICMP 响应请求,并允许向内发送响应答复消息。 支持路径追踪—允许向内发送 TTL -超出和端口无法连接的消息。 支持路径 MTU—允许向内发送 ICMP 零碎DF-整套消息。 阻止其它类型的 ICMP 通信。

IGMP:

IGMP是一种网络协议,windows系统有一个漏洞,当向一台主机发送一些不规则的数据包时,或称网络碎片,往往会导致被攻击主机的当机,典型代表是win98。

java里的JSONObject作用是啥?啥时候用?

在项目中的action层 有时后会用到JsonObject来往页面传,这个跟request。setattribute有啥区别,或者struts2里的直接定义参数和对象 有啥区别?
补充问题:比如用的是Struts1 在Action类 一般都用request。setAttribute(list<T>)
用的是Struts2 直接在Action类定义private List<T> list 页面直接可以接收到这个list

问题是:为啥有的项目里非要用JsonObject来
JSONObject json = JSONObject.fromObject(list);
System.out.println(json.toString()); //结果为:"name":"hzucmj","age":22??有啥区别

JsonObject 就是常说的 json。是一种重要的数据传输对象。其格式为"key1":value1,"key2",value2....;key 必须是字符串。

因为ajax请求不刷新页面,但配合js可以实现局部刷新,因此json常常被用来作为异步请求的返回对象使用。

通过response.getWriter()获取PrintWriter pw,然后pw.print(json)。如果没有设置response.setContentType("application/json; charset=utf-8"); 则需要自己再js中进行解析。

扩展资料

Java中交互方式分为同步和异步两种:

同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;

异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。

区别:一个需要等待,一个不需要等待,在部分情况下,项目开发中都会优先选择不需要等待的异步交互方式。

比如银行的转账系统,对数据库的保存操作等等,都会使用同步交互操作,其余情况都优先使用异步交互。



参考技术A

JsonObject 就是常说的 json。

是一种重要的数据传输对象。

其格式为"key1":value1,"key2",value2....;key 必须是字符串。

很像map对不对,一个key,一个value。

因为ajax请求不刷新页面,但配合js可以实现局部刷新,因此json常常被用来作为异步请求的返回对象使用。

通过response.getWriter()获取PrintWriter pw,然后pw.print(json)。

如果没有设置response.setContentType("application/json; charset=utf-8"); 

则需要自己再js中进行解析。

举例说明:

response.setContentType("application/json; charset=utf-8"); 
PrintWriter pw =  response.getWriter();
Student s = new Student(。。。);//反正就是构造一个对象,有没有数据无所谓
JSONObjet json = JSONObjet .from(s);//将s转化成json对象。
pw .print(json);
pw .flush();
pw .close();
这样这个json对象就传到你发送请求的那个jsp上面。
而$.post(url,datas.function(data))这里的data就是后台返回的值,也就是这里的json
只需要 var json = data;//就获取到了。
再取得原来Student的属性 var name = json.name(student 的name 属性);

比较request.setAttribute("key",value);

这个必须配合forwoar来转发跳转到需要这个value的jsp页面。页面刷新。

追问

是不是一般在页面的js里把几个属性(如name,age) 定义成:var student= "'name':'" + name+ "','age':'" + age+"'";然后在$.post(student);往action传,action里
Student stu= JSON.parseObject(student, Student .class);获取的情况多啊?

追答

也行。只要是json格式,并在后台能解析出来。一般单纯的传值都可以用。主要还是看具体效果。
但也有很多必须要求表单提交的。

追问

但我还是没理解 ,你说的异步。比如后台list对象 为啥非要用json定义成map形式的,而不是直接把list传页面 在form或者select里解析这个list也不是可以吗?没理解你说的异步。麻烦你了

追答

不是定义。是像。
json 的数据格式就是这样。不遵从,就出错。但它不是map。只是格式像。
还有异步:
异步就是在当前页面不动的情况下,通过js往服务器发送请求。如果有页面跳转,也是通过js跳的。
不论 forward 还是 redirect 都要求刷新页面才能把数据在页面上显示出来。而 异步请求不需要刷新,只需要js局部更新。
请 自行学习 juqery 的 $.post 的作用( 其他的我觉得不好用)
json 去官网看。jar包 api 看可能。我上面讲的json 使用只是很简单的。

说点常见的异步请求的例子:
你去某个网站注册账户,要求你填个邮箱?名字不管什么。有没有碰到刚刚填完填下一个的时候,上面突然冒出一个提示 说 该什么什么已被使用。明显的数据都在,页面没刷新,但是不知不觉就请求了服务器完成了一系列的逻辑。这就是 异步请求。

本回答被提问者和网友采纳
参考技术B json就是一个字符串,只是有一个规范,可以用工具方便的转换成bean,jsonObject就是一个map,没有实体类时,就可以转成这东西 参考技术C JsonObject这个东西并不是和struts2或者其他框架有什么依赖,只是用来转换数据,将javabean转化成字符串或者将字符串转化成javabean。追问

问题补充了

追答

JSONObject json = JSONObject.fromObject(list);这个可以方便的将一个类对象转化成字符串并返回到前台!

你总不能返回一个java对象到前台去吧,js可不认识java对象。而json对象是java和js都认识的

参考技术D 我写过这种代码,首先我觉得JSONObject和request.setAttribute()没有关系。JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素。JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象。
你们使用request.setAttribute()是同步返回数据吧?如何同步或者异步返回页面数据与数据结构没有关系。如果是同步返回数据,就使用request.setAttribute("key",jsonObject),如果是异步返回数据就使用流方式把jsonObject.toString 返回给页面。
我觉得使用JSONObject的好处就是可以减少自己定义的bean。在页面上也可以类似于对象的形式使用返回的数据。
对于你的第二个问题,如果我理解了你的意思,我觉得struts2 的属性驱动(直接定义参数使用get set方法获取参数)和模型驱动(使用bean 来获取参数)和JSONObject更不相干了,两者没关系的。追问

userInfo.setUsername("张");userInfo.setPassword("123456");
JSONObject json = JSONObject.fromBean(userInfo);我就很不理解 那这里为什么他非要最后创建jsonObject呢,直接往页面传userInfo不行吗?而且页面直接可以用$userInfo。name多方便

追答

如果可以,能把代码贴全一点。
因为看不到全部的代码,我猜测这个json最后转换成了String然后用异步方式传到了页面上。
比如页面使用Ajax请求的,需要异步返回数据,那就要把userInfo 转换成字符串返回给页面。使用JSONObject 的toString 方法可以方法把对象转成json格式的字符串。
如果是同步请求返回数据,bean 对象和JSONObject是一样的,没有转换的必要。

以上是关于局域网里的IGMP ICMP 类型攻击是啥? 有啥危害?的主要内容,如果未能解决你的问题,请参考以下文章

网络层协议

猫设置里用开ICMP IGMP吗?

IGMP协议

怎样处理IGMP

tcp/ip--IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

linux的iptables里的--reject-with type中这些type的区别是啥?