它不与主机衔接的英文 (它不与主机衔接 – 当我运转客户端程序时)

之前画板子呢,都是承袭师兄淘宝买的库,然而呢,比拟乱,电阻电容啥的,有好几组,也没个规范;想要用啥元器件呢,自己也不知道去哪个库找,搜查半天还吃力就萌生了创立自己的设计库,将罕用的元器件整顿一下,也有个章法了费了点劲,把之前就开局做的库进一步完善了下,这样以后就不用再找来找去、也没个规范了大体思绪有,区分创立原理图库和PCB库将罕用的…。

当我运转客户端程序时

之前画板子呢,都是承袭师兄淘宝买的库,然而呢,比拟乱,电阻电容啥的,有好几组,也没个规范; 想要用啥元器件呢,自己也不知道去哪个库找,搜查半天还吃力 就萌生了创立自己的设计库,将罕用的元器件整顿一下,也有个章法了 费了点劲,把之前就开局做的库进一步完善了下,这样以后就不用再找来找去、也没个规范了 大体思绪有: 区分创立原理图库和PCB库 将罕用的(或许是目前用到的)都区分参与出来 重要是借助自己做…


apex与主机的游戏版本不匹配

当你遇到“Apex与主机的游戏版本不匹配”这样的错误提示时,这通常意味着你的游戏客户端版本与服务器或主机的版本不一致。

为了解决这个问题,你需要更新你的游戏客户端到与主机或服务器相匹配的最新版本。

在现代在线多人游戏中,游戏版本的不匹配是一个常见的问题。

这是因为开发者会不断地发布更新来修复bug、添加新内容或进行平衡性调整。

当服务器或主机运行了一个更新后的版本,而某些玩家的客户端尚未更新时,就会出现版本不匹配的情况。

例如,假设Apex Legends的开发者发布了一个新的更新,这个更新包含了一些新地图和武器平衡调整。

大部分玩家都及时更新了他们的游戏客户端,但少数玩家由于各种原因(如忘记更新、网络问题导致更新失败等)仍然运行着旧版本。

当这些玩家尝试连接到已更新版本的主机或服务器时,就会收到版本不匹配的错误提示。

为了解决这个问题,玩家需要确保他们的游戏客户端是最新版本。

这通常可以通过游戏启动器或应用商店中的“检查更新”或“更新游戏”选项来完成。

一旦更新完成,玩家应该能够顺利地连接到服务器或主机,并与其他玩家一起享受最新的游戏内容。

此外,为了避免未来出现类似的问题,建议玩家开启自动更新功能(如果游戏提供此选项),并定期检查游戏是否有可用更新。

这样可以确保你的游戏客户端始终与服务器或主机的版本保持同步,从而获得最佳的游戏体验。

电脑问题(急)

电脑硬件常识 #1 硬件系统: 电脑的硬件系统由输入设备、主机和输出设备组成。

外部信息经输入设备输入主机,由主机分析、加工、处理,再经输出设备输出。

#1 输入输出设备: 电脑只能识别二进制数字电信号,而人们习惯于接受图文声像信号。

输入输出设备起着信号转换和传输的作用。

我们常用键盘输入文字,用麦克风输入声音,用数码像机、扫描仪和摄影机输入图像。

常用输出设备有显示器、打印机和喇叭。

#1 主板: 也称主机板,是安装在主机机箱内的一块矩形电路板,上面安装有电脑的主要电路系统。

主板的类型和档次决定着整个微机系统的类型和档次,主板的性能影响着整个微机系统的性能。

主板上安装有控制芯片组、BIOS芯片和各种输入输出接口、键盘和面板控制开关接口、指示灯插接件、扩充插槽及直流电源供电接插件等元件。

CPU、内存条插接在主板的相应插槽(座)中,驱动器、电源等硬件连接在主板上。

主板上的接口扩充插槽用于插接各种接口卡,这些接口卡扩展了电脑的功能。

常见接口卡有显示卡、声卡等。

#1 CPU: CPU(中央处理器)是电脑的核心,电脑处理数据的能力和速度主要取决于CPU。

通常用位长和主频评价CPU的能力和速度,如PⅡ300 CPU能处理位长为32位的二进制数据,主频为300MHz。

#1 系统总线: 系统总线是连接扩充插槽的信息通路。

ISA和PCI总线是目前PC机常用系统总线,主板上相应有ISA和PCI插槽。

#1 输入输出接口: 简称I/O接口,是连接主板与输入输出设备的界面。

主机后侧的串口、并口、键盘接口、PS/2接口、USB接口以及主机内部的硬盘、软驱接口都是输入输出接口。

