网络状态转换

Netstat状态分类
netstat -an命令查看!再stat下面有一些英文,简单说一下这些英文具体都代表什么:
LISTEN(Listening for a connection.)侦听来自远方的TCP端口的连接请求
SYN-SENT(Active; sent SYN. Waiting for a matching connection request after having sent a connection request.)再发送连接请求后等待匹配的连接请求
SYN-RECEIVED(Sent and received SYN. Waiting for a confirming connection request acknowledgment after having both received and sent connection requests.)再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED(Connection established.)代表一个打开的连接
FIN-WAIT-1(Closed; sent FIN.)等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2(Closed; FIN is acknowledged; awaiting FIN.)从远程TCP等待连接中断请求
CLOSE-WAIT(Received FIN; waiting to receive CLOSE.)等待从本地用户发来的连接中断请求
CLOSING(Closed; exchanged FIN; waiting for FIN.)等待远程TCP对连接中断的确认
LAST-ACK(Received FIN and CLOSE; waiting for FIN ACK.)等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT(In 2 MSL (twice the maximum segment length) quiet wait after close. )等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED(Connection is closed.)没有任何连接状态
TCP连接建立
首先要说明的是要明确TCP连接建立的过程需要3次握手,下面举例说明各种状态存在的时刻:
1. 首先在服务器A上开启FTP服务,开始侦听来自远端TCP端口的连接请求,这个时候查看服务器A状态为:LISTENING
2. 在客户端B上向A发送FTP连接请求,这个时候数据包同步位置1,这是TCP三次握手的第一步。在发送后没收到确认时,在客户端B上其状态为:SYN-SENT。此时客户端B启动连接定时器。如果在75秒内没有收到应答,则放弃连接建立。
3. 在服务器A上收到从B上发送的SYN同步包后,确认,然后再向B发送SYN的同步包,此数据包同时将TCP标记中的同步位和确认位置1,它既对第一步中的客户端同步数据包进行确认,表示愿意与客户端同步,同时再对客户端主机进行同步请求,这是TCP连接的第一步。这个时候在服务器A上,状态为:SYN-RECEIVED。此时服务器A启动连接定时器。如果在75秒内没有收到应答,则放弃连接建立。
4. 在客户端B上接收到从A上发过来的确认同步包后进行确认,此数据包中将TCP标记中的确认位置1,表示这是一个确认数据包,此时在客户端B状态转换为:ESTABLISHED
5. 服务器A接收到从B发过来的确认包后,状态转换为:ESTABLISHED
此时TCP连接正式建立。
TCP
连接关闭
6. 应用程序在在连接不需要的时候,通过客户端B向服务器A发送的终止信息的FIN包后,客户端B处于FIN-WAIT-1状态。
7. 从服务器A接收到客户端B发送的终止数据包,它告诉客户端B已成功接收客户端的上数据包,此时等待应用程序来关闭连接,此时服务器A进入CLOSE_WAIT状态。
8. 客户端B接收到带有确认位的数据包后,对此进行确认,同意关闭TCP连接此时客户端B转移到FIN-WAIT-2状态。当连接从FIN-WAIT-1状态转移到FIN-WAIT-2状态时,将一个FIN-WAIT-2定时器设置为10分钟。
9. 服务器A在应用程序同意终止连接后,向客户端B发送终止FIN包,此时服务器状态转为LAST-ACT
10. 客户端B在接收到从服务器A发送的终止包后,同意终止连接,然后再向服务器端发送确认信息,此时客户端B转向TIME-WAIT状态。当连接进入TIME-WAIT状态时,该定时器被激活。
11. 服务端A在收到客户端B的确认后,关闭连接,服务器A状态转向CLOSED
12. 客户端BTIME-WAIT定时器超时时,与该连接相关的内核数据块被删除,连接终止,转向CLOSED状态。
此时TCP连接正式关闭。备注
1. 一个由客户端发起的关闭TCP连接的示意图:
2. 连接终止请求对与建立连接的双方是可以同时发出的,在发出终止请求后,双方都进入FIN-WAIT-1状态,随着定时器的超时,双方都进入CLOSING状态,在这个定时器再次超时后,均转入TIME-WAIT状态,在TIME-WAIT的定时器超时后,双方均放弃这次连接,连接转为CLOSE状态。如图示:
服务器socket状态转换
更多相关文章
  • TCP连接建立和终止及TCP状态转换
    转载自:http://blog.csdn.net/delphiwcdj/article/details/8194354用户数据报协议(UDP)UDP是一个简单的传输层协议(RFC 768).进程往一个UDP套接字写入一个消息,该消息随后被封装(encapsulating)到一个UDP数据报,该UDP ...
  • TCP状态转换--值得学习--方便记忆
    转载:http://blog168.chinaunix.net/space.phpuid=20196318&do=blog&id=168206挺好的,方便记忆!!!实线:表示客户的正常状态转换 虚线:表示服务器的正常状态装换应用:表示状态转换在应用进程发起操作时发生接受:表示状态转换 ...
  • 网络状态都正常,ping网关能ping通,但不正常,出现,并且不能进行域名解析
    网络状态都正常,ping 网关能ping通,但不正常,出现"?",并且不能进行域名解析C:\Documents and Settings\Administrator>ping 192.168.1.1Pinging ? with 32 bytes of data:Reply ...
  • 收集网络状态(Ping),并用邮件通知管理员
    在没有第三方工具对网络进行监控的话,要检查网络中某台主机,或是某个IP地址通讯是否正常,我们通常用手动PING来进行测试. 有了PowerShell,我们可以用他定时Ping网络上的几个IP地址,然后把ping的个延时时间用邮件通知给指定的一个或多个管理员.如果达到设定的警报值,则用不同的颜色来警示 ...
  •    1,通过定时收发email检测网络连通性#/bin/bash echo "Daily test mail" > state.txt mail -s Server_State abc@md1.21.co.jp < state.txt rm -df ./state. ...
  • 完成项目的过程中,需要考虑用户是否有网络连接以及及时的检测网络状态,把用到的判断网络封装的方法分享给大家. (1)Reachability检测网络状态 .h文件中定义方法... #import <Foundation/Foundation.h>      #import "Re ...
  • #pragma mark 网络状态监测 -(void)checkNetworkStatus{     //创建一个用于测试的url     NSURL *url=[NSURL URLWithString:@"http://www.baidu.com"];     AFHTTPRe ...
  • 本博文为老男孩linu培训机构早期的培训教案,特分享以供大家学习参考.全部系列分为五篇文章,本博文为第五篇:5.1高并发linux生产服务器内核参数优化案例高并发linux生产服务器内核参数优化案例说明:本优化适合apache,nginx,squid多种等web应用,特殊的业务也可能需要略作调整.所 ...
