DOS是什么?

2024-11-27 01:32:26
推荐回答(2个)
回答1:

Disk Operating System  DOS是英文Disk Operating System的缩写,意思是“磁盘操作系统”,顾名思义,DOS主要是一种面向备磨磁盘的系统软件,说得简单些,DOS就是人与机器的一座桥梁,是罩在机器硬件外面的一层“外壳”,有了DOS,我们就不必去深入了解机器的硬件结构,也不必去死记硬背那些枯燥的机器命令。我们只需通过一些接近于自然语言的DOS命令,就可以轻松地完成绝大多数的日常操作。另外,DOS还能有效地管理各种软硬件资源,对它们进行合理的调度,所有的软件和硬件都在DOS的监控和管理之下,有条不紊地进行着自己的工作。 [编辑本段]前言  本文章分"概念"和"如何"两部分。
  在"概念"中将告诉您关于该词条的定义、背景及原理。
  在"如何"中将告诉您关于该词条的应用、技巧及可能遇上的问题。
  通常所说的DOS有两种不同的概念,即拒绝服务或一种磁盘操作系统,通常DoS(O小写)指的是拒绝服务,DOS(O大写)指的是一种磁盘操作系统。
  随着计算机技术的发展,网络也在迅猛地普及和发展。人们在享受着网络带来的各种便利的同时,也受到了很多黑客的攻击。在众多的攻击种类中,有一种叫做 DoS(Denial of Service 拒绝服务)的攻击,是一种常见而有效的网络攻击技术,它通过利用协议或系统的缺陷,采取欺骗或伪装的策略来进行网络攻击,最终使得受害者的系统因为资源耗尽或无法作出正确响应而瘫痪,从而无法向合法用户提供正常服务。它看上去平淡无奇,但是攻击范围广,隐蔽性强、简单有效而成为了网络中一种强大的攻击技术,极大地影响了网络和业务主机系统的有效服务。其中,DDoS(Distributed Denial of Service 分布式拒绝服务)更以其大规模性、隐蔽性和难防范性而著称。 [编辑本段]DoS攻击  是网络攻击最常见的一种。它故意攻击网络协议的缺陷或直接通过某种手段耗尽被攻击对象的资源,目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务停止响应甚至崩溃,而在此攻击中并不入侵目标服务器或目标网络设备。这些服务资源包括网络宽带、系统堆栈、开放的进程。或者允许的连接。这种攻击会导致资源耗尽,无论计算机的处理速度多快、内存容量多大、网络带备基宽的速度多快都无法避免这种攻击带来的后果。任何资源都有一个极限,所以总能找到一个方法使请求的值大于该极限值,导致所提供的服务资源耗尽。
  DoS攻击有许多种类,主要有Land攻击、死亡之ping、泪滴、Smurf攻击及SYN洪水等。
  据统计,在所有黑客攻击事件中,syn洪水攻击是最常见又最容易被利用的一种DoS攻击手法。
  1.攻击原理
  要理解SYN洪水攻击,首先要理解TCP连接的三次握手过程(Three-wayhandshake)。在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送SYN包((SYN=i)到服务器,并进入SYN SEND状态,等仿滚斗待服务器确认;
  第二次握手:服务器收到SYN包,必须确认客户的SYN (ACK=i+1 ),同时自己也发送一个SYN包((SYN j)}即SYN+ACK包,此时服务器进入SYN_RECV状态;
  第三次握手:客户端收到服务器的SYN十ACK包,向服务器发送确认包ACK(ACK=j+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据。
  在上述过程中,还有一些重要的概念:
  半连接:收到SYN包而还未收到ACK包时的连接状态称为半连接,即尚未完全完成三次握手的TCP连接。
  半连接队列:在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包(SYN=i )开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于SYN_ RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
  Backlog参数:表示半连接队列的最大容纳数目。
  SYN-ACK重传次数:服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息、从半连接队列中删除。注意,每次重传等待的时间不一定相同。
  半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时也称半连接存活时间为Timeout时间、SYN_RECV存活时间。
  上面三个参数对系统的TCP连接状况有很大影响。
  SYN洪水攻击属于DoS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。SYN攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施。从图4-3可看到,服务器接收到连接请求(SYN=i )将此信息加入未连接队列,并发送请求包给客户( SYN=j,ACK=i+1 ),此时进入SYN_RECV状态。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除。配合IP欺骗,SYN攻击能达到很好的效果,通常,客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN 请求
  被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。过程如下:
  攻击主机C(地址伪装后为C')-----大量SYN包---->被攻击主机
  C'<-------SYN/ACK包----被攻击主机
  由于C’地址不可达,被攻击主机等待SYN包超时。攻击主机通过发大量SYN包填满未连接队列,导致正常SYN包被拒绝服务。另外,SYN洪水攻击还可以通过发大量ACK包进行DoS攻击。
  2.传统算法
  抵御SYN洪水攻击较常用的方法为网关防火墙法、中继防火墙法和SYNcookies。为便于叙述,将系统拓扑图简化为图4-4。图中,按网络在防火墙内侧还是外侧将其分为内网、外网(内网是受防火墙保护的)。其次,设置防火墙的SYN重传计时器。超时值必须足够小,避免backlog队列被填满;同时又要足够大保证用户的正常通讯。
  (1) 网关防火墙法
  网关防火墙抵御攻击的基本思想是:对于内网服务器所发的SYN/ACK包,防火墙立即发送ACK包响应。当内网服务器接到ACK包后,从backlog队列中移出此半连接,连接转为开连接,TCP连接建成。由于服务器处理开连接的能力比处理半连接大得多,这种方法能有效减轻对内网服务器的SYN攻击,能有效地让backlog队列处于未满状态,同时在重传一个未完成的连接之前可以等待更长时间。
  以下为算法完整描述:
  第一步,防火墙截获外网客户端发向内网服务器SYN数据包,允许其通过,抵达内网服务器。同时在连接跟踪表中记录此事件.
  第二步,防火墙截获服务器发向客户端的SYN/ACK响应包,用连接跟踪表中记录的相应SYN包匹配它.
  第三步,防火墙让截获的SYN/ACK继续进行(发向客户端)。同时,向内网服务器发送ACK包。这样,对服务器来说,TCP连接三次握手已经完成。系统在backlog队列中删掉此半连接.
  第四步,看此TCP连接是否有效,相应产生两种解决方法。如果客户端的连接尝试是有效的,那么防火墙将接到来自客户端的ACK包,然后防火墙将它转发到服务器。服务器会忽略这个冗余的ACK包,这在TCP协议中是允许的.
  如果客户端的IP地址并不存在,那么防火墙将收不到来自客户端的ACK包,重转计时器将超时。这时,防火墙重传此连接.
  (2) 中继防火墙法
  中继防火墙抵御攻击的思想是:防火墙在向内网服务器发SYN包之前,首先完成与外网的三次握手连接,从而消除SYN洪水攻击的成立条件。
  以下为算法完整描述:
  第一步,防火墙截获外网客户端发向内网服务器SYN数据包.
  第二步,防火墙并不直接向内网发SYN数据包,而是代替内网服务器向外网发SYNIACK数据包.
  第三步,只有接到外网的ACK包,防火墙向内网发SYN包.
  第四步,服务器应答SYN/ACK包.
  第五步,防火墙应答ACK包.
  (3) 分析
  首先分析算法的性能,可以看出:为了提高效率,上述算法使用了状态检测等机制(可通过本系统的基本模块层得以实现)
  对于非SYN包(CSYN/ACK及ACK包),如果在连线跟踪信息表未查找到相应项,则还要匹配规则库,而匹配规则库需比较诸多项(如IP地址、端口号等),花费较大,这会降低防火墙的流量。另外,在中继防火墙算法中,由于使用了SYN包代理,增加了防火墙的负荷,也会降低防火墙的流量。
  其次,当攻击主机发ACK包,而不是SYN包,算法将出现安全漏洞。一般地,TCP连接从SYN包开始,一旦 SYN包匹配规则库,此连接将被加到连接跟踪表中,并且系统给其60s延时。之后,当接到ACK包时,此连接延时突然加大到3600s。如果,TCP连接从ACK包开始,同时此连接未在连接跟踪表中注册,ACK包会匹配规则库。如匹配成功,此连接将被加到连接跟踪表中,同时其延时被设置为3600s。即使系统无响应,此连接也不会终止。如果攻击者发大量的ACK包,就会使半连接队列填满,导致无法建立其它TCP连接。此类攻击来自于内网。因为,来自于外网的ACK包攻击,服务器会很快发RST包终止此连接(SOs>。而对于内网的外发包,其限制规则的严格性要小的多。一旦攻击者在某时间段内从内网发大量ACK包,并且速度高于防火墙处理速度,很容易造成系统瘫痪。
  (4) SYN cookies
  Linux支持SYN cookies,它通过修改TCP协议的序列号生成方法来加强抵御SYN洪水攻击能力。在TCP协议中,当收到客户端的SYN请求时,服务器需要回复SYN-SACK包给客户端,客户端也要发送确认包给服务器。通常,服务器的初始序列号由服务器按照一定的规律计算得到或采用随机数,但在SYN cookies中,服务器的初始序列号是通过对客户端IP地址、客户端端口、服务器IP地址和服务器端口以及其他一些安全数值等要素进行hash运算,加密得到的,称之为cookie。当服务器遭受SYN攻击使得backlog队列满时,服务器并不拒绝新的SYN请求,而是回复cookie(回复包的SYN序列号)给客户端,如果收到客户端的ACK包,服务器将客户端的ACK序列号减去1得到。cookie比较值,并将上述要素进行一次hash运算,看看是否等于此cookie。如果相等,直接完成三次握手(注意:此时并不用查看此连接是否属于backlog队列)。
  此算法的优点是:半连接队列满时,SYN cookies仍可以处理新SYN请求。缺点是:某些TCP选项必须禁用,如大窗口等。计算cookies有花销。
  /*一个IP包,其分片都被放入到一个链表中,作为每一个分片的链表节点用ipfrag结构表示。IP分片的中心组装在此链表进行。*/
  内核抵御攻击的代码结构如下:
  // From http://blog.csdn.net/ctu_85/archive/2008/01/03/2023205.aspx
  /*IP分片结构体*/
  struct ipfrag
  {
  int offset; //ip包中此分片的偏移值
  int end; //此分片最后一个株距在ip包中的位置
  int len; //此分片长度
  struct sk_buff *skb; //分片数据包
  unsigned ........
  if(end<= offset)&&(i>s kb->len)
  return NF_DRDP;
  }
  }
  return NF_ACCEPT;
  组成规则的三个结构体具体解释如下:
  (1)ipt......
  unsigned int nfcache ; //用此位域表示数据报的哪些部分由这个规则检查
  .......
  ; //包含数据包及匹配此规则数据包的计算数值
  以下仅列出ipt_entry_match结构体:
  struce ipt_entry_match
  {
  union
  {
  struct{
  u_int16_t target_size;
  ......
  ......
  {
  struct list_head list;//链表
  struct
  u int32 ipaddr; //地址
  u_ int16 port; //端口
  }src; //源端信息
  struct
  {
  u_ int32 ipaddr;
  u_ int 16 port;
  } dst; //目的端信息
  u_intl6 protonum; //协议号 [编辑本段]概念——磁盘操作系统  1.1什么是DOS?
  DOS(Disk Operation System)是一类操作系统的名称,它主要包括Shell(command.com), IO接口(io.sys)两个部分。
  Shell是dos的外壳,负责将用户输入的命令翻译成操作系统能够理解的语言。
  DOS的IO接口通常实现了一组基于int21h的中断。
  目前常用的DOS有包括:MS-DOS PC-DOS,FreeDOS,ROM-DOS等。
  1.2MS-DOS简介
  Windows9x系统都是以MS-DOS为基础的。
  Windows9x以上系统都是以NT内核为基础的
  DOS在1981年问世以来,版本就不断更新,从最初的DOS1.0升级到了最新的DOS8.0(Windows ME系统),纯DOS 的最高版本为DOS7.10,这以后的新版本DOS都是由Windows系统所提供的,并不单独存在。
  DOS分为核心启动程序和命令程序两个部分。
  DOS的核心启动程序有Boot系统引导程序、IO.SYS、MSDOS.SYS和COMMAND.COM。它们是构成DOS系统最基础的几个部分,有了它们系统就可以启动。
  但光有启动程序还不行,DOS作为一个字符型的操作系统,一般的操作都是通过命令来完成。DOS命令分为内部命令和外部命令。内部命令是一些常用而所占空间不大的命令程序,如dir、cd等,它们存在于COMMAND.COM文件中,会在系统启动时加载到内存中,以方便调用。而其它的一些外部命令则以单独的可执行文件存在,在使用时才被调入内存。
  DOS的优点是快捷。熟练的用户可以通过创建BAT或CMD批处理文件完成一些烦琐的任务,通过一些判断命令(IF、|)甚至可以编一些小程序。因此,即使在XP下CMD还是高手的最爱。
  [1]MS-DOS大事记
  DOS1.0 微软买下 86-DOS(QDOS)版权,1981年7月,成为 IBM PC上 第一个作业系统。同时微软有为IBM PC开发专用版本 PC-DOS,但与泛用版本DOS相比,除了系统档名以及部份针对 IBM 机器设计的核心,外部命令与公用程式之外,其余程式码其实差异不大。
  DOS 1.25 1982年6月,支援双面 软盘并开始修改错误
  不仅IBM,许多OEM也广泛使用
  DOS2.0 1983年3月,加入UNIX式的树状档案系统与及硬盘支援,以低阶的观点视之,这是第一次的 DOS 重大改版。这个版本除了相容于 CP/M 的 FCB 档案系统之外,正式采用了 FAT 格式,并大量使用具有 UNIX 特征的 Handle 式档案操作方式。
  DOS 2.11 1984年3月,为主要的OEM版本,修正了2.01版的错误,增加了对非英语语言及其文件格式的国际性支援
  MS-DOS 2.25 1985年10月,支援额外扩充的字符组(日文与韩文),还修正了旧版的错误
  MS-DOS 3.0 1984年8月,引入PC/AT,它能支援1.2MB的软盘,并加入较高容量的硬盘
  MS-DOS 3.1 1984年11月,加入对微软网络支援
  MS-DOS 3.2 1986年1月,加入了3.5吋软盘的强化支援,并开始可以透过驱动程式使用硬件 EMS。台湾的宏碁电脑在资策会与公会的支持下,与微软在DOS3.2 的基础上开发了符合 CMEX 标准的全中文
  MS-DOS 3.3 1987年8月,修正部份内部错误、增加了许多关于档案处理的外部命令、开始支援软盘之后,DOS3.3 成为当时最稳定、畅销的版本,可以说是DOS第二次的重大改版,一年后发行的4.0甚至还不如3.3普及。内部的 BASIC 直译器在 3.x之后逐渐由 BASICA 改为增强绘图能力的 GW-BASIC。此际倚天公司在前几版本的 BASICA 基础上开发了支援中文绘图模式的 ETBASIC,几乎成为当时台湾地区学习 BASIC 语言的标准配备。外部命令部分最重要的则是增加了 XCOPY 与 APPEND,增强了早就该有的档案管理能力。
  MS-DOS 4.0 电脑MS-DOS 4.0 1988年6月,主要基于IBM的代码库,而不是微软自己的代码库。加入了最大2GB容量硬盘机支援,引入 EMM(软件模拟 EMS)以及新规格 XMS 内存技术,令DOS操作系统可以使用1MB以上的内存。开始有 DOSSHELL 的使用。DOSSHELL 可以被视为 DOS的GUI 界面,并有切换程式作业的能力。
  MS-DOS 4.01 1988年12月,对于旧版所存在的一系列错误进行修正
  MS-DOS 5.0 1991年6月,第三次重大改版,可能也是DOS史上最重要的改版。这个版本继承 4.0 对于内存管理的改进,是 EMM 规格最为稳定、普及的版本,也加入了许多内存管理的程式,如 EMM386、MEM 等等,为的就是与 Windows 好好搭配,连带也使得DOS 内存管理成为当时许多软件亟欲配合增强的方向,如何设定DOS内存配置成为热门话题。BASIC 直译器改为 QuickBASIC 的简易版本 QBASIC,内建文字编辑器则由原来的行编辑 EDLIN 改为全屏幕编辑的 EDIT(其实只是对 QBASIC.EXE 多下一道参数而已)。减少外部命令对于版本的需求,而在千呼万唤中,终于加入 DOSKEY、UNDELETE、Quick Format、UNFORMAT 等能力。另一个值得一提的是,这个版本的 CONFIG.SYS 允许有多重选项。
  MS-DOS 6.0 1993年3月,加入了许多花俏的外部命令。系统检测程式 MSD 被加入。DoubleSpace 压缩磁盘技术开始被使用,亦开始附上微软自家的解毒软件 VSAFE 以及 MSAV。网络方面开始加入对 LL5 传输线的支援。对于磁盘,开始加入磁区整理软件 DEFRAG以及磁盘快取程式 SMARTDRV。档案管理方面,以豪华的 MSBACKUP 取代了阳春的 BACKUP,另外,终于加入了 DELTREE 与 MOVE 公用程式。开始正式支援光驱。内存管理方面则加入了 MEMMAKER 组态最佳化程式。
  MS-DOS 6.2 1993年11月,DoubleSpace 更名为 DrvSpace。
  MS-DOS 6.21 1994年2月
  MS-DOS 6.22 1994年6月,最后一个销售版本。国乔(KC)取得微软与IBM授权,搭配国乔中文系统发表自己的 DOS 7.0。
  MS-DOS 7.0 1995年8月,Windows 95 所带的版本,支持长文件名。
  MS-DOS 7.1 1996年8月,加入对大硬盘和FAT32分区的支持等。
  MS-DOS 8.0 2000年9月,DOS的最后一个版本,取消了部分功能,例如不再支持SYS命令、打印机操作。
  [2]在DOS上面运行的软件
  由于 DOS 是 PC 兼容机的主要平台,有许多为 DOS 撰写的知名软件。其中包括了:
  Lotus 1-2-3;一套在企业市场中被广泛运用的试算表软件。被许多人视为 IBM PC 成功的主因
  WordPerfect;一套目前出在 Windows 平台的文本编辑器
  dBase;最早的数据库软件之一
  Telix; 调制解调器通信软件
  Arachne;一套 DOS 版的网络浏览器
  DJGPP, gcc 的 DOS 移植版
  4DOS,取代原本的命令行界面的软件
  Borland 的 集成开发环境,包括了 Turbo Pascal、Turbo BASIC、Turbo C,以及 Turbo Assembler
  拨接式电子布告栏 (BBS) 架站软件 RemoteAccess、Spitfire、Maximus、McBBS,以及TAG
  BASIC 语言工具程序 BASICA 以及 GW-BASIC
  许多的第一人称射击游戏:由 Id Software 以及 Apogee Software(后来改名为 3D Realms)合资开发的 德军总部3D;Id Software 的 Doom 以及 Quake;3D Realms 的 Duke Nukem 3D、Shadow Warrior,以及 Rise of the Triad。3D Realms 开发的这 3 套游戏使用的都是 DOS 上的“Build 引擎”。Build 引擎的作者是 Ken Silverman,这个引擎也被用于 Silverman 的 Ken's Labyrinth 这个游戏上。

回答2:

命令行操作系统