Qual é a diferença e o relacionamento entre um id de processo e um número de porta?

4

O processo é um programa em execução. Por exemplo. Raposa de fogo. Eu não entendo o relacionamento e as diferenças entre os termos "processo" e "portas".

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

capturadetela:cmdsaídade"netstat -no -p -TCP"

    
por user570593 04.01.2018 / 06:30

5 respostas

32

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

O PID identifica um processo (por exemplo, uma sessão do Firefox: cada guia pode ser executada como um processo diferente) e o número da porta identifica qual porta esse 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 é iniciado.

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

    
por 04.01.2018 / 08:55
12

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

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

Se você estava querendo matar uma conexão em particular, mas não todas as cópias do programa, você precisaria saber o PID em vez do nome do programa.

    
por 04.01.2018 / 08:16
9

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ê observar o Gerenciador de Tarefas e vir o programa executando várias vezes, cada ocorrência diferente do programa poderá 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 sempre que um novo processo é feito.

Para quais processos são bons?

Usando o ID do processo (que identifica uma cópia exata e específica de um programa em execução), você pode determinar 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 Task Manager. No Gerenciador de Tarefas, em algumas versões mais recentes do Microsoft Windows, talvez seja necessário ir para a guia "Detalhes". Se não houver uma coluna para mostrar o PID, você poderá adicioná-lo. (No Windows 10, pelo menos, você clica com o botão direito do mouse em um nome de coluna e pode selecionar colunas visíveis. Como a memória me serve, versões mais antigas do Windows tinham uma opção de menu para isso.)

Outro comando que você pode achar útil é o netstat. Eu vejo que você está usando netstat. Tente adicionar o parâmetro "-b". (Esta opção é bastante específica para o Microsoft Windows, que eu presumo que você esteja usando com base no 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 está relacionado ao 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 toda comunicação de rede usa números de porta. Por exemplo, o ICMP, usado pelo TraceRoute (chamado "TRACERT" no Microsoft Windows) e o comando "ping" do Microsoft Windows, não usa números de porta. Os protocolos mais comuns que 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, os números de porta são usados.

Para que servem números de porta?

É possível ter várias conexões TCP entre os mesmos computadores, e os 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 estar entre [PORTA LOCAL 52534, PORTA REMOTA / ESTRANGEIRA 25], enquanto seu navegador da Web pode criar uma conexão usando [PORTA LOCAL 54499, REMOTA / ESTRANGEIRA]. PORT 443]. Dessa forma, quando o computador remoto responde e o tráfego de entrada é definido como [PORTA LOCAL 54499, PORTA REMOTA / ESTRANGEIRA 443], seu computador sabe que o tráfego não é destinado ao seu programa de E-mail local. Na verdade, o seu navegador pode criar várias conexões TCP para fazer algo como baixar vários gráficos ao mesmo tempo. Quando o computador recebe dados gráficos, os números das portas podem ajudar o navegador da Web a saber para qual conexão os dados são destinados, para que o navegador da Web possa saber para qual gráfico os dados recebidos foram destinados.

(Nota: Os colchetes são apenas uma notação que fiz para tornar esse parágrafo um pouco mais fácil de ler. Na saída do Netstat, os números de porta são mostrados após os dois pontos. Eu normalmente não prefiro usar o termo " foreign "para descrever números de porta, mas eu fiz 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 fazer uma conexão de rede. Nos sistemas operacionais modernos, a "pilha de rede" é incorporada como parte do sistema operacional (embora, nos tempos do Windows 3.1, uma pilha de rede fosse normalmente adicionada durante a instalação de um programa como o Microsoft Internet Explorer ou Trumpet Winsock) . O programa de software normalmente diz à pilha da rede algo como "Crie uma nova conexão TCP com a porta remota 443". A pilha de rede determinará qual número de porta de origem ela deseja usar.

Resumo

Processos e números de porta são coisas muito diferentes. Eu concordo com a maioria ou todas as informações nas outras respostas aqui. (No entanto, eu 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.)

    
por 04.01.2018 / 14:38
2

Um pouco simplificado:

O PID é o número usado internamente em seu computador para se referir a qualquer processo específico. Um processador só pode fazer uma coisa de cada vez, mas tem várias tarefas para fazer, então alterna entre trabalhar para diferentes processos, e o PID é a tag que o processador usa para identificar cada processo.

O número da porta é uma tag dada a todas as comunicações da rede para que quando uma resposta retorne da rede, o roteador em sua rede doméstica saiba qual computador aguarda essa resposta e quando a resposta chega ao computador, o computador sabe qual processo aguarda a mensagem.

Por exemplo, a tag de porta garante que, quando você solicitar essa página dos servidores do Stackexchange, e os dados do site chegarem ao seu roteador, o roteador saberá que é o seu computador e não o smartphone do seu irmão ou qualquer outro dispositivo que os quer. E quando eles chegam ao seu computador, seu computador pode dizer que é o Firefox que os quer, não o Word.

    
por 04.01.2018 / 10:49
2

Um processo é um programa em execução, na maioria dos casos. Um programa como o Firefox pode consistir em vários processos trabalhando juntos, mas no que diz respeito ao sistema operacional, eles são a unidade básica de trabalho: todo processo tem uma imagem (o arquivo executável em execução), um diretório de trabalho, (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 o 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 o uso exclusivo de uma porta. Um processo pode obter identificadores para qualquer número de portas não utilizadas. Uma porta é necessária 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 da Web) são essencialmente arbitrários; eles não têm significado que você precise se preocupar.

Isso tudo é uma visão geral simplificada, por isso não considere super preciso.

    
por 04.01.2018 / 12:41