在网络和主机管理过程中,通过查看网络端口的状态,可以了解计算机的很多信息。例如,本机为外界提供了那些服务,那些客户机正在使用本机的服,当前状态下,计算机与哪些计算机存在网络连接等,在Linux系统中可以用netstat和nmap等工具来了解端口的状态。

首先先介绍netstat

使用方法:netstat [-option1] [-option2]
有关协议类的选项如下:
        -A<地址类型>:只列出指定地址类型的端口状态,可以是inet,unix,ipx等
        -t:只显示与TCP协议有关的连接和端口监听状态
        -u:只显示与UDP协议有关的端口监听状态
        -w:只显示原始套接口状态
如果不加以上选项,表示所有地址类型和协议的连接和端口状态都要列出,一般情况下,Linux系统中存在着许多UNIX套接字,他们用于UNIX进程之间的通信,如果只关心TCP/IP协议有关的状态,在执行netstat命令时,可以加上-tu选项,表示只列出与TCP和UDP协议有关的状态,或者加上-A inet选项,表示只列出INET地址类的网络状态,默认情况下,当执行netstat命令时,只列出TCP连接,但下面两个选项可以改变默认状态
        -l:显示正在监听的TCP和UDP端口
        -a:显示所有活动的TCP连接,以及正在监听的TCP和UDP端口
还有几个常用的netstat命令选型如下:
        -n:以数字形式表示地址和端口号,不试图去解析其名称
        -s:显示所有协议的统计信息
        -r:显示IP路由表的内容
        -p:显示每一个活动连接或端口的监听是由哪一个进程发动的
        -i:显示网络接口的统计信息

查看特定端口的监听和连接情况
     如: netstat -anp |grep :22



上面介绍的netstat命令可以查看本机的网络端口状态,只要具有root权限,则可以查看所有感兴趣的内容,但如果想通过网络了解其他计算机端口的状态,而且没有那台计算机的账号是,问题就没有那么简单了,此时需要通过端口扫描工具才能做到,但这是一种不可靠的方法,经常会被对方的防火墙挡住,或者了解到的是虚假的信息,端口扫描工具有很多种类,Linux平台下常用的是nmap工具

nmap端口扫描工具是一个开放源代码的自由软件,rhel5发型版本中也提供了nmap的RPM包,
安装方法:rpm -ivh nmap-4.11-1.1.i386.rpm
使用方法:nmap [扫描类型] [扫描选项] <目标>
其中,扫描类型可以使以下几种:
-sT :TCP connect扫描,是最基本的TCP扫描方式,在执行时不需要root权限
-sS :TCP SYN扫描,通过想目标的某一端口发送TCP SYN包,然后根据对方的不同回应来判断该端口是否处于监听状态
-SA :TCP ACK扫描,只用于确定防火墙的规则集,本身并不扫描目标主机的端口
以及 -sW  -sF  -sX   -sN   -sP   -sU  -sR 等

注意:目标可以使某一主机的ip地址,也可以是IP范围,或者整个子网
namp 10.10.1.124
nmap -sP 10.10.91.0/24

另外nmaph还有一个很实用的功能,就是能根据扫描到的某些线索猜测目标主机的操作系统类型,而且相当准确。可以通过-O选项使用这项功能,他可以和一种扫描选项结合使用,但不能和ping扫描结合使用
nmap -O 192.168.1.121

nmap也是一种常用的网络安全工具,黑客在进行网络攻击前,一般要使用这类工具来搜索攻击目标,搜集目标主机的端口信息,然后在进一步采用其他手段进行攻击。网络管理员也可以使用这类工具对网络的安全性能进行检测,防止攻击。