目录
[TOC]
1. 三次握手
1.1 三次握手的过程
客户端发起第一次握手,传递SYN请求,等待服务器确认。
服务器收到客户端发起的请求,传递对
客户端发起请求的确认信息ACK和向客户端发起的连接请求SYN,等待客户端确认。客户端收到服务器端发送的ACK和SYN,处于
连接完成状态,并发送对服务器端的确认ACK到服务器端。服务器端收到客户端返回的ACK,进入连接完成状态。
之后,客户端可与服务器端进行数据通讯。
1.2 tcp三次握手为什么是必须的呢?
首先tcp协议是有状态的连接,而且是客户端、服务端均保持连接状态的连接。
前两次握手是必须的,需要服务端知道客户端可正常传输报文,同时需要客户端知道服务端可正常传输报文。
1.3 为什么要有第三次握手?
`三次握手为了保证过期的握手请求不被再次接受`
因为网络原因,客户端在想服务端发起的第一次握手A,有可能因为网络等原因发生了延迟。之后,客户端发起新的握手请求B,新的握手请求被服务端接收,正常通信,之后请求关闭。
此时,网络通顺后,第一次握手请求,发送到服务器,如没有三次握手,服务器将认为客户端发送的请求是有效的,并准备好资源等待客户端传送报文。而客户端因为上一次请求已过期,则不再向服务器端发送请求。服务器端将耗费大量的资源进行等待,造成服务器端资源的浪费。
1.4 为什么三次握手,可以避免上述情况?
如过期确认请求A发送到了服务器端,服务器端不知道客户端发送的连接请求是过期的,服务器端向客户端发送ACK+SYN,进入等待客户端返回确认的状态。客户端收到服务端信息后,认为请求已过期,则不再理会,不向服务器端返回任何信息,服务器端收不到客户端的ACK确认,重发几次之后,将不再发送确认通知,认为客户端无法反馈信息,终止连接请求。避免了服务器端接收到过期请求,而导致的资源浪费。
2. 四次挥手
待补充...