Como é que o meu MSN comunica com o teu?

56 Comentários

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.

Communication Information

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.

02-11-2009 10-37-11

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:

02-11-2009 10-54-25

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

Partilhar:
Tags:

Comentários

56

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Joao D
    Joao D

    Sim sr! Muito interessante!

    Parabens!

  2. Avatar de fernando
    fernando

    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”

    1. Avatar de Pedro Pinto

      Obrigado @fernando
      É caso para dizer, “..se queres postar sem errar…” Chama o António, chama o António :)..já dizia o Toy

      1. Avatar de leitorassiduo
      2. Avatar de fernando
  3. Avatar de Frigo
    Frigo

    excelente artigo!!!

  4. Avatar de EsPoNjOsO

    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 😉

  5. Avatar de Weasel
    Weasel

    Só uma coisa, PORTO? Onde raio é que usam esse termo para se referirem às PORTAS? Port é Porta e ponto final. porto?! O_o

    1. Avatar de Pedro Vicente
      Pedro Vicente

      Na realidade essa é a tradução mais correcta “porto”.

      Os portugueses e brasileiros é que optaram pela tradução labrega.

    2. Avatar de leitorassiduo
      leitorassiduo

      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 😛

      1. Avatar de EsPoNjOsO

        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…
        😉

    3. Avatar de Pedro Pinto

      @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” 🙂

    4. Avatar de wolfytuga

      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 🙂

    5. Avatar de nfu
      nfu

      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

    6. Avatar de Ana Narciso

      É porto carago! 🙂

      Agora a sério: em Redes diz-se porto (de entrada/saída, tcp/udp).

  6. Avatar de Computed Life

    Excelente artigo muito bom sim senhor.

  7. Avatar de Sergio
    Sergio

    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

    1. Avatar de Pedro Pinto

      @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 🙂

    2. Avatar de David
      David

      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.

  8. Avatar de Emannxx

    Excelente =)

    Sempre me questionei sobre como funcionariam estes sistemas 😀

  9. Avatar de rpf
    rpf

    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.

    😀

  10. Avatar de chicosoft

    Atenção, não será “netsat –ano” mas sim “netstat -ano”

  11. Avatar de Wilson Silva
    Wilson Silva

    Não devia ser “netstat” em vez de “netsat”?

    1. Avatar de Wilson Silva
      Wilson Silva

      Ora bolas, devia ter feito refresh antes de comentar para não fazer comentários repetidos.

  12. Avatar de Weasel
    Weasel

    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 😛

  13. Avatar de Miguel machado

    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.

  14. Avatar de Venancio
    Venancio

    Sim acho muito esclarecedor este artigo, muito bem colocado e explicito.

  15. Avatar de Alberto Silva

    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.

  16. Avatar de Paulo39
    Paulo39

    Excelente artigo!
    Já fiquei a saber mais umas coisas 🙂

  17. Avatar de Fábio Rocha
    Fábio Rocha

    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

    1. Avatar de R00KIE
      R00KIE

      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.

      1. Avatar de nelson
        nelson

        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.

      2. Avatar de TopPlus

        Ora ai está uma boa idéia pra apanhar o IP e as sextapes, lol
        cumps.

  18. Avatar de Ricardo
    Ricardo

    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).

  19. Avatar de Nuno Peralta

    “No próximo artigo vamos explicar o funcionamento de socket em servidores HTTP. Estejam atentos”

    vai interessar-me 🙂

  20. Avatar de Sergio
    Sergio

    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)

  21. Avatar de 3biz
    3biz

    Portos? lol
    ao menos traduzam devidamente para “Portas”

    1. Avatar de Redin

      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.

  22. Avatar de Rui Lamas
    Rui Lamas

    Este rapaz sabe muito. Sim sr. Continua com o excelente trabalho.

    cumps

  23. Avatar de oliveira
    oliveira

    Muito bom!

    Keep up the good work!

    Cumps

  24. Avatar de Gustavo
    Gustavo

    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 :[

  25. Avatar de techdani
    techdani

    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!!!

  26. Avatar de TiagoKito
    TiagoKito

    Muito bem explicado 🙂

  27. Avatar de Foster
    Foster

    Excelente explicação

    Fico impressionado como você consegue explicar direito sem a necessidade de vários textos.

    Parabéns!

  28. Avatar de Shapper
    Shapper

    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! 😉

    1. Avatar de MacGyver's friend
      MacGyver’s friend

      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

  29. Avatar de dajosova
    dajosova

    Interessante saber 😉

  30. Avatar de MacGyver's friend
    MacGyver’s friend

    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

  31. Avatar de Duarte Gouveia
    Duarte Gouveia

    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?

  32. Avatar de Vitor Mendanha

    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

  33. Avatar de UKN
    UKN

    Mais um excelente artigo. Muito informativo 🙂
    Thumbs up.

  34. Avatar de Redin

    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)

  35. Avatar de Chan
    Chan

    Muito bom!! Obrigado pela ajuda!

  36. Avatar de Wander
    Wander

    Poque se dá erro no socket de conexão?