Subwencja ogólna składa się z 3 części



Yüklə 2,44 Mb.
səhifə50/53
tarix07.09.2018
ölçüsü2,44 Mb.
#79700
1   ...   45   46   47   48   49   50   51   52   53

[25] Regulamin Organizacyjny Urzędu Gminy w Iwkowej,

[26] J.P.Tarmo, M. Sieniuć, J. Sulimierski, J. Wyporska Samorząd Terytorialny w POLSCE Warszawa 2002, s.160-161,

[27] Tamże, s.162-163,

[28] Tamże, s.167-168.

[29] Statuty Sołectw Dobrociesz, Drużków Pusty, Iwkowa, Kąty, Połom Mały, Porabka Iwkowska, Wojakowa,

[30] Tamże, s 140-141,

[31]K. Winiarska, A.J. Wołoszyn Rachunkowość budżetowa Dom wydawniczy ABC Warszawa 2002, s. 13-15,

[32] J.P.Tarmo, M. Sieniuć, J. Sulimierski, J. Wyporska, dz.cyt., s. 147-148.,


[33] Michał Bartosiewicz Wspólnota Samorządowa Pismo Samorządu Terytorialnego, Tygodnik Nr 9/625z dnia 02.03.2002r.,

s. 46-47,

[34] M. Jastrzębska Instrumenty zarządzania finansami gminy-SAMORZĄD TERYTORIALNY, Miesięcznik Nr 10, Warszawa

październik 1998, s.43,

[35] S. Korycki, j. Kuciński, Z.Trzciński, J. Zaborowski Zarys prawa, Warszawa 2002, s.223,

[36] mgr Sylwia Kimak Kurs z przedmiotu: Prawo finansowe materiały dydaktyczne Distance Learning,

[37] A Majchrzycka-Guzowska Finanse i prawo finansowe Warszawa 2002, s. 221,

[38] strona internetowa: www.minrol.gov.pl,

[39] Cz. Siekierski Wyciąg z Programu Operacyjnego SAPARD, Warszawa 2002,

[40] J. Piechota Dzieje Iwkowej 1325-1960, monografia w maszynopisie 1969, s. 28,


UNIWERSYTET WARMIŃSKO-MAZURSKI

WYDZIAŁ MATEMATYKI I INFORMATYKI


Adam Kiewisz


Bezpieczeństwo systemów komputerowych a hakerzy


Praca napisana w Katedrze

Informatyki i Badań Operacyjnych

pod kierunkiem

dr Haliny Tańskiej


Olsztyn 2004

Spis treści
Wstęp……………………………………………………………………………. 3

Rozdział I – Problem bezpieczeństwa………..…………….………… ……….. 4

1.1. Rozwój Internetu……………………………….………………………. 4

1.2. Przyczyny naruszenia bezpieczeństwa………….……………….…..… 5

1.3. Postać komputerowego włamywacza……..…….…………………....... 6

1.4. Protokół TCP/IP……………………………….……………….……… 8

Rozdział II – Ataki na systemy komputerowe………….………….………… 16

2.1. Rodzaje ataków………………………………….…………….……….16

2.2. Ataki pasywne…………………………………..…………….………..17

2.2.1. Skanowanie……………….……….………….…………...……..17

2.2.2. Węszenie……………………….…….……………..…..………..25

2.3. Ataki aktywne…………….…………………………………………….28

2.3.1. Podrabianie…………………….………………….…….……….28

2.3.2. Przejmowanie sesji……………….………………………….…..32

2.3.3. Konie trojańskie………….………………………....……………35

2.3.4. Ataki typu DoS…….……….……………………………………38

2.3.5 Ataki przepełnienia buforu..…….……………....……………….44

Rozdział III – Rodzaje zabezpieczeń systemów komputerowych…………….. 47

3.1. Podstawowe zagadnienia bezpieczeństwa…………..………….……….47

3.2 Techniki zabezpieczeń przed włamaniami……………….. …………….51

3.2.1 Firewall……………..………………………………………………51

3.2.2 Usługi szyfrowania………..……………………………….……….60

3.2.3 Kerberos……..…………………………………………….……….64

Zakończenie…………………………………………………………….……….68

