Index
Droga żelazna
Głód
150 19 (8)
abc.com.pl 6
Klatwa prometeusza
Kratochvil Stanisław Psychoterapia Kierunki metody b (2)
abc.com.pl 7
714 03 (5)
Fostiak Monika Legenda o Księciu Vampire
Unfinished Tales
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • sp26.opx.pl

  • [ Pobierz całość w formacie PDF ]
    .Te informacje w polaczeniu z gniazdami, numeracja segmentow i oknami (ang.window) sa zwane polaczeniem.Kiedy dwa procesy chca sie ze soba skomunikowac, ich moduly TCP musza zainicjowac polaczenie (zainicjowac informacje o stanie polaczenia).Po zakonczeniu komunikacji polaczenie jest zamykane, aby zwolnic zajmowane zasoby.Poniewaz polaczenie musi byc ustanowione miedzy dwoma niepewnymi komputerami w sieci (ang.host) i przeprowadzone z pomoca nie zapewniajacego bezpieczenstwa protokolu IP, wykorzystywany jest algorytm "trzykrotnego uscisku dloni" do nawiazania polaczenia.PolaczeniaTCP jest protokolem polaczeniowym (ang.connection-oriented).Czyli, zanim dane zostana przeslane miedzy komputerami w sieci, musi byc ustanowione polaczenie miedzy nimi.Protokol TCP dopuszcza stosowanie dwoch rodzajow polaczen z portami.Jest to zwiazane z dwoma rodzajami nawiazywania polaczen:Otwarcie pasywne (ang.passive open).Daje mozliwosc protokolowi warstwy aplikacji, poinformowania modulu TCP, iz nie chce on inicjowac polaczenia z wlasnej strony ale oczekuje na polaczenia przychodzace z zewnatrz.Linux otrzymujac tego typu zadanie, przypisuje procesowi numer portu, ktory bedzie wykorzystywany do oczekiwania na przychodzace polaczenia.W przypadku, gdy nadejdzie segment TCP zadajacy nawiazania polaczenia z tym wlasnie portem, system informuje o tym zdarzeniu proces przypisany do tego numeru portu.Nastepnie proces sam moze zadecydowac o akceptacji polaczenia.Wyrozniamy dwa typy otwarcia pasywnego:W pelni okreslone otwarcie pasywne (ang.fully specified passive open).Uzyty adres docelowy jest taki sam jak w otwarciu aktywnym.Czyli ten rodzaj otwarcia posiada w pelni okreslone gniazdo (ang.socket) identyfikujace drugi koniec polaczeniaNieokreslone otwarcie pasywne (ang.unspecified passive open).Czyli, z tym portem, polaczenie moze nawiazac dowolny proces.Gniazdo docelowe jest nieokreslone.Otwarcie aktywne (ang.active open).Ten rodzaj otwarcia polaczenia daje protokolowi wyzszej warstwy mozliwosc okreslenia gniazda docelowego, z ktorym aplikacja chce nawiazac polaczenie.Otwarcie aktywne jest najczesciej uzywane do zawarcia polaczenia z pasywnym gniazdem przypisanym innemu procesowi.Ponizszy rysunek przedstawia najprostszy scenariusz wymiany segmentow TCP przy zawieraniu i konczeniu polaczenia.Teraz omowimy szczegoly zawierania polaczenia.Aby ustanowic polaczenie TCP:Klient (ang.client) wysyla SYN segment (segment inicjujacy polaczenie), z okreslonym numerem portu serwera, z ktorym chce sie polaczyc, dodatkowo klient przekazuje w tym segmencie, inicjujacy numer sekwencyjny (ang.ISN - initial sequence number).Na naszym rysunku ISM reprezentuje "J".Serwer odpowiada na wezwanie klienta wlasnym SYN segmentem, zawierajacym ISN serwera, czyli "K" na rysunku.Dodatkowo przesylane jest potwierdzenie SYN segmentu klienta, z wartoscia ack rowna "J+1".Bit SYN konsumuje jeden numer sekwencyjny.Klient musi potwierdzic (ang.acknowledge) SYN segment otrzymany od serwera.Aby to zrobic wysyla segment z polem ack rownym "K+1".Algorytm ten nosi nazwe "trzykrotnego uscisku dloni" (ang.three-way handshake).Jak sa wymieniane segmenty przy zamykaniu polaczenia, przedstawia rysunek powyzej.Kiedy do zawarcia polaczenia wystarcza wymiana trzech segmentow, to do zamkniecia polaczenia trzeba wymienic cztery segmenty.Jest to spowodowane tym, ze polaczenie TCP jest dwukierunkowe.Czyli dane moga byc przesylane w dwoch kierunkach.Wiec kazda strona polaczenia musi zamknac polaczenie (ang.shutdown) niezaleznie.Strona ktora pierwsza wyslala FIN segment (segment konczacy polaczenie) przeprowadza aktywne zamkniecie (ang.active close).Druga strona, ktora otrzymala FIN segment przeprowadza zamkniecie pasywne (ang.passive close).Oczywiscie, roznych kombinacji zawierania i konczenia polaczen jest o wiele wiecej.Zainteresowanych odsylam do RFC 793.FunkcjeFunkcjatcp_connect()Funkcja ta inicjuje aktywne polaczenie.DEFINICJA: static int tcp_connect(struct sock *sk, struct sockaddr_in *usin, int addr_len)Funkcjatcp_accept()Funkcja ta inicjuje pasywne polaczenie.DEFINICJA: static struct sock *tcp_accept(struct sock *sk, int flags)Funkcjatcp_sendmsg()Funkcja ta wysyla dane z gniazda.DEFINICJA: static int tcp_sendmsg(struct sock *sk, struct msghdr *msg, int len, int nonblock, int flags)Funkcjatcp_recvmsg()Funkcja ta kopiuje dane ze struktury sock do bufora uzytkownika.DEFINICJA: static int tcp_recvmsg(struct sock *sk, struct msghdr *msg, int len, int nonblock, int flags, int *addr_len)Funkcjatcp_close()Funkcja ta zamyka polaczenie TCP.DEFINICJA: static void tcp_close(struct sock *sk, unsigned long timeout)BibliografiaPliki zrodlowe Linuxa:net/ipv4/tcp.cinclude/linux/tcp.hW.Richard Stevens: TCP/IP Illustrated, Volume 1 - The ProtocolsRFC 793, Transmission Control ProtocolMichael K.Johnson: Linux Kernel Hackers' GuideKrzysztof Mlynarski: Techniczna Strona Internetu, magazyn Software 3,4/96Autor: Grzegorz Daniluk [ Pobierz całość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • aceton.keep.pl
  • 
    Wszelkie Prawa Zastrzeżone! Kawa była słaba i bez smaku. Nie miała treści, a jedynie formę. Design by SZABLONY.maniak.pl.