拒绝服务器攻击的防范措施_拒绝服务器攻击什么意思

hacker|
184

什么是ddos攻击

DDoS:Distributed Denial of Service

中文名:分布式拒绝服务

所谓分布式拒绝服务攻击是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。

由于分布式拒绝服务攻击可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用,因此,该攻击一旦出现会导致很多的大型网站都出现无法进行操作的情况。

DDoS攻击的表现形式主要有两种:

一种是主要针对网络带宽的流量攻击,利用大量攻击包使用网络带宽被阻塞,导致合法网络包无法到达主机的行为。

另一种是针对服务器主机的资源耗尽攻击,通过大量攻击包导致主机的内存被耗尽或CPU被内核及应用程序占完而造成无法提供网络服务。

受到DDoS攻击时,网络或服务器会表现出以下几点:

被攻击主机上有大量等待的TCP连接。

网络中充斥着大量的无用的数据包,源地址为假。

存在高流量无用数据,网络拥塞严重,主机无法正常和外界通讯。

反复高速地发出特定的服务请求,但受害主机无法及时处理所有正常请求。

严重时会造成系统死机。

DDoS是什么意思?

DDOS全名是Distributed Denial of service (分布式拒绝服务)。F5公司的BIG-IP是唯一一款被ICSA认证为网络防火墙的ADC。很多DOS攻击源一起攻击某台服务器就组成了DDOS攻击。DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式,通过使网络过载来干扰甚至阻断正常的网络通讯。通过向服务器提交大量请求,使服务器超负荷。阻断某一用户访问服务器阻断某服务与特定系统或个人的通讯。现在电信骨干节点之间的连接都是以G为级别的,大城市之间更可以达到2.5G的连接,这使得攻击可以从更远的地方或者其他城市发起,攻击者的傀儡机位置可以在分布在更大的范围,选择起来更灵活了。

你理解了DoS攻击的话,它的原理就很简单。如果说计算机与网络的处理能力加大了10倍,用一台攻击机来攻击不再能起作用的话,攻击者使用10台攻击机同时攻击呢?用100台呢?DDoS就是利用更多的傀儡机来发起进攻,以比从前更大的规模来进攻受害者。从拒绝服务攻击诞生到现在已经有了很多的发展,从最初的简单Dos到现在的DdoS。那么什么是Dos和DdoS呢?DoS是一种利用单台计算机的攻击方式。而DdoS(Distributed Denial of Service,分布式拒绝服务)是一种基于DoS的特殊形式的拒绝服务攻击,是一种分布、协作的大规模攻击方式,主要瞄准比较大的站点,比如一些商业公司、搜索引擎和政府部门的站点。DdoS攻击是利用一批受控制的机器向一台机器发起攻击,这样来势迅猛的攻击令人难以防备,因此具有较大的破坏性。如果说以前网络管理员对抗Dos可以采取过滤IP地址方法的话,那么面对当前DdoS众多伪造出来的地址则显得没有办法。所以说防范DdoS攻击变得更加困难,如何采取措施有效的应对呢?

解决方案:

F5公司的BIG-IP是唯一一款被ICSA认证为网络防火墙的ADC

BIG-IP 的最新版本已经被 ICSA 实验室认证为一款网络防火墙,能够帮助客户保护其面向公众的网站免受大规模网络攻击。这款新认证的解决方案,以竞争对手解决方案相同的成本处理其8倍的流量。

F5's BIG IP family of products can be deployed as virtual solutions or on a series of purpose-built application delivery controllers. From network firewall, DDoS protection, SSL offload, DNS security, application security, and access security to traffic management, application acceleration, and much more, the BIG-IP system is a strategic point of control to ensure your applications are always fast, secure, and available.

The modular BIG-IP system is built on F5’s TMOS full proxy architecture, which offers tremendous performance, scalability, and customization. Using F5’s event-driven iRules, application, security, and network teams can quickly build new services that inspect, transform, and direct application traffic.

