Я пытался воспроизвести ситуацию, когда сервер сильно загружен, в статусе должно быть несколько подключений, 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
), а ожидает, пока ОС/ядро назначит дескриптор ввода-вывода для этого сокета? Является ли это поведение одинаковым для разных ОС?