Programowanie Sieciowe 1 dr inż. Tomasz Jaworski [email protected] http://tjaworski.iis.p.lodz.pl/ Katedra Informatyki Stosowanej 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 Katedra Informatyki Stosowanej 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 Katedra Informatyki Stosowanej 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/) Katedra Informatyki Stosowanej 4 Połączenia między komputerami Komputer (Klient) Komputer (Serwer) Komputer (Klient) Komputer (Klient) Komputer (Klient) Komputer (Klient) Komputer (Serwer) Komputer (Klient) Komputer (Klient) Komputer (Klient) Katedra Informatyki Stosowanej Komputer (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-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 Katedra Informatyki Stosowanej 6 Model OSI – Open System Interconnection Aplikacji/ zastosowań Prezentacji Sesji Transportowa 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 Katedra Informatyki Stosowanej 7 Model OSI – Open System Interconnection Aplikacji/ zastosowań Prezentacji Sesji Transportowa Sieciowa Łącza danych/ kanałowa Fizyczna Katedra Informatyki Stosowanej 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 Aplikacji/ zastosowań Prezentacji Sesji Transportowa 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 Katedra Informatyki Stosowanej 9 Model OSI – Open System Interconnection Aplikacji/ zastosowań Warstwa transportowa • Prezentacji Sesji • Transportowa Sieciowa – Służą do tego gniazda surowe (raw sockets) – Można tworzyć własne protokoły komunikacji Łącza danych/ kanałowa Fizyczna Katedra Informatyki Stosowanej 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. • Przyjmuje strumień danych, generuje pakiety. 10 Model OSI – Open System Interconnection Aplikacji/ zastosowań Prezentacji Sesji Transportowa Warstwa sieciowa • Przesyłanie • Obsługiwana przez oprogramowanie protokołów IPv4 oraz IPv6. • Przyjmuje pakiety, generuje datagramy IP. Sieciowa Łącza danych/ kanałowa Fizyczna Katedra Informatyki Stosowanej 11 Model OSI – Open System Interconnection Aplikacji/ zastosowań Prezentacji Sesji Transportowa Sieciowa 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. Łącza danych/ kanałowa Fizyczna Katedra Informatyki Stosowanej 12 Model OSI – Open System Interconnection Aplikacji/ zastosowań Prezentacji Sesji Transportowa Warstwa fizyczna • sprzęt – Karta sieciowa – Konwertery medium – Kable • Informacje przesyłane jako strumień bitów (110101010101110111001…) Sieciowa Łącza danych/ kanałowa Fizyczna Katedra Informatyki Stosowanej 13 Model OSI – przepływ danych Aplikacji/ zastosowań Aplikacji/ zastosowań Prezentacji Prezentacji Sesji Sesji Transportowa Transportowa Sieciowa Sieciowa Łącza danych/ kanałowa Łącza danych/ kanałowa Fizyczna Fizyczna LAN/Internet Host A (klient) Katedra Informatyki Stosowanej Host B (klient) 14 Model OSI vs Model TCP/IP Model TCP/IP Generalizacja dla rodziny protokołów Internetu Aplikacji/ zastosowań Zastosowań Transportowa Transportowa TCP RAW UDP Sieciowa Internetu IPv4 / IPv6 Dostępu do sieci Sterowniki + sprzęt Model OSI Aplikacji/ zastosowań Prezentacji Sesji Łącza danych/ kanałowa Fizyczna Katedra Informatyki Stosowanej 15 Model TCP Warstwa aplikacji Aplikacji/ zastosowań Transportowa Internetu • 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 Katedra Informatyki Stosowanej 16 Model TCP Warstwa transportowa Aplikacji/ zastosowań Transportowa Internetu Dostępu do sieci Katedra Informatyki Stosowanej • 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 Aplikacji/ zastosowań • Protokół IPv4 lub IPv6, • Bazuje na adresie IP Transportowa Internetu Dostępu do sieci Katedra Informatyki Stosowanej 18 Model TCP Warstwa dostępu Aplikacji/ zastosowań • Przekazywanie informacji przez fizyczne połączenie (nadawanie/odbiór) Transportowa Internetu Dostępu do sieci Katedra Informatyki Stosowanej 19 Enkapsulacja danych w Modelu TCP/IP Warstwa aplikacji Dane aplikacji Nagłówek segmentu Dane aplikacji Nagłówek pakietu Nagłówek segmentu Dane aplikacji Nagłówek pakietu Nagłówek segmentu Dane aplikacji Warstwa transportowa Warstwa Internetu (warstwa sieciowa) Warstwa dostępu do sieci (Warstwa łącza danych + fizyczna) Nagłówek ramki 0101010010101110111001001011010100100010111101011010.. Katedra Informatyki Stosowanej 20 Dziękuję za uwagę! Katedra Informatyki Stosowanej