Назад | Перейти на главную страницу

Медленное первое соединение TCP

Рассмотрим эту TCP-связь через ncat на локальном хосте на машине с Windows 7:

Терминал А

>ncat -4kvvl 127.0.0.1 5001
Ncat: Version 7.12 ( https://nmap.org/ncat )
Ncat: Listening on 127.0.0.1:5001
Ncat: Connection from 127.0.0.1.
Ncat: Connection from 127.0.0.1:52840.
BAM
NCAT DEBUG: Closing connection.

Терминал B

>echo BAM | ncat -4vv 127.0.0.1 5001
Ncat: Version 7.12 ( https://nmap.org/ncat )
NCAT DEBUG: Using trusted CA certificates from ...
libnsock nsock_iod_new2(): nsock_iod_new (IOD #1)
libnsock nsock_connect_tcp(): TCP connection requested to 127.0.0.1:5001 (IOD #1) EID 8
libnsock nsock_trace_handler_callback(): Callback: CONNECT SUCCESS for EID 8 [127.0.0.1:5001]
Ncat: Connected to 127.0.0.1:5001.
libnsock nsock_iod_new2(): nsock_iod_new (IOD #2)
libnsock nsock_read(): Read request from IOD #1 [127.0.0.1:5001] (timeout: -1ms) EID 18
libnsock nsock_readbytes(): Read request for 0 bytes from IOD #2 [peer unspecified] EID 26
libnsock nsock_trace_handler_callback(): Callback: READ SUCCESS for EID 26 [peer unspecified] (6 bytes): BAM ..
libnsock nsock_write(): Write request for 6 bytes to IOD #1 EID 35 [127.0.0.1:5001]
libnsock nsock_trace_handler_callback(): Callback: WRITE SUCCESS for EID 35 [127.0.0.1:5001]
libnsock nsock_readbytes(): Read request for 0 bytes from IOD #2 [peer unspecified] EID 42
libnsock nsock_trace_handler_callback(): Callback: READ EOF for EID 42 [peer unspecified]
libnsock nsock_trace_handler_callback(): Callback: READ EOF for EID 18 [(null):-1]
close: Result too large

Когда я впервые запускаю ncat в Терминале B, он зависает примерно на 1 секунду при TCP connection requested to 127.0.0.1:5001. Сокеты зависают в состояниях SYN_SENT и SYN_RCVD (Скриншот).

При последующих запусках (ncat -k в Терминале A продолжает прослушивание) соединение устанавливается немедленно, что я ожидаю и также вижу в других системах Windows 7 и Linux.

Я чувствую, что эта задержка в создании TCP-соединений замедляет работу программного обеспечения (например, консоль IPython, подключающаяся к ядру на той же машине).

В чем дело?

Дополнительная информация: