在一些防火墙或端口管理工具中经常会看到连接状态为CLOSED CLOSE_WITE LAST_ACK等的进程, 虽然状态就那么很少的几个, 而且看字面意思也能猜个大概, 但没做过Socket编程的朋友却很少能准确的知道每种状态的准确含义, 我也是经常把其中几项搞混. 下面把几种状态的说明整理了一下, 也许会对有的朋友有点用:

CLOSED 没有使用这个套接字
LISTEN 套接字正在监听入境连接
SYN_SENT 套接字正在试图主动建立连接
SYN_RECEIVED 正在处于连接的初始同步状态
ESTABLISHED 连接已建立
CLOSE_WAIT 远程套接字已经关闭:正在等待关闭这个套接字
FIN_WAIT_1 套接字已关闭,正在关闭连接
CLOSING 套接字已关闭,远程套接字正在关闭,暂时挂起关闭确认
LAST_ACK 远程套接字已关闭,正在等待本地套接字的关闭确认
FIN_WAIT_2 套接字已关闭,正在等待远程套接字关闭
TIME_WAIT 这个套接字已经关闭,正在等待远程套接字的关闭传送

服务端,端口的状态变化

  先在本机(IP地址为:192.168.1.10)配置FTP服务,然后在其它计算机(IP地址为:192.168.1.1)访问FTP服务,从TCPView看看端口的状态变化。

  下面黑体字显示的是从TCPView中截取的部分。

  1、LISTENING状态

  FTP服务启动后首先处于侦听(LISTENING)状态。

  State显示是LISTENING时表示处于侦听状态,就是说该端口是开放的,等待连接,但还没有被连接。就像你房子的门已经敞开的,但还没有人进来。

  从TCPView可以看出本机开放FTP的情况。它的意思是:程序inetinfo.exe开放了21端口,FTP默认的端口为21,可见在本机开放了FTP服务。目前正处于侦听状态。

  inetinfo.exe:1260 TCP 0.0.0.0:21 0.0.0.0:0 LISTENING

  2、ESTABLISHED状态

  现在从192.168.1.1这台计算机访问一下192.168.1.10的FTP服务。在本机的TCPView可以看出端口状态变为ESTABLISHED。

  ESTABLISHED的意思是建立连接。表示两台机器正在通信。

  下面显示的是本机的FTP服务正在被192.168.1.1这台计算机访问。

  inetinfo.exe:1260 TCP 192.168.1.10:21 192.168.1.1:3009 ESTABLISHED

  注意:处于ESTABLISHED状态的连接一定要格外注意,因为它也许不是个正常连接。后面我们要讲到这个问题。

  3、 TIME_WAIT状态

  现在从192.168.1.1这台计算机结束访问192.168.1.10的FTP服务。在本机的TCPView可以看出端口状态变为TIME_WAIT。

  TIME_WAIT的意思是结束了这次连接。说明21端口曾经有过访问,但访问结束了。

  [System Process]:0 TCP 192.168.1.10:21 192.168.1.1:3009 TIME_WAIT

  4、小技巧

  a、可以telnet一个开放的端口,来观察该端口的变化。比如看1025端口是开放的,在命令状态(如图1运行cmd)运行:

  telnet 192.168.1.10 1025

  b、从本机也可以测试,只不过显示的是本机连本机

  c、在Tcpview中双击连接可看出程序的位置,右键点击该连接,选择End Process即可结束该连接

  客户端,端口的状态变化

  客户端口实际上就是从本机访问其它计算机服务时打开的源端口,最多的应用是上网,下面就以访问www.baidu.com为例来看看端口开放以及状态的变化情况。

  1、SYN_SENT状态

  SYN_SENT状态表示请求连接,当你要访问其它的计算机的服务时首先要发个同步信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为ESTABLISHED,此时SYN_SENT状态非常短暂。但如果发现SYN_SENT非常多且在向不同的机器发出,那你的机器可能中了冲击波或震荡波之类的病毒了。这类病毒为了感染别的计算机,它就要扫描别的计算机,在扫描的过程中对每个要扫描的计算机都要发出了同步请求,这也是出现许多SYN_SENT的原因。

  下面显示的是本机连接www.baidu.com网站时的开始状态,如果你的网络正常的,那很快就变为ESTABLISHED的连接状态。

  IEXPLORE.EXE:2928 TCP 192.168.1.10:1035 202.108.250.249:80 SYN_SENT

  2、ESTABLISHED状态

  下面显示的是本机正在访问www.baidu.com网站。如果你访问的网站有许多内容比如访问www.yesky.com,那会发现一个地址有许多ESTABLISHED,这是正常的,网站中的每个内容比如图片、flash等都要单独建立一个连接。看ESTABLISHED状态时一定要注意是不是IEXPLORE.EXE程序(IE)发起的连接,如果是EXPLORE.EXE之类的程序发起的连接,那也许是你的计算机中了木马了。

  IEXPLORE.EXE:3120 TCP 192.168.1.10:1045 202.108.250.249:80 ESTABLISHED

  3、TIME_WAIT状态

  如果浏览网页完毕,那就变为TIME_WAIT状态。

  [System Process]:0 TCP 192.168.1.10:4259 202.108.250.249:80 TIME_WAIT

