Как остановить mac от запросов автоматической переадресации портов с localhost?

355
user416988

У меня есть приложение, которое работает и прослушивает локальные запросы на порт 4001. Всякий раз, когда я запускаю второе приложение для размещения запросов через порт 4001, мой компьютер Mac автоматически пересылает запрос на другой порт. Например, когда я проверяю, какие процессы выполняются на порте 4001 до запуска второго приложения, я получаю:

Grants-MacBook-Pro:sbin grantseward$ sudo lsof -i -n -P | grep 4001 Password: java 113 grantseward 52u IPv6 0x3465d3725017ec8d 0t0 TCP *:4001 (LISTEN) 

Но как только я запускаю второе приложение, оно, похоже, первоначально отправляет запросы на порт 4001, но затем они перенаправляются на 49509, и этот порт закрывается / не то, что слушает мое другое приложение (второй порт также меняется каждый раз, когда я останавливаюсь и запустите второе приложение, чтобы я не мог просто поменять место прослушивания).

Grants-MacBook-Pro:sbin grantseward$ sudo lsof -i -n -P | grep 4001 java 113 grantseward 52u IPv6 0x3465d3725017ec8d 0t0 TCP *:4001 (LISTEN) java 113 grantseward 59u IPv6 0x3465d3725f0a988d 0t0 TCP 127.0.0.1:4001->127.0.0.1:49505 (CLOSE_WAIT) java 121 grantseward 80u IPv6 0x3465d3726032d38d 0t0 TCP 127.0.0.1:49506->127.0.0.1:4001 (ESTABLISHED) 

Любые идеи, как я могу изменить правила, чтобы запросы, отправленные на 4001, в конечном итоге на 4001?

0

1 ответ на вопрос

0
Gordon Davisson

То, что вы видите, нормально; дело не в том, что соединение перенаправляется на порт 49505, а в том, что клиентская программа, работающая на порте 49505, подключается к услуге через порт 4001. Сеанс TCP определяется IP-адресом и номерами портов двух концов соединения; в этом случае у вас есть сеанс между 127.0.0.1:4001 (идентификатор процесса 113, программа сервера) и 127.0.0.1:49505 (идентификатор процесса 121, программа клиента).

Кстати, каждый раз, когда вы перезапускаете клиент (или клиент открывает новое соединение), ему обычно назначается новый порт источника (вместо 49505).

Спасибо, это косвенно помогло мне найти основную причину. Оказалось, что был открыт сокет, который никогда не был закрыт, что помешало мне установить соединение, которое я хотел. user416988 9 лет назад 0

Похожие вопросы