Jak działają komunikatory internetowe?

0

Witam,
Chciałbym się dowiedzieć, jak działają komunikatory internetowe, a konkretniej połączenie i przesył wiadomości. Szukałem sporo w internecie, jednak nie znalazłem konkretnej odpowiedzi.
Przejdę więc do konkretów, i przedstawię kilka wizji, jak mi się wydaje, że to działa:
Klient A ma numer 1234, klient B ma numer 4321. Klient A loguje się, na serwerze pod numerem 1234 zostaje zapisane jego IP. Podobnie, gdy loguje się klient B. I teraz A chce wysłać coś do B:

  1. pyta serwer o adres IP od B, a następnie tworzy się połączenie między A i B, i przesyłają dane
  2. Klient A wysyła wiadomość na serwer, a następnie serwer przesyła ją do B
    Która z tych opcji (a może jeszcze inna) jest w praktyce używana?
    Kolejny problem, to nie wiem jak to się wszystko ma do tego, gdy serwer jest w innej sieci lokalnej niż klient? Jak wtedy realizowane jest połączenie?

Nie oczekuję tutaj gotowego kodu, a jedynie wskazówek naprowadzających mnie na odpowiedzi, jakichś linków.

Bardzo dziękuję każdemu za pomoc
Pozdrawiam

0

Poczytaj o Socket

0

bolson, ale nie chodzi mi o to, jak komunikowac sie w javie z siecią, tylko jak ma działać taki protokół. Niefortunnie umieściłem temat w Java, ponieważ chciałbym to zrealizować w tym języku. Prosiłbym moderatorów o przeniesienie tematu do bardziej ogólnego działu.

0

Poczytaj jak działa otwarty protokół, XMPP. Są do niego otwarte komunikatory. IMHO that's the right way. Zobaczysz jak powinien działać komunikator ;)

0

Jeżeli chodzi o opcję 1 to jest to nierealne rozwiązanie jeżeli komunikator ma działać poza siecią lokalną. Na drodze mnóstwo infrastruktury sieciowej, która nie pozwala tak po prostu się komunikować (mam na myśli bez ton zabezpieczeń i konfiguracji).
Pomyśl chociażby o osobach, które współdzielą jedno IP. Co z kwestią dostania się "za router" ?

Jeżeli chodzi o punkt 2 to jest pewnie rozwiązanie bliższe rzeczywistości, ale to zależy od architektury protokołu komunikacji jaki twórcy komunikatora przyjęli.

Ogólnie jak napisał @bolson - poczytaj o socketach, protokole TCP itp.

0

W komunikatorach tekstowych z reguły wszystko jest wysyłane poprzez serwer pośredniczący. Klienci nawiązują połączenie ze swojej strony i tyle.
W przypadku gdy transmisja waży trochę za dużo (dźwięk, wideo, ekran), by całość pchać przez dodatkowy serwer: 1. próbuje się nawiązać połączenie bezpośrednie, 2. jeżeli się to nie uda (np. przez NAT z obu stron) próbuje się za pomocą serwera pośredniczącego użyć techniki hole punching, 3. w ostateczności przesyła się wszystko przez serwer pośredniczący.

1

W komunikatorach zazwyczaj tekst idzie przez serwer. (GG, Jabber, etc)
Takie rzeczy jak pliki (i obrazki) są wysyłane bezpośrednio - jeśli się da.
Streaming video też leci bezpośrednio (Skype, Jitsi)

Jeśli nie da się nawiązać bezpośredniego połączenia między klientami, to pliki czy obrazki lecą przez serwer pośredniczący. Tak to zazwyczaj się robi.

Jabber/XMPP dodatkowo nie ma jednego centralnego serwera - każdy może postawić serwerem i mieć dowolnych użytkowników. Tutaj komunikacja leci też pomiędzy serwerami. Użytkownicy są rozpoznawani na podstawie adresu: uż[email protected]
Jeśli rozmawiamy z użytkownikiem innego serwera, to serwery pośredniczące wymieniają się tymi wiadomościami, a nie klienci.

0
sephirot8608 napisał(a):

Jeżeli chodzi o opcję 1 to jest to nierealne rozwiązanie jeżeli komunikator ma działać poza siecią lokalną. Na drodze mnóstwo infrastruktury sieciowej, która nie pozwala tak po prostu się komunikować (mam na myśli bez ton zabezpieczeń i konfiguracji).
Pomyśl chociażby o osobach, które współdzielą jedno IP. Co z kwestią dostania się "za router" ?

No ok, ale przecież i tak trzeba się wydostać "za router" po stronie klienta. Więc co za różnica, czy będzie to trzeba zrobić raz, czy dwa razy?

0

hmm, ok. A ktoś mógłby mi powiedzieć, skąd mógłbym załatwić tani, albo najlepiej darmowy serwer, żeby postawić swoją aplikację serwerową?

1

Dowolny VPS pozwoli ci na uruchomienie twojej aplikacji serwerowej. Koszt od około 20 zł za miesiąc.

0

OVH ma teraz niezłą ofertę low-budget. http://www.ovh.pl/serwery_dedykowane/kimsufi.xml

1 użytkowników online, w tym zalogowanych: 0, gości: 1