4

Процесс - это программа в исполнении. Например, Firefox. Я не понимаю взаимосвязи и различий между терминами "процесс" и "порты".

Когда я запускаю netstat -no -p -TCP в cmd, я вижу несколько номеров портов, связанных с каждым процессом, как показано ниже. Однако связь между портами и процессами мне неясна.

снимок экрана: вывод команды "netstat -no -p -TCP"

5 ответов5

32

Чтобы ответить прямо на вопрос: нет никакой связи между идентификатором процесса и номером порта. Они перечисляют совершенно разные вещи.

PID идентифицирует процесс (например, сеанс Firefox: каждая вкладка может выполняться как отдельный процесс), а номер порта определяет, какой порт используется этим процессом для связи. Определенные номера портов действительно используются: 80 обычно используется для HTTP и 443 для HTTPS. Но процесс может получить любой номер PID, в зависимости от того, когда он запущен.

Как видите, номера локальных портов используются последовательно и не связаны ни с номером порта назначения, ни с PID процесса, который их использует.

12

PID отображается только для того, чтобы вы могли идентифицировать конкретный процесс, выполняющий связь, и не связан с номером порта.

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

Если вы хотите уничтожить определенное соединение, но не все копии программы, вам нужно знать PID, а не имя программы.

9

Процесс

Что такое процесс?

Процесс - это, в основном, копия программы. Таким образом, если вы запускаете такую программу, как «Блокнот», несколько раз, каждое конкретное время будет иметь свой собственный процесс. Процесс использует ресурсы, такие как доступная оперативная память на вашем компьютере. Если вы посмотрите на диспетчер задач и увидите, что программа запускается несколько раз, то каждое ее появление может быть различным процессом.

Как распределяются процессы?

Номера PID («ID процесса») присваиваются операционной системой каждый раз, когда выполняется новый процесс.

Для чего нужны процессы?

Используя идентификатор процесса (который идентифицирует точную, конкретную копию работающей программы), вы можете определить, к какому программному обеспечению относится данный процесс. Это можно сделать с помощью TaskList (из командной строки), WMIC PROCESS GET / FORMAT: LIST (из командной строки) или диспетчера задач. В диспетчере задач в некоторых новых версиях Microsoft Windows может потребоваться перейти на вкладку «Сведения». Если столбец для отображения PID отсутствует, вы можете добавить его. (В Windows 10, по крайней мере, вы щелкаете правой кнопкой мыши имя столбца, а затем можете выбрать видимые столбцы. Поскольку память служит мне, более старые версии Windows имели пункт меню для этого.)

Еще одна полезная команда - netstat. Я вижу, вы используете netstat. Попробуйте добавить параметр "-b". (Этот параметр довольно специфичен для Microsoft Windows, который, как я полагаю, вы используете на основе C:\Users\User> в вашем приглашении.) При этом Netstat попытается использовать PID, чтобы выяснить имя исполняемого файла, и вывести его в следующей строке.

Все это совершенно не связано с номером порта.

Номера портов

Что такое номер порта

Номер порта используется как часть сетевого подключения. Не все сетевые коммуникации используют номера портов. Например, ICMP, используемый TraceRoute (под названием "TRACERT" в Microsoft Windows) и команда ping в Microsoft Windows, не использует номера портов. Наиболее распространенными протоколами являются UDP и TCP. (Может быть, SCTP следующий по распространенности?) Многие протоколы, включая HTTP (S) и SMTP (для электронной почты), используют TCP, поэтому используются номера портов.

Для чего нужны номера портов?

Можно иметь несколько соединений TCP между одними и теми же компьютерами, и номера портов используются для идентификации этих соединений. Например, если ваша программа электронной почты получает электронную почту, сетевое соединение может быть между [LOCAL PORT 52534, REMOTE / FOREIGN PORT 25], в то время как ваш веб-браузер может создать соединение, используя [LOCAL PORT 54499, REMOTE / FOREIGN. ПОРТ 443]. Таким образом, когда удаленный компьютер отвечает, и входящий трафик определяется как [ЛОКАЛЬНЫЙ ПОРТ 54499, УДАЛЕННЫЙ / ИНОСТРАННЫЙ ПОРТ 443], ваш компьютер знает, что трафик не предназначен для вашей локальной программы электронной почты. На самом деле, ваш веб-браузер может создавать несколько соединений TCP для одновременной загрузки нескольких изображений. Когда ваш компьютер получает графические данные, номера портов могут помочь вашему веб-браузеру узнать, для какого соединения предназначены данные, поэтому веб-браузер может узнать, для какого графического изображения были получены полученные данные.

(Примечание: квадратные скобки - это просто обозначение, которое я составил, чтобы сделать этот абзац немного легче для чтения. В выводе Netstat номера портов отображаются после двоеточия. Обычно я не предпочитаю использовать термин "иностранный" для описания номеров портов, но я сделал это в этом случае, потому что это был термин, используемый netstat.)

Как назначаются номера портов?

В целом, большинство программного обеспечения просто сообщает «сетевому стеку», что оно хочет установить сетевое соединение. В современных операционных системах «сетевой стек» встроен как часть операционной системы (хотя еще во времена Windows 3.1 сетевой стек обычно добавлялся при установке такой программы, как Microsoft Internet Explorer или Trumpet Winsock) , Программа обычно сообщает сетевому стеку что-то вроде: «Создайте новое TCP-соединение с удаленным портом 443.» Сетевой стек будет определять, какой номер порта источника он хочет использовать.

Резюме

Процессы и номера портов очень разные вещи. Я согласен с большей частью или всей информацией в других ответах здесь. (Тем не менее, я добавил свой собственный ответ здесь, потому что я думал, что немного больше деталей, например, откуда присваиваются номера, может помочь сделать различие более ясным.)

2

Несколько упрощенно:

PID - это номер, используемый внутри вашего компьютера для обозначения какого-либо конкретного процесса. Процессор может выполнять только одну операцию за раз, но он выполняет несколько задач, поэтому он чередуется между различными процессами, а PID - это тег, который процессор использует для идентификации каждого процесса.

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

Например, тег порта гарантирует, что когда вы запрашиваете эту страницу с серверов Stackexchange и данные сайта поступают на ваш маршрутизатор, тогда ваш маршрутизатор знает, что это ваш компьютер, а не смартфон вашего брата или любое другое устройство, которое хочет их. И когда они приходят на ваш компьютер, ваш компьютер может сказать, что их хочет Firefox, а не Word.

2

Процесс - это работающая программа, в большинстве случаев. Такая программа, как Firefox, может фактически состоять из нескольких процессов, работающих вместе, но для операционной системы они являются основной единицей работы: у каждого процесса есть изображение (исполняемый исполняемый файл), рабочий каталог, дескрипторы (назначение ресурсов), адресное пространство памяти, приоритет процессора и ввода-вывода и т. д. Если вы запускаете блокнот, процесс запускается с помощью notepad.exe, и он открывает окно для взаимодействия с вами.

Порт - это ресурс. Операционная система имеет определенное количество доступных портов (65535), и процесс может запросить дескриптор, чтобы получить исключительное использование порта. Процесс может получить дескрипторы для любого количества неиспользуемых портов. Порт необходим для связи по сети. Номера портов, выбранные для исходящих соединений (например, браузер, подключающийся к веб-серверу), по сути, произвольны; они не имеют значения, о котором вам нужно заботиться.

Это упрощенный обзор, так что не воспринимайте его как очень точный.

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