pull/1/head
ruyu.li 3 years ago
parent ab3bd980dd
commit 2b7a27898b

11
OS.md

@ -153,6 +153,12 @@ TIME_WAIT 等待 2 倍的 MSL比较合理的解释是 网络中可能存
### TCP三次握手
开始客户端和服务器都处于CLOSED状态然后服务端开始监听某个端口进入LISTEN状态
- 第一次握手(SYN=1, seq=x),发送完毕后,客户端进入 SYN_SENT 状态
- 第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1) 发送完毕后,服务器端进入 SYN_RCVD 状态
- 第三次握手(ACK=1ACKnum=y+1),发送完毕后,客户端进入 ESTABLISHED 状态,当服务器端接收到这个包时,也进入 ESTABLISHED 状态TCP 握手,即可以开始数据传输
![三次握手](images/OS/三次握手.jpg)
- 假设一开始客户端和服务端都处于`CLOSED`的状态。然后先是服务端主动监听某个端口,处于`LISTEN`状态
@ -258,6 +264,11 @@ TCP 协议的通信双方, 都必须维护一个「序列号」, 序列号
### TCP四次挥手
- 第一次挥手:**FIN=1seq=u**,发送完毕后客户端进入**FIN_WAIT_1** 状态
- 第二次挥手:**ACK=1seq =vack=u+1**,发送完毕后服务器端进入**CLOSE_WAIT** 状态,客户端接收到后进入 **FIN_WAIT_2** 状态
- 第三次挥手:**FIN=1ACK=1seq=wack=u+1**,发送完毕后服务器端进入**LAST_ACK**状态,客户端接收到后进入 **TIME_WAIT**状态
- 第四次挥手:**ACK=1seq=u+1ack=w+1**,客户端接收到来自服务器端的关闭请求,发送一个确认包,并进入 TIME_WAIT状态等待了某个固定时间两个最大段生命周期**2MSL**2 Maximum Segment Lifetime之后没有收到服务器端的 ACK ,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入 CLOSED 状态。服务器端接收到这个确认包之后,关闭连接,进入 **CLOSED** 状态
![四次挥手](images/OS/四次挥手.jpg)
四次挥手过程:

Loading…
Cancel
Save