TCP是可靠,连接的,面向字节流的传输层协议
首先看下面这个图:
刚开始两端都处于关闭状态
第一次握手:客户端访问服务器,向服务器发送同步序号SYN,假设syn=j,然后进入SYNSENT的状态,等待服务器的确认
第二次握手:服务器收到客户端的请求,返回确认序号ack=j+1,同时也发送一个SYN包,即syn=k,服务器进入SYNRCVD状态
第三次握手:客户端收到服务器发送的SYN和ACK确认,并向服务器发送确认包ACK,然后,客户端和服务器端进入established状态
为什么需要三次握手呢???
为了初始化Sequence Number的值,通信双方互相通知对方的SN值,作为以后数据通信的序号,保证应用层接收到的数据包不会因为网络传输而乱序
第三次握手,是客户端回复服务器端已经收到了他发送的SN的值