Fork me on GitHub

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分钟),避免第三次挥手失败,这边已经中断了】

 

 

posted @ 2019-07-22 14:14  youxiu326  阅读(260)  评论(0编辑  收藏  举报