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

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

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

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

Klient-Serwer Komunikacja przy pomocy gniazd

PROTOKOŁY WARSTWY TRANSPORTOWEJ

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Sieci komputerowe. Wykład 1: Podstawowe pojęcia i modele. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Programowanie współbieżne i rozproszone

Sieci komputerowe Warstwa transportowa

Transport. część 1: niezawodny transport. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

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

Gniazda BSD. Procesy w środowisku sieciowym. Gniazda podstawowe funkcje dla serwera. Gniazda podstawowe funkcje dla klienta

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Sieci komputerowe. Protokoły warstwy transportowej. Wydział Inżynierii Metali i Informatyki Przemysłowej. dr inż. Andrzej Opaliński.

Programowanie sieciowe

Sieci komputerowe - Protokoły warstwy transportowej

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Przesyłania danych przez protokół TCP/IP

TCP - receive buffer (queue), send buffer (queue)

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

Wykład 4. komputerowych Protokoły SSL i TLS główne slajdy. 26 października Igor T. Podolak Instytut Informatyki Uniwersytet Jagielloński

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

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

Sieci komputerowe. Wykład 8: Warstwa zastosowań: FTP i HTTP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

TRX API opis funkcji interfejsu

Sieci komputerowe. Wykład 3: Protokół IP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski. Sieci komputerowe (II UWr) Wykład 3 1 / 25

Moduł Ethernetowy. instrukcja obsługi. Spis treści

Podstawowe typy serwerów

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

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

Instytut Teleinformatyki

1 Moduł Diagnostyki Sieci

pasja-informatyki.pl

Platformy Programistyczne Zagadnienia sieciowe i wątki

Model warstwowy Warstwa fizyczna Warstwa łacza danych Warstwa sieciowa Warstwa transportowa Warstwa aplikacj. Protokoły sieciowe

Sieci komputerowe. Wykład dr inż. Łukasz Graczykowski

Plan całości wykładu 3-1

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Problemy techniczne SQL Server

Programowanie Sieciowe 1

Programowanie sieciowe

Laboratorium Sieci Komputerowych - 2

Protokoły wspomagające. Mikołaj Leszczuk

Sieci komputerowe. Wykład 0: O czym jest ten przedmiot. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Programowanie przy użyciu gniazdek

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

Protokół wymiany sentencji, wersja 1

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

1. W protokole http w ogólnym przypadku elementy odpowiedzi mają: a) Postać tekstu b) Postać HTML c) Zarówno a i b 2. W usłudze DNS odpowiedź

Zadanie 2: transakcyjny protokół SKJ (2015)

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

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

Wybrane działy Informatyki Stosowanej

Akademia Techniczno-Humanistyczna w Bielsku-Białej

1 Moduł Konfigurowanie Modułu

ZESZYTY ETI ZESPOŁU SZKÓŁ W TARNOBRZEGU Nr 1 Seria: Teleinformatyka 2013

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

Sieci komputerowe 1 DSRG

Dr Michał Tanaś(

Selektywne powtarzanie (SP)

Komunikacja z wykorzystaniem Protokołu TCP oraz funkcji AG_SEND/AG_RECV

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

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

Warstwa transportowa

1. Model klient-serwer

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

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

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]

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

Sieci komputerowe - administracja

ZiMSK. Konsola, TELNET, SSH 1

Podstawowe protokoły transportowe stosowane w sieciach IP cz.1

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

Sieci komputerowe - opis przedmiotu

Konwerter RS-485->Ethernet [TCP/IP] CN-ETH-485 INSTRUKCJA [konfiguracja urządzenia do współpracy z programem MeternetPRO]

Moduł 11.Warstwa transportowa i aplikacji Zadaniem warstwy transportowej TCP/IP jest, jak sugeruje jej nazwa, transport danych pomiędzy aplikacjami

Twisted. Silnik Twojego Internetu. Jan Urbański Ducksboard. PyWaw #25, Warszawa, 10 czerwca 2013