#1 串行通讯接口(RS-232-C): 简称串行口,是电脑与其它设备传送信息的一种标准接口。

现在的电脑至少有两个串行口COM1和COM2。

#1 并行通讯接口: 简称并行口,是电脑与其它设备传送信息的一种标准接口,这种接口将8位数据位同时并行传送,并行口数据传送速度较串行口快,但传送距离较短。

并行口使用25孔D形连接器,常用于连接打印机。

#1 EIDE接口: 也称为扩展IDE接口,主板上连接EIDE设备的接口。

常见EIDE设备有硬盘和光驱。

目前较新的接口标准还有Ultra DMA/33、Ultra DMA/66。

#1 AGP: 即“加速图形端口”,是Intel公司在1996年7月提出的显示卡接口标准,通过主板上的AGP插槽连接AGP显示卡。

PCI总线的传输速度只能达到132MB/s,而AGP端口则能达到528MB/s,传输速度四倍于前者。

AGP技术使图形显示(特别是3D图形)的性能有了极大的提高,使PC机在图形处理技术上又向前迈了一大步。

#1 光盘驱动器: 读取光盘信息的设备。

是多媒体电脑不可缺少的硬件配置。

光盘存储容量大,价格便宜,保存时间长,适宜保存大量的数据,如声音、图像、动画、视频信息、电影等多媒体信息。

光盘驱动器有三种,CD-ROM、CD-R和MO,CD-ROM是只读光盘驱动器;CD-R只能写入一次,以后不能改写;MO是可写、可读光盘驱动器。

#1 内存储器: 简称内存,用于存放当前待处理的信息和常用信息的半导体芯片。

容量不大,但存取迅速。

内存包括RAM、ROM和Cache。

#1 RAM: RAM(随机存取存储器)是电脑的主存储器,人们习惯将RAM称为内存。

RAM的最大特点是关机或断电数据便会丢失。

内存越大的电脑,能同时处理的信息量越大。

我们用刷新时间评价RAM的性能,单位为ns(纳秒),刷新时间越小存取速度越快。

586电脑常用RAM有EDO RAM和SDRAM,存储器芯片安装在手指宽的条形电路板上,称之为内存条。

内存条安装在主板上的内存条插槽中。

按内存条与主板的连接方式有30线、72线和168线之分。

目前装机常用168线、刷新时间为10ns、容量为32M(或64M)的SDRAM内存条。

#1 Cache: Cache(高速缓冲存储器)是位于CPU与主内存间的一种容量较小但速度很高的存储器。

由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。

Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache一般是焊在主板上,常见主板上焊有256KB或512KB L2 Cache。

#1 ROM: ROM(只读存储器)是一种存储计算机指令和数据的半导体芯片,但只能从其中读出数据而不能写入数据,关机或断电后ROM的数据不会丢失。

生产厂商把一些重要的不允许用户更改的信息和程序存放在ROM中,例如存放在主板和显示卡ROM中的BIOS程序。

#1 BIOS: BIOS是一个程序,即微机的基本输入输出系统,BIOS程序的主要功能是对电脑的硬件进行管理。

BIOS程序是电脑开机运行的第一个程序。

开机后BIOS程序首先检测硬件,对系统进行初始化,然后启动驱动器,读入操作系统引导记录,将系统控制权交给磁盘引导记录,由引导记录完成系统的启动。

电脑运行时,BIOS还配合操作系统和软件对硬件进行操作。

BIOS程序存放在主机板上的ROM BIOS芯片中。

当前586主板大多使用Flash ROM存储BIOS程序,Flash ROM中的程序(数据)可以通过运行程序更新。

#1 CMOS: CMOS是主板上一块可读写的RAM芯片,用于保存当前系统的硬件配置信息和用户设定的某些参数。

CMOS RAM由主板上的电池供电,即使系统掉电信息也不会丢失。

对CMOS中各项参数的设定和更新需要运行专门的设置程序,开机时通过特定的按键(一般是Del键)就可进入BIOS设置程序,对CMOS进行设置。

CMOS设置习惯上也被叫做BIOS设置。

#1 显示卡: 又称显示器适配卡,是连接主机与显示器的接口卡。

其作用是将主机的输出信息转换成字符、图形和颜色等信息,传送到显示器上显示。

显示卡插在主板的ISA、PCI、AGP扩展插槽中,ISA显示卡现已基本淘汰。

#1 声卡: 多媒体电脑中用来处理声音的接口卡。

声卡可以把来自话筒、收录音机、激光唱机等设备的语音、音乐等声音变成数字信号交给电脑处理,并以文件形式存盘,还可以把数字信号还原成为真实的声音输出。

