第十一课 粘包分包分析,如何避免socket攻击
来源:互联网 发布:趣头条刷阅读量软件 编辑:程序博客网 时间:2024/06/06 18:10
1、消息如何在管道中流转
当前的一个handler如何往下面的一个handler传递一个对象
一个管道中会有多个handler
handler往下传递对象的方法是sendUpstream(event)
服务端
bootstrap.setPipelineFactory(new ChannelPipelineFactory() { @Override public ChannelPipeline getPipeline() throws Exception { ChannelPipeline pipeline = Channels.pipeline(); //handler传递 pipeline.addLast("FirstHandler", new FirstHandler()); pipeline.addLast("SecondHandler", new SecondHandler()); return pipeline; } });
public class FirstHandler extends SimpleChannelHandler { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { //第一个handler ChannelBuffer buffer = (ChannelBuffer)e.getMessage(); byte[] array = buffer.array(); String message = new String(array); System.out.println("FirstHandler:" + message); //传递 发送到下一个Handler // public UpstreamMessageEvent(Channel channel, Object message, SocketAddress remoteAddress) ctx.sendUpstream(new UpstreamMessageEvent(ctx.getChannel(), "abc", e.getRemoteAddress())); ctx.sendUpstream(new UpstreamMessageEvent(ctx.getChannel(), "def", e.getRemoteAddress())); ctx.sendUpstream(new UpstreamMessageEvent(ctx.getChannel(), "ghn", e.getRemoteAddress())); }}
public class SecondHandler extends SimpleChannelHandler { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { //这里接收从FirstHandler转发过来的请求 String message = (String)e.getMessage(); System.out.println("SecondHandler:" + message); }}
2、看下粘包和分包是怎么样一个情况
hello hello
hellohe llo
服务端接收到的数据不稳定
解决方法:
- 定义一个稳定的结构 length + hello
为什么FrameDecoder return的对象就是往下传递的对象 (还是调用了sendUpstream)
buffer里面数据未被读取完怎么办? (cumulation缓存)
为什么return null就可以缓存buffer (cumulation缓存)
FrameDecoder里面的cumulation其实就是一个缓存的buffer对象
把长度定义的很大,这种数据包,通常被称为socket攻击,字节流式攻击
解决方法传输的数据添加包头
阅读全文
0 0
- 第十一课 粘包分包分析,如何避免socket攻击
- TCP粘包分包 分析
- Socket粘包,分包解决方法和算法
- Socket 分包解包
- socket的半包,粘包与分包的问题
- Socket的半包,粘包与分包的问题
- socket的半包,粘包与分包的问题
- socket的半包,粘包与分包的问题
- socket的半包,粘包与分包的问题
- socket的半包,粘包与分包的问题
- socket的半包,粘包与分包的问题
- socket的半包,粘包与分包的问题
- Socket的半包,粘包与分包的问题
- socket的半包,粘包与分包的问题
- Socket的半包,粘包与分包的问题
- scoket如何处理粘包和分包
- 【Python】TCP Socket的粘包和分包的处理
- 如何避免“中间人”攻击
- Docker 修改镜像源地址
- springboot填坑日记
- [ARC069F]Flags
- LeetCode基础-查找-HashTable
- NodeJs配置国内源
- 第十一课 粘包分包分析,如何避免socket攻击
- Attendez-moi 指针数组与strcmp fgets等函数的配合使用
- leetcode编程记录11 #508 Most Frequent Subtree Sum
- 金融类自定义View(一)--仿蚂蚁财富基金收益曲线图
- Binary Tree Maximum Path Sum II
- 【Java基础知识】抽象类与接口
- [JZOJ5449] Pacifist
- Java ConcurrentModificationException异常原因和解决方法
- 算法