Socket状态变迁图相关推荐

  1. 【转】Socket状态变迁图

    转自:http://www.cnblogs.com/ILove/archive/2008/12/08/1350430.html   服务端,端口的状态变化 先在本机(IP地址为:192.168.1.1 ...

  2. Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析

    Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析 一.介绍计算机网络体系结构 1.计算机的网络体系结构 在抓包分析TCP建立链接之前首先了解下计算机的网络通信的模型,我相信学习过计 ...

  3. 黑盒测试用例设计方法之状态迁移图法1

    一.状态迁移图法的定义      许多需求用状态机的方式来描述,状态机的测试主要关注在测试状态转移的正确性上面,.对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可 ...

  4. 【机器学习】【条件随机场CRF-3】条件随机场的参数化形式详解 + 画出对应的状态路径图 + 给出对应的矩阵表示...

    1.条件随机场概念 CRF,Conditional Random Field,是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模式,其特点是假设输出随机变量构成马尔可夫随机场. 条件随机场 ...

  5. linux网络编程之setsockopt()函数来设置socket状态以及getsockopt函数只用总结

    1.setsockopt函数 头文件:#include <sys/types.h> #include <sys/socket.h>定义函数:int setsockopt(int ...

  6. 信息系统状态过程图_过程状态图中使用的重要术语| 操作系统

    信息系统状态过程图 1)上下文切换 (1) Context Switching) Whenever a process is transferred within the system, it mov ...

  7. 信息系统状态过程图_操作系统中的增强型过程状态图

    信息系统状态过程图 The enhanced process state diagram was introduced for maintaining the degree of multiprogr ...

  8. ss流量查询 php,Linux_Linux怎么使用ss命令查看系统的socket状态,  Linux系统中,ss命令可用于 - phpStudy...

    Linux怎么使用ss命令查看系统的socket状态 Linux系统中,ss命令可用于查看系统的socket的状态,而socket作为系统的进程通信机制,了解其状态是很有必要的,下面小编就给大家介绍下 ...

  9. ss命令,显示socket状态

    ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix dom ...

最新文章

  1. 50 jQuery拷贝对象与多库共存
  2. PO Create PO时关于汇率问题需要注意的步骤
  3. JavaScript PHP模仿C#中string.format效果
  4. 区块链BaaS云服务(35)亦笔科技ODRChain使用场景
  5. python 共现矩阵_Python词组共现矩阵
  6. centos6.5下使用yum完美搭建LNMP环境(php5.6)
  7. SQL Server 2008安装配置说明书+简单使用 亲测可用
  8. C语言标识符、关键字和注释
  9. BUUOJ reverse 刮开有奖
  10. Hive(Impala)测试数据生成与加载
  11. javascript getComputedStyle,getPropertyValue,CurrentStyle说明
  12. html里面布局的优劣,HTML与CSS布局技巧总结
  13. 借鉴一下人家辞职申请
  14. php ddos 防御,PHP DDos的几个防御方法
  15. 离散时间傅里叶变换(DTFT)
  16. RealityCapture摄影测量软件
  17. php html ubb,php UBB 解析实现代码
  18. NETDMIS5.0对有CAD模型的工件运用“3-2-1”法建立零件坐标2023
  19. 第三章 隐藏通信隧道技术
  20. npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! wlwl-dsfvue@1.0.0 dev: `node build/dev-server.js`报错

热门文章

  1. 什么是IO多路复用,理解IO多路复用
  2. EtherCAT简介
  3. 微软.Net 社区虚拟大会 -- 首日重点(dotnetConf 2016)
  4. 关于DebugView无法打印出KdPrint信息
  5. Java做简单的界面
  6. Ubuntu 再次拥抱 Wayland
  7. JQuery18(JQ原理 DOM元素 appendTo append prepend prependTo InsertBefore Before JReplaceAll)
  8. 解决Duplicate entry '……
  9. QT——可视化界面ui
  10. 少儿美术课儿童画之水彩画第3集《高高的长颈鹿》