From 32719440114d7ab2c1e5de8357a5bd2336a79afa Mon Sep 17 00:00:00 2001
From: xf0r3m
+ Warstwa transportowa jest odpowiedzialna za komunikacjÄ pomiÄdzy + aplikacjami uruchomionymi na różnych komputerach. Wraz z warstwami + poniżej odpowiedzialna jest za komunikacjÄ sieciowÄ . +
++ Warstwa transportowa jest odpowiedzialna za takie czynnoÅci jak: +
++ Warstwa IP nie ma możliwoÅÄ bezpoÅredniego dostarczenia danych w + docelowe miejsce. OkreÅlajÄ to protokoÅy warstwy transportowej sÄ one + odpowiedzialne za sposób wymiany danych miÄdzy hostami oraz + za speÅnienie wymagaÅ wykorzystywanych poÅÄ czeÅ. ProtokoÅami wartsty + transportowej sÄ TCP oraz UDP. +
++ ProtokoÅ TCP wybierany jest przez aplikacje wymagajÄ ce niezawodnego + poÅÄ czenia. FunkcjonalnoÅciÄ warstyw transportowej, za które odpowiada + protokóŠTCP to: +
++ ProtokoÅ UDP dostacza bardzo podstawowywch funkcji dostarczania danych + miÄdzy okreÅlonymi aplikacjiami, przy minimalnym obciÄ Å¼eniu oraz + weryfikacji poprawnoÅci przesyÅanych danych. Cechami, które wyróżniajÄ + ten protokoÅ jest: +
++ ProtokóŠUDP jest również wykorzystywany dla aplikacji dziaÅajacej na + zasadzie Å¼Ä danie-odpowiedź, gdzie iloÅÄ danych jest nie wielka, nie + ma tam również retransmisji, przez co taka wymiana informacji może + zostaÄ bardzo szybko zrealizowana. PrzykÅad: transmisja gÅosu (VoIP), + komunikacja z DNS. Wymagane cechy: +
++ Inne aplikacje, którym bardziej zależy na jakoÅÄ przesyÅanych danych + wybiorÄ transmisjÄ opartÄ na protokole TCP. PrzykÅad: Poczta + elektroniczna (protokoÅy IMAP/SMTP) czy przeglÄ danie sieci WWW (HTTP). + Wymagane cechy: +
++ Podczas ekapsulacji dane z warstwy aplikacji trafiajÄ do wartstwty + transportowej. Tutaj surowe dane z aplikacji sÄ zamieniane w segmenty + po dodaniu nagÅówka wykorzystywane do transmisji protokoÅu warstwy + transportowej. Poniżej znajduje siÄ obraz przedstawiajÄ cy nagÅówek + TCP. +
+ ++ Segmenty UDP rownież posiadajÄ nagÅówki, jednak nie tak rozbudowne + jak w przypadku TCP. Dla porównania nagÅówek UDP zawiera tylko 4 pola. +
+ ++ ProtokoÅy TCP oraz UDP wykorzystujÄ numery portów do zarzÄ dzania + dziaÅajÄ ch w tym samym czasie poÅÄ czeÅ. Port źródÅowy wskazuje + aplikacjÄ ÅºródÅowÄ na lokalnym hostÅcie natomast port docelowy + aplikacjÄ docelowÄ na hoÅcie zdalnym. +
++ Porty znajdujÄ siÄ wewnÄ trz segmentów warstwy transportowej, Segmenty + natomiast sÄ enkapsulowane w pakiety IP. Kombinacja adresu IP oraz + numeru portu nie ważne, z której strony w transmisji nazwany jest + gniazdem. Gniazda umożliwiajÄ klientom wielkrotne + poÅÄ czenia z tym samym serwerem, czy tÄ samÄ usÅugÄ . +
++ Portów ze wzglÄdu na rozmiar pola portu docelowego i źródÅego ma + dÅugoÅÄ 16-bitów, to bez modyfikacji nagÅówków porty majÄ zakres + od 0 do 65535. WiÄkszoÅÄ portów jest + już przydzielona i mozna je podzieliÄ na trzy mniejsze zakresy, +
++ Nie bÄdÄ wypisywaÅ tutaj jakiÅ list. Wszystko jest dostÄpne w + Internecie lub w dystrybucjach Linuksa w pliku /etc/services. +
++ Warto odczasu do czasu zwróciÄ uwagÄ na to jakie poÅaczenia sÄ + realizowane w naszym systemie w zależnoÅci od systemu możemy + wykorzystaÄ do tego albo polecenie netstat dla + MS Windows lub ss dla dystrybucji Linuksa. +
++ Każdy proces aplikacji serwera jest skonfigurowany w taki sposób, aby + korzystaÄ z portów. Dwie aplikacje na tym samym serwerze nie mogÄ mieÄ + przypisanych tych samych portów. Aktywna aplikacja z przypisanym + portem uznaje siÄ za otwarÄ , oznacza to mniej wiÄcej + tyle, że jej proces przyjmie dane przekazane do tego portu. Oznacza to + również, że każde Å¼Ä danie od klientów jest akceptowane i dane + przekazywane sÄ do procesu aplikacji. +
++ Klient nawiÄ zuje poÅÄ czenie w tzw. schemacie + Three-Way-Handshake. W wyglÄ da to mniej wiÄcej w taki sposób +
++ Zamykanie poÅÄ czeÅ odbywa siÄ podobny sposób. JeÅli nie ma wiÄcej + danych do przesÅania, klient wysyÅa segment z ustawionÄ flaga FIN. + NastÄpnie serwer wysyÅa dwa segementy jeden z odpowiedziÄ na wysÅanÄ + flage FIN oraz drugi segment z ustawionÄ flagÄ FIN wysÅanÄ do klienta. + Kiedy klient odbierze taki segment, potwierdza za pomocÄ flagi ACK, + jego odebranie i poÅÄ cznie zostaje zakoÅczone. +
++ Flagi kontrone wykorzystywane do zarzÄ dzania poÅÄ czeniami TCP: +
++ W przypadku transmisji sieciowej może dojÅÄ do zgubienia czÄÅci danych + (pakietu) z róznych przyczny, rownie istotna może byÄ Åcieżka jakÄ + poruszajÄ siÄ pakiety do miejsca docelowego, pakiety z tego samego + źródÅa wysÅane innÄ ÅcieżkÄ mogÄ dotrzeÄ do celu poźniej niż inne. + Wówczas warstwa transportowa otrzymaÅa dane nie pokolei. Podobnie jest + w przypadku utracenia danych, ponieważ muszÄ one zostaÄ + retransmitowane. Jednak zawarty w nagÅówkach numer sekwencji pozwoli + mechnizmom zawartym w protokole TCP zÅożyÄ widomoÅÄ, tak aby nie + różniÅa siÄ niczym od tej wysÅanej przez nadawcÄ. +
++ Ciekawym mechnizmem może byÄ SACK. ZaÅóżmy taki + przypadek, że mamy ustawione okno na odpowiedź po 10 segemencie, ale + protokoÅ TCP uznaÅ, że 3 i 4 segment sÄ uszkodzone i wymagana jest ich + retransmisja. To w normalnym przypadku nadawca dowiedziaÅ by siÄ o tym + fakcie dopiero po przesÅaniu 10 segmentu. No dobrze troche by to + opóźniÅo transmisje, ale mamy już nasz 3 i 4 segment, a to nie koniec + ponieważ okno ustawione na 10 segment, to otrzymamy także segmenty od + 5 do 10. To jeÅli uda siÄ ustaliÄ w SACK czyli + odpowiedź selektywna. W momecie gdy nadawca dowiaduje, + że potrzebna jest retransmisja w dodatkowym polu w segemencie + potwierdzenia zwracany jest numer sekwencyjny segmentu, który wymaga + retransmisji ale w dodatkowym polu SACK znajdujÄ siÄ te numery + sekwencyjne, które odbiorca już ma i uznaÅ je za poprawne. +
++ Kontrola przepÅywu polega na dostosowaniu iloÅci wysyÅanych danych do + możliwoÅci odbiorcy. W przypadku protokoÅu TCP, kontrola przepÅywu + pomoga utrzymaÄ stablinoÅÄ i rzetelnoÅÄ tego protokoÅu. W jedym z + takich parametrów jest MSS, który okreÅla wielkoÅÄ + danych niesionych w pakietach. Standardowo dla Etherenetu jest 1460B. + Maksymalne MTU dla ethernetu to 1500B, od tego musimy odjÄ Ä 20B dla + nagÅówka IP oraz 20B dla nagÅówka TCP. Wiec pozostaje 1460B na dane z + warstwy aplikacji. +
++ ProtokóŠTCP ma również dodatkowe mechanizmy dziÄki, którym mocno + obciażona stacja robocza, nie zostanie zalana segmentami w momencie + kiedy nie jest wstanie odpowiedzieÄ, tym mechnizmem zarzÄ dza nadawca i + nazywajÄ sie Congestion Avoidance - unikanie zatorów. +
++ ProtokóŠUDP nie zestawia poÅÄ czenia. Ma on również maÅy narzut, + ponieważ jego nagÅówek jest mniejszy i nie zarzÄ dza on ruchem. +
++ UDP nie korzysta z numerów sekwencji tak jak robi to TCP, przez co nie + możliwoÅci uprzÄ dkowania pakietów w takiej samej kolejnoÅci w jakiej + zostaÅy wysÅane. +
++ Serwery korzystajÄ ce z transmisji UDP wykorzystujÄ dobrze znane lub + zarejestrowane porty. Kiedy datagram UDP dotrze do komputera + docelowego jest on przekazywany do aplikacji na podstawie przypisanego + jej numery portu. +
++ Klienci transmisji UDP przypisujÄ sobie porty dynamicznie, przeważnie + z tej ostatniej grupy. NastÄpnie ten port oraz port docelowy sÄ + używane w nagÅówkach datagramów. +
++ W tym rodziale dowiedzieliÅmy za co jest odpowiedzialna warstwa + transportowa oraz jakie sÄ jej funkcje. PoznaliÅmy dwa protokoÅy + tej warstwy - TCP oraz UDP, scharakteryzowaliÅmy ich nagÅówki. + NastÄpnie skupiliÅmy siÄ na opisaniu funkcjonalnoÅci protokoÅu TCP, na + koniec krótko zostaÅ przedstawiony protokóŠUDP. +
W warstwie aplikacji znajdujÄ siÄ elementy komunikacji sieciowej, -- 2.39.5