前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java网络编程系列之TCP连接状态

Java网络编程系列之TCP连接状态

作者头像
尜尜人物
发布2020-02-12 23:27:04
1.1K0
发布2020-02-12 23:27:04
举报

1、TCP连接状态

  1. LISTEN:Server端打开一个socket进行监听,状态置为LISTEN
  2. SYN_SENT:Client端发送SYN请求给Server端,状态由CLOSED变为SYN_SENT
  3. SYN_RECV:Server端接收Client端发送的SYN请求,并回应ACK给Client端,同时发送SYN请求给Client端,状态由LISTEN变为SYN_RECV
  4. ESTABLISHED:Client端(接收Server端的ACK,状态由SYN_SENT变为ESTABLISHED)和Server端(接收Client端的ACk,状态由SYN_RECV变为ESTABLISHED)完成三次握手,状态置为ESTABLISHED,连接建立
  5. FIN_WAIT1:主动关闭端发出FIN请求主动关闭连接,状态由ESTABLISHED变为FIN_WAIT1
  6. CLOSE_WAIT:被动关闭端接收FIN请求,并回应ACK给主动关闭端,同时将FIN作为文件结束符发送给上层应用程序,状态由ESTABLISHED变为CLOSE_WAIT
  7. FIN_WAIT2:主动关闭端接收到ACK,状态由FIN_WAIT1变为FIN_WAIT2
  8. LAST_ACK:被动关闭端一段时间后,接收到文件结束符的上层应用程序,调用CLOSE关闭连接,此时被动关闭端会发送FIN请求给主动关闭端,状态由CLOSE_WAIT变为LAST_ACK
  9. TIME_WAIT:在主动关闭端接收到FIN请求,并回应ACK给被动关闭端,状态由FIN_WAIT2变为TIME_WAIT
  10. CLOSING:两端同时发起关闭请求时,会由FIN_WAIT1变为CLOSING
  11. CLOSED:1)被动关闭端收到主动关闭端的ACK,状态由LAST_ACK变为CLOSED;2)TIME_WAIT状态一段时间后,状态自动置为CLOSED
  12. UNKNOWN:未知的Socket状态,不正常

  • SYN:(同步序列编号,SynchronizeSequence Numbers)该标志仅在三次握手建立TCP连接时有效,表示一个新的TCP连接请求
  • ACK:(确认编号,AcknowledgementNumber)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有数据
  • FIN:(结束标志,FINish)用来结束一个TCP回话.但对应端口仍处于开放状态,准备接收后续数据

2、TCP连接建立(三次握手)

3、TCP连接断开(四次挥手)

4、TCP连接状态分析

  1. 若服务器出现了大量TIME_WAIT状态的连接,说明该服务器经常主动发起连接关闭操作,这是不可取的;
  2. 若一个系统频繁出现CLOSE_WAIT状态的连接,说明该系统并未立即处理连接关闭请求,系统存在缺陷;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、TCP连接状态
  • 2、TCP连接建立(三次握手)
  • 3、TCP连接断开(四次挥手)
  • 4、TCP连接状态分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档