The BIG-IP family consists of the BIG-IP Local Traffic Manager, BIG-IP Global Traffic Manager, BIG-IP Access Policy Manager, BIG-IP Application Security Manager, BIG-IP WebAccelerator, and BIG-IP WAN Optimization Manager solutions. All can be deployed as standalone or layered solutions.

拒绝服务攻击的原理

SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(Distributed Denial Of Service分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,使被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。

SYN Flood攻击的过程在TCP协议中被称为三次握手(Three-way Handshake),而SYN Flood拒绝服务攻击就是通过三次握手而实现的。

(1) 攻击者向被攻击服务器发送一个包含SYN标志的TCP报文,SYN(Synchronize)即同步报文。同步报文会指明客户端使用的端口以及TCP连接的初始序号。这时同被攻击服务器建立了第一次握手。

(2) 受害服务器在收到攻击者的SYN报文后,将返回一个SYN+ACK的报文,表示攻击者的请求被接受,同时TCP序号被加一,ACK(Acknowledgment)即确认,这样就同被攻击服务器建立了第二次握手。

(3) 攻击者也返回一个确认报文ACK给受害服务器,同样TCP序列号被加一,到此一个TCP连接完成,三次握手完成。

具体原理是:TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接。这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒~2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况(伪造IP地址),服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃—— 即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况就称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)。

SYN COOKIE 防火墙是SYN cookie的一个扩展,SYN cookie是建立在TCP堆栈上的,他为linux操作系统提供保护。SYN cookie防火墙是linux的 一大特色,你可以使用一个防火墙来保护你的网络以避免遭受SYN洪水攻击。

下面是SYN cookie防火墙的原理

client firewall server

------ ---------- ------

1. SYN----------- - - - - - - - - - -

2. ------------SYN-ACK(cookie)

3. ACK----------- - - - - - - - - - -

4. - - - - - - -SYN---------------

5. - - - - - - - - - ------------SYN-ACK

6. - - - - - - -ACK---------------

7. ----------- relay the -------

----------- connection -------

1:一个SYN包从C发送到S

2:防火墙在这里扮演了S的角色来回应一个带SYN cookie的SYN-ACK包给C

3:C发送ACK包,接着防火墙和C的连接就建立了。

4:防火墙这个时候扮演C的角色发送一个SYN给S

5:S返回一个SYN给C

6:防火墙扮演C发送一个ACK确认包给S,这个时候防火墙和S的连接也就建立了

7:防火墙转发C和S间的数据

如果系统遭受SYN Flood,那么第三步就不会有,而且无论在防火墙还是S都不会收到相应在第一步的SYN包,所以我们就击退了这次SYN洪水攻击。 攻击静态属性主要包括攻击控制模式、攻击通信模式、攻击技术原理、攻击协议和攻击协议层等。

(1)攻击控制方式

攻击控制方式直接关系到攻击源的隐蔽程度。根据攻击者控制攻击机的方式可以分为以下三个等级:直接控制方式(Direct)、间接控制方式(Indirect)和自动控制方式(Auto)。

最早的拒绝服务攻击通常是手工直接进行的,即对目标的确定、攻击的发起和中止都是由用户直接在攻击主机上进行手工操作的。这种攻击追踪起来相对容易,如果能对攻击包进行准确的追踪,通常就能找到攻击者所在的位置。由于直接控制方式存在的缺点和攻击者想要控制大量攻击机发起更大规模攻击的需求,攻击者开始构建多层结构的攻击网络。多层结构的攻击网络给针对这种攻击的追踪带来很大困难,受害者在追踪到攻击机之后,还需要从攻击机出发继续追踪控制器,如果攻击者到最后一层控制器之间存在多重跳板时,还需要进行多次追踪才能最终找到攻击者,这种追踪不仅需要人工进行操作,耗费时间长,而且对技术也有很高的要求。这种攻击模式,是目前最常用的一种攻击模式。自动攻击方式,是在释放的蠕虫或攻击程序中预先设定了攻击模式,使其在特定时刻对指定目标发起攻击。这种方式的攻击,从攻击机往往难以对攻击者进行追踪,但是这种控制方式的攻击对技术要求也很高。Mydoom蠕虫对SCO网站和Microsoft网站的攻击就属于第三种类型[TA04-028A]。

