「 第 一 次 握 手 」
:客户端先向服务端发送一个请求连接的报文段,这个报文段SYN位设置为
1, 序 列 号 Seq(Sequence
Number)设置为某一值,假设为X,发送出去之后客户端进入SYN_SEND 状态
,等待服务器的确认;
「 第 二 次 握 手 」
:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN
报 文 段 进 行 确 认 , 设 置 Acknowledgment Number 为 x+1(Sequence
Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequ
ence
Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段
)中,一并发送给客户端,此时服务器进入SYN_RECV状态;
「 第 三 次 握 手 」
: 客 户 端 收 到 服 务 器 的 SYN+ACK 报 文 段 。 然 后 将 Acknowledgment
Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后
,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
完成了三次握手,客户端和服务器端就可以开始传送数据。以上就是TCP三
次握手的总体介绍。
为什么要三次握手而不是两次?
为什么非要进行三次连接呢?两次行吗?在谢希仁的《计算机网络》中是这
样说的:
为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误
。如下:
“
❝
“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第
一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了
,以致延误到连接释放以后的某个时间才到达server。本来这是一个早