Streszczenie……………………………………………………………………..69

Bibliografia…………………………….………………………………………..70

Spis tabel i rysunków……………………………………………………………72

Wstęp
W ostatnich latach obserwuje się dynamiczny rozwój Internetu. Ilość jego użytkowników wzrasta, co spowodowane jest możliwościami, jakie nam daje komunikacja z całym światem. Coraz więcej osób korzysta z Internetu zarówno w domu, jak i w pracy zawodowej. Staje się on powoli nieodłącznym elementem naszego codziennego życia. Zrobienie zakupów nie wiąże się już jednoznacznie z pójściem do sklepu, a przeczytanie książki z koniecznością jej kupna. Wraz ze wzrostem znaczenia Internetu, powiększa się stale przepływ informacji poprzez sieć. Rośnie także ich znaczenie i niezbędna staje się ich poufność. Łatwo korespondować z ważnymi osobami, bądź dokonywać transakcji elektronicznych nie wychodząc nawet z domu. Dla niektórych osób, takie informacje mogą okazać się niezwykle cenne. Niezbędne jest zatem zadbanie o ich bezpieczeństwo, ponieważ ze względów finansowych, kradzież danych staje się powoli nową profesją. Można sobie wyobrazić znaczenie, jakie miałoby pozyskanie cennych informacji przez jedną z konkurujących ze sobą firm.



Celem pracy jest uświadomienie, co do potencjalnych zagrożeń, jakie niesie ze sobą podłączenie do Internetu. Opisując różne techniki ataków i metody ograniczające ich skuteczność, starałem się uzmysłowić niebezpieczeństwo, na jakie są narażone poufne informacje przesyłane w sieci. W pierwszym rozdziale postaram się wytłumaczyć problem, związany z włamaniami do systemów komputerowych pracujących w sieci, przeprowadzić charakterystykę osób niosących zagrożenia, oraz dokonam wprowadzenia do tematyki protokołu TCP/IP[1] będącego podstawą całego Internetu. Drugi rozdział zawiera opis najważniejszych technik, jakimi posługują się komputerowi włamywacze. W rozdziale trzecim poruszyłem problematykę metod ochrony przed potencjalnymi atakami. Zakres przedstawionych zagadnień nie wyczerpuje dogłębnie tematu pracy, ponieważ codziennie pojawiają się nowe techniki, ale z pewnością stanowi jego większą część.
Rozdział I Problem bezpieczeństwa
1.1 Rozwój Internetu
W późniejszych latach sześćdziesiątych, w okresie zimnej wojny, amerykańska agencja rządowa ARPA[2] rozpoczęła prace nad utworzeniem strategicznej sieci komputerowej zdolnej do przetrzymania ataku jądrowego lub kataklizmów. Owocem pracy była nowa sieć komputerowa nosząca nazwę ARPANet. Nikt wtedy nie przypuszczał, że postawiono wtedy pierwszy krok, na drodze, która prowadziła do ogólnoświatowej sieci Internet. W latach siedemdziesiątych ARPANet rozrosła się przekraczając wszelkie oczekiwania twórców. W 1983 roku wprowadzono protokół TCP/IP. Był on punktem zwrotnym w dziedzinie komunikowania się za pośrednictwem sieci komputerowej. Pozwalał on na pomyślne przełączanie pakietów wysyłanych przez różnorodne sieci o dowolnej strukturze i wielkości, niezależnie od różnic pomiędzy systemami operacyjnymi. W 1986 roku powstała sieć organizacji National Science Fundation- NFSNET, do której, z racji dysponowania przez nią stosunkowo szybkimi łączami, przyłączyła się większość ośrodków uniwersyteckich. Spowodowało to zamknięcie sieci ARPANET. W 1991 roku liczba komputerów przyłączonych do Internetu przekroczyła 100 tysięcy[3]. Według badań Nielsen-NetRatings w pierwszym kwartale 2003 roku, liczba osób na świecie z dostępem do internetu wynosiła 585 milionów[4]. Natomiast z badań NetTrack, przeprowadzonych przez SMG/KRC Poland Media S.A., 6,29 miliona, czyli 21,1 procent Polaków w wieku od 15 do 75 lat korzystało w czerwcu 2003 roku z Internetu, z tego w naszym kraju dwie trzecie Polaków posiada komputer w domu, a 21% ma również dostęp do sieci[5]. Przy tak rozbudowanej sieci za każdym razem, gdy łączymy się przez Internet, dostęp do nas maja setki tysięcy, a nawet miliony ludzi. Według raportu przygotowanego wspólnie przez Computer Security Institute (CSI) oraz FBI , wśród 251 firm w Stanach Zjednoczonych odnotowano prawie 202 milionów dolarów strat, spowodowanych włamaniami do sieci komputerowych[6] w skali światowej straty liczone są w miliardach dolarów. Trudno zatem uważać problemu przestępstw Internetowych jako mało istotny.

