サーバーの負荷が高い状況を再現しようとしていましたが、netcat で視覚化された SYN_SENT のステータスにいくつかの接続があるはずです。
サーバーソケットを作成し、netcat から 10 個の接続を開きました。私はそれらがSYN_SENTとしてnetstatに表示されると仮定しましたが、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
するかどうかの決定) では何の役割も果たさず、OS/カーネルがそのソケットに io ハンドルを割り当てるのを待ちますか? syn.ack
この動作は、異なる OS 間で一貫していますか?