声卡尾部的接口从机箱后侧伸出,上面有连接麦克风、音箱、游戏杆和MIDI设备的接口。

#1 视频捕获卡: 用于捕获从电视天线、录像机、影碟机等输入的动态或静态视频影像的接口卡,是多媒体制作的重要工具。

高级的视频捕获卡还能在捕获影像的同时进行MPEG压缩,制作VCD。

#1 中断: 中断是计算机处理特殊问题的一个过程。

当在计算机执行程序的过程中,出现某个特殊情况(或称为“事件”)时,暂时中止现行程序,转去执行这一事件的程序,处理完毕之后再回到原来程序的中断点继续执行的整个过程叫做中断。

#1 IRQ: 即“中断请求”,是其它设备发出的请求计算机响应的信号。

计算机将根据IRQ的级别和优先程度决定何时发生响应。

原则上每个设备有自身的唯一的中断请求通道,即IRQ值(又叫IRQ号),如果两个硬件设备使用同一个中断通道,必定会发生IRQ冲突。

#1 DMA: 即“直接内存访问”,是计算机内的一种数据传输操作。

整个数据传输操作过程在“DMA控制器”控制下进行,不通过CPU。

数据传输过程中CPU只在数据传输开始和结束时作一点处理。

DMA技术使计算机系统的效率大大提高。

DMA传输通过DMA通道进行,如软驱、声卡均占用DMA通道传输数据。

两个设备不能同时用同一DMA通道传输数据,否则会发生DMA冲突。

#1 主频与外频: 主频指CPU内核工作时钟频率。

外频指CPU与外部(主板芯片组)交换数据、指令的工作时钟频率。

系统时钟就是CPU的“外频”,我们将系统时钟按规定比例倍频后所得到的时钟信号作为CPU的内核工作时钟(主频)。

例如某电脑使用Pentium 233 CPU,那么这台电脑的外频是66MHz,而它的主频则是(66×3.5)=233MHz。

系统时钟(外频)是电脑系统的基本时钟,电脑中各分系统中所有不同频率的时钟都与系统时钟相关联。

如当前100 MHz 外频系统中,系统内存工作于100 MHz (或66MHz),L2 Cache工作于100 MHz,PCI 工作于33MHz,AGP工作于66MHz。

可以看出,上述频率都与外频有一定的比例关系。

提高系统时钟(外频)可以提高整个电脑的性能,但提高外频必然将改变其它各分系统时钟频率,影响各分系统的实际运行情况,这一点对CPU超外频运行时应该加以充分重视。

#1 DVD: 即数字通用光盘。

DVD光驱指读取DVD光盘的设备。

DVD盘片的容量为4.7GB,相当于CD-ROM光盘的七倍,可以存储133分钟电影,包含七个杜比数字化环绕音轨。

DVD盘片可分为:DVD-ROM、DVD-R(可一次写入)、DVD-RAM(可多次写入)和DVD-RW(读和重写)。

目前的DVD光驱多采用EIDE接口,能像CD-ROM光驱一样连接到IDE1或IDE2口上。

服务器主机与电脑连接失败怎么办

1. 电脑与服务器连接中断了怎么办 1.请您关闭防火墙上网助手,杀毒软件这样的程序。

2.如果是使用路由器或者内网的玩家,请在网络上设置使UDP数据通过。

3.您还可以试一下这个方法 打开 网上邻居 找到 “本地连接” 点属性(如果没有“本地连接”就先点左面的查看网络连接,就会出现)然后点一下 TCP/IP 再点右下边的属性 是 自动获取DNS服务器地址 的话 就改成 使用下面的DNS服务器地址 首选: 备用:空白 然后断开网络连接在重启电脑再连上 再把 使用下面的DNS服务器地址 改成 自动获取DNS服务器地址 断开网络连接在重启电脑再连上 4.标题:进不去游戏的看过来 帖子地址: 5.删除我的文档-跑跑卡丁车文件夹,卸载游戏重装最新的客户端。

6.病毒也会影响正常游戏的运行,请重装系统后再试试。

7.打开 “网上邻居” 找到 “本地连接” 点属性(如果没有“本地连接”就先点左面的查看网络连接,就会出现)在属性里面点“inte协议(TCP/IP)”,再点它右下方的属性–4.再点高级–5.再点上面的WINS–6.再点方框里的对号,把对号点没—然后点确定2. 为什么我的电脑总是出现服务器连接失败 有很多原因啦。

你电脑有多少时间没有重做系统了??太长时间的话,肯定会影响里面的程序运行,如果不想重做的话,建议你碎片整理-清楚COOKIE文件,INTER选项里,都删掉,试试。

