DOS是什么?

磁盘操作系统DOS是英文Disk Operating System的缩写,意为“磁盘操作系统”。顾名思义,DOS主要是一个面向磁盘的系统软件。简单来说,DOS是人机之间的桥梁,是覆盖机器硬件的“外壳”。有了DOS,我们不用深入了解机器的硬件结构,也不用死记硬背那些无聊的机器命令。我们可以通过一些接近自然语言的DOS命令轻松完成大部分日常操作。此外,DOS还能有效管理各种软硬件资源,合理调度。所有的软件和硬件都在DOS的监控和管理下,有条不紊的做着自己的工作。【编辑本段】前言本文分为“概念”和“如何”两部分。

在“概念”中,我会告诉你这个词条的定义、背景和原理。

在“How to”中,我会告诉你这个词条的应用、技巧以及可能出现的问题。

一般来说,DOS有两个不同的概念,即拒绝服务或磁盘操作系统。通常DOS(O小写)指拒绝服务,DoS(O大写)指磁盘操作系统。

随着计算机技术的发展,网络也在迅速普及和发展。人们在享受网络带来的便利的同时,也受到很多黑客的攻击。在众多种类的攻击中,有一种攻击叫DOS(拒绝服务(DoS),是一种常见而有效的网络攻击技术。它利用协议或系统的缺陷进行欺骗或伪装来实施网络攻击,最终使受害者的系统因资源耗尽或无法正确响应而瘫痪,从而无法向合法用户提供正常服务。它看起来不起眼,但攻击范围广,隐蔽性强,简单有效,已经成为网络中一种强大的攻击技术,极大地影响了网络和业务主机系统的有效服务。其中DDOS(分布式拒绝服务)更是以规模大、隐蔽性强、难以防范而闻名。[编辑本段]DoS攻击是最常见的一种网络攻击。它通过某种手段故意攻击网络协议的缺陷或直接耗尽被攻击对象的资源,目的是使目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务停止响应甚至崩溃,而不侵入本次攻击中的目标服务器或目标网络设备。这些服务资源包括网络宽带、系统栈、开放进程。或允许的连接。这种攻击会导致资源的枯竭。无论计算机的处理速度有多快,内存容量有多大,网络带宽有多快,这种攻击带来的后果都无法避免。任何资源都是有极限的,所以总能找到方法让请求的值大于极限,导致提供的服务资源耗尽。

DoS攻击有很多种,主要有陆地攻击、死平、眼泪、蓝精灵攻击和SYN洪水。

据统计,syn flood攻击是所有黑客攻击中最常见、最容易使用的DoS攻击方式。

1.攻击原理

要了解SYN flood攻击,首先要了解TCP连接的三次握手过程。在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立连接。第一次握手:建立连接时,客户端向服务器发送一个SYN包((SYN=i))并进入SYN发送状态,等待服务器确认;

第二次握手:服务器收到SYN包时,必须确认客户的SYN (ACK=i+1),发送一个SYN包((SYN j)},即SYN+ACK包。此时服务器进入SYN_RECV状态;

三次握手:客户端从服务器接收SYN ACK包,并向服务器发送确认包ACK(ACK=j+1)。这个包发出后,客户端和服务器进入建立状态,完成三次握手,客户端和服务器开始传输数据。

在上述过程中,有一些重要的概念:

半连接:收到SYN包但没有收到ACK包时的连接状态称为半连接,即三次握手中的TCP连接还没有完全完成。

半连接队列(Semi-connected queue):在三次握手协议中,服务器维护一个半连接队列,为每个客户端的SYN包(SYN=i)打开一个条目,表示服务器已经收到SYN包,向客户端发送了确认,正在等待客户端的确认包。由这些条目标识的连接在服务器中处于SYN_ RECV状态。当服务器收到客户的确认包时,条目被删除,服务器进入已建立状态。

Backlog参数:表示半连接队列的最大数量。

SYN-ACK重传次数:服务器发送SYN-ACK包后,如果没有收到客户端确认包,服务器进行第一次重传,等待一段时间没有收到客户端确认包后进行第二次重传。如果重传次数超过系统规定的最大重传次数,系统从半连接队列中删除连接信息。注意,每次重传的等待时间不一定相同。

半连接存活时间:指半连接队列中条目存活的最长时间,即服务从收到SYN包到确认此消息无效的最长时间。该时间值是所有重传请求分组的最长等待时间的总和。有时,半连接存活时间也称为超时时间和SYN_RECV存活时间。

以上三个参数对系统的TCP连接影响很大。

SYN flood攻击是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 ' & lt-SYN/ACK数据包攻击的主机

由于C '地址不可达,被攻击的主机等待SYN数据包超时。攻击主机通过发送大量SYN包填充未连接队列,导致正常SYN包拒绝服务。此外,SYN flood攻击还可以通过发送大量ack包进行DoS攻击。

2.传统算法

常用的抵御SYN flood攻击的方法有网关防火墙法、中继防火墙法和SYNcookies。为便于描述,系统拓扑图简化为图4-4。图中,网络按照是在防火墙内部还是外部分为内网和外网(内网受防火墙保护)。其次,设置防火墙的SYN重传定时器。超时值必须足够小,以防止积压队列被填满;同时要足够大,保证用户正常通信。

(1)网关防火墙方法

网关防火墙抵御攻击的基本思想是:对于内网服务器发送的SYN/ACK包,防火墙立即发送ACK包响应。当内网服务器收到ACK包时,半连接从backlog队列中移除,连接转为open连接,TCP连接完成。由于服务器处理开放连接的能力远大于半连接,这种方法可以有效缓解内网服务器的SYN攻击,有效保持积压队列处于满的状态,同时在重传一个不完整的连接之前等待更长的时间。

以下是该算法的完整描述:

步骤1,防火墙拦截外网客户端发送给内网服务器SYN数据包,并允许其通过到达内网服务器。还要在连接跟踪表中记录此事件。

第二步,防火墙拦截服务器发送给客户端的SYN/ACK响应包,并将其与连接跟踪表中记录的相应SYN包进行匹配。

第三步,防火墙允许拦截的SYN/ACK继续(发送给客户端)。同时,向内部网服务器发送一个ACK包。这样,对于服务器来说,TCP连接到三次握手就完成了。系统删除积压队列中的这个半连接。

第四步,看这个TCP连接是否有效,并据此生成两个解决方案。如果客户端的连接尝试有效,防火墙将收到来自客户端的ACK数据包,然后防火墙会将其转发给服务器。服务器将忽略这个冗余的ACK包,这在TCP协议中是允许的。

如果客户端的IP地址不存在,防火墙将不会收到来自客户端的ACK数据包,并且重新传输计时器将超时。此时,防火墙会重新传输连接。

(2)中继防火墙方法

中继防火墙抵御攻击的思路是,防火墙在向内网服务器发送SYN包之前,首先要完成与外网的三次握手连接,从而消除SYN flood攻击成立的条件。

以下是该算法的完整描述:

第一步是防火墙拦截外部网络客户端发送到内部网络服务器的SYN数据包。

第二步,防火墙不直接向内网发送SYN包,而是向外网而不是内网服务器发送SYNIACK包。

第三步:防火墙只有在收到外网的ACK包后才向内网发送SYN包。

步骤4,服务器回复SYN/ACK包。

步骤5,防火墙应答ACK包。

(3)分析

首先对算法的性能进行分析,可以看出为了提高效率,上述算法使用了状态检测等机制(可以通过本系统的基本模块层实现)。

对于非SYN包(CSYN/ACK和ACK包),如果在连接跟踪信息表中找不到对应项,就需要匹配规则库,匹配规则库需要比较很多项(如IP地址、端口号等。),这样会花费很多,减少防火墙的流量。另外,在中继防火墙算法中,使用了SYN包代理,增加了防火墙的负载,减少了防火墙的流量。

其次,当攻击主机发送ACK包而不是SYN包时,算法会存在安全漏洞。通常,TCP连接以SYN数据包开始。一旦SYN数据包与规则库匹配,该连接将被添加到连接跟踪表中,系统将延迟60s。后来收到ACK包,连接延迟突然增加到3600s。如果TCP连接以ACK包开始,并且该连接没有在连接跟踪表中注册,则ACK包将与规则库匹配。如果匹配成功,该连接将被添加到连接跟踪表中,其延迟将被设置为3600秒。即使系统没有响应,这个连接也不会被终止。如果攻击者发送大量的ACK包,就会填满半连接队列,使其无法建立其他TCP连接。这种攻击来自内网。因为来自外网的ACK包攻击,服务器会发送一个RST包终止这个连接(SOS >;。对于内部网的外包,限制性规则要宽松得多。一旦攻击者在一定时间内从内网发送大量ACK包,且速度高于防火墙处理速度,就容易造成系统瘫痪。

(4)同步饼干

Linux支持SYN cookies,通过修改TCP协议的序列号生成方法,可以加强抵抗SYN flood攻击的能力。在TCP协议中,当服务器收到客户端的SYN请求时,需要向客户端回复SYN-SACK包,客户端也需要向服务器发送一个确认包。通常情况下,服务器的初始序列号是由服务器按照一定的规则或者采用随机数计算出来的,但是在SYN cookies中,服务器的初始序列号是通过哈希客户端IP地址、客户端端口、服务器IP地址和服务器端口等安全值得到的,称为cookies。当服务器受到SYN攻击,使得backlog队列满时,服务器不拒绝新的SYN请求,而是回复cookie(回复包的SYN序列号)给客户端。如果从客户端收到ACK包,服务器从客户端的ACK序列号中减去1。Cookie比较这些值,并对上述元素执行哈希操作,以查看它们是否等于此cookie。如果相等,直接完成三次握手(注意:此时不需要检查这个连接是否属于backlog队列)。

这种算法的优点是,当半连接队列已满时,SYN cookies仍然可以处理新的SYN请求。缺点:某些TCP选项必须禁用,比如大窗口。数饼干要花钱。

/*一个IP包,其分片全部放入一个链表中,用ipfrag结构表示为每个分片的链表节点。IP片段的集中组装在这个链表中进行。*/

内核抗攻击的代码结构如下:

//frommand.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的核心引导程序包括引导系统引导程序,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三月,增加了UNIX风格的树形文件系统和硬盘支持。从低级的角度来看,这是对DOS的第一次重大修改。该版本不仅兼容CP/M FCB文件系统,还正式采用了FAT格式,并使用了大量具有UNIX特点的句柄文件操作。

DOS 2.11 1984 March作为主要的OEM版本,修正了2.01版本中的错误,增加了对非英语语言及其文件格式的国际支持。

MS-DOS 2.25 1985 10月,支持额外扩展字符集(日文和韩文),修正了旧版本中的错误。

8月推出MS-DOS 3.0 1984,PC/AT,可支持1.2MB软盘,并增加大容量硬盘。

MS-DOS 3.1 1984 11月,加入了对微软的网络支持。

MS-DOS 3.2 1986 65438+10月,增加了对3.5寸软盘的增强支持,并开始通过驱动程序使用硬件EMS。台湾宏碁电脑在政策委员会和协会的支持下,与微软合作,在DOS3.2的基础上开发了符合CMEX标准的中文

MS-DOS3.3 1987年8月,在修正了一些内部错误,增加了很多关于文件处理的外部命令,并开始支持软盘之后,DOS3.3成为了当时最稳定最畅销的版本。可以说是DOS的第二次大改版,一年后发布的4.0甚至不如3.3受欢迎。3.x之后,内部的BASIC literal translator逐渐从BASICA改为GW-BASIC,以增强绘图能力。此时支持中文绘图模式的ETBASIC是Et-day公司在BASICA之前版本的基础上开发的,几乎成为当时台湾省学习BASIC语言的标准装备。外部命令最重要的部分是增加了XCOPY和追加,这增强了早就应该有的文件管理能力。

MS-DOS 4.0电脑MS-DOS 4.0 65438+6月0988主要是基于IBM的代码库,而不是微软自己的代码库。在最大容量2GB的硬盘支持下,引入EMM(软件模拟EMS)和新规范XMS内存技术,使DOS操作系统可以使用1MB以上的内存。开始使用DOSSHELL。DOSSHELL可以看作是DOS的GUI界面,具有切换程序操作的能力。

MS-DOS 4.01 1988 65438+2月,修正了旧版本的一系列错误。

MS-DOS 5.0 1991 6月,第三次大改版,也可能是DOS历史上最重要的一次改版。这个版本继承了4.0中对内存管理的改进,是EMM规范中最稳定、最受欢迎的版本。它还增加了许多内存管理程序,如EMM386、MEM等。,为了和Windows很好的协调,也让DOS内存管理成为当时很多软件都渴望合作和增强的一个方向。如何设置DOS内存配置成了热门话题。BASIC literal translator改为QBASIC,QuickBASIC的简单版本,内置的文本编辑器由原来的行编辑器EDLIN改为全屏编辑器EDLIN(其实只是给QBASIC多了一个参数。EXE)。减少版本对外部命令的需求,最后增加DOSKEY、UNDELETE、快速格式化、UNFORMAT等能力。另外值得一提的是,这个版本的CONFIG。SYS允许多个选项。

MS-DOS 6.0 1993三月,增加了很多花哨的外部命令。增加了系统测试员MSD。DoubleSpace压缩盘技术开始被使用,微软自己的解毒软件VSAFE和MSAV开始被附加。网络开始加入对LL5传输线的支持。对于磁盘,添加了DEFRAG和SMARTDRV。在文件管理方面,豪华的MSBACKUP取代了阳春备份,另外终于加入了DELTREE和MOVE实用程序。开始官方支持光驱。MEMMAKER配置优化器被添加到内存管理中。

MS-DOS 6.2 1993 165438+10月,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分区的支持。

2000年9月,MS-DOS 8.0 2000 DOS的最后一个版本,取消了一些功能,如不再支持SYS命令和打印机操作。

[2]在DOS下运行的软件。

因为DOS是PC兼容机的主要平台,所以有很多知名的为DOS编写的软件。其中包括:

莲花1-2-3;一套广泛应用于企业市场的电子表格软件。被许多人认为是IBM个人电脑成功的主要原因。

WordPerfect目前在Windows平台上可用的一组文本编辑器。

dBase最早的数据库软件之一。

Telix调制解调器通信软件

阿拉克尼;网络浏览器的DOS版本。

Ddjgpp,DOS移植版gcc

4DOS,取代原来命令行界面的软件。

Borland的集成开发环境包括Turbo Pascal、Turbo BASIC、Turbo C和Turbo Assembler。

RemoteAccess、Spitfire、Maximus、McBBS和TAG是设置拨号电子公告板(BBS)的软件。

基本语言工具BASICA和GW-BASIC。

很多第一人称射击游戏:Id软件和Apogee软件(后改名为3D Realms)联合开发的德国总部3D;厄运和地震;身份识别软件;3D核弹公爵,影子战士和3D Realms三重奏的崛起。3D Realms开发的三套游戏都使用了DOS下的“构建引擎”。构建引擎的作者是肯·西尔弗曼,西尔弗曼的《肯的迷宫》游戏中也使用了这个引擎。