端口的状态详解

本文通过实例介绍了服务端和客户端端口的状态变化,包括LISTENING、ESTABLISHED和TIME_WAIT等状态,并解释了它们在网络通信中的意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务端口的状态变化

先在本机(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 

端口详细变迁图

以上是最主要的几个状态,实际还有一些,图4是TCP的状态详细变迁图(从TCP/IP详解中剪来),用粗的实线箭头表示正常的客户端状态变迁,用粗的虚线箭头表示正常的服务器状态变迁这些不在本文的讨论范围有兴趣的朋友可以好好研究一下。

图4 TCP的状态变迁图

要点

一般用户一定要熟悉(再啰嗦几句):

1服务端口重点要看的是LISTENING状态和ESTABLISHED状态,LISTENING是本机开了哪些端口,ESTABLISHED是谁在访问你的机器,从哪个地址访问的。
2、客户端口的SYN_SENT状态和ESTABLISHED状态,SYN_SENT是本机向其它计算机发出的连接请求,一般这个状态存在的时间很短,但如果本机发出了很多SYN_SENT,那可能就是中毒了看ESTABLISHED状态是要发现本机正在和哪个机器传送数据,主要看是不是一个正常程序发起的。

### Linux 系统中不同端口状态的含义 在网络通信领域,TCP/IP协议定义了几种常见的端口状态。这些状态反映了套接字(socket)在其生命周期中的各个阶段: - **LISTEN (监听)**:表示服务器进程正在等待来自客户端的新连接请求。 - **ESTABLISHED (已建立)**:两个应用程序之间已经成功建立了双向通信路径并正在进行数据交换。 - **SYN_SENT (同步已发送)**:主动方发起连接请求后进入此状态,等待对方回应确认包。 - **SYN_RECEIVED (同步接收)**:被动方收到连接请求并回复ACK/SYN之后的状态。 - **FIN_WAIT_1, FIN_WAIT_2 (终止等待1/2)**:当一方希望关闭连接时会先发送FIN标志位给另一方,并在此过程中经历这两个中间状态之一。 - **CLOSE_WAIT (关闭等待)**:本地应用收到了远端发来的结束连接的通知,但是还没有执行close操作释放资源。 - **LAST_ACK (最后确认)**:处于这个状态下的一侧正准备完全断开连接,等待最后一个ACK报文的到来。 - **TIME_WAIT (时间等待)**:为了确保旧的数据包不会影响新的连接而设置的一个短暂延迟期。 ### 查看 Linux 系统上端口的方法 #### 使用 `netstat` 命令 可以利用 `netstat` 工具来获取有关网络连接的信息以及路由表、接口统计信息等。对于查看特定类型的活动连接或侦听端口非常有用。例如,要显示所有 TCP 连接及其对应的服务名称和地址,可使用如下命令[^1]: ```bash netstat -tuln ``` 其中参数解释: - `-t`: 显示TCP协议相关的连接; - `-u`: 显示UDP协议相关的连接; - `-l`: 只列出那些正在监听的 socket; - `-n`: 不解析主机名和服务名,直接以数字形式展示 IP 地址和端口号; #### 利用 `ss` 命令替代 netstat 随着版本更新,某些发行版可能不再默认安装 `netstat`, 推荐采用更高效的 `ss` 来代替它完成相似功能。语法结构简单明了,性能表现也更好。比如查询所有 UDP 的监听端口可以用下面这条指令[^2]: ```bash ss -ulnp | grep udp ``` 这里增加了几个额外选项: - `-p`: 展示关联到该端口的应用程序详情; - `-n`: 同样作用于不转换成名字而是保持原始数值输出; - `-P`: 指定只查找某种传输层协议下的记录(此处为udp); #### 应用 `lsof` 获取指定端口的情况 如果想要知道某个具体端口是否被占用及由哪个进程负责,则可以通过 `lsof` 实现。这不仅限于标准服务使用的知名端口,任何自定义配置过的非特权端口同样适用。检查 SSH 默认端口 22 是否开放的方式如下所示[^3]: ```bash sudo lsof -i :22 ``` 以上三种方式各有侧重,可以根据实际需求灵活选用合适的工具来进行排查分析工作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值