也有可能是C盘里的垃圾太多了,以后不要在C盘里装任何东西。

这些只治标不治本。

路由器检查了没??大部分问题是路由器的问题。

建议你借个别人的路由器回来试试。

还有一个问题是电脑的网卡松了。

重新拔下来,再按上去。

额。

你或者可以看看网线的水晶接头是不是松了。

或者坏掉了。

换一个试试。

希望对你有帮助。

3. 如果电脑上出现远程服务器连接失败,怎么办 这个问题在现在的办公室其实很普遍的,原因是连打印机的共享出了问题,我没有深入研究过怎么样去设置这些共享,却有一个很简单的解决办法。

1.在连打印机那台电脑设上密码:1,如已有密码,就无须再设置。

重启 2.然后在要连共享的那台点及点开始–》运行–》输入“目标IP/打印机共享名称”然后录入用户名及密码后点记住密码即可,然后双击共享的打印机名称。

如果没提示输入用户名及密码的话,首先先注销下你的机器,如果还不行的话你可以试着输入“目标IP/c$”这时应该会弹出输入用户名及密码的对话框(如还没有,即是最后一个可能,连打印机那台电脑的共享去掉了,点我的电脑,管理中点共享即可进行设置) 希望你能够采纳我的答案!4. 连接主机失败怎么回事 原因很多,作为普通使用者,可以这样做: 1、最常见的原因是没有连接上数据库,网络不通或参数设置不对,以中电工厂ERP管理系统为例: 打开ERP系统,在登陆窗口出现连接不上的提示 点确定,出现服务器连接设置画面 检查服务器名称、数据库名称、用户名、密码数据是否正确,输入后点“测试连接“,如果没有问题,提示”连接成功“,然后确认保存后重新打开系统就可以进入了。

如果提示”连接失败“,通常的原因是与服务器的网络不通或者上述参数输入不对。

2、如果登陆的画面都没有出现,程序有问题,卸载重装。

作为网络管理员或者ERP维护人员,注意检查数据库是否正常运行,如有问题,需分布排查故障,如解决不了需请ERP开发商帮助。

5. 电脑开机显示连接服务器失败 方法一、 1、首先打开运行菜单,在运行对话框中输入CMD,回车打开命令对话框; 2、然后在命令对话框中输入“SH WINSOCK RESET CATALOG”命令,然后重新启动System Event Notification Service服务; 输入“SH WINSOCK RESET CATALOG”命令 3、如果提示出错,那就关机再重新开机进入安全模式,重新运行CMD,输入“SH WINSOCK RESET CATALOG”命令,然后重新启动下System Event Notification Service服务,显示系统恢重启正常即可。

方法二、 1、依次点击“开始菜单–所有程序—附件—命令提示符,然后右击选择“以一管理员身份运行”选项; 2、然后在命令对话框中输入“sh winsock reset”命令; 3、运行完成以后,按照命令对话框上的提示,重新启动计算机,重启之后计算机会弹出提示框,选择“允许此程序”,然后点击确定按钮即可; 4、接着打开360安全卫士对电脑进行查杀木马一下即可。

6. 电脑连接服务器失败,求解 尊敬的楼主: 您好,其实连接服务器失败这是两方面因素造成的。

第一:因为您的电脑网速出现的问题,因此连接服务器慢或甚至连接不成功。

第二:CF游戏系统的问题,我朋友在几天前玩CF是很顺的,但就这几天开始,出现经常性的连接服务器失败,登了又退,退了又登,过多几星期就会好起来的。

回答完毕,谢谢呵呵希望对你有帮助! 还有你CF客户端可否重新下载安装一下试试看! 如果说迅雷看不了电影也出现 可能是网管给你禁了一些应用或者端口 你去咨询一下!就说回家看迅雷看不了 他会给你解决的(告诉他是回家玩这些东西 可能是怕你们上班下载东西之类影响公司其他人正常工作)

计算机网络-运输层协议

从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。

当网络的边缘部分中的两台主机使用网络的核心部分的功能进行端到端的通信时,只有主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。

设局域网LAN1上的主机A和局域网LAN2上的主机B通过互连的广域网WAN进行通信。

我们知道,IP协议能够把源主机A发送出的分组,按照首部中的目的地址,送交到目的主机B,那么,为什么还需要运输层呢? 从IP层来说,通信的两端是两台主机。

IP数据报的首部明确地标志了这两台主机的IP地址真正进行 通信的实体是在主机中的进程,是这台主机中的一个进程和另一台主机中的一个进程在交换数据(即通信) 。

两台主机进行通信 就是两台主机中的 应用进程 互相 通信 。

IP协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付主机中的应用进程。

