Tcp三次握手四次挥手个人学习
最近想跳槽,学习了tcp中的三次握手与四次挥手,特意记录下,加深记忆
SYN 代表请求创建连接
FIN 表示请求关闭连接
ACK 代表确认接受,不管是三次握手还是四次分手,在回应的时候都会加上ACK=1,表示消息接收到了,并且在建立连接以后的发送数据时,都需加上ACK=1,来表示数据接收成功。
- tcp三次握手
三次握手
1.第一次握手
客户端发送一个空的tcp包,都只是封装到传输层,没有到应用层,并且在传输层设置了SYN=1
[tcp使用 SYN=1的包来表达 “我想和你建立连接”]
2.第二次握手
接收端收到客户端发送的tcp包后,在传输层设置了SYN=1,这个包中还设置了ACK=1,
[ACK=1标识我已经知道了你的连接意图,同时SYN=1也告诉客户端我也想与你建立连接]
3.第三次握手
客户端收到接收端的返回的数据包后,在tcp包设置了ACK=1,发送给服务端
[第三个包的ACK=1表示我已经知道你做好准备了]
四次挥手
1.第一次挥手
客户端首先要发送FIN=1给服务端
[tcp使用 FIN=1的包来表达“我要关闭连接了”]
2.第二次挥手
服务端接收到后,发送ACK=1的包表示我已经知道你要关闭连接了
3.第三次挥手
服务器关闭连接之前,需要将之前未处理完的事情先处理完毕,处理完毕后发送FIN=1 ACK=1的包
[FIN=1来表达我也要关闭连接了]
4.第四次挥手
客户端收到FIN=1的包后,接着发送一个ACK=1的包给服务端,服务端接收后进入关闭状态
【注意:在第三次挥手时,客户端会等待2MSL的时间(大约30秒至2分钟),避免第三次挥手失败,这边已经中断了】