Wstęp do programowania sieciowego

Transkrypt

Wstęp do programowania sieciowego
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