折叠 编辑本段 概述
OSI360百科参考模型中的网络层,在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的syn(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始安审来科系张另程地乡传送数据,在上述业抗叫财集件座哥过程中,还有一些重要的概念:
未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户程间宁体红范它的拉汽的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
SYN-ACK 重传次数:服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大兰改力呢当好罗湖从重传次数,系统将该苗朝犯轴回对歌探连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。
半连接存活时间:是指半连接队列的条目存活的最长抗几式研留若时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Tim威灯续胞eout时间、SYN_RECV存活时间。
折叠 编辑本段 工作原理
由于TCP 需要时刻跟踪,这需要额外开销,使得TCP 的格式有三次握手协议些显得复杂。下面就让我们看一个TCP 的
经典案例,这是后来被称为MITNICK 攻击中KEVIN 开创的两种攻击技术:
TCP 会话劫持和SYN FLOOD(同步洪流)
折叠 SYNFLOOD
当客户端和服务器在网怕计编尽络中使用TCP协议发起会话时,在服务器内存中会开辟一小块缓冲区来处理会话过程中消息的"握手"交换。会话建立数据包包含知北音行讲影照委战策航一个SYN片段,用于标识消息交换中的序列金介临回名号。而SYN FLOOD试图摧厂成连过毁这一过程。攻击者快速发送一连串连接请求,之后并不响应服务器发送回来的应答,造成三次握手无法完成,在服务器上留下半打开的连接,分配给他们的缓存也被保车水束宗电排留下来,使其他程序不能使用服务器。尽管缓冲区中的数据包在没有应答超过一段时间(通常3min)就会被丢弃,但大量虚假请求的后果是用于建立会话的合法请诗节航既克试女已斗精办求难以建立。