DOS命令下netstat -an输出信息的解释

引言:

netstat -an这个命令大家都十分熟悉,但是我发现自己对于这个命令的输出内容却不是十分理解,我们不该止步于仅仅看一个端口号而已,这里其实还包含了其他信息。

测试工具:

  • telnet : 可以对指定的TCP端口进行测试。
  • netcat : 可以对指定的 TCP/UDP 端口进行测试。

样例:

C:\Documents and Settings\Administrator>netstat -an

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1025           0.0.0.0:0              LISTENING
  TCP    127.0.0.1:5152         0.0.0.0:0              LISTENING
  TCP    192.168.1.111:139      0.0.0.0:0              LISTENING
  UDP    0.0.0.0:445            *:*
  UDP    192.168.1.111:137      *:*
  UDP    192.168.1.111:138      *:*

疑问与解答:(ip地址:端口号)

  1. TCP协议下为什么会有0.0.0.0:135 127.0.0.1:5152 192.168.1.111:139 这三种不同的IP表示形式?(UDP同理)
    答:
    1.1 0.0.0.0:135 表示在多IP主机下,假设该主机有三个IP地址,分别为IPA,IPB,IPC。则0.0.0.0:135 等价于 IPA:135 ,IPB:135 ,IPC:135。即对于外部主机来说,可以访问它任意一个IP下的135端口的服务。
    1.2 127.0.0.1:5152 表示该端口仅对本主机开放,外网无法访问。
    1.3 192.168.1.111:139 表示外部主机可以访问192.168.1.111 下的139端口的服务。
  2. TCP协议下Foreign Address0.0.0.0:0State
    2.1 表示允许任何IP地址的主机访问(可以修改规则,进行限制)。
    2.2 State表示状态(监听、建立连接等等)。TCP三次握手
  3. UDP协议下Foreign Address 为什么是*:*State 为什么为空?
    3.1 UDP协议是非面向链接的不可靠传输协议,该协议下的UDP传输过程与TCP有很大差别。因为不需要三次握手建立连接,所以就不需要指定外部主机的IP地址,故这里表示为*:* ;。
    3.2 State状态是针对于TCP协议的,UDP是非面向连接的,不存在类似于TCP的各种状态。所以State为空。

总结:

脑子里想了很多,但是写起来却感觉力不从心、杂乱无章。感觉自己理解的也不是十分透彻,可能会出现一些错误,希望得到大家的意见。

你可能感兴趣的:(其他)