komunikacja z komputerem w innej sieci

0

Chcę zrobić mały programik do przesyłania poleceń na inny komputer w dowolnej innej sieci.
Wszystkie przykłady komunikacji między dwoma komputerami wymagają podania IP i portu. Ale do innej sieci to przecież nie działa. Musiałbym podać jego zewnętrzne IP, jego wewnętrzne IP i port.
Te dane znam, bo moja aplikacja przy uruchomieniu zapisuje sobie do wspólnej bazy na serwerze swoje aktualne IP wewnętrzne i zewnętrzne
Ale nie wiem jak mam zrobić połączenie między nimi.
Możecie mi to wyjaśnić jak działają wszelkie komunikatory albo TeamViewer

1

To jest raczej pytanie dotyczące sieci komputerowych, a nie samego Delphi.

Jeśli masz podane konkretne adresy i porty, to zasadniczo nie ma większego znaczenia, czy łączysz się lokalnie z kompem stojącym obok, czy z kimś z Australii (albo Austrii). Jeżeli umiesz się połączyć lokalnie, aplikacje się widzą i mogą ze sobą "gadać", to w ten sam sposób uzyskasz komunikację przez Internet.

Problemem jest coś innego - żebyś mógł się wbić na konkretny port lokalnego adresu IP, na routerze (lub innym ustrojstwie, przez które przechodzi ruch sieciowy) musisz mieć zrobione przekierowanie portów. Ale sam sobie tego w swoim programie nie zrobisz, to zadanie dla administratora danej sieci. Taka potrzeba odpada, jeśli dany komputer posiada bezpośrednio przydzielony adres zewnętrzny - ale jest to dość rzadkie zjawisko.

Odpowiadając na drugie pytanie, czyli jak działają programy typu TeamViewer: zwróć uwagę, że one do nawiązania połączenia nie łączą się ze sobą bezpośrednio, ale najpierw z serwerem TeamViewera. Dopiero potem, po "zapoznaniu" obu stron ze sobą przez wspomniany serwer, możliwa jest dalsza praca. Więc - analogicznie - musiałbyś mieć jakiś serwer lub inny punkt zaczepienia, z którym mogłyby się łączyć programy - klienci. Zwróć uwagę, że do poprawnego działania programu, serwer musi być cały czas dostępny, a jego adres niezmienny. Jakby teraz - w wyniku awarii, włamania albo zwyczajnie z powodu likwidacji firmy serwer TeamViewera został wyłączony, to raczej nikt nie byłby w stanie z tego programu korzystać.

2

Bez pomocy zewnętrznego serwera w publicznej sieci się nie obejdzie.

  1. Dla niektórych typów NAT można zestawić połączenie pomiędzy dwoma końcami w sieciach prywatnych.
  2. Jeżeli nie da się zestawić połączenia bezpośredniego przebijającego NAT, to trzeba przekierować ruch przez zewnętrzny serwer.

Ad 1.
https://tools.ietf.org/html/rfc5389
https://en.wikipedia.org/wiki/STUN

Ad 2.
https://tools.ietf.org/html/rfc5766
https://en.wikipedia.org/wiki/Traversal_Using_Relays_around_NAT

Oraz:
https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment

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