我使用 GCDAsyncSocket 构建小型实用程序 iOS 应用程序,它将 ping www.apple.com 上的端口:list of ports .
例如,尝试在 TCP 端口 80 和 443 上连接时我得到“已连接”状态,但是当我尝试 2195 和 2196 时我得到“超时”。
当尝试使用 GCDAsyncUdpSocket 连接到端口时,无论我尝试连接哪个端口,我都会“连接”,即使某些端口未打开(使用返回“关闭”的 nmap 测试)。
所以,我有几个问题:
1) 我在尝试连接到端口 2195、2196 等时是否做错了什么?
2)GCDAsyncUdpSocket靠谱吗?无论我尝试什么,它都会通过。
最佳答案
你这里有几个误解:
- 除非您获得授权,否则您不应尝试连接到不属于您的服务器上的大量端口。这叫做 pentesting ,如果不违法,至少也不好。
- 您提到的端口列表与“www.apple.com”无关,它与一般的 Apple 产品有关,与任何 macOS 计算机一样。你可以用你 friend 的电脑试试。或者您自己计算机上的虚拟机。
- UDP 协议(protocol)没有“已连接”状态。 UDP 和 TCP 的最大区别在于 TCP 支持连接而 UDP 不支持。 GCDAsyncUdpSocket 的“已连接”状态可能是假的。
See this关于检测 UDP 端口是否打开。
关于ios - Ping www.apple.com 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50326063/