Remote Quotation Protocol - opis

Sieci komputerowe. Wykład dla studentów Informatyki Stosowanej i Fizyki Komputerowej UJ 2007/2008. Michał Cieśla

SIECI KOMPUTEROWE I TECHNOLOGIE INTERNETOWE

TIN Techniki Internetowe zima

Aplikacja Sieciowa wątki po stronie klienta

Spis treści. 1 Moduł Modbus TCP 4

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

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Laboratorium Protokoły sieci teleinformatycznych

Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

Narzędzia diagnostyczne protokołów TCP/IP

Akademia Techniczno-Humanistyczna w Bielsku-Białej

SSH. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

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

Protokoły sieciowe - TCP/IP

Wybrane metody obrony przed atakami Denial of Service Synflood. Przemysław Kukiełka

Architektura typu klient serwer: uproszczony klient POP3

Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

Warstwa transportowa. Warstwa transportowa. Enkapsulacja. Zapewnienie niezawodnego przesyłania danych /wg ISO/ Transmisja bezpołączeniowa

Transkrypt:

Sieci komputerowe Wykład 7: Transport: protokół TCP Marcin Bieńkowski Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe (II UWr) Wykład 7 1 / 23

W poprzednim odcinku Niezawodny transport Algorytmy niezawodnego dostarczania danych: stop-and-wait, okno przesuwne. Potwierdzanie: go-back-n, selektywne, skumulowane. Kontrola przepływu: odbiorca wysyła rozmiar oferowanego okna reguluje rozmiar okna nadawcy TCP: okno przesuwne + potwierdzanie skumulowane + numerowanie bajtów. Sieci komputerowe (II UWr) Wykład 7 2 / 23

Dzisiaj Inne szczegóły techniczne TCP + programowanie gniazd TCP Sieci komputerowe (II UWr) Wykład 7 3 / 23

Przykład Łaczymy się z serwerem (np. serwerem WWW) interaktywnie telnet nieinteraktywnie nc Uwaga: oba powyższe programy działaja w warstwie aplikacji! Skad wiemy, że powinniśmy się łaczyć właśnie z portem 80? Dobrze znane porty (well known ports). Niektóre usługi maja porty zarezerwowane przez standardy: przykładowo wszystkie serwery WWW odbieraja połaczenia na porcie 80. /etc/services Sieci komputerowe (II UWr) Wykład 7 4 / 23

Przykład Łaczymy się z serwerem (np. serwerem WWW) interaktywnie telnet nieinteraktywnie nc Uwaga: oba powyższe programy działaja w warstwie aplikacji! Skad wiemy, że powinniśmy się łaczyć właśnie z portem 80? Dobrze znane porty (well known ports). Niektóre usługi maja porty zarezerwowane przez standardy: przykładowo wszystkie serwery WWW odbieraja połaczenia na porcie 80. /etc/services Sieci komputerowe (II UWr) Wykład 7 4 / 23

Gniazda Interfejs programistyczny 5 4 BSD sockets interface UDP TCP 3 2 1 IP Ethernet ICMP ARP / RARP Interfejs programistyczny: BSD sockets Dobre wprowadzenie Beej s Guide to Network Programming Sieci komputerowe (II UWr) Wykład 7 5 / 23

Komunikacja Gniazda Komunikacja bezpołaczeniowa Strony nie utrzymuja stanu. Przykładowo: zwykła poczta Komunikacja połaczeniowa Na poczatku strony wymieniaja komunikaty nawiazuj ace połaczenie. Późniejsza komunikacja jest zazwyczaj efektywniejsza niż w przypadku bezpołaczeniowym. Na końcu trzeba zakończyć połaczenie. Przykładowo: telefon. Sieci komputerowe (II UWr) Wykład 7 6 / 23

