TCP连接的3次握手原理

转载 2007年09月23日 17:06:00

TCP是面向连接的,所谓面向连接,就是当计算机双方通信时必需先建立连接,然后数据传送,最后拆除连接三个过程

并且TCP在建立连接时又分三步走:

第一步是请求端(客户端)发送一个包含SYN即同步(Synchronize)标志的TCP报文,SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号;

第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确认(Acknowledgement)。

第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此一个TCP连接完成。然后才开始通信的第二步:数据处理。

这就是所说的TCP三次握手(Three-way Handshake)。

简单的说就是:(C:客户端,S:服务端)

C:SYN到S

S:如成功--返回给C(SYN+ACK)

C:如成功---返回给S(ACK)

以上是正常的建立连接方式,但如下:

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

相关文章推荐

TCP建立连接3次握手及释放连接4次握手

TCP建立连接及释放连接示意图 建立连接3次握手 建立连接要3次握手的原因 释放连接4次握手 释放连接4次握手的原因 TIME-WAIT必须等待2MSL时间的原因TCP建立连接及释放连接示意图 注:...

TCP的运输连接管理(3次握手,4次握手)

TCP简历链接时3次握手 第一次握手:建立连接,客户端发送SYN包(syn=1, seq=x)到服务器,并进入SYN-SENT(同步,已发送)状态,等待服务器确认; (备注,syn=1,ack=0表...

TCP3次握手连接协议和4次握手断开连接协议

TCP/IP 状态机,如下图所示:       在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。 (SYN包表示标志位syn=1,ACK包表示标志位ack...

TCP3次握手连接协议和4次握手断开连接协议

TCP/IP 状态机,如下图所示:       在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。 (SYN包表示标志位syn=1,ACK包表示标志位ack...

TCP3次握手建立连接,4次握手断开连接

SYN=synchronize ACK=acknowledge FIN=finish TCP 3-Way Handshake Diagram Below is a (very) simpl...

TCP为什么需要3次握手与4次挥手

为什么需要“三次握手”             在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》...

tcp/ip 3次握手与4次分手

建立TCP连接步骤(如上图3次握手): 1.服务器必须准备好接受外来的连接。这是通过调用socket、bind和listen函数来完成,称为被动打开; 2.客户通过调用connect进行主动打开。...
  • tujiaw
  • tujiaw
  • 2012年07月05日 23:41
  • 2050

TCP协议3次握手/4次握手

TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即t...
  • dutsoft
  • dutsoft
  • 2014年05月20日 08:53
  • 475

理论经典:TCP协议的3次握手与4次挥手过程详解

摘要: 本文将分别讲解经典的TCP协议建立连接(所谓的“3次握手”)和断开连接(所谓的“4次挥手”)的过程。 1、前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP连接的3次握手原理
举报原因:
原因补充:

(最多只允许输入30个字)