Rys. 1. Ilość użytkowników Internetu w Polsce w latach 1998-2003 [mln]

Źródło: Opracowanie własne
1.2. Przyczyny naruszenia bezpieczeństwa
Możemy wymienić główne przyczyny mogące doprowadzić do utraty informacji, bądź naruszenia jej poufności. Są to: awaria sprzętu, błąd oprogramowania, niedozwolona ingerencja z zewnątrz lub wewnątrz systemu[7].

Najczęściej za sprawą naruszenia bezpieczeństwa systemów komputerowych stoi grupa mniej lub bardziej wyspecjalizowanych użytkowników, zajmująca się włamaniami do systemów komputerowych.


Zagrożenia bezpieczeństwa systemów komputerowych w sieci Internet można ogólnie podzielić na następujące klasy:

?uzyskanie dostępu do danych transmitowanych przez sieć lub przechowywanych na dołączonych do sieci komputerach przez osoby niepowołane;

?uzyskanie dostępu do innych zasobów (moc obliczeniowa komputerów itd.) przez osoby niepowołane;

?utrata danych na skutek złośliwej ingerencji zewnętrznej;

?fałszerstwo danych (dotyczy zwłaszcza poczty elektronicznej, gdzie zachodzi m.in. możliwość podszywania się pod innego nadawcę);
Techniki, jakimi można posłużyć się dla osiągnięcia któregoś z w/w celów, opierają się przede wszystkim na wykorzystaniu: wad protokołu TCP/IP i protokołów pokrewnych, błędów w oprogramowaniu systemowym, oraz błędów administratora lub użytkownika systemu.

Ponieważ protokół TCP/IP nie posiada żadnych wbudowanych mechanizmów szyfrowania danych, umożliwia to przechwycenie ich przez potencjalnego włamywacza. Najbardziej pospolitym sposobem naruszenia bezpieczeństwa w sieci jest pozyskanie dostępu do czyjegoś konta na komputerze przyłączonym do sieci Internet. Szczególnie niebezpieczne jest włamanie na konto administratora, gdyż umożliwia to dostęp do danych wszystkich użytkowników danego komputera i ułatwia zatarcie w systemie śladów ingerencji. Jednym z najtrudniejszych zadań administratora jest usunięcie skutków włamania, a także upewnienie się, czy nie zostały wprowadzone modyfikacje umożliwiające intruzowi ponowne włamanie.


1.3. Postać komputerowego włamywacza
W dzisiejszych czasach coraz częściej słyszymy o sytuacjach, w których tzw. hakerzy włamują się np. do serwerów znanych firm i wyrządzają poważne szkody. Nic dziwnego zatem, że większość ludzi kojarzy ich w bardzo negatywny sposób, nie zastanawiając się głębiej nad znaczeniem terminu haker. Określenie haker wywodzi się od angielskiego słowa hacking, które w swoim pierwotnym znaczeniu określało wykonywanie skomplikowanych i precyzyjnych zadań prymitywnymi narzędziami. Hakerem był ktoś, kto umiał zrobić eleganckie meble, używając tylko siekiery. Hacking we wczesnej gwarze informatycznej to po prostu ciężka praca nad jakimś zadaniem. Obecnie haker to ktoś, kto potrafi biegle poruszać się w szeroko pojętym środowisku informacyjnym – posiada zarówno specjalistyczne przygotowanie techniczne niekoniecznie udokumentowane dyplomami, jak i zasób inteligencji wystarczający do tego, by realizować własne plany bez przesadnego naruszania prawa.

