tcp三次握手,四次挥手
1.三次握手(双方一起准备资源的过程)
四次握手过程:
-
客户端发送数字1
-
服务器返回数字1加一,则服务器准备好资源向客户端发送
-
服务器发送一个数字2
-
客户端返回数字2加一,则客户端资源也已经准备好,即同意建立连接
经历四次握手后,tcp连接建立成功,可以开始发送数据。
三次握手过程:
-
客户端发送一个数字1
-
服务器返回数字1加一和一个新的数字2,
-
客户端返回新的数字2加一
经历三次握手后,则tcp连接建立成功,可以开始发送数据。
两者区别:三次握手比四次握手速度快
但是不能确定数字发送的先后顺序,所以需要加上序号 syn-请求 ack-响应,这样就能确定数字发送的先后顺序了
2.四次挥手(双方一起释放资源的过程)
不进行通讯了,需要关闭通讯,客户端先关闭
关闭流程:
注意:
-
套接字是全双工的,关闭需要关闭发数据和收数据
-
②和③不能合并的原因:服务器不一定挥关闭套接字,但是②必须要发送
-
客户端先关闭连接的原因:为了保证④的正常运行,发送方需要等待一段时间才能关闭,这个期间不能做其它事情,资源没有释放,这个固定端口不能做其它事情。所以如果服务器先关闭时,服务器一段时间内不能够正常启动。而客户端不会绑定一个固定的端口,端口被占用影响不大。可以在服务器端加上一句代码,就可以使服务器向关闭套接字而不会影响下一次的正常启动。