开发者社区> rhwayfun> 正文

网络协议系列之十:TCP连接的建立与释放

简介:
+关注继续查看

TCP连接的建立(三次握手)

1> 客户端发送(主动)一个SYN给服务端(相当于告诉服务端,我要打开连接了,你注意一下)。客户端的状态变化:CLOSED–> SYN_SENT,服务端状态变化:CLOSED–>LISTEN;
2> 服务端收到SYN报文,发送SYN+ACK两个报文给客户端,其中ACK报文是对客户端发来的SYN报文的确认(相当于告诉客户端,我收到你的连接请求了)。而这里的SYN报文则是服务端主动给客户端发送的请求连接报文(相当于告诉客户端,我要和你建立连接了,你注意一下)。服务端的状态变化:LISTEN–>SYN RECEIVED,客户端的状态无变化
3> 客户端收到服务端的SYN+ACK报文,就知道服务端同意自己的连接请求。接着处理SYN报文,就知道服务端要与自己建立连接,于是发送一个ACK报文(相当于告诉服务端,我同意了你的连接请求,让我们愉快的玩耍吧)。服务端收到客户端的ACK报文后,双方的连接就建立起来了。客户端的状态变化:SYN_SENT–>ESTABLISHED;服务端的状态变化:SYN RECEIVED–>ESTABLISHED

TCP连接的释放(四次挥手):

1> 客户端操作结束后,发送FIN报文给服务端(相当于告诉服务端,我要断开连接了)。服务端状态变化:ESTABLISHED–>CLOSE_WAIT,客户端的状态变化:ESTABLISHED–>FIN_WAIT_1;
2> 服务端收到客户端的FIN报文后,知道客户端要断开连接了,发送一个ACK报文(注意:服务端并没有发送FIN报文,表示服务端还没有准备好断开连接。相当于告诉客户端,我知道了,但是我的数据还没有处理完毕,你再等等呗);
3> 客户端收到ACK 报文后,知道服务端收到了自己的断开连接的请求。但是服务端还没有准备断开,那就等呗。客户端的状态变化:FIN_WAIT_1–>FIN_WAIT_2;
4> 服务端传送完毕之后,给客户端发送一个FIN报文(相当于告诉客户端,我也传送数据完毕,准备断开连接了,状态由CLOSE_WAIT–>LAST_ACK),客户端收到FIN报文后,发送一个ACK报文(好了,我知道了。但是客户端担心服务端收不到自己的ACK报文,所以就启动一个计时器,状态由FIN_WAIT_2–>TIME_WAIT),等待的时候是2MSL(也就是2倍最长报文生存时间)。如果超过这个时间,服务器没有发送重传ACK报文的请求,就认为服务端已经收到了自己ACK报文,所以就关闭自己的连接,状态由TIME_WAIT–>CLOSED。服务端如果收到了ACK报文,那么就断开自己的连接。状态由LAST_ACK–>CLOSED。如果ACK报文发生了丢失,就发送一个重传请求,客户端就会重新发送一个ACK报文,并重置计时器。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(2)
网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(2)
128 0
网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(1)
网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(1)
115 0
网络协议之Tcp、Http全解
TCP头格式和三次握手、四次挥手,HTTP请求报文和响应报文结构。Session和Cookie详解。
63 0
linux网络编程(一) TCP网络协议及其格式
linux网络编程(一) TCP网络协议及其格式
71 0
【网络协议】TCP/IP协议
【网络协议】TCP/IP协议
60 0
网络协议HTTP TCP与UDP 浏览器缓存 Restful(十)
一 TCP网络协议 1 建立TCP连接:三次握手原则 客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三次握手的一部分。
1313 0
+关注
rhwayfun
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
TCP Cluster for mqtt技术实施方案
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载