Processo

Processo

Processo é um programa em execução. Por exemplo, Firefox. Não entendo a relação e as diferenças entre os termos “processo” e “portas”.

Quando executo netstat -no -p -TCPo cmd, posso ver que vários números de porta estão associados a cada processo, conforme mostrado abaixo. No entanto, a relação entre portos e processos não é clara para mim.

captura de tela: saída cmd de "netstat -no -p -TCP"

Responder1

Para responder diretamente à pergunta: não há conexão entre o ID do processo e o número da porta. Eles enumeram coisas completamente diferentes.

O PID identifica um processo (por exemplo, uma sessão do Firefox: cada aba pode ser executada como um processo diferente), e o número da porta identifica qual porta o processo está usando para se comunicar. Números de porta específicos têm usos habituais: 80 geralmente é usado para HTTP e 443 para HTTPS. Mas um processo pode obter qualquer número PID, dependendo de quando for iniciado.

Como você pode ver, seus números de porta locais são usados ​​sequencialmente e não estão relacionados nem ao número da porta de destino nem ao PID do processo que os utiliza.

Responder2

O PID é mostrado apenas para que você possa identificar o processo específico que está realizando a comunicação e não está relacionado ao número da porta.

Se você tivesse várias cópias de um programa em execução e todas elas estivessem se comunicando pela rede, mostrar o nome do programa não seria suficiente para identificar exclusivamente qual porta pertencia a qual cópia do programa.

Se você quisesse encerrar uma conexão específica, mas não todas as cópias do programa, você precisaria saber o PID em vez do nome do programa.

Responder3

Processo

O que é um processo?

Um processo é basicamente uma cópia de um programa. Portanto, se você executar um programa como o Bloco de Notas várias vezes, cada horário específico terá seu próprio processo. Um processo usa recursos, como RAM disponível no seu computador. Se você olhar para o Gerenciador de Tarefas e vir o programa sendo executado várias vezes, cada ocorrência diferente do programa pode ser um processo diferente.

Como os processos são atribuídos?

Os números PID ("ID do processo") são atribuídos pelo sistema operacional cada vez que um novo processo é realizado.

Para que servem os processos?

Usando o ID do processo (que identifica uma cópia exata e específica de um programa em execução), você pode determinar de qual programa de software esse processo é uma instância. Você pode fazer isso usando TaskList (na linha de comando), WMIC PROCESS GET /FORMAT:LIST (na linha de comando) ou Gerenciador de Tarefas. No Gerenciador de Tarefas, em algumas versões mais recentes do Microsoft Windows, pode ser necessário ir para a guia “Detalhes”. Se não houver uma coluna para mostrar o PID, você poderá adicioná-la. (No Windows 10, pelo menos, você clica com o botão direito do mouse no nome de uma coluna e pode selecionar as colunas visíveis. Pelo que não me falha a memória, as versões mais antigas do Windows tinham uma opção de menu para isso.)

Outro comando que você pode achar útil é o netstat. Vejo que você está usando o netstat. Tente adicionar o parâmetro "-b". (Esta opção é bastante específica para o Microsoft Windows, que presumo que você esteja usando com base em C:\Users\User> em seu prompt.) Isso fará com que o Netstat tente usar o PID para descobrir o nome do arquivo executável, e imprima isso na próxima linha.

Tudo isso não tem nenhuma relação com o número da porta.

Números de porta

O que é um número de porta

Um número de porta é usado como parte de uma conexão de rede. Nem todas as comunicações de rede utilizam números de porta. Por exemplo, o ICMP, usado pelo TraceRoute (denominado "TRACERT" no Microsoft Windows) e pelo comando "ping" do Microsoft Windows, não usa números de porta. Os protocolos mais comuns que fazem isso são UDP e TCP. (Talvez o SCTP seja o próximo mais comum?) Muitos protocolos, incluindo HTTP(S) e SMTP (para e-mail) usam TCP, portanto, números de porta são usados.

Para que servem os números de porta?

É possível ter múltiplas conexões TCP entre os mesmos computadores, e números de porta são usados ​​para identificar essas conexões. Por exemplo, se o seu programa de e-mail estiver recebendo e-mail, a conexão de rede pode ser entre [PORTA LOCAL 52534, PORTA REMOTA/ESTRANGEIRA 25], enquanto seu navegador da web pode criar uma conexão usando [PORTA LOCAL 54499, REMOTA/ESTRANGEIRA PORTA 443]. Dessa forma, quando o computador remoto responder e o tráfego de entrada for definido como [PORTA LOCAL 54499, PORTA REMOTA/ESTRANGEIRA 443], seu computador saberá que o tráfego não se destina ao seu programa de e-mail local. Na verdade, seu navegador poderia criar múltiplas conexões TCP para fazer algo como baixar vários gráficos ao mesmo tempo. Quando o seu computador recebe dados gráficos, os números das portas podem ajudar o seu navegador a saber a qual conexão os dados se destinam, para que o navegador possa saber a qual gráfico os dados recebidos se destinam.

(Observação: os colchetes são apenas uma notação que criei para tornar esse parágrafo um pouco mais fácil de ler. Na saída do Netstat, os números das portas são mostrados após os dois pontos. Normalmente, não prefiro usar o termo "estrangeiro" para descrever números de porta, mas fiz isso neste caso porque esse era o termo usado pelo netstat.)

Como os números de porta são atribuídos?

Em geral, a maioria dos softwares simplesmente informa à “pilha de rede” que deseja estabelecer uma conexão de rede. Nos sistemas operacionais modernos, a "pilha de rede" é incorporada como parte do sistema operacional (embora na época do Windows 3.1, uma pilha de rede fosse normalmente adicionada durante a instalação de um programa de software como o Microsoft Internet Explorer ou Trumpet Winsock) . O programa de software normalmente informará à pilha de rede algo como “Crie uma nova conexão TCP para a porta remota 443”. A pilha de rede determinará qual número de porta de origem deseja usar.

Resumo

Processos e números de porta são coisas muito diferentes. Concordo com a maioria ou todas as informações nas outras respostas aqui. (No entanto, adicionei minha própria resposta aqui porque pensei que um pouco mais de detalhes, como de onde os números são atribuídos, poderia ajudar a tornar a distinção um pouco mais clara.)

Responder4

Um processo é um programa em execução, na maioria dos casos. Um programa como o Firefox pode, na verdade, consistir em vários processos trabalhando juntos, mas no que diz respeito ao sistema operacional, eles são a unidade básica de trabalho: cada processo tem uma imagem (o arquivo executável que está sendo executado), um diretório de trabalho, manipuladores (atribuições de recursos), espaço de endereço de memória, CPU e prioridade de E/S e assim por diante. Se você executar o bloco de notas, um processo será iniciado usando notepad.exe e abrirá uma janela para você interagir.

Uma porta é um recurso. O sistema operacional possui um determinado número de portas disponíveis (65535), e um processo pode solicitar um identificador para obter uso exclusivo de uma porta. Um processo pode obter identificadores para qualquer número de portas não utilizadas. É necessária uma porta para comunicação de rede. Os números de porta escolhidos para conexões de saída (como o navegador que se conecta a um servidor web) são essencialmente arbitrários; eles não têm nenhum significado com o qual você precise se preocupar.

Tudo isso é uma visão geral simplificada, então não tome isso como sendosuperpreciso.

informação relacionada