(2)攻击通信方式

在间接控制的攻击中,控制者和攻击机之间可以使用多种通信方式,它们之间使用的通信方式也是影响追踪难度的重要因素之一。攻击通信方式可以分为三种方式,分别是:双向通信方式(bi)、单向通信方式(mono)和间接通信方式(indirection)。

双向通信方式是指根据攻击端接收到的控制数据包中包含了控制者的真实IP地址,例如当控制器使用TCP与攻击机连接时,该通信方式就是双向通信。这种通信方式,可以很容易地从攻击机查找到其上一级的控制器。

单向通信方式指的是攻击者向攻击机发送指令时的数据包并不包含发送者的真实地址信息,例如用伪造IP地址的UDP包向攻击机发送指令。这一类的攻击很难从攻击机查找到控制器,只有通过包标记等IP追踪手段,才有可能查找到给攻击机发送指令的机器的真实地址。但是,这种通信方式在控制上存在若干局限性,例如控制者难以得到攻击机的信息反馈和状态。

间接通信方式是一种通过第三者进行交换的双向通信方式,这种通信方式具有隐蔽性强、难以追踪、难以监控和过滤等特点,对攻击机的审计和追踪往往只能追溯到某个被用于通信中介的公用服务器上就再难以继续进行。这种通信方式已发现的主要是通过IRC(Internet Relay Chat)进行通信[Jose Nazario],从2000年8月出现的名为Trinity的DDoS攻击工具开始,已经有多种DDoS攻击工具及蠕虫采纳了这种通信方式。在基于IRC的傀儡网络中,若干攻击者连接到Internet上的某个IRC服务器上,并通过服务器的聊天程序向傀儡主机发送指令。

(3)攻击原理

DoS攻击原理主要分为两种,分别是:语义攻击(Semantic)和暴力攻击(Brute)。

语义攻击指的是利用目标系统实现时的缺陷和漏洞,对目标主机进行的拒绝服务攻击,这种攻击往往不需要攻击者具有很高的攻击带宽,有时只需要发送1个数据包就可以达到攻击目的,对这种攻击的防范只需要修补系统中存在的缺陷即可。暴力攻击指的是不需要目标系统存在漏洞或缺陷,而是仅仅靠发送超过目标系统服务能力的服务请求数量来达到攻击的目的,也就是通常所说的风暴攻击。所以防御这类攻击必须借助于受害者上游路由器等的帮助,对攻击数据进行过滤或分流。某些攻击方式,兼具语义和暴力两种攻击的特征,比如SYN风暴攻击,虽然利用了TCP协议本身的缺陷,但仍然需要攻击者发送大量的攻击请求,用户要防御这种攻击,不仅需要对系统本身进行增强,而且也需要增大资源的服务能力。还有一些攻击方式,是利用系统设计缺陷,产生比攻击者带宽更高的通信数据来进行暴力攻击的,如DNS请求攻击和Smurf攻击,参见4.2.3节以及文献[IN-2000-04]和[CA-1998-01]。这些攻击方式在对协议和系统进行改进后可以消除或减轻危害,所以可把它们归于语义攻击的范畴。

(4)攻击协议层

攻击所在的TCP/IP协议层可以分为以下四类:数据链路层、网络层、传输层和应用层。

