![当连接到 IP + 端口组合时,如何知道从哪个端口连接?](https://linux22.com/image/1629736/%E5%BD%93%E8%BF%9E%E6%8E%A5%E5%88%B0%20IP%20%2B%20%E7%AB%AF%E5%8F%A3%E7%BB%84%E5%90%88%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E7%9F%A5%E9%81%93%E4%BB%8E%E5%93%AA%E4%B8%AA%E7%AB%AF%E5%8F%A3%E8%BF%9E%E6%8E%A5%EF%BC%9F.png)
我被要求将我的应用程序通过 VPN 连接到客户端的 SQL Server。
我熟悉网络用户空间,通过特定应用程序的端口连接到 IP。MySQL 通过 3306 等进行连接。我们有自定义应用程序在端口 8919 上监听 HTTP 请求。
客户要求我们说明我们从哪个端口进行连接,以便他们可以相应地修改防火墙。
由于我从未设置过,所以我不知道如何确定。端口是自动分配的吗?或者是否可以为某些连接(例如 SQL)设置 FROM 端口?
答案1
通常,源端口是自动分配的。不建议依赖特定值或特定范围。
直接使用套接字时,您能通过调用来请求特定的本地端口绑定()前连接()。“本地 IP 地址”字段可以保留为全零。
(类似地,您可以通过调用获取套接字名称()功能。这只有在连接建立后才可用,当然每次连接时本地端口都会不同。)
但是,在使用 MySQL 等更高级的客户端库时,库通常不提供请求绑定到特定本地端口的方法。毕竟,这样做非常很少有用,基于它构建安全策略毫无意义。(事实上,许多客户端库甚至不支持绑定到特定的本地地址,这会非常有用...)