引言:
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地址:端口号)
- TCP协议下为什么会有
0.0.0.0:135127.0.0.1:5152192.168.1.111:139这三种不同的IP表示形式?(UDP同理)
答:
1.10.0.0.0:135表示在多IP主机下,假设该主机有三个IP地址,分别为IPA,IPB,IPC。则0.0.0.0:135等价于IPA:135 ,IPB:135 ,IPC:135。即对于外部主机来说,可以访问它任意一个IP下的135端口的服务。
1.2127.0.0.1:5152表示该端口仅对本主机开放,外网无法访问。
1.3192.168.1.111:139表示外部主机可以访问192.168.1.111下的139端口的服务。 - TCP协议下
Foreign Address的0.0.0.0:0与State
2.1 表示允许任何IP地址的主机访问(可以修改规则,进行限制)。
2.2 State表示状态(监听、建立连接等等)。TCP三次握手 - UDP协议下
Foreign Address为什么是*:*,State为什么为空?
3.1 UDP协议是非面向链接的不可靠传输协议,该协议下的UDP传输过程与TCP有很大差别。因为不需要三次握手建立连接,所以就不需要指定外部主机的IP地址,故这里表示为*:*;。
3.2 State状态是针对于TCP协议的,UDP是非面向连接的,不存在类似于TCP的各种状态。所以State为空。
总结:
脑子里想了很多,但是写起来却感觉力不从心、杂乱无章。感觉自己理解的也不是十分透彻,可能会出现一些错误,希望得到大家的意见。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179269.html原文链接:https://javaforall.net
