Процесс

Процесс

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

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

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

решение1

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

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

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

решение2

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

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

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

решение3

Процесс

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

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

Как назначаются процессы?

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

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

Используя идентификатор процесса (который идентифицирует точную, конкретную копию запущенной программы), вы можете определить, экземпляром какой программы является этот процесс. Вы можете сделать это с помощью 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) и командой Microsoft Windows "ping", не использует номера портов. Наиболее распространенными протоколами, которые используют, являются UDP и TCP. (Может быть, SCTP является следующим по распространенности?) Многие протоколы, включая HTTP(S) и SMTP (для электронной почты), используют TCP, поэтому используются номера портов.

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

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

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

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

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

Краткое содержание

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

решение4

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

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

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

Связанный контент