Ze względu na charakter działalności programistów zajmujących się łamaniem zabezpieczeń systemów komputerowych, dzieli się ich na: hakerów, crackerów, phrackerów i phreakerów.

Haker to osoba, która jest oddana idei udostępniania technologii i pomaga innym korzystać z zalet nowoczesnej techniki. Jest to człowiek zafascynowany rozwiązywaniem problemów przy wykorzystaniu wszelkich możliwości techniki.

Cracker jest to człowiek, który zajmuje się włamywaniem do systemów komputerowych w celu odniesienia konkretnych korzyści lub uniemożliwienia innym ich czerpania. Crackerem jest tez ktoś, kto likwiduje zabezpieczenia programu przed nielegalnym kopiowaniem, czyli ktoś, kto nie tylko łamie zabezpieczenia, ale i także normy etyczne. To właśnie oni są często myleni przez media z hakerami.

Phracker to osoba zajmująca się kradzieżami programów umożliwiających bezpłatne korzystanie z usług telekomunikacyjnych lub badają komputery i bazy danych firm oferujących takie usługi.

Phreaker korzysta z ukradzionych informacji dotyczących połączeń telefonicznych takich jak numery abonentów w celu uzyskania dostępu do innych komputerów.


 W ciągu ostatnich lat terminem haker zaczęto określać osoby, które specjalizują się we włamaniach do systemów. Stało się to głównie za sprawa mediów, które nakreśliły wizerunek hakera, jako przestępcy, który bezwzględnie włamuje się i kradnie. Taki stan rzeczy bardzo denerwuje prawdziwych hakerow ze starej szkoły, którzy uważają, że tacy ludzie jak crackerzy psują im opinie.

A zatem należy stanowczo zaznaczyć, że znaczenie tych dwóch grup ludzi w aspekcie włamań komputerowych jest całkowicie odmienne.

Haker dużo potrafi, ale utrzymuje się w swoich działaniach w granicach określonych, jeśli nawet nie przez obowiązujące prawo, to przynajmniej przez środowiskowe normy etyczne.

Cracker swoje hakerskie umiejętności wykorzystuje w celu osiągnięcia konkretnych korzyści materialnych czy też w celu wyrządzenia konkretnych szkód[8].


1.4 Protokół TCP/IP
Aby lepiej zrozumieć metody, jakimi posługują się hakerzy włamując się do komputerów, należy najpierw pojąć, na jakiej zasadzie działa globalna sieć Internet. Protokół[9] TCP/IP jest podstawowym protokołem stanowiącym szkielet całej sieci Internet, a zatem jego znajomość jest niezbędna do przeprowadzenia ataku, bądź też zbudowaniu pewnej ochrony komputera. Architektura TCP/IP powstała w niewielkim, zamkniętym środowisku akademickim, które nie potrzebowało żadnego szczególnego zabezpieczenia przesyłanych danych, gdyż komunikacja była otwarta i oparta na wzajemnym zaufaniu wąskiego grona użytkowników. Historycznie zawiera ona takie mechanizmy, które umożliwiają poprawną transmisję danych w sieci. Nie zapewnia ani poufności, ani niezaprzeczalności, ani integralności przesyłanej informacji, która może w dowolnym momencie być podsłuchana, przejęta bądź zmodyfikowana przez osoby trzecie.
Model TCP/IP
W 1984 roku Międzynarodowa Organizacja Standaryzacyjna ISO (International Standards Organization) wprowadziła siedmio warstwowy model współpracy sieci komputerowych, opisujący sposób, w jaki informacja jest przekazywana poprzez sieć z aplikacji działającej na jednym komputerze do aplikacji uruchomionej na innym komputerze[10]. Nazwy tych warstw zdefiniowane w modelu są używane przez projektantów sieci podczas tworzenia właściwych sieci komputerowych. W sieci podzielonej na warstwy każdy moduł (warstwa) pełni określone funkcje lub oferuje sąsiednim warstwom określone usługi.

