Przekierowanie pakietu TCP przez kilka serwerów

0

Witam,
piszę program w C używając berkeley sockets (zadanie do szkoły). Mam taką sytuację:
klient_1 <-> serwer_1 <-> serwer _2 <-> serwer _3 <-> klient_2

Jak właściwie zaprogramować klienta i poszczególne serwery by przekierować pakiet z klienta_1 do klienta_2?
Oczywiście wszystko to odbywa się na różnych maszynach - znane są adresy IP.

1

Na serwerach przekaźniki oparte o współdzielony bufory lub kolejki.

  1. Tworzysz sockety (2), poleceniem "socket" - Dla obu punktów wejsciowo-wyjściowych.
  2. Pobierasz parametry utworzonych gniazd poleceniem getsockopt.
  3. Ustawiasz adresy, porty itp tak jak się należy, deklarujesz bufory dla wyżej pobranych ustawień.
  4. Tworzysz procedurę wysyłającą/odbierającą - możesz ją wzbogacić o funkcję select lub poll, odmrażająca wątek kiedy dane są gotowe.
    4a) Jeśli dane mogą iść do klienta i do serwera jednocześnie to wszystko na wątkach, lub procesach.
  5. Zapisujesz dane na przykład w kolejce (odbierający -> wysyłający) z dwóch stron ta sama sytuacja
  6. Uruchamiasz obie końcówki w osobnych wątkach i w nich łączysz się do przeznaczenia funkcją connect.

Jak to sobie już tam zsychronizujesz to Twoja sprawa.
Klient to połowa powyższego - jedna końcówka.

0

Proxy, najłatwiejsze rozwiązanie, wszystkie pakiety przekierowujesz i tyle.

0

A z ciekawości, jak działają serwery-pośrednicy w sieci TOR? One siebie widzą? Bo są główne serwery rejestrujące te nody.
W ogóle jak taka droga między klientem a docelowym źródłem jest wyznaczana?

0

Proxy działa tak:
Robisz serwer, co nadsłuchuje na porcie pierwszy socket, a łączy się na drugim sockecie z kimś innym, i to co dostanie na pierwszym wysyła do drugiego, a to co na drugim do pierwszego i tyle.

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