Como é que o meu MSN comunica com o teu?
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
Este artigo tem mais de um ano
Sim sr! Muito interessante!
Parabens!
bom artigo (aliás como é habitual aqui no pplware), só um pequeno reparo, embora não influencie a compreensão do artigo, nos exemplos escreveste sempre “PC antónio”
Obrigado @fernando
É caso para dizer, “..se queres postar sem errar…” Chama o António, chama o António :)..já dizia o Toy
LOL
hehehe:D
excelente artigo!!!
Explicação muito boa!
E há que aproveitar para monitorizar portas, por vezes temos serviços que estão a correr e que não são nada benéficos 😉
🙂
Só uma coisa, PORTO? Onde raio é que usam esse termo para se referirem às PORTAS? Port é Porta e ponto final. porto?! O_o
Na realidade essa é a tradução mais correcta “porto”.
Os portugueses e brasileiros é que optaram pela tradução labrega.
Nop, a tradução de “port” para português, quando nos estamos a referir ao termo informático é mesmo PORTO e não PORTA, porta seria DOOR 🙂
Também me faz confusão e eu muitas vezes digo PORTA, mas PORTO é mesmo o termo correcto.. Já por causa das coisas, quando faço algum manual para utilizar alguma aplicação desenvolvida por mim, ou em alguma apresentação ao público digo sempre “port” ou quando por escrito meto “port” em itálico e pronto 😛
Yeps sim senhor, a nivel de informática são usados muitos estrangeirismos, porque assim que entramos em traduções … começam as confusões! E qual é o informático que não está familiarizado com essas mesmas definições? Quando a maior parte de tutoriais e manuais utilizam essas definições…
😉
@Weasel
São usados os dois termos no mundo da informática. Sinceramente não sei qual o mais correcto, no entanto referi no artigo que pode ser porto ou porta, é só escolherem…certamente que se estiverem a falar com um informático (ou alguém que perceba do assunto) vão-se entender…Se não for da área, ainda nos chamam “malucos” 🙂
Olá!
Antes de mais excelente artigo.
@Weasel
Quanto à designação referida ‘porto’ é o mais correcto, passo a explicar. Encara o esse ‘port’ como um Porto Marítimo, onde há muitos anos atrás se faziam as trocas comerciais. Bom, neste caso, o ‘porto’ vem da aplicação realizada em Hardware que apresenta o mesmo nome e que apresenta alguma semelhança com as trocas comerciais, em que os bens são meros sinais eléctricos.
Espero que me tenha feito entender 🙂
PORTO é a designação correcta para a tradução de PORT, aplicada como neste caso em análise.
PORTA é utilizada também no meio electrónico/informático, mas traduzido de GATE, e significa um dispositivo que opera estados lógicos de processamento, aplicando, obviamente, a lógica.
Mais:
GATE: http://en.wikipedia.org/wiki/Logic_gate
PORT: http://en.wikipedia.org/wiki/Computer_port_%28software%29
É porto carago! 🙂
Agora a sério: em Redes diz-se porto (de entrada/saída, tcp/udp).
Excelente artigo muito bom sim senhor.
Viva, a comunicação entre os 2 msn penso k não é feita directamente entre os 2 pc.alias se ligarmos um snifer iremos encontrar o ip do servidor do msn quando recebemos ou enviamos msgns.a algum tempo ainda era possivel apanhar o ip que estava do outro msn quando se enviava um ficheiro e ai era possível ver o ip da outra pessoa,agora já aparece o ip do servidor do msn quando se trocam ficheiros.Se estiver errado corrijam-me.abc
@Sergio,
Sim tive a possibilidade de referir isso no final do artigo. Escolhi o exemplo do MSN pois é elucidativo…vamos esquecer os servidores intermédios 🙂
Sérgio, realmente penso que tens toda a razão. A comunicação entre PC’s via msn passa por servidores e não vai directa ao outro PC. O artigo descreve uma comunicação mais do tipo peer-to-peer, no entanto no fim podemos ler que “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.”.
Ou seja, foi um artigo só para explicar exemplificar como estas coisas funcionam a quem não faz a mínima ideia.
Excelente =)
Sempre me questionei sobre como funcionariam estes sistemas 😀
Concordo com o Sergio.
A comunicação não é feita directamente entre os PC’s intervenientes.
Assim, o MSN de X em X tempo vai verificar à queue de mensagens se tem alguma para si. Caso tenha, apresenta ao utilizador. A janela a apresentar a mensagem deve ser identificada pelo destinatário.
😀
Atenção, não será “netsat –ano” mas sim “netstat -ano”
Thanks
Não devia ser “netstat” em vez de “netsat”?
Ora bolas, devia ter feito refresh antes de comentar para não fazer comentários repetidos.
Para bem da sanindade mental de todos vamos usar PORT 😀
Realmente uso sempre o termo em inglês nunca penso como se deve dizer em português, já por isso 99% do software que faço, faço-o todo em inglês 😛
Bem o que dizer deste artigo, apenas e só umas boas palavras de apreço para o responsável que o escreveu.
Sinceramente muito, mas muito bem explicativo como realmente se processa essa comunicação entre as diversas janelas de msn.
Abraço, continua assim que estás no caminho certo.
Sim acho muito esclarecedor este artigo, muito bem colocado e explicito.
Há na minha opinião outra questão que tem de ser debatida num série de artigos desta índole, que a maior parte dos nossos PC se encontra atrás de routers, e como tal não são endereçaveis ‘do exterior’ via endereço IP e porta.
Excelente artigo!
Já fiquei a saber mais umas coisas 🙂
Fake or Fail, escolhe uma.
No MSN nunca há trocas directas entre IP’s. Ou seja, nunca consigo saber o IP de determinado contacto, isto por razoes obvias de segurança.
(: Mas bom trabalho
Não é bem assim, conversas de texto passam todas pelos servidores da MS _mas_ as chamadas de voz, vídeo e as transferências rápidas de ficheiros são feitas por ligação directa logo é possível saber o ip de quem está do outro lado.
Se não acreditas tenta transferir um ficheiro grande e usa o que quiseres para ver as ligações abertas e quais estão a transferir dados, se fizeres whois ip vais ver que bate certinho com o isp da outra pessoa.
Se fizeres o mesmo mas se estiveres só a mandar texto só aparecem IPs atribuídos à MS.
correcto pois já usei o msn e a transferência de ficheiros para descobrir o ip de modo a dar assistência remota a pessoas com um servidor vnc e ips dinâmicos.
Ora ai está uma boa idéia pra apanhar o IP e as sextapes, lol
cumps.
Boas.
Porto (port) é associado ao SO (sistema operativo) e permite uma aplicação estar “à escuta” dos pacotes (IP) ou tramas (MAC) que cheguem a esse equipamento. Assim, sabe que o pacote que traz esse identificador é para ela (a aplicação), e ignora o resto.
Portas são onde se liga o cabo de rede (ethernet rj45).
“No próximo artigo vamos explicar o funcionamento de socket em servidores HTTP. Estejam atentos”
vai interessar-me 🙂
o termo mais correcto seria porto, mas, podemos dizer que porta tanbém seria uma analogia correcta. Mas, foi baptizada de Port, logo seria Porto. Obviamento tambem digo Porta, como também digo (e quase toda a gente) diz Libraria, para Library. São estrangeirismos que podem ter uma tradução grosseira, mas são entendidos no meio. Na minha opnião a palavra Libraria até deveria constar do dicionário, porque qd dizem biblioteca não é associada automaticamente. Temos montes de estrangeirismos que foram absorvidos assim.
Um porto não implica implicitamente uma aplicação.
Um porto pode ser partilhado por duas aplicações para fazer um pipe entre as duas aplicações. E obviamente uma aplicação pode ter mais que um porto associado.
Digamos de forma simples, por anologia, que se o ip é o codigo postal, o porto é o sub-codigo postal (ultimos três digitos)
Portos? lol
ao menos traduzam devidamente para “Portas”
Se assim for, que nome dás a uma entrada vga, rede, usb, etc..? (entradas fisicas sendo o contrário das entradas lógicas)
Para as entradas fisicas – portas
Para as entradas lógicas – portos
espero que tenhas ficado esclarecido.
Este rapaz sabe muito. Sim sr. Continua com o excelente trabalho.
cumps
Muito bom!
Keep up the good work!
Cumps
Bom artigo, mas péssima escolha para exemplo…
como tu mesmo disse e outros replicaram nos comentários, o msn não é p2p, ao menos para a troca de mensagens…
oq acontece é que tu solicita um “switchboard” ao msn, ele te repassa o ip e porta e o mesmo faz com o destinatário da conversa…
o exemplo de um webserver seria mais adequado 🙂
e se o ip aponta para o hospedeiro da aplicação (host), port devia ser traduzida como porta :[
Mas que bem! Fiquei surpreendido e já passei a perceber melhor dois conceitos, que apesar de já ter ouvido falar deles, não os percebia! Port e Socket!!!
Muito bem explicado 🙂
Excelente explicação
Fico impressionado como você consegue explicar direito sem a necessidade de vários textos.
Parabéns!
Biba, parabéns pelo artigo!
Queria aproveitar a deixa deste artigo, para perguntar o seguinte:
Estando eu a gerir uma rede, (domain admin), tenho possibilidade de “sniffar” o tráfego? Que sites estão a ser acedidos, msn’s, downloads, etc? Existe alguma aplicação a este nível?
Era importante, para tentar perceber alguma lentidão e perturbações na rede da empresa.
Se alguém me poder dar uma dica, agradecia! 😉
Boas,
existem várias aplicações cujo objectivo é “apanhar” o conteúdo que navega na tua rede (ou numa rede vizinha, caso a tua placa de rede possua modo promíscuo). Eu em tempos experimentei o “wireshark”. É bastante intuitivo. O que acontece é que essa informação não está “escarrapachada” para kker pessoa ver….. ker dizer, até está, mas tens de aceder aos pacotes, ver que tipo de informação está contida no pacote, ou seja, desembrulhar toda a informação que anda de trás para a frente na rede.
Faz um pesquisa no google (http://www.lmgtfy.com/?q=packet+sniffer)…. 🙂
Abraço
Interessante saber 😉
Boas a todos.
Antes de mais, “congratulations” por este artigo. Um dos trabalhos que tive de fazer enquanto aluno de Engenharia Informática, foi exactamente uma aplicação de “messenger” em Java.
É um tipo de aplicação que permite aprender como funcionam os sockets, sem muita complexidade. É um bom exercício para quem quer enverdar na área de sistemas distribuídos, uma vez que esta comunicação será a base para interligar os vários sistemas.
Abraços a todos
Se por exemplo transferirmos um ficheiro entre duas máquinas da LAN utilizando o MSN os dados são enviados para os servidores que controlam as sessões ou passa directamente de uma máquina para a outra dentro da LAN?
Viva!
Depois de este artigo sobre como funciona o Port Local vs Port Remoto, era interessante comparar/misturar com o NAT/PAT a fim de se perceber melhor o assunto.
Continuem
Mais um excelente artigo. Muito informativo 🙂
Thumbs up.
Sei que já devo vir tarde para fazer um comentário, mas…
a tabela exemplo que se encontra abaixo da imagem que diz respeito ao programa “currports” não combinam.
O porto local referido da máquina do “António” é o 60185 e não o 6015.
Claro que se percebe que houve aqui um erro de digitação e para os menos atentos, refira-se que o endereço remoto do “João” poderá não ser do computador dele, mas sim do IP atribuido à rede dele. Normalmente o processo NAT dos routers/modems atribuídos a cada utilizador, distribuem a gama privada 192.168.x.x e esses sim, farão parte dos equipamentos ligados a essa rede (neste caso o 207.46.125.77)
Muito bom!! Obrigado pela ajuda!
Poque se dá erro no socket de conexão?