W oparciu o siedmio warstwowy model ISO/OSI stworzono implementacje dla grupy protokołów TCP/IP (rys.2), na których skoncentruje się w mojej pracy. Szczegółowo model ISO/OSI został również opisany przez Erica Cole w książce „Hacker beware” na stronie 169.

Model TCP/IP

Protokoły

Warstwa aplikacyjna

HTTP,FTP,POP3,SMTP

Warstwa transportowa

TCP,UPD


Warstwa sieciowa

IP,ICMP,IGMP

Warstwa dostępu

Ethernet, PPP, X.25


Tabela. 1. Model TCP/IP

Źródło: Richard Stevens, „TCP-IP Ilustrated Volume 1:The Protocols” , Wydawnictwo Addison-Wesley, 1994, S.2


Warstwa dostępu odpowiada za dostarczanie danych do innych urządzeń bezpośrednio dołączonych do sieci. Współpracuje ona bezpośrednio ze sprzętem oraz sterownikami odpowiedzialnymi za współpracę z siecią. W sieci lokalnej mogą to być Ethernet lub Token-Ring (różne rozwiązania sieci lokalnych). W przypadku innych sieci mogą to być protokoły PPP, SLIP lub inne. Warstwa ta współpracuje więc z interfejsem sieciowym (kartą sieciową), modemem lub innym urządzeniem pozwalającym na bezpośrednie połączenie dwóch lub więcej komputerów i separuje resztę warstw od zastosowanych rozwiązań fizycznych (niskopoziomowych). Świadczy ona usługę warstwie wyższej polegającą na wysyłaniu i odbieraniu porcji danych (zwanych ramkami) z komputerów w danej sieci fizycznej.
Warstwa sieciowa odpowiada za dostarczanie danych do urządzeń nie tylko w obrębie danej sieci fizycznej. Organizuje ona ruch tzw. pakietów IP między poszczególnymi sieciami fizycznymi połączonymi w intersieć. Korzysta z usług warstwy dostępu, sama zaś świadczy usługi dostarczania pakietu do dowolnego komputera w Internecie. W skład tej warstwy wchodzą: protokół IP (Internet Protocol), który służy do przesyłania danych między dwoma komputerami głównymi oraz protokoły pomocnicze w stosunku do IP: ICMP (Internet Control Message Protocol) oraz IGMP (Internet Group Managment Protocol). Dzięki ICMP oraz IGMP protokół IP może obsługiwać specjalne wiadomości sieciowe, takie jak komunikaty o błędach i wiadomości wielokrotne (wysyłane do co najmniej dwóch systemów). IP jest protokołem bezpołączeniowym wysyłającym dane w postaci datagramów (niezależnych od siebie, samodzielnych jednostek informacyjnych). Posiada dwa 32-bitowe pola w nagłówku do przechowywania informacji o adresach. Protokół IP kieruje pakietami w sieci, ale nie posiada mechanizmów niezawodności połączenia, polegając jedynie na protokołach z wyższych warstw, np. TCP. Ponieważ jest protokołem bezpołączeniowym, nie wysyła żadnych komunikatów o dostarczeniu.
Warstwa transportowa odpowiedzialna jest za niezawodną wymianę danych między aplikacjami. Podobnie jak warstwa sieciowa nadzoruje transmisję danych między komputerami, tak warstwa transportowa nadzoruje transmisje przez warstwę sieciową. Korzysta z warstwy sieciowej, sama zaś dostarcza usług niezawodnego transportu danych. Warstwa transportowa może stosować jeden z dwóch protokołów przesyłania wiadomości: TCP (ang. Transport Control Protocol) lub UDP (ang. User Datagram Protocol)
Warstwa aplikacyjna jest najwyżej położona. Tej warstwie odpowiadają wszelkie programy (aplikacje) Internetowe korzystające z warstwy transportowej. Tu znajdują się wszelkie konkretne zastosowania Internetu - przesyłanie plików (FTP), poczty (SMTP) i inne[11].
Protokół TCP
Jednym z najważniejszych protokołów warstwy transportowej modelu TCP/IP OSI, mających bez wątpienia największe zastosowanie w dzisiejszym Internecie jest TCP. Na nim bazuje HTTP (ang. Hypertext Transfer Protocol) – usługi WWW, FTP (ang. File Transfer Protocol) czy SMTP (ang. Simple Mail Protocol). TCP zapewnia zorientowaną połączeniowo, niezawodną obsługę ciągu przesyłanych bajtów. Określenie „zorientowaną połączeniowo” oznacza, że dwie aplikacje używające TCP muszą, przed połączeniem wymiany danych, nawiązać połączenie TCP. Protokół TCP służy do przesyłania danych między warstwą sieciową a warstwą aplikacji oferując niezawodną usługę dostarczania danych, opartą na strumieniu bajtów i nawiązaniu połączenia. TCP gwarantuje, że wiadomość zostanie dostarczona i aplikacja otrzyma dane w odpowiedniej kolejności. Jest to sytuacja odwrotna niż w przypadku protokołu UDP, który nie gwarantuje dostarczenia danych, ani przesyłania ich w odpowiedniej kolejności. Protokół TCP próbuje dodatkowo zoptymalizować ruch w sieci, dąży do uzyskania maksymalnego przepływu danych w Internecie, prowadząc dynamiczną kontrolę danych w poszczególnych połączeniach. Ważne jest także to, że TCP jest protokołem połączeniowym, a IP bezpołączeniowym. Protokół TCP pozwala na przesyłanie danych w postaci strumienia bajtów, podczas gdy IP korzysta z datagramów.
Komunikat TCP
Protokół TCP traktuje dane jako nieprzerwany strumień informacji, ale zważywszy na to, że przesyłanie danych musi odbywać się za pomocą datagramów protokołu IP, to każdy przesyłany komunikat TCP jest w rzeczywistości tylko pojedynczym segmentem ze strumienia bajtów protokołu TCP. Segment TCP składa się z nagłówka TCP, opcji TCP oraz danych przesyłanych za pomocą segmentu.