从运输层的角度看, 通信的真正端点并不是主机而是主机中的进程 。

也就是说, 端到端的通信是应用进程之间的通信 。

在一台主机中经常有多个应用进程同时分别和另一台主机中的多个应用进程通信。

例如,某用户在使用浏览器查找某网站的信息时,其主机的应用层运行浏览器客户进程。

如果在浏览网页的同时,还要用电子邮件给网站发送反馈意见,那么主机的应用层就还要运行电子邮件的客户进程。

在图5-1中,主机A的应用进程AP1和主机B的应用进程AP3通信,而与此同时,应用进程AP2也和对方的应用进程AP4通信。

这表明运输层有一个很重要的功能一 复用(multiplexing)和分用(demultiplexing) 。

这里的“复用”是指在发送方不同的应用进程都可以使用同一个运输层协议传送数据(当然需要加上适当的首部),而“分用”是指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程 ① 。

图5-1中两个运输层之间有一个双向粗箭头,写明“运输层提供应用进程间的逻辑通信”。

“逻辑通信”的意思是:从应用层来看,只要把应用层报文交给下面的运输层,运输层就可以把这报文传送到对方的运输层(哪怕双方相距很远,例如几千公里),好像这种通信就是沿水平方向直接传送数据。

但事实上这两个运输层之间并没有一条水平方向的物理连接。

数据的传送是沿着图中的虚线方向(经过多个层次)传送的。

“逻辑通信”的意思是“好像是这样通信,但事实上并非真的这样通信”。

①注:IP层也有复用和分用的功能。

即,在发送方不同协议的数据都可以封装成P数据报发送出去,而在接收方的IP层根据IP首部中的协议字段进行分用,把剥去首部后的数据交付应当接收这些数据的协议。

网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信(见图5-2) 。

运输层还具有网络层无法代替的许多其他重要功能。

运输层还要对收到的报文进行差错检测,在网络层,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分。

根据应用程序的不同需求,运输层需要有两种不同的运输协议,即 面向连接的TCP和无连接的UDP 。

运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道,但这条逻辑通信信道对上层的表现却因运输层使用的不同协议而有很大的差别。

当运输层采用面向连接的TCP协议时,网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。

但当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。

