tcp协议之三次握手,四次挥手

三次握手:就像两个人打电话时,a给b先发一个消息,你听得到我在说话么,b回一个听得到,你听得到我说话没,a回一个,听得到,然后连接就建立了。
这里写图片描述
tcp六种标志位:SYN:置1,代表,建立连接
ACK:确认标志位,置1,代表合法。
FIN:连接断开标志位。
PSH:传送标志位
RST:重置标志位
URG(urgent紧急)
Sequence number(顺序号码)
Acknowledge number(确认号码)

三次握手的过程:
1.客户端向服务器发送建立连接的请求,即发送SYN=1,和发送序号seq(生成的一个随机值),客户端进入SYN_SENT。
2.服务器端接收到客户端的请求,发送确认标志位,ACK=1,SYN=1,顺序号码ack=seq+1,再随机生成一个seq.然后客户端接收到请求,返回给客户端一个确认标志位ACK=1,ack=seq+1,seq(随机生成的值)
确认号:其数值等于发送方的发送序号 +1(即接收方期望接收的下一个序列号)。
过程如图所示:

三次握手的几种状态:
Closed:初始状态
SYN_SENT:client发送建立连接请求后。进入该状态。
SYN_RCVD:server接收到client的建立连接请求,并发送SYN_ACK包,后进入该状态。
established:客户端收到SYN_ACK包,并发送ACK包,后,server检查ack是否正确,正确,连接建立。二者可进行数据传输。

四次挥手过程:描述连接的关闭过程。终止连接总共发送4个包。

第一次挥手:没有数据的一方a给对手b发送一个FIN=1(连接关闭标志位),a进入FIN_WAIT_1状态。

第二次挥手:b接收到该数据,并给a发送一个ACK=1的确认信息:就是你关闭连接的信息我b已经接收到了,但可能还有数据要发送,

第三次挥手:b知道自己没有数据要发送了,给a发送一个FIN=1(关闭连接标志位)

第四次挥手:a收到了b的FIN,再给b发送一个ACK=1的确认信息,将自己的状态设置为TIME_WAIT,在,a,b端均启动一个计时器,当b因为网络原因啥的,没有收到a的确认信息,就会再次请求,a发送确认信息。当a在计数器时间范围内没有收到b的再次请求发送确认信息,便会认为b已收到ACK,便关闭自己的连接。

关于挥手过程几种状态的理解:
FIN_WAIT_1:请求关闭连接的一方a,发送FIN=1,后,进入该状态。
FIN_WAIT_2:收到请求信息的一方b,发送ACK确认信息后,b进入CLOSE_WAIT状态,a进入FIN_WAIT_2
LAST_ACK:b发送完数据,给a发送FIN=1,其进入该状态
TIME_WAIT:a收到FIN=1,并发送ACK=1,进入该状态。
closed:连接关闭状态。

原文地址:https://www.cnblogs.com/wangxiaopei/p/8551252.html