导航:首页 > 编程知识 > 网络编程为什么要双缓冲区

网络编程为什么要双缓冲区

发布时间:2023-06-04 21:21:03

① 我的毕业设计是一片关于网络渗透技术的论文,求能人给点相关的资料和文献,本人是毫无头绪啊。

[计算机科学与技术 ]Web服务缓冲区溢出渗透测试的设计与实现
http://ww2.tabobo.cn/soft/20/233/2007/14452478777.html

摘 要
缓冲区溢出漏洞是安全漏洞中最为常见的一种形式。更为严重的是缓冲区溢出漏洞占了远程网络攻击的绝大多数,这种攻击可以使的一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权。由于这类攻击使任何人都有可能取得主机的控制权,所以它代表了一类极其严重的安全威胁。因此,以缓冲区溢出作为一种渗透测试的手段是非常有意义的。
缓冲区溢出是渗透测试中的重要手段。现在大多数缓冲区溢出程序都是基于C/S架构的,所以其使用的便捷性受到一定限制。本课题采用现在最流行的B/S架构,并且最终实现了将缓冲区溢出作为Web服务来检测远程主机有无溢出漏洞并提醒用户尽快修补此漏洞的目的。本文深入介绍了缓冲区溢出的原理,以及三种常见的缓冲区溢出漏洞;实例化地介绍了缓冲区溢出程序的执行流程;shellcode的编写技术;java网络编程技术。
在对原理研究的基础之上,本文主要给出了缓冲区溢出作为Web服务的设计和实现过程以及Web服务的其他辅助功能块(网络安全新闻管理、网络安全论坛)的设计和实现。其中缓冲区溢出模块和监听模块采用JavaBean技术实现,其他部分均采用JSP技术加以实现。
总的来说,本渗透测试平台实现了缓冲区溢出的方便性和广范性以及安全性,并且可以加载任意的已经编译成可执行文件的溢出程序。比起传统的C/S架构下的测试平台前进了一大步。

关键字:渗透测试、缓冲区溢出、JSP

目 录
摘要 1
Abstract 2
第一章 绪论 5
1.1 课题背景 5
1.2渗透测试概述 5
1.2.1渗透测试的的专业性 6
1.2.2 渗透测试的三个阶段 6
1.3 论文安排 8
第二章 缓冲区溢出攻击技术 9
2.1 缓冲区溢出基本原理 9
2.2 常见的缓冲区溢出形式 11
2.2.1 栈溢出 11
2.2.2 堆溢出 12
2.2.3 格式化字符串溢出 13
2.3 缓冲区溢出执行流程 16
2.4 shellcode技术 19
2.4.1 shellcode的编写语言 19
2.4.2 shellcode本身代码的重定位 20
2.4.3 shellcode编码 21
第三章 Java网络编程技术介绍.23
3.1 JavaBean技术 23
3.1.1 JavaBean的概念 23
3.1.2 JavaBean的特性 23
3.1.3 JavaBean的属性23
3.1.4 JavaBean在JSP页面里的部署24
3.2 socket网络编程技术 .24
3.3 Java数据流 25
3.3.1 数据流的基本概念 25
3.3.2 数据流的分类介绍 25
第四章 缓冲区溢出渗透测试平台的设计与实现 27
4.1 测试平台框架设计27
4.1.1整体框架设计 27
4.1.2网络安全新闻发布模块设计 28
4.1.3网络安全论坛模块设计 29
4.1.4缓冲区溢出渗透测试模块设计 31
4.2 缓冲区溢出渗透测试编码实现 34
4.2.1缓冲区溢出漏洞选择 34
4.2.2溢出模块实现 34
4.2.3监听模块实现 34
4.2.4本地执行命令实现 36
4.2.5缓冲区溢出状态实现 39
第五章 实验设计和实验数据 42
5.1实验准备 42
5.2 SqlServer2000打sp3补丁前 43
5.2.1实验数据 43
5.3 SqlServer2000打sp3补丁后 45
5.3.1实验数据 45
结束语 47
参考文献 48
致 谢 49

② 网络编程里的同步和异步有啥区别的

网络编程中,同步的意思是说,进行收发数据,等到数据真正发送出去或者接受到,才返回;而异步的意思是,可以把数据发送到缓冲区立即返回,而发送成功的消息是通过事件通知的。异步可以腾出更多的CPU来处理其他事情,所以异步的方式比较灵活。 线程同步是指,多个线程协同完成一件工作,一个线程需要等待其他线程完成相关的工作,才能接着往下运行。线程同步一般采用互斥体,信号量,消息等方式。

③ java Nio读写为什么是双向

作者:美团技术团队
链接:https://zhuanlan.hu.com/p/23488863
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。

那么NIO的本质是什么样的呢?它是怎样与事件模型结合来解放线程、提高系统吞吐的呢?

本文会从传统的阻塞I/O和线程池模型面临的问题讲起,然后对比几种常见I/O模型,一步步分析NIO怎么利用事件模型处理I/O,解决线程池瓶颈处理海量连接,包括利用面向事件的方式编写服务端/客户端程序。最后延展到一些高级主题,如Reactor与Proactor模型的对比、Selector的唤醒、Buffer的选择等。

注:本文的代码都是伪代码,主要是为了示意,不可用于生产环境。

传统BIO模型分析

让我们先回忆一下传统的服务器端同步阻塞I/O处理(也就是BIO,Blocking I/O)的经典编程模型:

{
ExecutorService executor = Excutors.newFixedThreadPollExecutor(100);//线程池

ServerSocket serverSocket = new ServerSocket();
serverSocket.bind(8088);
while(!Thread.currentThread.isInturrupted()){//主线程死循环等待新连接到来
Socket socket = serverSocket.accept();
executor.submit(new ConnectIOnHandler(socket));//为新的连接创建新的线程
}

class ConnectIOnHandler extends Thread{
private Socket socket;
public ConnectIOnHandler(Socket socket){
this.socket = socket;
}
public void run(){
while(!Thread.currentThread.isInturrupted()&&!socket.isClosed()){死循环处理读写事件
String someThing = socket.read()....//读取数据
if(someThing!=null){
......//处理数据
socket.write()....//写数据
}

}
}
}

这是一个经典的每连接每线程的模型,之所以使用多线程,主要原因在于socket.accept()、socket.read()、socket.write()三个主要函数都是同步阻塞的,当一个连接在处理I/O的时候,系统是阻塞的,如果是单线程的话必然就挂死在那里;但CPU是被释放出来的,开启多线程,就可以让CPU去处理更多的事情。其实这也是所有使用多线程的本质:

阅读全文

与网络编程为什么要双缓冲区相关的资料

热点内容
如何利用串口传输文件夹 浏览:346
jca文件怎么用word打开 浏览:965
U盘文件木马隐藏exe工具 浏览:152
下载优酷app视频播放器安装 浏览:38
两个excel文件不同 浏览:585
如何更新网站内容 浏览:953
什么网站下载广场舞是免费的 浏览:307
西门子编程软件怎么变成中文 浏览:984
居客来wifi密码 浏览:604
文件为何为空linux 浏览:630
美剧鸟app安装包在手机哪里 浏览:985
苹果5s16g升级ios103 浏览:850
word红头文件中怎么加双线 浏览:825
切割机用什么编程 浏览:787
文件修订题目 浏览:572
魅族pro5自带浏览器怎么升级 浏览:342
为什么用数据还是加载慢 浏览:171
监控下面有网络如何隔离 浏览:748
前台中jrequestjson 浏览:435
怎么在word里粘贴xls文件 浏览:710

友情链接