Sieci komputerowe
Podsumowanie DHCP Serwer DHCP moŝe przyznawać adresy IP według adresu MAC klienta waŝne dla stacji wymagającego stałego IP np. ze względu na rejestrację w DNS Klient moŝe pominąć komunikat DHCPDISCOVER jeśli zna adres serwera DHCP Czas dzierŝawy adresu jest ustalany między klientem i serwerem, który zobowiązuje się nie udostępniać przydzielonego adresu nikomu na wyznaczony czas Klient moŝe prosić serwer o wydłuŝenie czasu dzierŝawy
Warstwa transportowa Warstwa transportowa jest odpowiedzialna za całość transferu danych pomiędzy aplikacjami. Obejmuje następujące funkcje: Umożliwia jednoczesną komunikację poprzez sieć wielu aplikacjom uruchomionym na tym samym urządzeniu. Zapewnia (jeśli jest to wymagane), że wszystkie dane są dostarczone w sposób niezawodny, w dobrej kolejności i do odpowiedniej aplikacji. Używa mechanizmów obsługi błędów.
Warstwa transportowa - zadania Dane aplikacji Warstwa transportowa przygotowuje dane aplikacji do transportu w sieci oraz przetwarza dane warstwy sieci do postaci wykorzystywanej przez warstwę aplikacji Dane z sieci
Warstwa transportowa - cele Warstwa transportowa zapewnia segmentację danych i konieczną kontrolę nad składaniem poprzez: śledzenie indywidualnej komunikacji pomiędzy aplikacjami na źródłowym i docelowym hoście, segmentację danych i odpowiednie oznaczanie każdego fragmentu, łączenie podzielonych segmentów w strumienie danych, identyfikację różnych aplikacji.
Zadania warstwy transportowej Umożliwia komunikowanie się aplikacji działających na urządzeniach Warstwa transportowa dokonuje wymiany danych pomiędzy aplikacjami uruchomionymi na urządzeniach w sieci
Sterowanie konwersacjami Głównymi funkcjami spełnianymi przez wszystkie protokoły warstwy transportowej są: Segmentacja i scalanie - większość sieci ma określone maksymalne ilości danych, które mogą być umieszczane w jednym segmencie. Dodatkowo niektóre protokoły transportowe zapewniają następujące funkcje: Konwersacja zorientowana połączeniowo. Niezawodność dostarczania danych. Dostarczanie w odpowiedniej kolejności. Kontrola przepływu. Mulitpleksowanie komunikacji - kaŝdy host w sieci moŝe mieć uruchomionych jednocześnie wiele aplikacji. KaŜda z tych aplikacji czy usług ma przyporządkowany adres nazywany portem, aby warstwa aplikacji mogła ustalić do kogo skierować otrzymane dane. Segmentacja pozwala stacją na multipleksację.
Funkcje warstwy transportowej
Warstwa transportowa dzieli dane na segmenty
Scalanie segmentów TCP przywracanie kolejności Różne segmenty mogą wędrować różnymi trasami Dane dzielone są na segmenty Segmenty docierają do celu nie po kolei TCP układa segmenty we właściwej kolejności
Sterowanie konwersacjami Ustanawianie sesji- w celu zapewnienia usługi zorientowanej połączeniowo nawiązuje sesję pomiędzy aplikacjami. Dostarczanie w odpowiedniej kolejności -fragmenty danych mogą dotrzeć w złej kolejności. Dzięki numerowaniu i sekwencjonowaniu warstwa transportowa moŝe zapewnić, Ŝe dane zostaną scalone w odpowiedniej kolejności. Kontrola przepływu - hosty sieciowe mają ograniczone zasoby, takie jak pamięć czy przepustowość. W przypadku powstania zatoru istnieje potrzeba regulacji ilości danych jakie źródło moŝe wysłać do hosta docelowego.
Sterowanie konwersacjami Niezawodność dostarczania danych- zapewnienie, Ŝe wszystkie kawałki zostaną prawidłowo dostarczone, dokonując retransmisji brakujących lub uszkodzonych fragmentów. W warstwie transportowej występują następujące podstawowe operacje związane z zapewnianiem dostarczania: śledzenie transmitowanych danych, potwierdzanie odbioru danych, retransmisja niepotwierdzonych danych. W celu zapewnienia niezawodności wymagane jest zwiększenie ilości danych kontrolnych wymienianych pomiędzy hostami.
Protokoły transportowe- wymagana niezawodność Właściwości protokołu: Szybkość Mały narzut Brak wymagania potwierdzeń Brak wymagania retransmisji Dostarcza dane w kolejności w jakiej otrzymuje Właściwości protokołu: Niezawodność Potwierdzenie danych Retransmisja zagubionych danych Dostarczenie danych w prawidłowej kolejności Charakter aplikacja odpowiada za wybór protokołu
Protokoły TCP i UDP Oba te protokoły są w stanie zarządzać wieloma równoczesnymi transmisjami. TCP (ang. Transmission Control Protocol) - Aplikacje wykorzystujące protokół TCP to: przeglądarki stron WWW, e-mail, programy do przesyłania plików. UDP (ang. User Datagram Protocol) - Aplikacje, które uŝywają protokołu UDP to m.in.: system nazw domenowych DNS (ang. Domain Name System), aplikacje przesyłające strumienie Video, transmisja głosu przez sieć IP (VoIP), DHCP.
Protokoły Podstawy TCP/IP są efektem pracy grupy rozwojowej sieci ARPANET stworzonej w 1968 roku w ramach programu Departamentu Obrony USA W 1971 roku projekt ARPANET został przejęty przez amerykańską agencję zaawansowanych badań systemów obrony DARPA (ang. Defence Advanced Research Projects Agency) W 1975 roku przeprowadzono pierwszy test połączenia TCP/IP między dwoma sieciami w Stanford and University College London (UCL) W 1977 roku zostało zestawione połączenie między 3 sieciami TCP/IP w USA, Wielkiej Brytanii i Norwegii
Protokoły Obecnie protokoły TCP/IP są najbardziej popularnym zestawem protokołów dzięki rozwojowi Internetu. Architektura TCP/IP została opracowana w celu umoŝliwienia komunikacji pomiędzy systemami pochodzącymi od wielu róŝnych dostawców. Architektura TCP/IP jest powiązana z rozwojem Internetu, je standaryzacją i rozwojem zajmuje się organizacja IETF (ang. Internet Engineering Task Force), która publikuje dokumenty o nazwie RFC (ang. Request For Comments).
Protokół TCP TCP (ang. Transmission Control Protocol) to protokół zorientowany połączeniowo działający w warstwie transportowej modelu TCP/IP Został zdefiniowany w RFC793 Protokół TCP zapewnia niezawodny system transmisji umoŝliwia sterowanie przepływem, potwierdzanie odbioru, zachowanie kolejności danych, kontrolę błędów, przeprowadzanie retransmisji WiąŜe się to z dość skomplikowanym i rozbudowanym sposobem obsługi i duŝym nagłówkiem pakietu
Adresacja portów identyfikacja konwersacji Połączenie numeru portu i adresu IP jednoznacznie identyfikuje konkretny proces na konkretnym urządzeniu. Taka kombinacja zwana jest gniazdem (ang. socket). Dane związane z różnymi aplikacjami kierowane są do odpowiedniej aplikacji dzięki zastosowaniu unikalnych numerów portów
Porty TCP i UDP Porty w protokołach TCP i UDP są uŝywanymi w Internecie do identyfikowania działających procesów sieciowych Numery portów to liczby naturalne z zakresu od 0 do 65535 (2 16-1) Numery portów od 0 do 1023 są ogólnie znane (ang. well-known port numbers) i zarezerwowane dla standardowych usług sieciowych Porty o numerach od 1024 do 49151 mogą być uŝywane po zarejstrowaniu w organizacji IANA Lista zarejestrowanych portów jest dostępna pod adresem http://www.iana.org/assignments/portnumbers
Przykładowe porty TCP i UDP ftp-data 20 (TCP) File Transfer Protocol telnet 23 (TCP) smtp 25 (TCP) Simple Mail Transfer Protocol DNS 53 (TCP, UDP) Domain Name Server http 80 (TCP) World Wide Web HTTP pop3 110 (TCP) Post Office Protocol - Version 3 snmp 161 (UDP) Simple Network Management Protocol https 443 (TCP, UDP) http protocol over TLS/SSL Zarezerwowane: 8080 (TCP) dodatkowy port dla HTTP 5060 (UDP) dodatkowy port SIP (VoIP)
Procesy TCP na serwerze. Wysyłanie Ŝądania TCP Klient wysyła żądanie TCP do serwera Serwer odpowiada klientowi TCP używa portu źródłowego z pakietu żądania jako portu docelowego
Nagłówek TCP 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Dł. Nagł. Port źródłowy Port docelowy Numer sekwencyjny Numer potwierdzenia Rezerwa Znaczniki Okno Suma kontrola Wskaźnik priorytetu Opcje Uzupełn. Suma Numer Port Okno Długość Poleźródłowy znaczniki kontrolna określa potwierdzenia sekwencyjny nagłówka liczbę oraz zawiera służy wielkość port bajtów do zawiera bitowe docelowy kontroli jaką nagłówka numer flagi może poprawności zawierają dotyczące pierwszego zaakceptować sekwencyjny w 32 bitowych numery całego dodatkowych bajta w pakietu następnego słowach odbiorca portów segmencie informacji/poleceń procesów oczekiwanego aplikacyjnych dotyczących bajtuwysyłających danego po stronie pakietu odbiorczej, oraz jednocześnie odbierających potwierdza dane korzystających poprawne z odebranie usług TCPpoprzednich bajtów
Znaczniki TCP POLE KONTROLNE U R G A C K P S H R S T S Y N F I N URG (Urgent Pointer) - ustawiony na 1 oznacza ważność pola priorytet. ACK (Acknowledgement) - ustawiony na 1 oznacza ważność pola numer potwierdzenia. PSH (Push) RST (Reset) SYN (Synchronize) FIN (Finished) żądanie przesłania otrzymanych danych do aplikacji w pierwszej kolejności. ponowna inicjalizacja połączenia. synchronizacja numerów sekwencyjnych podczas nawiązywania połączenia. ustawiony na 1 oznacza koniec transmisji.
Połączenie TCP Do nawiązania połączenia TCP wykorzystywana jest procedura three-way handshaking Host inicjujący połączenie wysyła pakiet zawierający segment TCP z ustawioną w polu znaczniki flagą SYN Host odbierający połączenie, jeśli zechce je obsłuŝyć, odsyła pakiet z ustawionymi flagami SYN i ACK Następnie host rozpoczynający transmisję wysyła pierwszą porcję danych z ustawioną flagę ACK. Jeśli host odbierający połączenie nie chce lub nie moŝe odebrać połączenia odpowiada pakietem z ustawioną flagą RST Zakończenie połączenia polega na wysłaniu flagi FIN
Three-way handshaking CLOSED A B LISTEN czas SYN-SENT ESTABLISHED <SEQ=100><CTL=SYN> <SEQ=300><ACK=101><CTL=SYN,ACK> SYN-RECEIVED SYN-RECEIVED ESTABLISHED <SEQ=101><ACK=301><CTL=ACK> <SEQ=101><ACK=301><CTL=ACK><DATA> ESTABLISHED ESTABLISHED ESTABLISHED
Nawiązanie i kończenie połączenia TCP Używając 4 etapowego procesu, flagi są wymieniane celem zakończenia połączenia TCP.
Mechanizm okna Potwierdzenia segmentów TCP Rozpoczynam z bajtem nr 1, wystałam 10 bajtów Odebrałem 10 bajtów, począwszy od nr 1, spodziewam się następnego o nr 11 Kolejne bajty od numeru 11
Mechanizm okna Mechanizm przesuwającego się okna (ang. Sliding window) jest uŝywany w TCP do kontroli przepływu Rozmiar okna określa ilość danych, które nadawca moŝe wysłać bez potwierdzenia odbioru od odbiorcy Po otrzymaniu pozytywnego potwierdzenia nadawca moŝe wysłać kolejne dane aŝ do limitu wskazanego przez rozmiar okna Brak otrzymania potwierdzenia w określonym czasie powoduje retransmisje danych Potwierdzenie negatywne (np. z powodu błędu w danych) równieŝ prowadzi do retransmisji Opracowano wiele algorytmów mających na celu usprawnienie mechanizmu okna w TCP
Mechanizm okna przykład Rozmiar wysyłanych danych wynosi 2 Rozmiar okna wynosi 4 (czyli dwa pakiety) Nadawca 9 8 7 6 5 4 3 2 1 0 Potwierdzone -1 15 Odbiorca ACK=5 ACK=1 Odebrane -13579
UDP UDP (ang. User Datagram Protocol) to protokół bezpołączeniowy nie posiadający mechanizmów sprawdzających poprawność transmisji UDP został opisany w RFC768 Protokół UDP jest przeznaczony do transmisji krótkich wiadomości lub danych wymagających szybkiego przesłania
Nagłówek UDP 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Port źródłowy Długość Port docelowy Suma kontrola Port Długość Suma źródłowy kontrolna nagłówka oraz służy wielkość port do docelowy kontroli nagłówka poprawności zawierają w 32 bitowych numery całego pakietu słowach portów procesów aplikacyjnych wysyłających oraz odbierających dane korzystających z usług UDP
UDP Transport danych z małym narzutem Nadawca Odbiorca Brak ustanawiania połączenia
Scalanie datagramów UDP Różne datagramy mogą wędrować różnymi trasami Dane dzielone są na datagramy Datagramy docierają do celu nie po kolei Datagramy odebrane poza kolejnością nie są układane w kolejności nie ma retransmisji zagubionych datagramów
Wysyłanie Ŝądania przy pomocy UDP Klient wysyła żądanie przy pomocy UDP do serwera Serwer w odpowiedzi używa numerów dobrze znanych portów jako portów źródłowych Klient 1 oczekuje odpowiedź serwera DNS skierowaną na port 49152 Klient 2 oczekuje na odpowiedź serwera Radius skierowaną na port 51152
TCP kontra UDP Kontrola poprawności transmisji DuŜy narzut informacyjny Potrzeba zestawiania połączenia Szybka transmisja Sterowania przepływem Identyfikacja procesów TCP TAK TAK TAK NIE TAK TAK UDP NIE NIE NIE TAK NIE TAK
Dziękuję za uwagę