一周排行
  •  首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString. 很简单的问题,"我是中文"这样写 ...
  • zabbix源码下载:  http://www.zabbix.com/download.php ,以"Zabbix 2.2 LTS" 为例. zabbix2.2官方安装指导: https://ww ...
  •  [%=@title%] [%=@count%]票 [[%=@percent%]%]  一,启动POP服务要在您的 Gmail 帐户中启用 POP,请按以下步骤操作: 登录到您的 Gmail 帐户. 点击任一 Gma ...
  • ·  花时间学习不见得就是真正的学习.知识整合法优化你的学习习惯
  • ExchangeServer2010系列之十四:个人邮件存档
        这几日,一是忙于工作,二是忙于家庭琐事,博客的更新慢了一拍,特此自省.今日我们来看 ...
  • Activity.finish()Call this when your activity is done and should be closed. 在你的activity动作完成的时候,或者Activity需要关 ...
  • 又是这两天在项目中遇到的,或许很简单,但真实第一次遇到,记录一下.在页面上用JS获取了一下当前的日期,并用getYear()方法返回了当前的年度,2013也没问题,代码在IE中都测试通过了之后就提交了.然后同事很快就 ...
  • 单点登录sso、cookie跨域
    setcookie();中的第五个参数是域名参数domain 这个参数如果是.domain ...
  • 加载表结构并保持成XML string cmdText = @"select * from kb_lable_temp where 1=2"; using (SqlConnection conn ...
  • 大会主题:实践为王关于敏捷之旅Agile Tour(以下称为敏捷之旅)是一个国际非盈利性组织,于2008年成立,总部位于法国.其目的是提供一个高效有趣的敏捷开发学习途径,在全球范围内推广敏捷的思想和实践,帮助企业更好 ...