TCP协议的3次握手建立连接and4次挥手断开连接
一:学英语
Client: 客户端
Server: 服务端
CLOSED: 关闭,表示主机的连接处于关闭状态。
LISTEN: 监听,表示主机处于监听状态,等待被连接。
SYN: Synchronize Sequence Numbers,同步序列编号。是TCP/IP建立连接时使用的握手信号。
SYN_SEND: Synchronize Sequence Numbers Send,同步序列号已发送。
SYN_RCVD: Synchronize Sequence Numbers Send Received,同步序列号已接收。
ACK: Acknowledge character,确认字符,表示发来的数据已确认接收无误。
ESTABLISHED: 已经建立连接,TCP:连接成功。
FIN_WAIT: Finish Wait,终止等待,请求关闭连接。是TCP/IP关闭连接时使用的挥手信号。
CLOSE_WAIT: 关闭等待,会被动关闭连接。
TIME_WAIT: 时间等待,会主动关闭连接。
LAST_ACK: Last Acknowledge character,最后的确认,确认后,TCP:连接关闭。
二:半连接池
客户端发送请求后,服务端会先将SYN请求放进半连接池。
如果半连接池只能存放5个SYN请求,那么第6个SYN请求会无法进入。
在连接池内的SYN请求并不会马上获得响应,而是像队列一样,先进先出,一个一个地获得服务端的回应。
三:3次握手
1.纯英文(看不懂)版
- 一开始:客户端(Client) 和 服务端(Server) 都处于 关闭(Closed)状态,服务端(Server) 处于监听状态(Listen)。
1.客户端(Client) :我请求连接你(SYN=1),我的身份是Client(seq=J)。
- 此时,客户端(Client) :关闭状态(Closed) ——> 请求已发送状态(SYN_SEND)
2.服务端(Server) :我收到你的连接请求了(ACK=1),我确认你的身份了(ack=J+1),你可以连接了;我也要连接你(SYN=1),我的身份是(seq=K)。
- 此时, 服务端(Server) :监听状态(Listen) ——> 请求已接收状态(SYN_SEND)(半连接状态)
3.客户端(Client) :我也收到你的连接请求了(ACK=1),我确认你的身份了(ack=K+1),你也可以连接了。
- 此时, 客户端(Client) : 请求已发送状态(SYN_SEND) ——> 连接已建立状态(ESTABLISHED)
- 之后, 服务端(Server) :请求已接收状态(SYN_SEND) ——> 连接已建立状态(ESTABLISHED)
2.中文(看得懂)版
3.通俗版
背景:A区和B区之间交通不太好,需要修高速公路(都是单向的)
①A区:我是A区,我想要修一条到B区的(单向)高速公路,可以吗?
②B区:我知道了,你修吧!我是B区,我也想修一条到A区的(单向)高速公路,可以吗?
③A区:我知道了,你修吧!
四:4次挥手
1.纯英文(看不懂)版
- 一开始:客户端(Client) 和 服务端(Server) 都处于 连接已建立状态(ESTABLISHED)。
1.客户端(Client) :我数据传完了 请求断开连接(FIN=1),我的身份是Client(seq=J)。
- 此时,客户端(Client) :连接已建立状态(ESTABLISHED) ——> 终止等待状态1(FIN_WAIT_1)
2.服务端(Server) :我收到你断开的连接请求了(ACK=1),我确认你的身份了(ack=J+1),你可以断开连接了;我数据还没传完(seq=K)。
- 此时, 服务端(Server) :连接已建立状态(ESTABLISHED) ——> 关闭等待状态1(CLOSE_WAIT)
- 此时,客户端(Client) :终止等待状态1(FIN_WAIT_1) ——> 终止等待状态2(FIN_WAIT_2)
3.服务端(Server) :好了 我数据传完了 请求断开连接(FIN=1),我的身份是Server(seq=L)。
- 此时, 服务端(Server) :关闭等待状态1(CLOSE_WAIT) ——> 最后确认状态(LAST_ACK)
4.客户端(Client) :我收到你的断开连接请求了(ACK=1),我确认你的身份了(ack=L+1),你可以断开连接了。
- 此时, 客户端(Client) : 终止等待状态2(FIN_WAIT_2) ——> 时间等待状态(TIME_WAIT) ——等待2MSL—— 连接关闭状态(CLOSED)
- 之后, 服务端(Server) :最后确认状态(LAST_ACK) ——> 连接关闭状态(CLOSED)
2.中文(看得懂)版
3.通俗版
背景:A区和B区中间要建立开发区了,需要拆除高速公路
①A区:我是A区 我高速公路上的车辆都清空了,我要拆高速公路了
②B区:好的,你拆吧!我还没清空车辆
③B区:我是B区,我高速公路上的车辆也清空了,我要拆高速公路了
⑤A区:好的,你拆吧!
每天逼着自己写点东西,终有一天会为自己的变化感动的。这是一个潜移默化的过程,每天坚持编编故事,自己不知不觉就会拥有故事人物的特质的。 Explicit is better than implicit.(清楚优于含糊)