Tunelowanie, kapsułkowanie, XDR. 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR.

Podobne dokumenty
Współbieżność, tunelowanie i kapsułkowanie, XDR i RPC

external Data Representation

Sun RPC/XDR. Dariusz Wawrzyniak 1

Sun RPC/XDR 10. listopada Dariusz Wawrzyniak (IIPP) 1

external Data Representation

76.Struktura oprogramowania rozproszonego.

Wybrane działy Informatyki Stosowanej

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol)

Tworzenie aplikacji rozproszonej w Sun RPC

Programowanie Sieciowe 1

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

ARP Address Resolution Protocol (RFC 826)

Podstawowe typy serwerów

Klient-Serwer Komunikacja przy pomocy gniazd

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Programowanie współbieżne i rozproszone

Przesyłania danych przez protokół TCP/IP

Zestaw ten opiera się na pakietach co oznacza, że dane podczas wysyłania są dzielone na niewielkie porcje. Wojciech Śleziak

System operacyjny UNIX Internet. mgr Michał Popławski, WFAiIS

Gniazda surowe. Bartłomiej Świercz. Łódź,9maja2006. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda surowe

Oprogramowanie komunikacyjne dla Internetu rzeczy Laboratorium nr 4 komunikacja unicastowa IPv6

Plan wykładu. 1. Sieć komputerowa 2. Rodzaje sieci 3. Topologie sieci 4. Karta sieciowa 5. Protokoły używane w sieciach LAN 6.

Bazy Danych i Usługi Sieciowe

Sieci komputerowe. Wstęp

Sieci komputerowe w sterowaniu informacje ogólne, model TCP/IP, protokoły warstwy internetowej i sieciowej

Protokoły sieciowe - TCP/IP

TCP/IP. Warstwa aplikacji. mgr inż. Krzysztof Szałajko

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła

Adresy w sieciach komputerowych

Referencyjny model OSI. 3 listopada 2014 Mirosław Juszczak 37

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne

Aby lepiej zrozumieć działanie adresów przedstawmy uproszczony schemat pakietów IP podróżujących w sieci.

ZiMSK. Konsola, TELNET, SSH 1

RPC Remote Procedural Call. Materiały do prezentacji można znaleźć na stronie:

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

1. Model klient-serwer

Protokoły zdalnego logowania Telnet i SSH

Protokół ARP Datagram IP

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 13 Topologie sieci i urządzenia

KONWERTER DVB ASI -> DVB IP DELTA-1

Wprowadzenie do programowania rozproszonego

Iteracyjny serwer TCP i aplikacja UDP

Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP

Sieci wirtualne VLAN cz. I

Warstwy i funkcje modelu ISO/OSI

MASKI SIECIOWE W IPv4

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Wydział Informatyki, Elektroniki i Telekomunikacji Katedra Telekomunikacji

Język C zajęcia nr 11. Funkcje

Sieci komputerowe i bazy danych

Marek Parfieniuk, Tomasz Łukaszuk, Tomasz Grześ. Symulator zawodnej sieci IP do badania aplikacji multimedialnych i peer-to-peer

Gniazda UDP. Bartłomiej Świercz. Łódź, 3 kwietnia Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda UDP

Plan wykładu. Wyznaczanie tras. Podsieci liczba urządzeń w klasie C. Funkcje warstwy sieciowej

Aplikacja Sieciowa. Najpierw tworzymy nowy projekt, tym razem pracować będziemy w konsoli, a zatem: File->New- >Project

Adresowanie grupowe. Bartłomiej Świercz. Katedra Mikroelektroniki i Technik Informatycznych. Łódź, 25 kwietnia 2006

router wielu sieci pakietów

Telefonia Internetowa VoIP

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ ADRESACJA W SIECIACH IP. WSTĘP DO SIECI INTERNET Kraków, dn. 24 października 2016r.

Programowanie sieciowe

Skąd dostać adres? Metody uzyskiwania adresów IP. Statycznie RARP. Część sieciowa. Część hosta

Mechanizmy pracy równoległej. Jarosław Kuchta

Programowanie współbieżne i rozproszone

Przykład. Podaj nazwę domenową hosta a odczytaj jego adres IP, lub odwrotnie:

Enkapsulacja RARP DANE TYP PREAMBUŁA SFD ADRES DOCELOWY ADRES ŹRÓDŁOWY TYP SUMA KONTROLNA 2 B 2 B 1 B 1 B 2 B N B N B N B N B Typ: 0x0835 Ramka RARP T

