Я запускаю приложение, которое пытается прослушивать порт 34002
. Когда он пытается это сделать, он получает ошибку:
Address already in use
Когда я использую lsof
чтобы найти виновника, я обнаружил, что это исходящее TCP-соединение:
sudo lsof -i | grep "some-process"
some-command 53344 some-process 7u IPv4 344298 0t0 TCP <my-local-ip-redacted>:34002-><remote-ip-redacted>:https (ESTABLISHED)
Мне это кажется странным. Исходящие сеансы TCP запускаются на случайно выбранных портах. Действительно ли ОС предотвращает привязку к этому случайно выбранному порту? Или я это неправильно интерпретирую? Похоже, есть какая-то логика для переноса сеанса на другой порт. Не могу представить, чтобы это было редкостью.
Действительно ли ОС предотвращает привязку к этому случайно выбранному порту?
Если порт используется, значит, он уже используется. Не имеет значения, был ли он назначен случайным образом или явно выбран, важно только то, что он используется. Рекомендуется не привязывать службы к портам из временного диапазона портов, потому что тогда именно это может произойти.