Programowanie Sieciowe 1 dr inż. Tomasz Jaworski tjaworski@iis.p.lodz.pl http://tjaworski.iis.p.lodz.pl/
Cel przedmiotu Zapoznanie z mechanizmem przesyłania danych przy pomocy sieci komputerowych nawiązywaniem i zamykaniem połączenia tworzeniem serwerów jedno- i wielodostępowych 2
Plan przedmiotu Model OSI Model ISO a TCP/IP Porównanie TCP i UDP Wyjaśnienie pojęć: Adres IP, Port, Para gniazdowa Konwersja danych Klient TCP Serwer TCP Operacje blokujące i nieblokujące Elementy wielozadaniowości Programowanie z wykorzystaniem środowiska Visual Studio 2008 i bibliotek MFC 3
Literatura [1] Richard W. Stevens, Unix: Programowanie usług sieciowych, Tom 1 [2] Beej's Guide to Network Programming Using Internet Sockets (http://beej.us/guide/bgnet/) 4
Połączenia między komputerami (Klient) (Klient) (Klient) (Klient) (Klient) (Serwer) (Klient) (Serwer) (Klient) (Klient) (Klient) Serwer-klient najczęściej spotykana relacja Jeden serwer może obsługiwać wiele klientów jednocześnie (np. komunikatory, serwery WWW) Pierwsza polska gra MUD, Studnia Dusz -komputer (P2P, Peer to peer) bezpośrednie połączenie między komputerami 5
Model OSI Open System Interconnection Model przyjęty jako norma ISO (Międzynarodowej Organizacji Normalizacyjnej, ang. International Organization for Standardization), Abstrakcyjny; specjalizacja pod postacią Modelu TCP lepiej odpowiada rzeczywistości 6
Model OSI Open System Interconnection Prezentacji Sesji Warstwa aplikacji Komunikacja z użytkownikiem, Wyświetlanie grafiki, tekstu (przeglądarka WWW, gry multiplayer), Zapis/odczyt danych z dysku, Sieciowa Łącza danych/ kanałowa Fizyczna 7
Model OSI Open System Interconnection Prezentacji Sesji Sieciowa Łącza danych/ kanałowa Fizyczna Warstwa prezentacji Przygotowanie danych do wysłania Kompresja, Szyfrowanie, Serializacja obiektów binarnych do np. formatu XML, Ustalenie kolejności bajtów do tzw. sieciowej kolejności bajtów (network byte order). Pierwszeństwo bajtu bardziej znaczącego (big-endian). 0xCAFFE001 -> CA, FF, E0, 01, htons(unsigned short), htonl(unsigned long), ntohs(unsigned short), ntohl(unsigned long), 8
Model OSI Open System Interconnection Prezentacji Sesji Sieciowa Łącza danych/ kanałowa Warstwa sesji Odpowiada za nadzorowanie połączenie, monitorowanie jego stanu, W przypadku zerwania połączenia program nadzorcy może ponawiać połączenie, np. n razy, po czym poinformować warstwę wyższą o błędzie Ukrycie gniazd przed warstwą prezentacji Fizyczna 9
Model OSI Open System Interconnection Prezentacji Sesji Sieciowa Łącza danych/ kanałowa Fizyczna Warstwa transportowa Wykorzystywana najczęściej przez protokół TCP (Transmission Control Protocol) lub UDP (User Datagram Protocol). Można pominąć warstwę transportową i komunikować się bezpośrednio przy pomocy oprogramowania IPV4 oraz IPv6. Służą do tego gniazda surowe (raw sockets) Można tworzyć własne protokoły komunikacji Przyjmuje strumień danych, generuje pakiety. 10
Model OSI Open System Interconnection Prezentacji Sesji Warstwa sieciowa Przesyłanie Obsługiwana przez oprogramowanie protokołów IPv4 oraz IPv6. Przyjmuje pakiety, generuje datagramy IP. Sieciowa Łącza danych/ kanałowa Fizyczna 11
Model OSI Open System Interconnection Prezentacji Sesji Sieciowa Łącza danych/ kanałowa Warstwa łącza danych Sterowniki dostarczane przez producenta sprzętu lub systemu operacyjnego, Ograniczenie wielkości segmentu do 1500 bajtów, MTU (Maximum Transfer Units) Przyjmuje datagramy, generuje ramki. Fizyczna 12
Model OSI Open System Interconnection Prezentacji Sesji Sieciowa Warstwa fizyczna sprzęt Karta sieciowa Konwertery medium Kable Informacje przesyłane jako strumień bitów (110101010101110111001 ) Łącza danych/ kanałowa Fizyczna 13
Model OSI przepływ danych Prezentacji Sesji Sieciowa Łącza danych/ kanałowa Fizyczna Prezentacji Sesji Sieciowa Łącza danych/ kanałowa Fizyczna LAN/Internet Host A (klient) Host B (klient) 14
Model OSI vs Model TCP/IP Model OSI Prezentacji Sesji Model TCP/IP Generalizacja dla rodziny protokołów Internetu Zastosowań TCP RAW UDP Sieciowa Łącza danych/ kanałowa Fizyczna Internetu Dostępu do sieci IPv4 / IPv6 Sterowniki + sprzęt 15
Model TCP Internetu Warstwa aplikacji Kontakt z użytkownikiem lub procesem (GUI, Video) Transformacja danych do jednolitego formatu Dialog między aplikacjami pracującymi zdalnymi, pracującymi wg założonego protokołu (np. FTP, HTTP) Dostępu do sieci 16
Model TCP Internetu Dostępu do sieci Warstwa transportowa Przesyłanie danych między aplikacjami (określanych na podstawie unikalnych par numer_ip:port) Obsługa wielu aplikacji jednocześnie; para numer_ip:port może być przyporządkowana tylko do jednego procesu W modelu OSI to tutaj znajduje się oprogramowanie TCP 17
Model TCP Warstwa Internetu Protokół IPv4 lub IPv6, Bazuje na adresie IP Internetu Dostępu do sieci 18
Model TCP Warstwa dostępu Przekazywanie informacji przez fizyczne połączenie (nadawanie/odbiór) Internetu Dostępu do sieci 19
Enkapsulacja danych w Modelu TCP/IP Warstwa aplikacji Dane aplikacji Warstwa transportowa Nagłówek segmentu Dane aplikacji Warstwa Internetu (warstwa sieciowa) Nagłówek pakietu Nagłówek segmentu Dane aplikacji Warstwa dostępu do sieci (Warstwa łącza danych + fizyczna) Nagłówek ramki Nagłówek pakietu Nagłówek segmentu Dane aplikacji 0101010010101110111001001011010100100010111101011010.. 20
Dziękuję za uwagę!