我正在尝试使用wireshark来确定某个程序使用的端口。 如果我们在同一个networking上,该程序连接到服务器很好,但我显然需要转发防火墙上的端口,以在办公室外使用它。
我打开wireshark,并尝试build立从程序到192.168.1.6的连接。 然后我看看去往和来自192.168.1.6的数据包。
他们都是TCP并且说:
Source: 192.168.1.130 Dest: 192.168.1.6 Service: TCP Info: 49716 > 808 [PSH, ACK] Seq=1102 Ack=395 Win=65304 Len=87
或者有些来自另一个方面
Source: 192.168.1.6 Dest: 192.168.1.130 Service: TCP Info: 808 > 49710 [ACK] Seq=2 Ack=320 Win=254 Len=0
我的问题是:
我认为这只是端口808,另一端口(源端口)偶尔在49710和49716之间变化,这是什么意思?
stream量是否成为开放连接的一部分? 或者我需要确保客户端PC连接到PC上的端口808?
不需要特定源端口的应用程序的源端口往往落在短暂的范围,> 49152。更多信息在这里 。
只要防火墙是“有状态的”,换句话说,跟踪连接可以将来自同一个TCPstream的数据包识别为同一个stream的一部分(绝大多数现代防火墙都是这样做的),您只需要允许连接方向(到端口808)。
目标端口是程序连接到的服务器上的端口,在这种情况下是TCP端口808。 如果您希望外部用户能够连接到防火墙后面的服务器,则需要在防火墙中创build一个允许外部连接到服务器端口808的规则。 你很可能需要创build一个NAT规则,并将你的可路由(公共)IP地址转换为服务器的不可路由(专用)IP地址。 客户端的端口是从临时端口池中分配的,每次程序与服务器build立新的连接时,端口将大不相同。 客户端和服务器之间的连接是一个4元组,由源IP地址/端口和目的IP地址/端口组成。 从build立会话的服务器到客户端的stream量不需要通过防火墙明确允许(不需要出站规则),因为它是build立会话的一个组件,根据您的入站规则。
我认为其他海报已经回答了你的两个(或多或less)“概念”问题,但实际上,在Windows上,你可以运行netstat -aon | find ":<portnumber>"
netstat -aon | find ":<portnumber>"
,它会告诉你进程的ID。 然后,您可以使用任务pipe理器(在“视图”>“我select列”中添加“进程ID”列)来确定在某个端口上侦听哪个进程。
而且,Sysinternals的TCPView运行良好。