我正在制作端口扫描仪。我可以通过尝试与端口建立连接来检查端口是否打开,但是,如何检查打开的端口是 udp 还是 tcp?
...我如何检查开放端口是 udp 还是 tcp?
您似乎想到的是一条街道,其中端口是房屋号码,并且每个房屋中可能存在 TCP 和/或 UDP。然后你敲门,然后需要弄清楚是 UDP 还是 TCP 打开了门。但这种观点是错误的。
它更像是两条独立的街道,只是门牌号相同。TCP 有一条路,UDP 有另一条路,您可以通过选择套接字类型来决定走哪条路。无需检查谁居住在那里,因为在 TCP 街道中只有 TCP 可以居住,而在 UDP 街道中则只能居住 UDP。
TCP 套接字是使用 AF_INET(或 AF_INET6)和 SOCK_STREAM 创建的。UDP 套接字使用 SOCK_DGRAM 而不是 SOCK_STREAM。因此,通过创建套接字,您就知道您期望什么,即走哪条街。
除此之外,UDP 没有实际连接的概念:虽然可以使用connectUDP 套接字,但这将在本地套接字上设置目标地址。它实际上并不像 TCP 那样向对等方发送任何数据来建立连接。因此,connectUDP 套接字上的 a 基本上总是会成功,无论目的地是否有流量(即端口“打开”)。
| 归档时间: |
|
| 查看次数: |
3727 次 |
| 最近记录: |