三握手:1.主要是客户端发送建立连接的请求(SYN=1),和随机生成的序号(seq=x) 2.客户端收到请求,并且建立连接(ACK=1 SYN=1) ack=x+1 seq=y 3.客户端收到后,确认ACK=1,ack=y=1,seq=x+1
四次挥手1. FIN=1 seq=u 2 客户端确认建立连接ACK=1,ack=u+1,生成一个客户端序列号seq=v,此时服务器还没有停止发送,防止数据没有传完,但是客户端停止发送了。 3 服务器发送完后请求断开,FIN=1 ack=u+1这里为什么ack是u+1因为客户端请求断开连接之后就没有发送数据了。seq=w 之前数据没有传送完生成新的序号。ACK=1 4 客户端向服务器发送seq=u+1,ACK=1,ack=w+1
为什么是三次握手四次挥手。
三握手,四挥手
在不可靠的传输信道当中建立可靠的连接,
三次握手,是为了防止已失效的报文重新传入服务器,引起客户端和服务器双方状态不一致。
四次挥手:第一次客户端向服务器发送FYN包这时候就已经进入半关闭状态,客户段向服务器不在发送数据,第二次服务器向客户端发送ACK=1表示确认收到断开请求,但是此时可能服务器数据还没有传输完成。当服务器传输完成之后服务器向客户端进行断开连接请求。第四次挥手服务器向客户端发送ACK包,进入超时等待状态,经过超时等待后断开连接,服务器收到ACK包后断开连接,为什么客户端需要等待超时等待时间,假设客户端发送完ACK包后就断开连接, ACK包在网络中丢失,服务端将一直停留在最后确认状态,要是服务端发送ACK包后一直停留在等待状态,客户端没有收到,服务端会重新发送FYN包,客户端再次发送ACK包