Gniazda UDP Gniazda UDP Gniazdo jest zwiazane z konkretnym procesem. Gniazdo jest identyfikowane przez lokalny adres IP + lokalny port. Gniazdo nie posiada stanu. Gniazdo nie jest połaczone z innym gniazdem. Nie ma różnicy między klientem i serwerem: po pierwszym wywołaniu sendto(), gniazdo klienta otrzymuje od jadra numer portu i zachowuje się identycznie jak gniazdo serwera. Sieci komputerowe (II UWr) Wykład 7 7 / 23

Gniazda TCP Gniazda TCP: gniazda nasłuchujace Tylko dla serwera Tylko do nawiazywania połaczeń Przykładowo (lokalnie) 156.17.4.30:80 (zdalnie) *:*. TCP: gniazda połaczone Tworzone dla klienta i serwera po połaczeniu. Do wymiany właściwych danych. Przykładowo po stronie serwera: (lokalnie) 156.17.4.30:80 (zdalnie) 22.33.44.55:44444. Przykładowo po stronie klienta: (lokalnie) 22.33.44.55:44444 (zdalnie) 156.17.4.30:80. Sieci komputerowe (II UWr) Wykład 7 8 / 23

Gniazda Obrazek z ksiażki Programowanie usług sieciowych, R. Stevens Sieci komputerowe (II UWr) Wykład 7 9 / 23

Gniazda Przykład serwera i klienta TCP server1.c + telnet/netcat server1.c + client1.c Sieci komputerowe (II UWr) Wykład 7 10 / 23

Implementacja TCP Cykl życia połaczenia (1) Trójfazowe nawiazywanie połaczenia Przesyłanie danych Czterofazowe kończenie połaczenia Sieci komputerowe (II UWr) Wykład 7 11 / 23

Implementacja TCP Cykl życia połaczenia (2) Sieci komputerowe (II UWr) Wykład 7 12 / 23

Implementacja TCP Gniazda TCP (jeszcze raz) Po otwarciu biernym bind() + listen(): tworzone gniazdo nasłuchujace Funkcja accept() zwraca gniazdo połaczone (po trójfazowym nawiazaniu połaczenia). Funkcja connect() zwraca gniazdo połaczone po stronie klienta. Sieci komputerowe (II UWr) Wykład 7 13 / 23

Segment TCP Implementacja TCP Sieci komputerowe (II UWr) Wykład 7 14 / 23

Stany TCP Implementacja TCP Obrazek ze strony https://en.wikipedia.org/wiki/transmission_control_protocol Sieci komputerowe (II UWr) Wykład 7 15 / 23

Segment RST Implementacja TCP Wysyłany kiedy wystapi bład. Przykładowo w odpowiedzi na dowolny segment wysłany do zamkniętego portu. Sieci komputerowe (II UWr) Wykład 7 16 / 23

Implementacja TCP Stan TIME WAIT Kończenie połaczenia nie jest do symetryczne: strona robiaca zamknięcie bierne: pełna wiedza (dostaje ACK na wysłany FIN) strona robiaca zamknięcie aktywne: nie wie czy druga strona dostała jej ACK stan TIME WAIT TIME WAIT utrzymuje się przez 1-4 min. (2 max. czas życia segmentu). Cel 1: Prawidłowe zakończenie połaczenia TCP w przypadku błędów: jeśli końcowy ACK nie dociera, to druga strona wyśle FIN jeszcze raz chcemy go poprawnie obsłużyć. Cel 2: Usunięcie starych duplikatów segmentów z sieci. Sieci komputerowe (II UWr) Wykład 7 17 / 23

Funkcja send() Informacje dodatkowe Czy nasz klient działa poprawnie? Wyślijmy 100.000 bajtów... Po pierwsze send() może wysłać mniej i to nie jest bład! Co więcej, send() zapisuje dane tylko do bufora wysyłkowego, zakończenie tej funkcji nie oznacza faktycznego wysłania. Sieci komputerowe (II UWr) Wykład 7 18 / 23