Dr Michał Tanaś(

ZiMSK dr inż. Łukasz Sturgulewski, DHCP

Protokoły internetowe

Gniazda BSD implementacja w C#

Sprawozdanie nr 4. Ewa Wojtanowska

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

Oprogramowanie systemów równoległych i rozproszonych. Wykład 6

Wykład 5: Najważniejsze usługi sieciowe: DNS, SSH, HTTP, . A. Kisiel,Protokoły DNS, SSH, HTTP,

5. Model komunikujących się procesów, komunikaty

Sieci VPN SSL czy IPSec?

Protokoły wspomagające. Mikołaj Leszczuk

Stos TCP/IP Warstwa transportowa Warstwa aplikacji cz.1

Sieci komputerowe - Protokoły warstwy transportowej

TCP/IP formaty ramek, datagramów, pakietów...

systemów intra- i internetowych Platformy softwarowe dla rozwoju Architektura Internetu (2) Plan prezentacji: Architektura Internetu (1)

Komunikacja między sterownikami przez protokół ADS

Wykład 4. Metody uwierzytelniania - Bezpieczeństwo (3) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Uniwersalny Konwerter Protokołów

Logiczny model komputera i działanie procesora. Część 1.

Wybrane działy Informatyki Stosowanej

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Laboratorium podstaw telekomunikacji

Wykład Nr Sieci bezprzewodowe 2. Monitorowanie sieci - polecenia

Platformy Programistyczne Zagadnienia sieciowe i wątki

Transkrypt:

Tunelowanie, kapsułkowanie, XDR 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR. 1

Transmisja tunelowa i kapsułkowanie Sieci komputerowe rozwijały się stopniowo przez wiele lat. Poszczególni producenci promowali własne systemy sieciowe, a protokoły TCP/IP nie zawsze były dostępne. Co więcej technologie przesyłu danych w sieciach rozległych zwykle wykorzystują odmienne protokoły transmisji niż te, które stosuje się w sieciach lokalnych. W związku z tym często zachodzi potrzeba przekazywania danych jednego protokołu poprzez połączenie obsługiwane przez inny protokół. W tym celu wykorzystuje się tzw. kapsułkowanie (encapsulation) lub tunelowanie (tunnelling). 2

Transmisja tunelowa i kapsułkowanie sieć rozległa frame relay, ATM, X25, GPRS, HSPA, 3G sieć lokalna TCP/IP sieć lokalna TCP/IP 3

Transmisja tunelowa i kapsułkowanie O transmisji kapsułkowanej datagramów IP mówimy wtedy, gdy protokół IP korzysta bezpośrednio z transmisji realizowanych przez sprzęt sieciowy, tzn. każdy datagram przeznaczony do wysłania jest umieszczany (kapsułkowany) w tzw. ramce (frame) lub pakiecie sieciowym. O transmisji tunelowej mówimy zaś wtedy, gdy protokół IP przesyła datagramy korzystając z usług protokołu wysokiego poziomu, np. korzysta z warstwy transportowej innego protokołu. 4

Transmisja tunelowa na poziomie aplikacyjnym program pocztowy z szyfrowaniem SSL oprogramowanie po stronie klienta transmisja niekodowana transmisja szyfrowana SSL Serwer POP3/IMAP stunnel oprogramowanie po stronie serwera Program stunnel (http://www.stunnel.org) typowo odbiera zgłoszenia na portach 995 (POP3) i 993 (IMAP). Po rozszyfrowaniu odebrane dane są przekazywane do serwera poczty (110, 143). Odpowiedz serwera jest szyfrowana i wysyłana do klienta. 5

Serwer proxy klient serwer serwer proxy Serwer proxy pośredniczy w transmisji pomiędzy klientem a serwerem. Serwerów proxy zwykle używa się aby: zabezpieczyć komputery w sieci lokalnej, przyspieszyć otrzymywanie odpowiedzi na powtarzające się zapytania (np. strony www squid), umożliwić wielu komputerom korzystanie z jednego publicznego adresu IP (Network Address Translation). Inne zastosowania serwerów pośredniczących: VPN, VOIP, GSM/GPRS,... 6

Zewnętrzna reprezentacja danych Dana jest liczba 32 bitowa 0 0 2 8 W zależności od komputera ten ciąg bajtów może być różnie interpretowany. Np. 2 2 8 + 8 2 0 = 520 lub 8 2 24 + 2 2 16 = 134217728 + 131072 = 134348800 Dla programistów konstruujących oprogramowanie typu klient serwer wybór sposobu reprezentacji danych przesyłanych między partnerami jest istotnym problemem. Jeśli komputery różnią się reprezentacją przesyłanych danych to muszą one zostać poddane konwersji. 7

Asymetryczna konwersja danych - jedna ze stron (klient lub serwer) dokonują odpowiedniej konwersji danych. W tej technice programista musi uwzględnić konwersję dla każdej pary różnych typów architektury komputerów, na których system może być używany. Zewnętrzna reprezentacja danych Jeśli w realizacji programów klient serwer zakłada się asymetryczną konwersję danych między rodzimą reprezentacją klienta a rodzimą reprezentacją serwera to liczba potrzebnych wersji takiej pary programów wzrasta proporcjonalnie do kwadratu liczby różnych typów architektury (problem N 2 dla konwersji danych). 8

Symetryczna konwersja danych obie strony wykonują konwersję danych z postaci rodzimej do standardowej reprezentacji danych przesyłanych przez sieć zewnętrznej reprezentacji danych (external data representation). Zalety: brak troski o architekturę komputera, na którym działa partner komunikacji, łatwiejsza implementacja i konserwacja programu Wady: dodatkowy koszt związany z konwersją danych, w przypadku gdy nie byłaby ona potrzebna, przesyłanie dodatkowych informacji przez sieć wymaganych przez specyfkację. Standardowy sieciowy porządek bajtów 9

XDR najpopularniejszy standard sieciowej reprezentacji danych opracowany przez frmę SUN [RFC 1014]. Podstawowy blok danych 4 bajty. Standardowy sieciowy porządek bajtów int [-2147483648, 2147483647] 4 bajty w formacie big endian (bajt najbardziej znaczący pod najniższym adresem): 0 0 2 8 = 520 Liczby ujemne notacja uzupełnieniowa do dwóch. Zapis bitów w ramach jednego bajta defniowany przez inne standardy. Zwykle little endian. unsigned int [0, 4294967295] 4 bajty, big endian. enum równoważnie jak zbiór int'ów, bool równoważne do enum { FALSE = 0, TRUE = 1 }. 10

Standardowy sieciowy porządek bajtów hyper (unsigned hyper) 8 bajtowy int (unsigned int), format big endian. float 4 bajtowa liczba zmiennoprzecinkowa: 1 bajt 2 bajt 3 bajt 4 bajt S E (8 bitów) F (23 bity) liczba = (-1) S 1.F 2 E-B. (B=127) Przykład: (5.78125) 10 = (4 + 1 + 1/2 + 1/4 + 1/32) 10 = (101.11001) 2 = (-1) 0 (1.0111001) 2 2 2 = = 0 10000001 01110010000000000000000 Pierwszy bit najbardziej znaczący. Stałe typu NaN (not a number) nie powinny być przesyłane przez sieć, 11

Standardowy sieciowy porządek bajtów double 8 bajtowa liczba zmiennoprzecinkowa: E 11 bitów, F 52 bity, B = 1023, 1 bajt 2 bajt 3 bajt S E (11 bitów) 4 bajt 5 bajt 6 bajt 7 bajt 8 bajt F (52 bity) void 0 bajtów, liczba = (-1) S 1.F 2 E-B. (B=1023) 12

Standardowy sieciowy porządek bajtów opaque identyfikator[n] dane nie poddane konwersji (n bajtów). Ewentualnie uzupełniane na końcu zerowymi bajtami (tak aby długość ciągu n+r była wielokrotnością 4). bajt 0 bajt 1... bajt n-1... bajt n+r-1 opaque identyfikator<n> - ciąg danych nie poddanych konwersji o nieustalonej długości (maksymalnie n = 2 32-1 bajtów). Długość kodowana jako unsigned int, długość (4 bajty) kolejne bajty uzupełnione zerami na końcu (jak w opaque) 13

Standardowy sieciowy porządek bajtów string identyfikator<n> - tekst kodowany jest podobnie do opaque o nieustalonej długości. Znaki tekstu są kolejno umieszczane w obszarze danych, tablica o ustalonej długości kolejno zapisane elementy tablicy (każdy element może mieć inną długość string), element 0 element 1... element n-1 tablica o nieustalonej długości (max n = 2 32-1 kodowane jako unsigned int) n element 0 element 1... element n-1 14

Standardowy sieciowy porządek bajtów struktury - struct { komponent A; komponent B;... }; komponent A komponent B... unie union{ komponent A; komponent B; }; numer komponentu (4 bajty) komponent 15

Procedury konwersji XDR Do konwersji można wykorzystać funkcje biblioteczne <rpc/xdr.h> Najpierw trzeba utworzyć obiekt XDR. W przypadku konwersji strumieniowej należy użyć funkcji: void xdrmem_create(xdr *xdrs, char *buf, int blen, int op); xdrs wskaźnik do utworzonej struktury zarządzającej konwersją strumieniową, buf wskaźnik do bufora dla konwertowanego strumienia danych, blen rozmiar bufora, op tryb pracy konwertera: XDR_ENCODE, XDR_DECODE lub XDR_FREE. 16

Procedury konwersji XDR Poszczególne procedury konwersji XDR mogą wykonywać konwersję w obydwu kierunkach. Wywołana procedura stwierdza w którym kierunku należy przeprowadzić konwersję, badając odpowiednią informację w strumieniu XDR, na którym działa. Jeśli *xdrs został utworzony z parametrem XDR_DECODE, odczytana zmienna zostanie wpisana w komórkę wskazaną przez pi. 17

Procedury konwersji XDR Jeśli (*xdrs) został utworzony w trybie XDR_ENCODE do konwersji liczby należy użyć jednej z funkcji konwertujących np: int xdr_int(xdr *xdrs, int *pi); xdrs wskaźnik do struktury zarządzającej konwersją strumieniową, pi wskaźnik do konwertowanej liczby; nagłówek strumienia 0 1 2 3 4 5 nagłówek strumienia 0 1 2 3 4 5 0 0 2 8 18

Procedury konwersji XDR Program może zażądać, aby procedury XDR po przekształceniu każdego elementu danych do postaci zewnętrznej automatycznie wysyłały ten element przez połączenie TCP. W tym celu należy użyć funkcji fdopen() i xdrstdio_create(): FILE * fdopen(int fd, char* mode); fd deskryptor istniejącego pliku (gniazda), mode typ dostępu do pliku (gniazda): r, r+, w, w+, a, a+ Wartość zwracana: wskaźnik do strumienia związanego z plikiem (gniazdem) lub NULL w przypadku błędu (errno). Funkcja fdopen() pozwala związać istniejące gniazdo TCP ze strumieniem FILE. 19

Procedury konwersji XDR Do powiązania konwertera XDR z dowolnym strumieniem danych służy funkcja xdrstdio_create(). void xdrstdio_create(xdr *xdrs, FILE *file, int op); xdrs - wskaźnik do utworzonej struktury zarządzającej konwersją strumieniową, FILE wskaźnik do struktury opisującej strumień danych, op tryb pracy konwertera: XDR_ENCODE, XDR_DECODE lub XDR_FREE. 20

Aby funkcje XDR mogły współpracować z oprogramowaniem używającym transmisji datagramowej opracowano alternatywny interfejs. Procedury konwersji XDR void xdrrec_create(xdr *xdrs, u_int sendsize, u_int recvsize, char *handle, int (*readit)(), int (*writeit)(); xdrs - wskaźnik do utworzonej struktury zarządzającej konwersją strumieniową, sendsize, recvsize rozmiary buforów: wyjściowego i wejściowego, readit, writeit funkcje wywoływane po opróżnieniu / zapełnieniu bufora w celu pobrania/wysłania danych. Posiadają trzy argumenty: void *handle, void *buffer, void *len. 21

Procedury konwersji XDR Użycie rekordów umożliwia wykorzystywanie dodatkowych funkcji: bool_t xdrrec_endofrecord(xdr *xdrs, bool_t flushnow) - wstawia znacznik końca rekordu bool_t xdrrec_skiprecord(xdr *xdrs) - pozwala pominąć rekord bool_t xdrrec_eof(xdr *xdrs) - zwraca true jeśli osiągnięto koniec pliku w powiązanym ze strukturą *xdrs strumieniu. 22

Podsumowanie Poza klasycznymi zastosowaniami, model klient serwer może być wykorzystany także do innych celów. Przedstawione przykłady odnoszą się do przekazywania i konwersji pakietów. We wszystkich zastosowaniach należy pamiętać o konwersji danych pomiędzy różnymi architekturami sprzętowymi klienta i serwera. Najpowszechniej używany jest tu standard XDR zakładający symetryczną konwersję danych. 23