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

Как два процесса могли подключиться к одному порту?

Я только что столкнулся с проблемой, когда запрос на localhost:8080 from curl попадал на другой сервер, чем тот же запрос, сделанный из Node. lsof -i :8080 показали, что два процесса привязаны к одному и тому же порту:

COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node    51961 mball   14u  IPv4 0xd980e0df7f175e13      0t0  TCP *:http-alt (LISTEN)
java    62704 mball  320u  IPv6 0xd980e0df7fe08643      0t0  TCP *:http-alt (LISTEN)

Как это возможно? Были ли они привязаны к разным интерфейсам? Или это IPv4 против 6?

Если вам интересно, node попал в другой процесс node, а curl - в java-процесс. Процесс java был запущен после процесса узла.

Это может быть один и тот же порт, но это не один и тот же адрес или даже одно и то же семейство адресов! Да, IPv4 по сравнению с IPv6 имеет значение.

Чтобы устранить проблему, используйте желанный привязка процесса к семействам адресов IPv4 и IPv6.