Distinguir o servidor TCP do cliente na saída netstat

5

Eu tenho uma conexão de soquete entre um processo do cliente e um processo do servidor, ambos em execução na minha máquina. Existem duas entradas mostradas para a conexão como,

sudo netstat -ntp | grep 56442
tcp        1      0 127.0.0.1:56442         127.0.0.1:8002          CLOSE_WAIT  8276/python
tcp        0      0 127.0.0.1:8002          127.0.0.1:56442         FIN_WAIT2   -

Como posso descobrir qual é o servidor neste caso?

Eu sei que o servidor TCP está sendo executado na porta 8002 e um cliente se conecta ao servidor de escuta da porta 56442 .

Estou tentando descobrir uma maneira de distinguir entre servidor e cliente observando as entradas netstat output.

E por que o id / description do processo não aparece quando o soquete está em FIN_WAIT2 state?

    
por Madhavan Kumar 02.08.2015 / 15:05

2 respostas

1

Acredito que netstat -ntp mostrará somente os soquetes do cliente (não-ouvintes) na coluna Endereço local .

O sinalizador -l deve fazer com que netstat liste somente soquetes do servidor (de escuta) e, com -a , você obtenha os dois e, em seguida, diferencie com base em STATE s.

    
por 02.08.2015 / 19:19
1

Se você executar o netstat sem o grep , você verá que a coluna à esquerda do centro tem um título como "Endereço local" e a coluna à direita do centro tem um título como "Endereço estrangeiro". A linha que mostra o endereço local que inclui o número da porta do servidor é o servidor.

Você pode ter uma ideia melhor sobre isso se você iniciar dois processos do cliente simultaneamente e, em seguida, executar

sudo netstat -ntp | grep -E "Address|8002"

And why doesn't the process id/description come, when the socket is in FIN_WAIT2 state?

Provavelmente porque o processo foi encerrado; afinal, FIN significa "terminar" ou "final". Pacotes FIN e estados FIN_ estão relacionados a desligando (fechando) uma conexão TCP, o que normalmente acontece apenas quando os processos são feitos com ele (e que acontece automaticamente quando um ou ambos os processos morrem). Um soquete pode ficar no sistema por um tempo depois que o processo que o abriu se foi. Novamente, você provavelmente pode ter uma idéia melhor disso, executando netstat quando ambos os processos estão vivos e bem, e depois observando como isso muda quando eles são desligados.

    
por 02.08.2015 / 19:06