TCP/P运输层的两个主要协议都是互联网的正式标准:用户数据报协议UDP(User target=_blank>www.iana.org查到。

IANA(The Internet Assigned Numbers Authority,互联网数字分配机构) 把这些端口号指派给了TCPP最重要的一些应用程序,让所有的用户都知道。

当种新的应用程序出现后,IANA必须为它指派一个熟知端口,否则互联网上的其他应用进程就无法和它进行通信。

另一类叫做登记端口号,数值为1024-49151。

这类端口号是为没有熟知端口号的应用程序使用的。

使用这类端口号必须在IANA按照规定的手续登记,以防止重复。

(2)客户端使用的端口号数值为49152-65535。

由于这类端口号仅在客户进程运行时才动态选择,因此又叫做 短暂端口号 ①。

这类端口号留给客户进程选择暂时使用。

当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。

通信结束后,刚才已使用过的客户端口号就不复存在,这个端口号就可以供其他客户进程使用。

①注:短暂端口(ephemeral port)表示这种端口的存在时间是短期的。

客户进程并不在意操作系统给它分配的是哪一个端口号,因为客户进程之所以必须有一个端口号(在本地主机中必须是唯一的),是为了让运输层的实体能够找到自己。

这和熟知端口不同。

服务器机器一接通电源,服务器程序就运行起来。

为了让互联网上所有的客户程序都能找到服务器程序,服务器程序所使用的端口(即熟知端口)就必须是固定的,并且是众所周知的。

我的电脑启动缓慢?

一,关闭开机启动项。

系统下关闭开机启动项的步骤如下:

1 首先打开“运行”对话框,可以通过开始菜单打开运行,也可以按下快捷键WIN+R打开“运行”,输入“msconfig”,回车。

2 打开的系统配置对话框中,点击“启动”。这里是配置开机启动项和开机启动程序的功能所在。点击“打开任务管理器”。

3 在任务管理器中,就能找到目前为止开机启动项和开机启动程序了。

二,关闭系统服务项。

按下Win+R,输入services.msc,我们就可以看到所有服务项了。

那么有哪些服务项可以禁用呢?

1 Offline Files功能

这个服务的作用是将网络上的共享内容在本地缓存,使用户可以在脱机状态下访问共享文件,一般我们不会用到,所以可以选择禁用它。

2 Server服务

它的作用是允许计算机通过网络共享文件,我们一般也不会用到,可以选择禁用。

3 Diagnostic Policy Service服务

诊断策略服务服务,它是为Windows组件提供问题检测、疑难解答和诊断支持的服务。

4 Windows Error Reporting Service服务

Windows系统错误报告服务,每次你的系统出错,弹出来的“发送不发送”,就是这个哦~~不喜欢这个功能的可以禁用。

5 Shell Hardware Detection服务

硬件检测服务,也就是自动播放功能,我们将U盘等插入就会提示操作的那个功能,如果你有第三方软件或者觉得此功能不需要,完全可以禁用。

以上服务项可以根据自己的需要看是否禁用哦,可以起到开机加速的效果,日后如果有需要,可以再手动开启。

缓冲区溢出攻击的基本原理是什么?

缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。

利用缓冲区溢出攻击,可以导致程序运行失败、系统当机、重新启动等后果。

更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。

缓冲区溢出攻击有多种英文名称:bufferoverflow,bufferoverrun,smashthestack,trashthestack,scribblethestack,manglethestack,memoryleak,overrunscrew;它们指的都是同一种攻击手段。

第一个缓冲区溢出攻击–Morris蠕虫,发生在十年前,它曾造成了全世界6000多台网络服务器瘫痪。

1.概念缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间想匹配,这就为缓冲区溢出埋下隐患.操作系统所使用的缓冲区又被称为堆栈.在各个操作进程之间,指令会被临时储存在堆栈当中,堆栈也会出现缓冲区溢出。

2.危害在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。

而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。

3.缓冲区攻击一.缓冲区溢出的原理通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。

造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。

例如下面程序:voidfunction(char*str){charbuffer[16];strcpy(buffer,str);}上面的strcpy()将直接吧str中的内容copy到buffer中。

这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。

存在象strcpy这样的问题的标准函数还有strcat(),sprintf(),vsprintf(),gets(),scanf()等。

当然,随便往缓冲区中填东西造成它溢出一般只会出现“分段错误”(Segmentationfault),而不能达到攻击的目的。

最常见的手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其它命令。

如果该程序属于root且有suid权限的话,攻击者就获得了一个有root权限的shell,可以对系统进行任意操作了。

缓冲区溢出攻击之所以成为一种常见安全攻击手段其原因在于缓冲区溢出漏洞太普遍了,并且易于实现。

而且,缓冲区溢出成为远程攻击的主要手段其原因在于缓冲区溢出漏洞给予了攻击者他所想要的一切:植入并且执行攻击代码。

被植入的攻击代码以一定的权限运行有缓冲区溢出漏洞的程序,从而得到被攻击主机的控制权。

在1998年Lincoln实验室用来评估入侵检测的的5种远程攻击中,有2种是缓冲区溢出。

而在1998年CERT的13份建议中,有9份是是与缓冲区溢出有关的,在1999年,至少有半数的建议是和缓冲区溢出有关的。

在Bugtraq的调查中,有2/3的被调查者认为缓冲区溢出漏洞是一个很严重的安全问题。

缓冲区溢出漏洞和攻击有很多种形式,会在第二节对他们进行描述和分类。

相应地防卫手段也随者攻击方法的不同而不同,将在第四节描述,它的内容包括针对每种攻击类型的有效的防卫手段。

二、缓冲区溢出的漏洞和攻击缓冲区溢出攻击的目的在于扰乱具有某些特权运行的程序的功能,这样可以使得攻击者取得程序的控制权,如果该程序具有足够的权限,那么整个主机就被控制了。

一般而言,攻击者攻击root程序,然后执行类似“exec(sh)”的执行代码来获得root权限的shell。

为了达到这个目的,攻击者必须达到如下的两个目标:1.在程序的地址空间里安排适当的代码。

2.通过适当的初始化寄存器和内存,让程序跳转到入侵者安排的地址空间执行。

根据这两个目标来对缓冲区溢出攻击进行分类。

在二.1节,将描述攻击代码是如何放入被攻击程序的地址空间的。

在二.2节,将介绍攻击者如何使一个程序的缓冲区溢出,并且执行转移到攻击代码(这个就是“溢出”的由来)。

在二.3节,将综合前两节所讨论的代码安排和控制程序执行流程的技术。

二.1在程序的地址空间里安排适当的代码的方法有两种在被攻击程序地址空间里安排攻击代码的方法:1、植入法:攻击者向被攻击的程序输入一个字符串,程序会把这个字符串放到缓冲区里。

这个字符串包含的资料是可以在这个被攻击的硬件平台上运行的指令序列。

在这里,攻击者用被攻击程序的缓冲区来存放攻击代码。

缓冲区可以设在任何地方:堆栈(stack,自动变量)、堆(heap,动态分配的内存区)和静态资料区。

2、利用已经存在的代码:有时,攻击者想要的代码已经在被攻击的程序中了,攻击者所要做的只是对代码传递一些参数。

比如,攻击代码要求执行“exec(“/bin/sh”)”,而在libc库中的代码执行“exec(arg)”,其中arg使一个指向一个字符串的指针参数,那么攻击者只要把传入的参数指针改向指向”/bin/sh”。

二.2控制程序转移到攻击代码的方法所有的这些方法都是在寻求改变程序的执行流程,使之跳转到攻击代码。

最基本的就是溢出一个没有边界检查或者其它弱点的缓冲区,这样就扰乱了程序的正常的执行顺序。

通过溢出一个缓冲区,攻击者可以用暴力的方法改写相邻的程序空间而直接跳过了系统的检查。

分类的基准是攻击者所寻求的缓冲区溢出的程序空间类型。

原则上是可以任意的空间。

实际上,许多的缓冲区溢出是用暴力的方法来寻求改变程序指针的。

这类程序的不同之处就是程序空间的突破和内存空间的定位不同。

主要有以下三种:1、活动纪录(ActivationRecords):每当一个函数调用发生时,调用者会在堆栈中留下一个活动纪录,它包含了函数结束时返回的地址。

攻击者通过溢出堆栈中的自动变量,使返回地址指向攻击代码。

通过改变程序的返回地址,当函数调用结束时,程序就跳转到攻击者设定的地址,而不是原先的地址。

这类的缓冲区溢出被称为堆栈溢出攻击(StackSmashingAttack),是目前最常用的缓冲区溢出攻击方式。

2、函数指针(FunctionPointers):函数指针可以用来定位任何地址空间。

例如:“void(*foo)()”声明了一个返回值为void的函数指针变量foo。

所以攻击者只需在任何空间内的函数指针附近找到一个能够溢出的缓冲区,然后溢出这个缓冲区来改变函数指针。

在某一时刻,当程序通过函数指针调用函数时,程序的流程就按攻击者的意图实现了。

它的一个攻击范例就是在Linux系统下的superprobe程序。

3、长跳转缓冲区(Longjmpbuffers):在C语言中包含了一个简单的检验/恢复系统,称为setjmp/longjmp。

意思是在检验点设定“setjmp(buffer)”,用“longjmp(buffer)”来恢复检验点。

然而,如果攻击者能够进入缓冲区的空间,那么“longjmp(buffer)”实际上是跳转到攻击者的代码。

象函数指针一样,longjmp缓冲区能够指向任何地方,所以攻击者所要做的就是找到一个可供溢出的缓冲区。

一个典型的例子就是Perl5.003的缓冲区溢出漏洞;攻击者首先进入用来恢复缓冲区溢出的的longjmp缓冲区,然后诱导进入恢复模式,这样就使Perl的解释器跳转到攻击代码上了。

二.3代码植入和流程控制技术的综合分析最简单和常见的缓冲区溢出攻击类型就是在一个字符串里综合了代码植入和活动纪录技术。

攻击者定位一个可供溢出的自动变量,然后向程序传递一个很大的字符串,在引发缓冲区溢出,改变活动纪录的同时植入了代码。

这个是由Levy指出的攻击的模板。

因为C在习惯上只为用户和参数开辟很小的缓冲区,因此这种漏洞攻击的实例十分常见。

代码植入和缓冲区溢出不一定要在在一次动作内完成。

攻击者可以在一个缓冲区内放置代码,这是不能溢出的缓冲区。

然后,攻击者通过溢出另外一个缓冲区来转移程序的指针。

这种方法一般用来解决可供溢出的缓冲区不够大(不能放下全部的代码)的情况。

如果攻击者试图使用已经常驻的代码而不是从外部植入代码,他们通常必须把代码作为参数调用。

举例来说,在libc(几乎所有的C程序都要它来连接)中的部分代码段会执行“exec(something)”,其中somthing就是参数。

攻击者然后使用缓冲区溢出改变程序的参数,然后利用另一个缓冲区溢出使程序指针指向libc中的特定的代码段。

三、缓冲区溢出攻击的实验分析2000年1月,Cerberus安全小组发布了微软的IIS4/5存在的一个缓冲区溢出漏洞。

攻击该漏洞,可以使Web服务器崩溃,甚至获取超级权限执行任意的代码。

目前,微软的IIS4/5是一种主流的Web服务器程序;因而,该缓冲区溢出漏洞对于网站的安全构成了极大的威胁;它的描述如下:浏览器向IIS提出一个HTTP请求,在域名(或IP地址)后,加上一个文件名,该文件名以“.htr”做后缀。

于是IIS认为客户端正在请求一个“.htr”文件,“.htr”扩展文件被映像成ISAPI(InternetServiceAPI)应用程序,IIS会复位向所有针对“.htr”资源的请求到ISM.DLL程序,ISM.DLL打开这个文件并执行之。

浏览器提交的请求中包含的文件名存储在局部变量缓冲区中,若它很长,超过600个字符时,会导致局部变量缓冲区溢出,覆盖返回地址空间,使IIS崩溃。

更进一步,在如图1所示的2K缓冲区中植入一段精心设计的代码,可以使之以系统超级权限运行。

四、缓冲区溢出攻击的防范方法缓冲区溢出攻击占了远程网络攻击的绝大多数,这种攻击可以使得一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权。

如果能有效地消除缓冲区溢出的漏洞,则很大一部分的安全威胁可以得到缓解。

目前有四种基本的方法保护缓冲区免受缓冲区溢出的攻击和影响。

在四.1中介绍了通过操作系统使得缓冲区不可执行,从而阻止攻击者植入攻击代码。

在四.2中介绍了强制写正确的代码的方法。

在四.3中介绍了利用编译器的边界检查来实现缓冲区的保护。

这个方法使得缓冲区溢出不可能出现,从而完全消除了缓冲区溢出的威胁,但是相对而言代价比较大。

在四.4中介绍一种间接的方法,这个方法在程序指针失效前进行完整性检查。

虽然这种方法不能使得所有的缓冲区溢出失效,但它能阻止绝大多数的缓冲区溢出攻击。

然后在四.5,分析这种保护方法的兼容性和性能优势。

四.1非执行的缓冲区通过使被攻击程序的数据段地址空间不可执行,从而使得攻击者不可能执行被植入被攻击程序输入缓冲区的代码,这种技术被称为非执行的缓冲区技术。

在早期的Unix系统设计中,只允许程序代码在代码段中执行。

但是近来的Unix和MSWindows系统由于要实现更好的性能和功能,往往在数据段中动态地放入可执行的代码,这也是缓冲区溢出的根源。

为了保持程序的兼容性,不可能使得所有程序的数据段不可执行。

但是可以设定堆栈数据段不可执行,这样就可以保证程序的兼容性。

Linux和Solaris都发布了有关这方面的内核补丁。

因为几乎没有任何合法的程序会在堆栈中存放代码,这种做法几乎不产生任何兼容性问题,除了在Linux中的两个特例,这时可执行的代码必须被放入堆栈中:(1)信号传递:Linux通过向进程堆栈释放代码然后引发中断来执行在堆栈中的代码来实现向进程发送Unix信号。

非执行缓冲区的补丁在发送信号的时候是允许缓冲区可执行的。

(2)GCC的在线重用:研究发现gcc在堆栈区里放置了可执行的代码作为在线重用之用。

然而,关闭这个功能并不产生任何问题,只有部分功能似乎不能使用。

非执行堆栈的保护可以有效地对付把代码植入自动变量的缓冲区溢出攻击,而对于其它形式的攻击则没有效果。

通过引用一个驻留的程序的指针,就可以跳过这种保护措施。

其它的攻击可以采用把代码植入堆或者静态数据段中来跳过保护。

四.2编写正确的代码编写正确的代码是一件非常有意义的工作,特别象编写C语言那种风格自由而容易出错的程序,这种风格是由于追求性能而忽视正确性的传统引起的。

尽管花了很长的时间使得人们知道了如何编写安全的程序,具有安全漏洞的程序依旧出现。

因此人们开发了一些工具和技术来帮助经验不足的程序员编写安全正确的程序。

最简单的方法就是用grep来搜索源代码中容易产生漏洞的库的调用,比如对strcpy和sprintf的调用,这两个函数都没有检查输入参数的长度。

事实上,各个版本C的标准库均有这样的问题存在。

此外,人们还开发了一些高级的查错工具,如faultinjection等。

这些工具的目的在于通过人为随机地产生一些缓冲区溢出来寻找代码的安全漏洞。

还有一些静态分析工具用于侦测缓冲区溢出的存在。

虽然这些工具帮助程序员开发更安全的程序,但是由于C语言的特点,这些工具不可能找出所有的缓冲区溢出漏洞。

所以,侦错技术只能用来减少缓冲区溢出的可能,并不能完全地消除它的存在。

文章版权声明

 1 原创文章作者:汇维网,如若转载,请注明出处: https://www.52hwl.com/108631.html

 2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈

 3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)

 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年2月3日 下午10:58
下一篇 2024年2月3日 下午11:01