Linux主机服务信道状态查询

By admin  2012年03月18日 Linux 关注度 2,404 添加评论

所谓的服务信道,就是指port,也叫通信端口、端口,是主机中应用程序对外的通道。通道的范围从0-65535,其中,0-1023保留给系统服务器专用,而且只有root权限执行者,才能使用此段范围,称为特权通道,而1024-65535则为非特权通道。

非特权通道主要有两种用途:开放给系统中其它应用服务程序使用,比如mysql默认占用3306端口,X11占用6000;另外,当使用client端程序,比如ssh,连接到其它server主机的服务时,比如连接到SSH2 server,系统会在1024-65535的端口池里,随机挑选一个未被使用的端口指定给client连接端,来当做client端这边的通信端口,此时,client端的IP、端口和服务器端的IP、端口,四者进程连接时唯一的连接识别,当双方完成连接所需的淘通时,可称为:client端和服务器端的连接已经建立(ESTABLISHED),可称这四者为一组socket pair。

服务通道可分为TCP port和UDP port。

如果查询通信状态呢?由前可知,socket pair的建立,代表主机和外界之间的通信情形,也可以自已连自已,这种信信状态,大部分指的是TCP协议的连接状态,有以下几种情况:

ESTABLISHEC:已建立连接

SYN_SENT:刚要发起连接

SYN_RECV:已收到连接要求

FIN_WAIT1:连接已关闭,正在进行中断

FIN_WAIT2:连接已关闭,正在等待远程中断

TIME_WAIT:中断连接后,仍在等待尚未处理的封包

CLOSE:此通信未使用

CLOSE_WAIT:远程已中断,等待通信关闭

LAST_ACK:远程已中断,等待通信关闭,正等待确认

LISTEN:监听中、等待接受连接

COLSING:套接字双方已关闭,但仍有数据未全传完

UNKNOWN:未知状态

如果想知道通信状态,可以使用netstat查看,用法如下:

  • 查看所有的连接状态

netstat -a -n

-a表示所有接受连接和非接受连接的socket都列出来。-n表示全部以数字表示,不对主机名、端口、用户等信息。

  • 查看所有TCP连接状态,包含已连接和未连接(仍在监听中)

netstat -ta -n

-t表示TCP协议的连接

  • 查看所有UDP连接状态,包含已连接和未连接(仍在监听中)

netstat -ua -n

-u表示UDP协议的连接

  • 只列出尚未连接的通道

netstat -l -n

-l表示仍在监听中、尚未连接的通道

  • 查看所有TCP未连接的通道

netstat -lt -n

上图可以看到,这部主机针对本机开放了81、25等端口,针对外网开放了80、8066等端口。

发表评论