Существует множество причин.
Если метод connect () завершается неудачно из-за не маршрутизируемого адреса, он может вообще не генерировать пакет SYN (например, тайм-аут arp).Аналогично, если происходит сбой соединения с какой-либо другой ошибкой (например, недопустимые параметры).
Пакет SYN может идти на интерфейс, который вы не просматриваете (например, localhost)
Ядро будет повторять попытку;если нет ответа на запрос, он попытается снова (возможно, несколько раз), прежде чем в конечном итоге вернет тайм-аут.