数据链路层的拒绝服务攻击[Convery] [Fischbach01][Fischbach02]受协议本身限制,只能发生在局域网内部,这种类型的攻击比较少见。针对IP层的攻击主要是针对目标系统处理IP包时所出现的漏洞进行的,如IP碎片攻击[Anderson01],针对传输层的攻击在实际中出现较多,SYN风暴、ACK风暴等都是这类攻击,面向应用层的攻击也较多,剧毒包攻击中很多利用应用程序漏洞的(例如缓冲区溢出的攻击)都属于此类型。

(5)攻击协议

攻击所涉及的最高层的具体协议,如SMTP、ICMP、UDP、HTTP等。攻击所涉及的协议层越高,则受害者对攻击包进行分析所需消耗的计算资源就越大。 攻击动态属性主要包括攻击源地址类型、攻击包数据生成模式和攻击目标类型。

(1)攻击源地址类型

攻击者在攻击包中使用的源地址类型可以分为三种:真实地址(True)、伪造合法地址(Forge Legal)和伪造非法地址(Forge Illegal)。

攻击时攻击者可以使用合法的IP地址,也可以使用伪造的IP地址。伪造的IP地址可以使攻击者更容易逃避追踪,同时增大受害者对攻击包进行鉴别、过滤的难度,但某些类型的攻击必须使用真实的IP地址,例如连接耗尽攻击。使用真实IP地址的攻击方式由于易被追踪和防御等原因,近些年来使用比例逐渐下降。使用伪造IP地址的攻击又分为两种情况:一种是使用网络中已存在的IP地址,这种伪造方式也是反射攻击所必需的源地址类型;另外一种是使用网络中尚未分配或者是保留的IP地址(例如192.168.0.0/16、172.16.0.0/12等内部网络保留地址[RFC1918])。

(2)攻击包数据生成模式

攻击包中包含的数据信息模式主要有5种:不需要生成数据(None)、统一生成模式(Unique)、随机生成模式(Random)、字典模式(Dictionary)和生成函数模式(Function)。

在攻击者实施风暴式拒绝服务攻击时,攻击者需要发送大量的数据包到目标主机,这些数据包所包含的数据信息载荷可以有多种生成模式,不同的生成模式对受害者在攻击包的检测和过滤能力方面有很大的影响。某些攻击包不需要包含载荷或者只需包含适当的固定的载荷,例如SYN风暴攻击和ACK风暴攻击,这两种攻击发送的数据包中的载荷都是空的,所以这种攻击是无法通过载荷进行分析的。但是对于另外一些类型的攻击包,就需要携带相应的载荷。

攻击包载荷的生成方式可以分为4种:第一种是发送带有相同载荷的包,这样的包由于带有明显的特征,很容易被检测出来。第二种是发送带有随机生成的载荷的包,这种随机生成的载荷虽然难以用模式识别的方式来检测,然而随机生成的载荷在某些应用中可能生成大量没有实际意义的包,这些没有意义的包也很容易被过滤掉,但是攻击者仍然可以精心设计载荷的随机生成方式,使得受害者只有解析到应用层协议才能识别出攻击数据包,从而增加了过滤的困难性。第三种方式是攻击者从若干有意义载荷的集合中按照某种规则每次取出一个填充到攻击包中,这种方式当集合的规模较小时,也比较容易被检测出来。最后一种方式是按照某种规则每次生成不同的载荷,这种方式依生成函数的不同,其检测的难度也是不同的。

(3)攻击目标类型

攻击目标类型可以分为以下6类:应用程序(Application)、系统(System)、网络关键资源(Critical)、网络(Network)、网络基础设施(Infrastructure)和因特网(Internet)。

针对特定应用程序的攻击是较为常见的攻击方式,其中以剧毒包攻击较多,它包括针对特定程序的,利用应用程序漏洞进行的拒绝服务攻击,以及针对一类应用的,使用连接耗尽方式进行的拒绝服务攻击。针对系统的攻击也很常见,像SYN风暴、UDP风暴[CA-1996-01]以及可以导致系统崩溃、重启的剧毒包攻击都可以导致整个系统难以提供服务。针对网络关键资源的攻击包括对特定DNS、路由器的攻击。而面向网络的攻击指的是将整个局域网的所有主机作为目标进行的攻击。针对网络基础设施的攻击需要攻击者拥有相当的资源和技术,攻击目标是根域名服务器、主干网核心路由器、大型证书服务器等网络基础设施,这种攻击发生次数虽然不多,但一旦攻击成功,造成的损失是难以估量的[Naraine02]。针对Internet的攻击是指通过蠕虫、病毒发起的,在整个Internet上蔓延并导致大量主机、网络拒绝服务的攻击,这种攻击的损失尤为严重。

网络上的“拒绝式攻击”是什么意思?

你讲的就是DDOS

黑客是如何组织一次DDoS攻击的?

这里用"组织"这个词,是因为DDoS并不象入侵一台主机那样简单。一般来说,黑客进行DDoS攻击时会经过这样的步骤:

1. 搜集了解目标的情况

下列情况是黑客非常关心的情报:

被攻击目标主机数目、地址情况

目标主机的配置、性能

目标的带宽

对于DDoS攻击者来说,攻击互联网上的某个站点,如,有一个重点就是确定到底有多少台主机在支持这个站点,一个大的网站可能有很多台主机利用负载均衡技术提供同一个网站的www服务。以yahoo为例,一般会有下列地址都是提供 服务的:

66.218.71.87

66.218.71.88

66.218.71.89

66.218.71.80

66.218.71.81

66.218.71.83

66.218.71.84

66.218.71.86

如果要进行DDoS攻击的话,应该攻击哪一个地址呢?使66.218.71.87这台机器瘫掉,但其他的主机还是能向外提供www服务,所以想让别人访问不到 的话,要所有这些IP地址的机器都瘫掉才行。在实际的应用中,一个IP地址往往还代表着数台机器:网站维护者使用了四层或七层交换机来做负载均衡,把对一个IP地址的访问以特定的算法分配到下属的每个主机上去。这时对于DDoS攻击者来说情况就更复杂了,他面对的任务可能是让几十台主机的服务都不正常。

所以说事先搜集情报对DDoS攻击者来说是非常重要的,这关系到使用多少台傀儡机才能达到效果的问题。简单地考虑一下,在相同的条件下,攻击同一站点的2台主机需要2台傀儡机的话,攻击5台主机可能就需要5台以上的傀儡机。有人说做攻击的傀儡机越多越好,不管你有多少台主机我都用尽量多的傀儡机来攻就是了,反正傀儡机超过了时候效果更好。

但在实际过程中,有很多黑客并不进行情报的搜集而直接进行DDoS的攻击,这时候攻击的盲目性就很大了,效果如何也要靠运气。其实做黑客也象网管员一样,是不能偷懒的。一件事做得好与坏,态度最重要,水平还在其次。

2. 占领傀儡机

黑客最感兴趣的是有下列情况的主机:

链路状态好的主机

性能好的主机

安全管理水平差的主机

这一部分实际上是使用了另一大类的攻击手段:利用形攻击。这是和DDoS并列的攻击方式。简单地说,就是占领和控制被攻击的主机。取得最高的管理权限,或者至少得到一个有权限完成DDoS攻击任务的帐号。对于一个DDoS攻击者来说,准备好一定数量的傀儡机是一个必要的条件,下面说一下他是如何攻击并占领它们的。

首先,黑客做的工作一般是扫描,随机地或者是有针对性地利用扫描器去发现互联网上那些有漏洞的机器,象程序的溢出漏洞、cgi、Unicode、ftp、数据库漏洞…(简直举不胜举啊),都是黑客希望看到的扫描结果。随后就是尝试入侵了,具体的手段就不在这里多说了,感兴趣的话网上有很多关于这些内容的文章。

总之黑客现在占领了一台傀儡机了!然后他做什么呢?除了上面说过留后门擦脚印这些基本工作之外,他会把DDoS攻击用的程序上载过去,一般是利用ftp。在攻击机上,会有一个DDoS的发包程序,黑客就是利用它来向受害目标发送恶意攻击包的。

