我们如何知道端口正在侦听?
是否有可能知道端口正在侦听,即使它们没有响应?
即当我只是在某些程序中绑定套接字时,但我确实没有发回ACK。
1: Packet is received and analyzed.
2: If packet fit meets, ACK is send back.
就像我可以对这个东西进行编程,或者是网卡硬件负责 ACK。
我们如何知道端口正在侦听?
您的本地堆栈知道。应用程序需要注册端口。
是否有可能知道端口正在侦听,即使它们没有响应?
如果发送出的 SYN 没有响应,则主机可能无法访问、目标端口未侦听或 SYN 已被过滤。
即当我只是在某些程序中绑定套接字时,但我确实没有发回ACK。
您不必担心 SYN 和 ACK,它们由操作系统的 IP 堆栈处理。只需在目标上设置一个侦听器,然后从源连接套接字即可。如果套接字打开,您就可以开始通过管道进行通信。
就像我可以对这个东西进行编程,或者是网卡硬件负责 ACK。
ACK 是由操作系统的 IP 堆栈处理的 TCP 传输协议的一部分。
您可以使用netstat命令找出套接字和连接的列表。 对有问题的端口使用 netstat -a 和 grep。 您可以查看是否有套接字正在监听您想要的端口。
一些网络接口卡 (NIC) 提供 TCP 校验和卸载 (TCO),有些则更进一步提供 TCP 分段卸载 (TSO)。
在 Linux 上,您可以使用
ethtool --show-offload <interface>
显示 TCO/TSO 是否启用,并且可以使用 ethtool --offload
进行切换。
来源:本页第 12.5 节。