Como o protocolo TCP/IP diferencia os clientes?

Como o protocolo TCP/IP diferencia os clientes?

Se criarmos um soquete de escuta, ele nos retornará um descritor (digamos o descritor raiz) e vincularemos esse descritor a um endereço. Sempre que uma nova conexão de cliente está disponível, o descritor raiz nos informa e aceitamos essa nova conexão e recebemos um descritor exclusivo (digamos, descritor de cliente) para cada cliente. A partir de agora podemos nos comunicar com esse cliente usando esse descritor. As informações do cliente são armazenadas em um inode separado, indicado pelo descritor do cliente. Devido a isso, o Linux foi capaz de entregar os respectivos dados do cliente para um respectivo descritor.

Se o que mencionei acima estiver correto (por favor, corrija-me se meu entendimento estiver errado), então tenho uma dúvida. Quais são as informações do cliente armazenadas no inode? Como o cliente é identificado exclusivamente pelo Linux?

Responder1

Os protocolos TCP/IP e UDP/IP conhecem uma “sessão” que é definida pelo endereço IP local e remoto e pela porta [1]. Um pacote TCP/IP, por exemplo, conterá endereço IP de origem e destino e porta [2]. Um servidor ou cliente (digamos, Firefox) que tenha mais de uma conexão aberta distinguirá na camada de sessão OSI [3] por endereço e porta.

Abra um shell e execute como root, enquanto usa um navegador da web

netstat -tulpan

para ver as conexões atuais e ativas [4].

Exemplo de saída:

# netstat -tulpan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1966/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1902/cupsd          
tcp        0      0 192.168.1.16:57374      172.217.23.165:443      ESTABLISHED 4730/firefox-bin     
tcp        0      0 192.168.1.16:55478      104.26.11.30:443        ESTABLISHED 4730/firefox-bin     
udp        0      0 127.0.0.1:53            0.0.0.0:*                           1996/named          

As linhas mostram conexões "ESTABELECIDAS" pelo Firefox com portas locais diferentes para que o Firefox reconheça qual pacote é a resposta para qual solicitação.

Outras linhas com o estado LISTEN são programas locais executados como um processo de servidor, incluindo sshd(Secure Shell Server), cupsd(daemon de impressora) e named(servidor de nomes Bind). Eles aceitarão conexões de entrada.

Referências para saber mais:

[1]https://en.wikipedia.org/wiki/Port_(rede_de_computadores)

[2]https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structureassim comohttps://en.wikipedia.org/wiki/IPv4_header#Header

[3]https://en.wikipedia.org/wiki/OSI_model

[4]https://en.wikipedia.org/wiki/Netstat

Responder2

Ao fazer isso, listenvocê especifica uma porta, pois a porta deve ser bem conhecida. Este terminal possui um IP (ou mais de um) e uma porta.

Ao fazer isso, connectvocê especifica o IP e a porta do listenservidor remoto. O IP local é determinado pelo sistema operacional e uma porta é atribuída (pode ser qualquer número).

A conexão pode ser identificada por ( (remote IP, remote port), (local IP, local port) )Isso coloca um limite máximo de conexões de 64K para cada porta remota, a partir de qualquer endereço IP.

informação relacionada