Есть ли общий способ узнать, какая служба прослушивает порт как системный процесс?

В моем случае системный процесс, PID 4, прослушивает порт 443 (https), поэтому другая программа, которой нужен этот порт, не может запуститься.

Раньше в течение многих лет система не использовала этот порт, поэтому я мог использовать эту другую программу.

Как я могу выяснить, что заставляет систему слушать этот порт?

netstat -a -b -o запустить под повышенными приглашениями

TCP 0.0.0.0:443 MyComputerName:0 LISTENING 4
Can not obtain ownership information

У меня установлен Apache, но когда я его прекращаю, ничего не меняется. У меня удален IIS. Другими подозреваемыми являются Skype, CrashPlan и сервер MySQL, но они годами работали на этом компьютере, не вызывая этой проблемы. В Skype есть опция [_] Use port 80 and 443 без галочки. Перевод CrashPlan в спящий режим не освобождает порт.

Я задал этот вопрос на StackOverflow, но он был сочтен не по теме.

Есть аналогичный вопрос о порте 80, но ответы там говорят только об остановке той или иной конкретной службы, которая не обобщается на другой порт.

Есть еще один подобный вопрос, но в этом случае OP комментирует, что netstat -ab показывает svchost.exe в качестве источника соединения, и ни один из ответов не решает проблему в моем случае.

1 ответ1

0

Из моего чтения может быть несколько причин. Например, после прочтения вопроса Корнелиуса: «Почему процесс System прослушивает порт 443?», У меня складывается впечатление, что, по крайней мере, эти три разные причины могут привести к такой вещи:

  • HTTP.SYS, связанный с IIS (веб-сервер Microsoft)
  • Сетевое соединение, принимающее входящее VPN-соединение. (Возможно, относится к "Удаленному доступу", части RRAS, которая называется "Маршрутизация и удаленный доступ"?)
  • Скайп (см. Гиперссылку ранее в моем ответе, фотографии).

Я предполагаю, что у них есть некоторые общие факторы, такие как использование кода Microsoft и, вероятно, использование низкоуровневого драйвера.

Я думаю, должен быть способ просто проверить, а не охотиться. Стек TCP/IP должен знать, куда отправлять трафик, и мы можем проверить, что будет делать стек TCP/IP, используя команду netstat . К сожалению, все, что нам дает команда netstat , - это общесистемный PID, который указывает нам на процесс с именем "System". Я думаю, что аналогичным образом процесс "Система" должен знать, какому драйверу отправлять трафик. Я еще не нашел способ просто проверить это.

Тем временем я решил, что укажу вам на несколько возможных причин, которые я нашел. Надеюсь, один из них приведет к тому, что вы найдете ответ, который ищете.

Примечание. Я нашел эту причину, посмотрев на некоторые многообещающие "Связанные" элементы, которые Superuser.com отображает в правом кадре Одним из основных правил Stack Exchange является попытка провести собственное предварительное исследование. Я предлагаю еще одно хорошее правило: после публикации вопроса отметьте галочкой раздел "Связанные" в правильном фрейме, потому что IMHO Stack Exchange довольно неплохо справляется с поиском часто задаваемых вопросов.

В моей системе Microsoft Windows PID 4 также принадлежит процессу System, поэтому не представляется, что конкретный PID является очень случайным.

Остальная часть этого вопроса просто объясняет некоторые вещи, которые я проверял в своей системе. Это не поможет вам (Александр Гельбух), потому что я могу сказать, что вы уже поняли большинство или все это уже выяснили. Однако, надеюсь, что люди, читающие это, будут менее склонны слепо рекомендовать netstat в качестве решения, поскольку вывод netstat не является полным, достаточным решением (поскольку нам нужно сделать больше, чем просто определить процесс, который сетевой стек TCP/IP отправит трафик).

Я думаю, что может быть несколько причин, по которым netstat -b может сказать: « Не удается Can not obtain ownership information , в том числе отсутствие повышения UAC (по крайней мере, в некоторых версиях Microsoft Windows; в моей Windows 10 я получаю разные результаты при запуске без повышения прав: netstat сразу же говорит, что The requested operation requires elevation. и дает две пустые строки и выходит.)

Я получаю те же результаты, что и вы: когда я бегу с повышенными правами, я не могу видеть результаты PID 4.

Proto Local Address Foreign Address State PID TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 996 RpcSs [svchost.exe] TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4 Can not obtain ownership information TCP 0.0.0.0:8732 0.0.0.0:0 LISTENING 4 Can not obtain ownership information

(Это говорит о том, что PID 996 - это svchost.exe, но нет информации о PID 4.)

C:>tasklist /SVC | more

Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ System Idle Process 0 Services 0 4 K System 4 Services 0 4,828 K

C:\WINDOWS\system32>powershell "Get-NetTCPConnection -LocalPort 445 | Format-List"

LocalAddress : :: LocalPort : 445 RemoteAddress : :: RemotePort : 0 State : Listen AppliedSetting : OwningProcess : 4 CreationTime : 3/2/2017 9:56:19 PM OffloadState : InHost

C:\WINDOWS\system32>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .