我试图重现服务器负载过重的情况,应该有一些状态连接,SYN_SENT 通过 netcat 可视化。
我创建了一个服务器套接字并从 netcat 打开了十个连接;我以为它们会在 netstat 中显示为 SYN_SENT,但随后使用 tcpdump,看起来内核发送 syn-ack 并且客户端以 ack 响应并且 tcp 握手完成并且它们都已建立。
import java.io.IOException;
import java.net.ServerSocket;
public class Server {
public static void main(String[] args) throws IOException, InterruptedException {
ServerSocket ss = new ServerSocket(9999);
Thread.currentThread().join();
}
}
所以serversocket.accept
它在连接建立(决定是否应该发送)中没有任何作用,syn.ack
而是等待操作系统/内核为该套接字分配一个 io 句柄?这种行为在不同的操作系统中是否一致?