NO1
客户端发送 SYN=1,ACK=0给服务端.
syn代表同步标志位,ACK代表询问标志位.
syn是synchronize的缩写,ack是acknowlege的缩写.
NO2,
第二次握手,
server接到 client的请求后,发送 ACK=1,SYN=0给客户端.
服务端发送的ACK值等于客户端发来的值+1,syn值和客户端相同.
NO3,
第三次握手协议:
客户端收到服务端发来的ACK=1的包,进入通信状态,然后根据服务端发来的SYN包,返回给服务端
ACK=1的包,三次握手完成,客户端和服务端进入通信状态.
为什么要进行三次握手?而不是两次或一次,或者是四次五次握手??
client,server端进行通信,目的都是要确认自己的发信能力和接受能力都没有问题,
第一次握手:
client向server发送请求,server收到请求,
只能确认:
1,server端确认,client的发送没有问题,
2,server端确认,server的接受没有问题.
不能确认的是:
1,client端不知道client的发送问题,
2,client不知道自己的接受问题.
3,client不知道server的发送和接受问题.
接下来进行二次握手:
server向client发送请求,client接受请求..
可以确认:
1,client确认自己的发送和接受都没有问题.
2,client确认server的接受和发送没有问题.
不可以确认的是:
1,server端不知道自己的发送是否有问题.
所以需要进行第三次握手.
才可以解决
server端确认自己的发送没有问题.
四次分手
参考如下文章
https://github.com/jawil/blog/issues/14