3. 实际攻击

经过前2个阶段的精心准备之后,黑客就开始瞄准目标准备发射了。前面的准备做得好的话,实际攻击过程反而是比较简单的。就象图示里的那样,黑客登录到做为控制台的傀儡机,向所有的攻击机发出命令:"预备~ ,瞄准~,开火!"。这时候埋伏在攻击机中的DDoS攻击程序就会响应控制台的命令,一起向受害主机以高速度发送大量的数据包,导致它死机或是无法响应正常的请求。黑客一般会以远远超出受害方处理能力的速度进行攻击,他们不会"怜香惜玉"。

老到的攻击者一边攻击,还会用各种手段来监视攻击的效果,在需要的时候进行一些调整。简单些就是开个窗口不断地ping目标主机,在能接到回应的时候就再加大一些流量或是再命令更多的傀儡机来加入攻击。

防范DDOS攻击的工具软件:CC v2.0

防范DDOS比较出色的防火墙:硬件有Cisco的Guard、Radware的DefensePro,绿盟的黑洞,傲盾软件的傲盾防火墙。软件有冰盾DDOS防火墙、8Signs Firewall等。

什么是分布式拒绝服务攻击ddos

分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。

什么是DOS?

1.1什么是DoS?

DoS是英文“Denial of service”的缩写,中文意思是“拒绝服务”。DoS攻击专门设计用来阻止授权用户对系统以及系统数据进行访问,通常采用的攻击方式是让系统服务器超载或者让系统死机。类似于几百个人同时拨一个电话,导致电话繁忙和不可用。DoS攻击可能涉及到通过国际互联网发送大量的错误网络信息包。如果DoS攻击来源于单点进攻,那么可以采用简单的交通控制系统来探测到电脑黑客。较为复杂的DoS攻击可以包含多种结构和大量的攻击点。电脑黑客经常操纵其它计算机和网络服务器并且使用它们的地址进行DoS攻击,这样就可以掩盖他们自己的真实身份。

1.2什么是DdoS?

与之紧密相关的另一个概念就是DdoS ,DdoS是英文“distribution Denial of service”的缩写,中文意思是“分布式拒绝服务攻击”,这种攻击方法使用与普通的拒绝服务攻击同样的方法,但是发起攻击的源是多个。通常,攻击者使用下载的工具渗透无保护的主机,当获得该主机的适当的访问权限后,攻击者在主机中安装软件的服务或进程(以下简称代理)。这些代理保持睡眠状态,直到从它们的主控端得到指令。主控端命令代理对指定的目标发起拒绝服务攻击。随着 cable modems, DSL和危害力及强的黑客工具的广泛传播使用,有越来越多的可以被访问的主机。分布式拒绝服务攻击是指主控端可以同时对一个目标发起几千个攻击。单个的拒绝服务攻击的威力也许对带宽较宽的站点没有影响,而分布于全球的几千个攻击将会产生致命的效果。

1.3什么是DRDoS?

DRDoS是英文“Distributed Reflection Denial of Servie Attack”的缩写,中文意思是“分布是反射拒绝服务攻击”。同上述两个不同,该方式靠的是发送带有被害者IP地址的数据包给攻击主机(有点像送错信)。由于是利用TCP/IP服务的“三握手”的第二步,因此攻击者无需给被攻击者安装木马,发动DRDoS也只要花费攻击者很少的资源。想要了解DRDoS的细节可以参考以下资料:

A、《黑客防线精华本(2002(下册))》……新一代的DDoS攻击。这篇文章作者以受害者的身份介绍了DRDoS的发现、分析、解决及反思。

B、《TCP/IP 网络管理》,英文名TCP/IP Network Administrator O'REILLY出版,中国电力出版社发行。在P26介绍了“三握手”的细节。

0条大神的评论

发表评论