Porque é que quando escrevo no meu MSN, a conversa vai parar à tua janela do MSN e não a outra?
Certamente já se questionaram como comunicam duas aplicações, como comunicam dois computadores e como comunicam duas aplicações entre dois computadores. Durante este fim de semana colocaram-me essa questão e deixo aqui um artigo para partilhar com vocês a resposta. A explicação não entrará em detalhes por forma a que todos entendam.
Vou dar como exemplo o MSN
Considerando que existem 2 (ou mais) computadores e que têm instalado o MSN. Num computador está o António (IP: 192.168.10.1) e no outro o João (IP: 192.168.10.2) e estão em conversação.
A questão que se coloca é:
- Como é que as conversas entre eles vão parar às janelas correctas em cada máquina?
Nisto da comunicação de computadores há 2 coisas que devemos saber: endereço IP (que identifica univocamente uma máquina) e o porto ou porta (que identifica a aplicação). A combinação do número do porto e do endereço IP identifica univocamente um processo a correr numa determinada máquina. Esta combinação tem o nome de socket.
Assim, o CHAT entre o António e o João pode ser estabelecido porque existe um IP para cada máquina e um porto para cada aplicação/janela. Algo do tipo:
192.168.10.1: 49201 <—–> 192.168.10.2: 49746
Onde:
192.168.10.1 – Computador do António | 192.168.10.2 – Computador do João |
49201 – Janela de MSN do António | 49746 – Janela de MSN do João |
Assim sendo, por cada aplicação/janela aberta na nossa máquina é atribuído dinamicamente um porto, e assim podemos comunicar com essa aplicação/janela um vez que o IP irá identificar a máquina e o porto essa janela . No caso de termos 5 janelas do msn abertas, por cada janela existe um porto associado, no entanto o IP da máquina é sempre o mesmo.
Que portos existem?
A IANA (Internet Assigned Numbers Authority) é um órgão responsável pela designação de vários padrões de endereçamento, incluindo os portos.
Existem diferentes tipos tipos de número de portos:
- Portos conhecidos: 0 a 1023
- Portos registado: 1024 a 49151
- Portos atribuídos dinamicamente ou privados: 49152 a 65535
Como ver os portos no meu computador?
Normalmente costumo usar o comando netstat –ano, para verificar quais os processos de comunicação existentes.
No entanto, já aqui falamos no pplware no currports que tem um aspecto gráfico mais interessante, sendo assim mais fácil identificar as aplicações:
Considerando o nosso exemplo e a imagem anterior:
192.168.192.2 – Computador do António | 207.46.125.77 – Computador do João |
6015 – Janela de MSN do António | 1863 – Janela de MSN do João |
Nota: Este é apenas um exemplo de como comunicam as aplicações. No caso do MSN sabemos que existem servidores intermédios para gestão das sessões.
No próximo artigo vamos explicar o funcionamento de socket em servidores HTTP. Estejam atentos