一.TCP建立连接时候的三次握手
三次握手指的是TCP在建立连接时,客户端和服务器之间会发送三个包,这样可以让数据在传输过程中保证其完整性
为什么要进行三次握手呢?
三次握手是保证面向连接的,确保双方的发送和接收数据是否正常,保证数据传输的安全可靠,为什么两次就不行呢?是因为两次并不能保证双方可以接收到数据
第一次握手 -- 建立连接时客户端会向服务器发送SYN包,就是连接请求。同时SYN=1,ACK=0,seq是客户端随机分配的序列号码假设为x,发完之后进入SYN_send状态,等待服务器的确认
第二次握手 -- 服务器收到客户端发送的SYN包,开始确认客户的SYN,同时自己也发送一个SYN包其中SYN=1,ACK=1,seq=y(服务器端生成的一个序列号假设为y),ack=x+1(确认客户端)。即syn+ack包。服务端发送之后进入SYN-RCVD状态
第三次握手 -- 客户端收到了来自服务器的SYN+ACK包,收到之后向服务器发送确认包ACK=1 ,seq=x+1,ack=y+1,该包发送完毕,客户端和服务器均进入established状态,表示连接建立完成。完成三次握手
当第三次握手之后,连接建立成功才会进行数据的传输