Funkcja send() Informacje dodatkowe Czy nasz klient działa poprawnie? Wyślijmy 100.000 bajtów... Po pierwsze send() może wysłać mniej i to nie jest bład! Co więcej, send() zapisuje dane tylko do bufora wysyłkowego, zakończenie tej funkcji nie oznacza faktycznego wysłania. Sieci komputerowe (II UWr) Wykład 7 18 / 23

Funkcja recv() Informacje dodatkowe Nowa wersja klienta server1.c + client2.c Wyślijmy 1.000.000 bajtów... Klient zostaje zabity przez SIGPIPE?! klient: send() zapisuje część lub całość do bufora wysyłkowego. TCP po stronie klienta wysyła kilka segmentów (np. po 16 KB). TCP po stronie serwera potwierdza część lub wszystkie segmenty serwer: recv() odczytuje pewien fragment bufora odbiorczego (np. 32 KB) serwer: wysyła odpowiedź i zamyka połaczenie. klient: send() wysyła kolejny segment, stos TCP po stronie serwera odpowiada segmentem RST. stos TCP po stronie klienta zamyka gniazdo. klient: send() wysyła kolejny segment usiłujać zapisać do zamkniętego gniazda otrzymuje sygnał SIGPIPE. Sieci komputerowe (II UWr) Wykład 7 19 / 23

Funkcja recv() Informacje dodatkowe Nowa wersja klienta server1.c + client2.c Wyślijmy 1.000.000 bajtów... Klient zostaje zabity przez SIGPIPE?! klient: send() zapisuje część lub całość do bufora wysyłkowego. TCP po stronie klienta wysyła kilka segmentów (np. po 16 KB). TCP po stronie serwera potwierdza część lub wszystkie segmenty serwer: recv() odczytuje pewien fragment bufora odbiorczego (np. 32 KB) serwer: wysyła odpowiedź i zamyka połaczenie. klient: send() wysyła kolejny segment, stos TCP po stronie serwera odpowiada segmentem RST. stos TCP po stronie klienta zamyka gniazdo. klient: send() wysyła kolejny segment usiłujać zapisać do zamkniętego gniazda otrzymuje sygnał SIGPIPE. Sieci komputerowe (II UWr) Wykład 7 19 / 23

Funkcja recv() Informacje dodatkowe Do jakiego momentu recv() powinno czytać dane? Nie zdefiniowaliśmy protokołu komunikacji. Podejście nr 1: ustalamy znacznik końca rekordu (koniec wiersza) i czytamy do tego znacznika. Podejście nr 2: na poczatku wysyłamy rozmiar danych. Sieci komputerowe (II UWr) Wykład 7 20 / 23

Informacje dodatkowe Nieblokujacy odczyt (1) Wywołanie funkcji recv() w przypadku gniazda w ktorym nic nie ma blokuje do momentu, kiedy coś się tam pojawi. Co z klientami, którzy chca zablokować dostęp do usługi? Tak jak w przypadku gniazd UDP możemy wykorzystać flagę MSG_DONTBLOCK. Jak często sprawdzać, czy coś jest w gnieździe? Często duże zużycie CPU Rzadko potencjalnie duże opóźnienie A może usnać do momentu aż coś się pojawi? Sieci komputerowe (II UWr) Wykład 7 21 / 23

Informacje dodatkowe Nieblokujacy odczyt (2) Funkcja select(): obserwuje jedno lub wiele gniazd maksymalnie przez zadany czas, Powrót z funkcji jeśli coś jest gotowe (np. do odczytu). Zwraca liczbę gotowych do odczytu gniazd, 0 jeśli nastapił timeout. Kolejne wywołanie recv() na gotowym gnieździe nie zablokuje (choć może odczytać mniej bajtów niż chcemy). server2.c Sieci komputerowe (II UWr) Wykład 7 22 / 23

Informacje dodatkowe Lektura dodatkowa Kurose, Ross: rozdział 3 Tanenbaum: rozdział 6 Stevens: rozdziały 3-6, 13, 27 Sieci komputerowe (II UWr) Wykład 7 23 / 23