Rys.2. Struktura komunikatu TCP

Źródło: Dominik Kruk, Lustracja przez Internet, Pckurier, 2002, nr. 8, s. 46

W tabeli 2 przedstawiono przeznaczenie poszczególnych pól komunikatu TCP

Port źródłowy

Określa port protokołu aplikacji wysyłającej dane.

Port docelowy

Określa port protokołu aplikacji odbierającej dane.

Numer sekwencji

Określa położenie pierwszego bajtu w polu danych segmentu TCP.

Numer potwierdzenia

Zawiera numer bajtu ze strumienia danych, oczekiwanego przez stronę odbierającą.

Długość nagłówka

Określa długość nagłówka TCP za pomocą liczby 32-bitowej.

Flaga URG

Sygnalizuje modułowi TCP strony odbierającej, że pole Wskaźnik ważności wskazuje na dane pilne.

Flaga ACK

Sygnalizuje modułowi TCP strony odbierającej, że pole Numer potwierdzenia zawiera poprawny numer potwierdzenia

Flaga PSH

Polecenie dla modułu TCP strony odbierającej, aby bezzwłocznie wysłał do aplikacji odbierającej dane informacje zawarte w segmencie.

Flaga RST

Potwierdzenie czyszczenia połączenia TCP kierowane do modułu TCP odbierającego dane.

Flaga SYN

Polecenie dla modułu TCP strony odbierającej dane, aby dokonał synchronizacji numerów sekwencji.

Flaga FIN

Sygnalizuje modułowi TCP strony odbierającej dane, że węzeł wysyłający zakończył przesyłanie informacji.

Rozmiar okna

Informacja dla modułu TCP strony odbierającej dane, o liczbie bajtów proponowanej przez węzeł wysyłający dane.

Suma kontrolna TCP

Umożliwia wykrycie błędu transmisji przez moduł TCP strony odbierającej dane.

Wskaźnik ważności

Wskazuje miejsce, gdzie położony ostatni bajt danych przesyłanych w trybie przyspieszonym, umieszczonych w polu danych segmentu TCP.

Opcje

Pole używane zazwyczaj przez opcję „Maksymalny rozmiar segmentu” zawierającą informację o maksymalnej wielkości segmentu, jaką może odebrać moduł TCP.


Tabela 2. Przeznaczenie poszczególnych pól komunikatu TCP

Źródło: Lars Kalander, „Hacker Proof- czyli jak się bronić przed intruzami”, Wydawnictwo Mikom, Warszawa 1998, s. 70


Ustanawianie połączenia TCP
Protokół TCP aby zapewnić pewną transmisję i sekwencyjny przepływ strumienia bajtów, wysyła i odbiera potwierdzenia korzystając z wartości pól: numer sekwencji, numer potwierdzenia oraz flagi. Za każdym razem, gdy program zamierza użyć protokołu TCP w celu wysłania danych, wysyła do warstwy transportowej komputera głównego żądanie utworzenia połączenia TCP. Wysyłana jest wiadomość z flagą synchronizacji SYN (ang. synchronize) do odległego portu, z którym program zamierza się połączyć. To poprzez flagę SYN program typu klient daje sygnał dla serwera, że chce ustanowić połączenie TCP. Wraz z flagą synchronizacji wysyłany jest 32-bitowy numer sekwencji. Serwer wysyła w odpowiedzi segment TCP, zawierający flagę ACK (ang. acknowledgment) oraz numer potwierdzenia. Po każdym wysyłaniu danych protokół TCP uruchamia licznik odmierzający czas. W przypadku, gdy licznik przekroczy ustaloną wartość, a potwierdzenie wysyłanych danych nie przychodzi, są one automatycznie retransmitowane. Podczas przeprowadzania procesu synchronizacji węzły muszą ustalić metodę potwierdzenia wiadomości. W protokole TCP identyfikacji danych dokonuje się za pomocą numeru sekwencji, wysyłanego z jednego węzła do drugiego. Numer ten można sobie wyobrazić jako liczbę wygenerowaną losowo. Gdy strona serwera otrzyma takie żądanie, wówczas wysyła odpowiedź, w której umieszcza własny początkowy numer sekwencji. Protokół TCP generuje początkowy numer sekwencji dla strony serwera całkowicie niezależnie od początkowego numeru sekwencji modułu TCP strony klienta.

Połączenia TCP są dwukierunkowe, co oznacza, że dane są przesyłane w obydwie strony, niezależnie od siebie. W związku z tym w każdym węźle muszą być przechowywane dwa numery sekwencji dla obydwu kierunków przesyłania danych. Moduł TCP strony serwera generuje numer potwierdzenia na podstawie numeru sekwencji otrzymanego od modułu TCP strony klienta. Numer potwierdzenia jest zawsze oczekiwanym numerem następnego numeru sekwencji przesyłanych danych. W ten sposób, w pierwszej odpowiedzi moduł TCP strony serwera umieszcza numer sekwencji klienta powiększony o jeden. Jeśli zatem moduł TCP strony klienta żądający połączenia TCP wysłał numer sekwencji 2210, to w odpowiedzi modułu TCP strony serwera prześle mu w polu „numer potwierdzenia” numer 2211, co oznacza, że odebrano element danych o numerze 2210 i oczekuje się, że następny będzie miał numer 2211[12].

W skrócie ustanawianie połączenia TCP przebiega na zasadzie trójfazowego uzgadniania:

?serwer wykonuje tzw. otwarcie bierne (ang. passive open) połączenia, wywołując funkcje interfejsu gniazdowego socket(), bind(), listen(),

?klient (na rys.4. Bob) wykonuje tzw. otwarcie aktywne (ang. active open), wywołując funkcję interfejsu gniazdowego connect() - powoduje to wysłanie segmentu SYN (synchronizacji, ang. synchronize), zawierającego początkowy numer kolejnych danych, które klient zamierza wysyłać przez to połączenie (w pewnych sytuacjach także dane) oraz ewentualne opcje TCP,

?serwer potwierdza przyjęcie segmentu SYN klienta i wysyła własny segment SYN, zawierający początkowy numer danych, które serwer będzie wysyłał przez to połączenie, wraz z segmentem ACK, zawierającym początkowy numer kolejnych danych klienta zwiększony o 1 - taki segment autor będzie określał jako SYN/ACK,


Yüklə 2,44 Mb.

Dostları ilə paylaş:
1   ...   45   46   47   48   49   50   51   52   53




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin