Sieci komputerowe
•	Część trzecia

•	© Michał Turek, AGH Kraków

Protokół sterowania transmisją (TCP)
•	TCP - Transmission Control Protocol
•	zapewnia połączeniową transmisję danych pomiędzy dwoma lub więcej hostami,
•	może obsługiwać wiele strumieni danych,
•	umożliwią sterowanie strumieniem danych, kontrolę błędów, 
•	umożliwia ponowne porządkowanie pakietów, otrzymanych w niewłaściwej kolejności,
•	wysoka niezawodność
•	buforowanie danych w możliwością sterowania buforem (wypychanie wymuszone, np. przy telnet)

TCP - kontrola przepływu i weryfikacja pakietów
•	suma kontrolna  CRC - kontrolowanie treści pakietu
•	technika “potwierdzenia pozytywnego” i kolejki retransmisji - potwierdzanie przyjęcia pakietu
•	timeout nadania i retransmisja w przypadku nieotrzymania potwierdzenia
•	32 bitowe numerowanie ramek (numery sekwencji)
•	sterowanie przepływem (ang. flow control) - powstrzymywanie (ang. pacing) transmisji pakietów przy przeciążeniu odbiorcy

TCP - adresy 
i numery portów
•	Numery portów - 16-bitowe liczby całkowite
•	Grupa ogólnie znanych portów TCP
•	Połączenie typu klient-serwer - serwer zajmuje port TCP i czeka na połączenia
•	Efemeryczne (krótkotrwałe) numery portów nadawane procesom-klientom przez moduł TCP
•	Dedykowane numery portów - w przedziale od 1 do 255
Połączenia i asocjacje TCP
•	Połączenie - ustanawia się między dwoma procesami w celu przesyłania danych między nimi. 
•	Asocjacja - składa się z pięciu parametrów:
•	typ protokołu TCP lub UDP;
•	adres stacji lokalnej Internetu ( liczba 32-bitowa );
•	numer portu lokalnego ( liczba 16-bitowa );
•	adres stacji obcej Internetu ( liczba 32-bitowa );
•	numer portu obcego ( liczba 16-bitowa ).
•	Przykład: ( tcp, 128.0.0.2, 1612, 128.0.0.4, 80 )

Gniazda TCP
•	Gniazdo zwane jest inaczej półasocjacją lub adresem transportowym
•	Zakładane przez serwer na danym porcie w celu odbioru połączeń przychodzących
•	Dwa stany gniazda:
•	pasywne czekanie
•	właściwe połączenie
•	Możliwość odbioru wielu równoczesnych połączeń na dane gniazdo

Budowa nagłówka TCP (I)
•	Port źródłowy TCP: 16-bitowe pole portu źródłowego przechowuje numer portu, który inicjuje sesje komunikacyjne. Port źródłowy i adres źródłowy IP funkcjonują jako adres zwrotny pakietu.
•	Port docelowy TCP: 16-bitowe pole portu docelowego jest adresem portu, dla którego przeznaczona jest transmisja. Port ten zawiera adres interfejsu aplikacji w komputerze odbiorcy, do której przesyłany jest pakiet danych.
•	Numer sekwencji TCP: 32-bitowy numer sekwencji jest wykorzystywany przez komputer odbierający do zrekonstruowania rozproszonych, rozbitych, podzielonych danych i przywrócenia im pierwotnej postaci. W sieci dynamicznie trasowanej może się zdarzyć, że niektóre pakiety pójdą innymi trasami i dotrą w niewłaściwej kolejności. Pole numeru sekwencji kompensuje tę niekonsekwencję w dostarczaniu.

Budowa nagłówka TCP (II)
•	Numer potwierdzenia TCP: TCP używa 32-bitowego potwierdzenia (ACK) pierwszego oktetu danych zawartego w następnym oczekiwanym segmencie. TCP może obliczyć ten numer, zwiększając numer ostatniego otrzymanego pakietu o liczbę oktetów w każdym segmencie TCP. Numer używany do identyfikowania każdego ACK jest numerem sekwencji potwierdzanego pakietu.
•	Wyrównanie danych: 4-bitowe pole przechowuje rozmiar nagłówka TCP, którego miarą jest 32-bitowa struktura danych, znana jako “słowo”.
•	Zarezerwowane: 6-bitowe pole, zawsze ustawione na zero. Pole to jest zarezerwowane dla jeszcze nie wyspecyfikowanego, przyszłego zastosowania.

Budowa nagłówka TCP (III)
•	Flagi: 6-bitowe pole flagi zawiera sześć 1-bitowych flag, które umożliwiają realizację funkcji sterowania, takich jak pilność, zerowanie połączenia, synchronizacja numerów sekwencyjnych i zakończenie wysyłania danych.
•	Rozmiar okna: 16-bitowe pole używane przez komputer docelowy w celu poinformowania komputera źródłowego o tym, ile danych jest gotów przyjąć w jednym segmencie TCP.
•	Suma kontrolna (16-bitów): Nagłówek TCP zawiera również pole kontroli błędów, znane jako “suma kontrolna”. Komputer źródłowy oblicza wartość tego pola na podstawie zawartości segmentu. Komputer docelowy przeprowadza identyczne obliczenie. Jeśli zawartość pozostała nienaruszona, wynik obydwu obliczeń będzie identyczny, co świadczy o prawidłowości danych.
•	Wypełnienie: do tego pola dodawane są zera, tak aby długość nagłówka TCP była zawsze wielokrotnością 32 bitów.

Protokół datagramowy użytkownika (UDP)
•	UDP - User Datagram Protocol
•	zapewnia proste i mające niewielki narzut kontrolny transmisje danych, tzw. “datagramy”
•	brak funkcjonalności połączeniowej
•	zastosowanie: komunikaty systemowe, synchronizujące znaczniki stanu, dane nie wymagające potwierdzeń, nie fragmentowane

Budowa nagłówka UDP (II)
•	Numer portu źródłowego UDP: Port źródłowy jest numerem połączenia w komputerze źródłowym. Port źródłowy i adres źródłowy IP funkcjonują jako adres zwrotny pakietu.
•	Numer portu docelowego UDP: Port docelowy jest numerem połączenia w komputerze docelowym. Port docelowy UDP jest wykorzystywany do przekazywania pakietu odpowiedniej aplikacji, po tym jak pakiet dotrze do komputera docelowego.

Budowa nagłówka UDP (III)
•	Suma kontrolna UDP: Suma kontrolna jest polem kontroli błędów, którego wartość jest obliczana na podstawie zawartości segmentu. Komputer docelowy wykonuje taką samą funkcję matematyczną jak komputer źródłowy. Niezgodność dwóch obliczonych wartości wskazuje na wystąpienie błędu podczas transmisji pakietu.
•	Długość komunikatu UDP: Pole długości komunikatu informuje komputer docelowy o jego rozmiarze. Daje to komputerowi docelowemu kolejny mechanizm, wykorzystywany do sprawdzania poprawności wiadomości

Cykl życia połączenia TCP (I)
•	1. LISTEN- SŁUCHAJ, oczekiwanie na prośbę połączenia od jakiegokolwiek zdalnego TCP i portu.	
•	2. SYN-SENT- oczekiwanie na odpowiedź po wysłaniu prośby połączenia.
•	3. SYN-RECEIVED - oczekiwanie na potwierdzenie połączenia (wcześniej wymieniono “prośby połączenia” ).	
•	4. ESTABLISHED- USTANOWIONE, reprezentuje otwarte połączenie, dane mogą być dostarczane do użytkownika. Normalny stan do transmisji danych.	
•	5. FIN-WAIT-1- oczekiwanie na prośbę zakończenia połączenia od zdalnego TCP lub potwierdzenie takiej prośby wcześniej wysłanej.	

Cykl życia połączenia TCP (II)
•	6. FIN-WAIT-2- oczekiwanie na prośbę zakończenia połączenia od zdalnego TCP.	
•	7. CLOSE-WAIT- oczekiwanie na prośbę zakończenia połączenia od lokalnego użytkownika.	
•	8. CLOSING - oczekiwanie na potwierdzenie zakończenia połączenia od zdalnego TCP.	
•	9. TIME-WAIT - czas przeznaczony na upewnienie się, że zdalny TCP otrzymał potwierdzenie zakończenia połączenia.	
•	10. CLOSED - połączenie nie istnieje.

DHCP (I)
•	DHCP  - Dynamic Host Configuration Protocol
•	standard umożliwiający automatyczną konfigurację adresów IP na komputerach pracujących w sieciach TCP/IP 
•	podstawowa usługa przekazuje: właściwe numery adresów IP, właściwe wartości “masek” podsieci, adres domyślnego gateway’a
•	podstawowa zaleta: zredukowanie kosztów i ułatwienie administracji systemów TCP/IP.
•	serwer DHCP bazuje na zakresach IP przyznanych dla każdej podsieci, standardowej konfiguracji IP, polityce przyznawania IP

DHCP (II)
•	Zasada działania DHCP:
•	rozgłoszenia broadcastowe (na IP 255.255.255.255)
•	procedura uzgodnienia nowego klienta:
•	klient: 	DHCP Discover
•	server:	DHCP Offer
•	klient: 	DHCP Request
•	server:	DHCP ACK
•	procedura uzgodnienia klienta po restarcie:
•	klient:		DHCP Offer (swój poprzedni adres)
•	server:	DHCP ACK lub DHCP NACK 

DNS (I)
•	DNS - Domain Names System - system nazw domen 
•	Odzwierciedlenie lokalnej struktury sieci w przestrzeni nazw (ang. name space)
•	Logiczna przestrzeń nazw, które nie muszą zawierać sieciowych identyfikatorów, adresów, tras ani podobnych informacji
•	Transakcje serwerów nazw (ang. name servers) niezależne od systemu komunikacji
•	Możliwość stosowania tej samej przestrzeni nazw z różnymi rodzinami protokołów
•	rozproszone przechowywanie danych z miejscowymi spisami podręcznymi (ang. caching) dla poprawy wydajności

DNS (II)
•	Składniki DNS:
•	Przestrzeń nazw domen i rekordy zasobów (ang. resource records) - określają drzewiastą przestrzeń nazw i dane związane z nazwami. Każdy węzeł i liść przestrzeni nazw wyznacza zbiór informacji a zapytania są próbami wydobycia właściwego typu informacji z określonego zbioru. W zapytaniu jest określona nazwa domeny i żądany typ zasobu.
•	Serwer nazw (ang. name server) - program przechowujący informację o strukturze drzewa domen. Serwer nazw ma pełne informacje o podzbiorze przestrzeni domen i wskaźniki do innych serwerów, prowadzące do informacji o dowolnej części drzewa domen.
•	Resolver - program, które wydobywają dane z serwerów nazw w odpowiedzi na zapytania klientów. Resolvery muszą mieć dostęp do przynajmniej jednego serwera nazw i używać jego informacji do bezpośredniej odpowiedzi na zapytanie lub wykorzystać jego odniesienia do innych serwerów. Resolver jest zwykle procedurą systemową bezpośrednio dostępną dla programów użytkowych, zatem nie jest potrzebny protokół komunikacji między nimi.

DNS (III)
•	Strefa (ang. zone)- jednostka, którą można automatycznie rozprowadzać do serwerów, która zapewnia nadmiarową obsługę danych w strefie.
•	DNS nierekurencyjny - serwer odpowiada używając tylko lokalnej informacji. Odpowiedź zawiera błąd, właściwą odpowiedź lub odniesienie (ang. referral) do innego serwera "bliższego" odpowiedzi. Wszystkie serwery nazw muszą działać w trybie nierekurencyjnym.
•	DNS rekurencyjny - serwer nazw występuje w roli resolvera i zwraca albo błąd albo odpowiedź, ale nigdy odniesienia. Ta usługa jest opcjonalna w serwerze nazw, który może również ograniczać zbiór klientów, którzy mogą używać trybu rekurencyjnego.
•	Daną strefę powinny obsługiwać co najmniej dwa serwery nazw.

DNS (IV)
•	Efekt wynikowy:
•	Z punktu widzenia użytkownika:
•	Dostęp do systemu domen odbywa się poprzez zwykłą procedurę biblioteczną lub odwołanie systemowe do lokalnego resolvera. Przestrzeń domen składa się z jednego drzewa i można żądać informacji z dowolnej jego części.
•	Z punktu widzenia resolvera:
•	system domen składa się z nieznanej liczby serwerów nazw. Każdy serwer nazw ma jedną lub więcej części całego drzewa danych, a resolver widzi każdą z tych baz danych zasadniczo jako statyczną.
•	Z punktu widzenia serwera nazw:
•	 system domen jest złożony z rozłącznych zbiorów danych, zwanych strefami. Ma on kopie niektórych stref, ale musi je okresowo odświeżać korzystając z plików głównych innych serwerów. Serwer nazw musi współbieżnie przetwarzać zapytania, które napływają od resolverów.

DNS (V)
•	Rodzaje serwerów nazw:
•	serwer pierwotny (primary name serwer) - przechowuje na swoim lokalnym dysku zestaw plików administracyjnych, zawierających informacje o odwzorowaniu numerów IP i nazw domenowych dla danej strefy
•	serwer wtórny (secondary name serwer) - posiada dane automatycznie pobierane z pierwotnego serwera nazw (przy starcie). Jeśli ta operacja się nie powiedzie serwer będzie korzystał z wcześniej zapamiętanych kopii plików administracyjnych
•	serwer pomocniczy (caching-only server) - po otrzymaniu żądania odwzorowania nazwy domenowej w numer IP, komunikuje się z serwerem autorytatywnym i zapamiętuje to odwzorowanie w swojej pamięci. Dalsze żądania mogą być już obsługiwać bez konieczności komunikacji z serwerem autorytatywnym.
DNS (VI)
•	serwery autorytatywne - przechowują najbardziej aktualne i wiarygodne informacje dotyczące danej strefy.Serwerami takimi są serwery pierwotne i wtórne strefy
•	cache zapytań DNS - Po wysłaniu informacji do klienta DNS, który przysłał żądanie, informacja o odwzorowaniu będzie przez pewien czas pamiętana przez serwer nazw i w przypadku przyjścia następnego żądania dotyczącego odwzorowania nazwy z tej samej domeny nasz serwer nazw skomunikuje się wprost z serwerem autorytatywnym tej domeny, bez potrzeby łączenia się z innymi serwerami nazw

DNS (VII)
•	Nazwy domen najwyższego poziomu (organizacyjne):
•	COM – domena przedsiębiorstw i firm, działalność komercjalna
•	EDU – instytucje edukacyjne
•	GOV – instytucje rządowe
•	MIL – organizacje rządowe
•	NET – organizacje prowadzące działalność, związaną z sieciami 	komputerowymi
•	ORG – organizacje o innych charakterach
•	W nazwach wystąpić mogą dowolne litery, ale porównywanie nazw domen odbywa się bez uwzględnienia wielkości liter
•	Nazwa musi być unikatowa i nie może przekraczać 255 bajtów
•	Najwyższy poziom (czyli od prawej) to domena państwa lub kod stanu w przypadku USA

Organizacja rejestracji domen w Polsce
•	Organizacja administrująca domeną pl - NASK - Naukowo Akademicka Sieć Komputerowa
•	Obowiązująca zasada przy doborze nazwy - “Kto pierwszy ten lepszy”
•	Opłaty za delegację domeny na rzecz NASK
•	Aby możliwe było rejestrowanie domeny w pierwszej kolejności konieczne jest posiadanie hosta (rzeczywistego lub wirtualnego) i wpisów w DNS strefy lokalnej

Co zrobić w Polsce, aby zarejestrować domenę (I)
•	Procedura (I):
•	Sprawdzenie, czy domena jest wolna - czy nikt inny jej już nie zarezerwował
•	Wyszukiwarka NASK (najbardziej wiarygodna) znajduje się pod adresem: http://www.dns.pl/

						© NASK

Co zrobić w Polsce, aby zarejestrować domenę (II)
•	Gdy domena jest wolna - złożenie wniosku o delegację domeny wraz z uzasadnieniem. Wniosek dostępny jest pod adresem http://www.dns.pl/cgi-bin/wniosek.pl
•	Delegacja polega na wpisaniu do DNS strefy polskiej adresów DNS lokalnych, gdzie znajduje się informacja o hoscie docelowym
Co zrobić w Polsce, aby zarejestrować domenę (III)
•	Opłaty za domenę - opłaty pobierane są przez NASK w rozliczeniu rocznym i wynoszą (2005):

SNMP
•	SNMP (Simple Network Management Protokol) - prosty protokół zarządzania siecią
•	protokół stosowany do zarządzania urządzeniami sieci, takimi jak routery, drukarki, stacje robocze, terminalne urządzenia monitorujące (np. czujniki) itp
•	protokół przewiduje istnienie jednostek zarządców sieci i rozproszonych agentów pod kontrolą
•	zarządzanie polega na monitorowaniu i zmianach wartości zmiennych (obiektów), reprezentujących wybrane zasoby
•	agenci - udostępniają posiadane bazy zmiennych - MIB (Management Information Base)
•	zarządca monitoruje sieć wysyłając zapytania do urządzeń - przeważnie w interwale czasowym

SNMP - polecenia
•	PDU (Protocol Data Units) - pięć typów ogólnych poleceń:
•	GetRequest - wysyłane od zarządcy do agenta w celu odczytania wartości wybranej zmiennej
•	GetNextRequest - wysyłane od zarządcy do agenta w celu odczytania wartości kolejnej zmiennej
•	SetRequest - wysyłane od zarządcy do agenta w celu przypisania zmiennej określonej wartości
•	GetResponse - uzyskanie od agenta odpowiedzi  po wysłaniu pytania
•	Trap - meldunek przesyłany przez agenta, gdy zaistnieje sytuacja wyjątkowa w sieci. 
IPX
•	IPX (Internet Packet Exchange) 
•	Protokół równoległy do TCP/IP - operuje na warstwie sieciowej modelu OSI. Adresuje i przesyła pakiety z jednego węzła do drugiego w obrębie sieci
•	Bazuje na polach adresowych znajdujących się w nagłówkach pakietów i informacji otrzymanych z protokołów RIP 
•	Bezpołączeniowy protokół datagramowy
•	SPX - bazujący na IPX protokół warstwy wyższej zapewniający kontrolę “połączenia” i potwierdzanie pakietów.
Adresowanie w IPX
•	Kompletny sieciowy adres IPX ma postać dwunastobajtowej liczby heksadecymalnej 
•	Serwery IPX - przechowują procesy IPX, adresowane docelowo w pakietach
•	Składowe adresu
•	Czterobajtowy numer sieci (adres serwera) 
•	Sześciobajtowy numer hosta (adres serwera)
•	Dwubajtowy numer gniazda (numer procesu w serwerze)
•	Numer sieci jest stosowany przy routingu, numer węzła przy transmisjach lokalnych. Numery węzłów w różnych sieciach mogą się powtarzać.
•	Istnieją predefniniowane numery gniazd, pełniące z góry ustalone funkcje techniczne

IPX - struktura pakietu
•	Elementy:
•	30-to bajtowy nagłówek IPX (IPX Header) 
•	Dane ( w nich np. nagłówek SPX - protokół wyższy)
•	Minimalny rozmiar pakietu IPX - 30 bajtów , maksymalny - 65 535 bajtów
•	Nagłówek oprócz adresów źródłowego i docelowego posiada pole przedawnienia RIP (czyli maksymalnie 15 hopów), sumę kontrolną, pole długości, pole typu pakietu.
•	Typ pakietu to między innymi RIP, SPX, NetBIOS

RTP (I)
•	RTP  (Real Time Protocol) - protokół przesyłu danych czasu rzeczywistego
•	usługi doręczania końcowego danych z charakterystykami czasu rzeczywistego
•	zastosowania: interaktywne audio i video
•	możliwy przesył danych do wielu miejsc docelowych (rozgłaszanie grupowe)
•	sekwencyjne numerowanie, datowanie pakietów
•	brak gwarancji dostarczenia na czas 
RTP (II)
•	Rozszerzenie - protokół kontroli RTP - RTCP (Real Time Control Protocol), pozwalający na monitorowanie dostarczanych pod kątem identyfikacji i sortowania pakietów
•	Format Ramki:

RTP (III)
•	Numer sekwencyjny (16 bitów): inkrementowany o 1 dla każdego wysyłanego pakietu danych RTP. Służy do kontroli kolejności ramek. Początkowa wartość numeru jest losowa.
•	Datownik (32 bity) chwila próbkowania pierwszego bajtu w pakiecie danych RTP. Chwila próbkowania zależy od zegara inkrementowanego liniowo w czasie. Początkowa wartość datownika jest losowa. Wiele kolejnych pakietów RTP może mieć ten sam znacznik czasowy, jeśli są równocześnie generowane (np. należą do tej samej ramki video). Kolejne pakiety mogą nie mieć rosnących znaczników, jeśli nie są transmitowane w porządku, w jakim były próbkowane.
•	SSRC (32 bity) - źródło synchronizacji danych. Identyfikator jest nadawany losowo 
•	Lista CSRC (0 do 15 pozycji po 32 bity) - źródła wspierające zawarte w pakiecie dane. 
SLIP
•	SLIP (Serial Line Internet Protocol
•	protokół umożliwiający połączenie poprzez linie, które wymuszają transmisję szeregową
•	zaprojektowany w związku z koniecznością prostej obsługi łącz point-to-point, na poziomie alternatywnym do IEEE 802.3 (Ethernet) i 802.5 (Token Ring) czy X.25
•	transmisja prostych pakietów do przeciwległej stacji
•	brak zdefiniowanego maksymalnego rozmiaru pakietu SLIP

SLIP - działanie protokołu
•	dwa znaki specjalne pakietu:
•	END (192) - koniec pakietu
•	ESC (219) - stosowany gdy trzeba nadać znak o wartości 192 (END) jako dane
•	brak kontroli błędów transmisji
•	brak kompresji
•	brak mechanizmu retransmisji

PPP
•	PPP - (Point-to-Point Protocol)
•	rozwinięcie wcześniejszego protokołu SLIP
•	przeznaczony dla prostych połączeń, które transportują pakiety pomiędzy dwoma końcowymi stacjami roboczymi
•	hermetyzacja/enkapsulacja PPP pozwala łączyć ze sobą różnego rodzaju protokoły (nagłówek pakietu - do 8 oktetów)
•	wyposażony w Link Control Protocol (Protokół Kontroli Połączenia) - przeznaczony do automatycznego uzgadniania opcji, detekcji połączenia, zmiany ograniczeń wielkości pakietów, czy ograniczania przepustowości połączenia
•	łatwość konfiguracji - automatyczne zestawianie połączeń

PPP - protokół
•	Pole informacyjne posiada limit długości - 1500 oktetów
•	Nagłówek determinuje typ enkapsulacji (w tym LCP)
•	Pole wypełnienia zawiera wypełniacz pola informacyjnego do 1500 znaków, gdy pole informacyjne jest mniejsze
•	Trzy rodzaje pakietów LCP (wysyłanych w PPP jako przypadek szczególny):
•	stabilizacja i konfiguracja połączenia
•	rozłączenie połączenia
•	utrzymanie połączenia i kontrola przesyłów

CRC
•	CRC (Cyclic Redundancy Code) - w Polsce zwana sumą kontrolną CRC
•	Powszechny algorytm liczenia sum kontrolnych dla bloku danych
•	Trywialna alternatywa stosowana wcześniej - suma bajtów
•	CRC jest odporny na zmianę kolejności bajtów, nie wykrywaną przez sumę
•	Rozmiar sumy kontrolnej zależy od stopnia wielomianu generacyjnego (generatora)
•	Przeznaczenie - wykrywanie błędów pojedynczych przekłamań bitów, błędów serii - duża skuteczność

CRC - popularne wersje
•	Nazwa kodu	Generator	
•	CRC-12		x^12 + x^11 + x^3 + x^2 + x^1 + 1	
•	CRC-16		x^16 + x^15 + x^2 + 1	
•	SDLC(IBM, CCITT)	x^16 + x^12 + x^5 + 1	
•	ETHERNET		x^32 + x^26 + x^23 + x^22 + x^16 +  				x^12 + x^11 + x^10 + x^8 + x^7 + + x^5 			+ x^4 + x^2 + x^1 + 1	
•	Skuteczność działania:
•	CRC-16: seria poniżej 17 bitów - 100%, 17 bitów - 99,997 %, 
	18 bitów i więcej: 99,998 %
•	ETHERNET: seria poniżej 33 bitów - 100%, większe serie: prawdopodobieństwo przeoczenia błędu to 2^(-ilość bitów)

CRC - technika realizacji
•	Dane do kodowania przesuwane są przez bufor bitowy o wielkości równej stopniowi wielomianu
•	Przesuwanie następuje w kierunku najstarszego bitu, po jednym bicie na cykl
•	Najmłodszy bit uzupełniają następne dane kodowane
•	Gdy bufor opuszcza bit o wartości 1 wykonywana jest operacja XOR na pozostałych bitach bufora zgodnie z wartością generatora - cykliczność kodu
•	Po wyczerpaniu danych w buforze pozostaje wynik - CRC

Diagnostyka sieci - ping
•	Wysłanie pakietu ECHO_REQUEST  (ICMP) do zadanych hostów sieciowych
•	W pakiecie wysyłane są dane testowane które muszą być zwrócone w takiej samej postaci
•	Przychodzący z ustalanym opóźnieniem pakiet zwrotny - ECHO_RESPONSE
•	Diagnostyka odległości (wysyłany wiele pakietów i analizujemy czasy powrotu) lub połączenia (jedynie stwierdzenie działania łącza - komunikat host is alive)
•	Technika diagnostyki - oddalanie pingowanego hosta aż do znalezienia węzła izolującego pakiety

Diagnostyka sieci - traceroute
•	Technika bazuje na datagramach UDP (User Datagram Protocol) i ICMP (ewentualnie tylko ICMP)
•	Wykorzystanie pola TTL - wysyłanie pakietów z rosnącym TTL (od 1 w górę) tak, aby były zatrzymywane jako przeterminowane przez poszczególne routery na drodze do celu
•	Zatrzymanie pakietu powoduje wysłanie zwrotnego pakietu ICMP  TIME_EXCEEDED,które dostarczają teraz informacji diagnostycznej
•	Ponieważ wysyłany datagram UDP nie ma zdefiniowanego poprawnego portu, ostatecznie zostanie przesłany pakiet ICMP PORT_UNREACHABLE - z osiągniętego hosta docelowego
•	Dla każdego TTL wykonywane są domyślnie trzy próby - dające trzy komplety wyników czasowych
•	Domyślny czas oczekiwania na pakiet - trzy sekundy (sygnalizacja standardowa - ‘*’)

Diagnostyka sieci - traceroute, przykład
•	mitu@galaxy:~ (110) > traceroute ceti.com.pl
•	traceroute to ceti.com.pl (62.121.128.11), 30 hops max, 40 byte packets
•	 1  ucirtr.agh.edu.pl (149.156.96.10)  1.020 ms  0.799 ms  0.783 ms
•	 2  manrtr.cyf-kr.edu.pl (149.156.6.217)  8.160 ms  5.385 ms  1.941 ms
•	 3  gw.cyf-kr.edu.pl (149.156.6.185)  0.917 ms  0.967 ms  1.090 ms
•	 4  gwk.cyfronet.krakow.pl (195.150.1.179)  1.483 ms  1.504 ms  1.535 ms
•	 5  195.150.0.138 (195.150.0.138)  2.518 ms  3.176 ms  3.517 ms
•	 6  tau.ceti.pl (62.121.128.11)  2.377 ms  3.817 ms  3.271 ms

Diagnostyka sieci - arp
•	Narzędzie wyświetlania i kontroli przydziału adresów
•	Możliwość modyfikacji tablic translacji adresów 
•	Przykład:

•	mitu@priv:~ (12) > arp -a
•	Interface: 128.0.0.3 --- 0x10003
•	  Internet Address      Physical Address      Type
•	  128.0.0.1             00-0d-f3-00-10-46     dynamic   
•	  128.0.0.2             00-20-ed-19-be-0d     dynamic   
•	  128.0.0.4             00-04-75-d1-3e-8b     dynamic   

Diagnostyka sieci - nslookup
•	Narzędzie wysyła zapytania do serwery nazw (DNS)
•	Dwa tryby działania:
•	nieinteraktywny - pobieranie parametrów
•	interaktywny - shell komend
•	Przykład:
•	mitu@priv:~ (13) nslookup 149.156.127.1 149.156.96.9
•	Server:  galaxy
•	Address: 149.156.96.9
•	 
•	Name:    deathstar.ia.agh.edu.pl
•	Address:  149.156.127.1

WINS
•	WINS - Windows Internet Naming Service
•	Serwis komunikacyjny bazujący na nazwach komputerów
•	Niezależność od podsieci IP 
•	Serwis oparty jest na serii komunikatów rozgłoszeniowych - rozgłaszenie adresu IP oraz nazwy
•	Informacje komputerach są dynamicznie aktualizowane i nie wymagają interwencji człowieka (przeciwnie do DNS). Istnieje jednak opcja statycznych WINS (konfigurowane ręcznie)
•	Klient musi znać adres IP serwera WINS oraz najlepiej adres serwera zapasowego
•	realizacja: usługa Win NT, konfigurowana poprzez narządzie WINS Manager

NetBIOS (I)
•	NetBIOS (Network Basic Input/Output System)
•	Warstwa oprogramowania pierwotnie stworzona przez IBM i Sytek do połączenia sieciowego systemu operacyjnego ze sprzętem
•	Niski poziom realizacji sprzętowe (przerwania CPU) 
•	Wiele realizacji, w tym na TCP/IP
•	Zastosowanie w małych sieciach lokalnych
•	Adresowanie poprzez nazwy (16 znaków alfanumerycznych), poszukiwane techniką rozgłaszania
•	Indywidualne - unikatowe w ramach całej sieci. Przed wprowadzeniem nowej nazwy indywidualnej w sieci rozgłaszane jest kilkakrotnie zapytanie, czy taka nazwa gdzieś nie występuje.
•	Grupowe - możliwe jest wprowadzenie dodatkowej nazwy grupowej nawet jeśli istnieje już w sieci taka sama nazwa grupowa (kumulacja w grupie).

NetBIOS (I)
•	Tryby komunikacji NetBIOS:
•	Dwa rodzaje trybów transmisji danych:
•	bezpołączeniowy - szybszy, nie gwarantuje pomyślnej transmisji danych
•	połączeniowy - ustanawiane jest połączenie (sesja) i zapewnia poprawną transmisję wiadomości o długości do 64kB
•	Wariant synchroniczny i asynchroniczny
•	synchroniczny - wykonanie przerwania CPU i zatrzymanie przetwarzania do uzyskania odpowiedzi
•	asynchroniczny - tylko wysłanie zlecenia do NetBIOS’u, wyniki odbierane później z inicjatywy aplikacji zlecającej.

NetBEUI
•	NetBEUI - NetBIOS Extended User Interface
•	Protokół transportowy, współpracuje między innymi z Windows for Workgroups i Windows NT
•	Przeznaczenie - małe sieci lokalne
•	Zapewnia usługi transportowe żądane przez NetBIOS
•	Mimo wielu prób - nierutowalny
•	Tworzy wirtualne sesje (połączenie point-to-point). Maksymalna liczba sesji - 255

NFS (I)
•	NFS (Network File System), wprowadzony w roku 1984 przez firmę Sun Microsystems
•	architektura klient-serwer, serwer NFS jest bezstanowy
•	udostępnienie użytkownikom plików znajdujących się na innych komputerach bez konieczności ich kopiowania
•	interfejs VFS (Virtual File System) zaimplementowany w jądrze systemu - klienta mapuje standardowe komendy lokalnego systemu na komendy dla serwera NFS na zdalnej maszynie
•	funkcjonalnosść protokołu:
•	szukanie pliku w obrębie katalogu;
•	czytanie zbioru pozycji katalogowych;
•	manipulowanie katalogami;
•	dostęp do atrybutu pliku;
•	czytanie i pisanie plików

NFS (II)
•	V-węzły (v-nodes) systemu NFS - analogiczne do i-węzłów (i-nodes) systemu plików UNIX
•	Procedura wykonywania operacji:
•	klient inicjuje operację za pomocą zwykłej funkcji systemowej,
•	warstwa systemu operacyjnego odwzorowuje wywołanie tej funkcji na operację systemu VFS na odpowiednim v-węźle,
•	warstwa systemu VFS rozpoznaje plik jako zdalny i wywołuje 	odpowiednią procedurę NFS,
•	następuje wywołanie procedury zdalnej odnoszące się do warstwy 	obsługi systemu NFS dla zdalnego serwera,
•	wywołanie to przenika do warstwy VFS w systemie zdalnym, który identyfikuje je jako lokalne i wywołuje odpowiednią operację systemu plików,
•	ta sama droga jest odtwarzana przy przekazywaniu wyniku.

RPC
•	RPC - (Remote Procedure Call) Zdalne Wywoływanie procedur
•	Technikę RPC przykładowo realizuje system NFS
•	Serwer realizuje program, który jest zbiorem procedur do wywołania
•	Obiekt docelowy specyfikuje kombinacja adresu hosta, numer programu i numer procedury
•	Uniwersalny charakter RPC - możliwość realizacji poprzez wiele protokołów transportowych
•	Synchroniczne działanie: klient wysyła do serwera polecenie wykonania procedury (przekazuje argumenty wywołania) i czeka na zakończenie wykonania, aby odebrać zwracane przez procedurę wyniki.

Multimedia w sieci (I)
•	Udostępnianie sekwencji wideo. Tryby przekazu strumienia video
•	przesył na żądanie - serwery mają na swoich dyskach zapisane wcześniej dane wizyjne,
•	rozsyłanie automatyczne,
•	jednokierunkowe sekwencje "na żywo" do wielu adresatów - mała interakcja,
•	przesył dwukierunkowy - duża interakcja.

Multimedia w sieci (II)
•	Standardy wideokonferencji:
•	H.320 - standard wąskopasmowy (ISDN, cząstkowe T1,56kbps), duża kompresja obrazu na podstawie algorytmów stanowiących integralny element standardu. Pasmo wynikowe : 64 Kb/s i dźwięk 3 KHz 
•	H.310 i H.321 - przystosowują H.320 do topologii, takich jak ATM i szerokopasmowe ISDN. Sa kompatybilne wstecz
•	T.120 jest standardem konferencji dokumentowych, umożliwiającym użytkownikom wspólną pracę nad dokumentami podczas dowolnej wideokonferencji H.32x

Multimedia w sieci (III)
•	Voice over IP
•	Telefonia na bazie transmisji z komutacja pakietów
•	stosowanie bramy telefonicznej (phone gateway network) pełniącej rolę serwera online i zestawiającej połączenia także ze zwykła siecią telefoniczną
•	Z zastosowaniem bramky możliwa jest rozmowa nie tylko na linii host-host ale także host-telefon, telefon-host, łącznie z automatycznym wywołaniem
•	Zadowalająca jakość jest uzyskiwana przy przepustowości minimum 8 kbps (bez kompresji)
•	Uzgodnień standaryzacyjnych co do techniki kompresji i parametrów prędkości transmisji
•	Kluczowy problem - opóźnienia w dostawie pakietów strumienia audio 

Standard H.323
•	Stos protokołów H.323, zawierający rozwiązania dotyczące kontroli rozmieszczenia urządzeń, formatowania strumieni komunikacyjnych, bezpieczeństwa itp.
•	Opisuje techniczne wymagania dla usług łączności audio i wideo w czasie rzeczywistym poprzez sieci transmisji pakietowej
•	Zalecenia H.323 definiują kompleksowo architekturę sieci, która umożliwia między innymi realizację połączeń telefonicznych w sieciach pakietowych
•	Standard operuje w warstwie transportowej i wyższych. 

H.323 - elementy architektury (I)
•	Terminal (terminal) - wraz z kodekami jest to system końcowy (telefon internetowy lub odpowiednie oprogramowanie komunikacyjne), który realizuje algorytmy kompresji i dekompresji danych oraz inne funkcje umożliwiające porozumiewanie się użytkowników (np. dialing), 
interfejs IP. 

H.323 - elementy architektury (II)
•	Bramka (gateway) - urządzenie pośredniczące w komunikacji systemów końcowych H.323 z innymi systemami (translacja sygnału analogowego na strumień multimedialny, zarządzanie numerami terminali w bramce). Do bramki podłączone są bezpośrednio np. telefony analogowe.
H.323 - elementy architektury (III)
•	Gatekeeper - serwer sterujący, który zarządza połączeniem, zapewnia translację adresów (numery telefonów na IP lub IPX), autoryzację i zarządzanie szerokością przydzielonego pasma dla danej transmisji. 
•	Mostkek konferencyjny MCU (Multipoint Control Unit) - służący do sterowania transmisją multicast.

H.323 - ważniejsze protokoły (I)
•	H.245 - Protokół kontroli dla komunikacji multimedialnej:
•	Master-Slave Determination - określenie, który terminal ma status Master, a który Slave. 
•	Terminal Capability Set - informacje o zdolności terminala do przetwarzania strumieni multimedialnych. 
•	Keypad Type - typ dialingu (tonowy, alfanumeryczny)
•	Open/Close Logical Channel - sterowanie kanałami dla transmisji multimedialnej
•	Request Mode - typ trasmisji (audio, wideo, szyfrowana itp.)

H.323 - ważniejsze protokoły (II)
•	RAS (Registration, Admission, Status) - obsługa sygnalizacji między gatekeeperem a innymi elementami systemu. Transmisja RAS odbywa się w trybie bezpołączeniowym:
•	Registration - prośba od terminala albo bramki o rejestrację w gatekeeperze
•	Admission - prośba od terminala do gatekeepera o dostęp do sieci pakietowej
•	Bandwidth - prośba od terminala do gatekeepera o zmianę szerokości przydzielonego pasma

H.323 - ważniejsze protokoły (III)
•	Q.931 Call Signalling - procedury niezbędne do zrealizowania połączenia między stroną inicjującą a stroną docelową:
•	Call Proceeding - zawiadomienie terminala użytkownika o przejściu do fazy zestawiania połączenia
•	Connect - odpowiedź na wezwanie, czyli  "podniesienie słuchawki”
•	Release Complete - zakończenie połączenia, czyli “odłożenie słuchawki”
•	Status Inquiry /Status - pytanie o status rozmowy/odpowiedź

H.323 - popularne kodeki audio/wideo
•	Podstawowe parametry konfiguracji:
•	Czas segmentacji pakietów (ustalany z reguły w milisekundach) (np. G.711)
•	Eliminacja ciszy (Silence Suppression) - wycinanie fragmentów strumienia, gdzie nic nie jest przekazywane (np. G.723.1)
•	Kodeki:
•	Audio:
•	G.711, G.729 , G.723.1 , G.722 , G.728
•	Wideo:
•	H.261, H.263

System poczty elektronicznej
•	Jedna z najważniejszych usług sieciowych
•	System pocztowy dostarczany przez TCP/IP zbudowany jest na bazie kilku protokołów:
•	SMTP - prosty protokół wymiany poczty (Simple Mail Transfer Protocol)
•	POP - protokół pocztowy (Post Office Protocol)
•	IMAP - interaktywny protokół dostępu do poczty ( Interactive Mail Access Protocol) będący następcą POP
•	MIME - protokół wielozadaniowych rozszerzeń poczty internetowej (Multipurpose Internet Mail Extensions)

System poczty elektronicznej - elementy
•	agent przekazywania wiadomości (message transfer agent, MTA) - służy do wymiany wiadomości, przetwarza i przesyła w obu kierunkach pomiędzy MSA i MUA. Przykład: Sendmail w Unix 
•	agent wiadomosci użytkownika (massage user agent, MUA) - pozwala użytkownikowi na wysłanie, czytanie i manipulowanie wiadomościami
•	agent magazynu wiadomości (message store agent, MSA)- nie istnieje standard określający strukturę MSA - implementacje MSA są różne
•	agent dostarczania wiadomości (message delivery agent, MDA) - odpowiada za dostarczanie wiadomości pocztowych do odpowiednich źródeł. 

System poczty elektronicznej (schemat)
SMTP
•	Protokół umożliwiający dostarczenie poczty elektronicznej w sieci TCP/IP
•	Wykorzystanie do transmisji niezawodnej, połączeniowej usługi protokołu TCP 
•	Port komunikacyjny: 25
•	Komunikacja polega na przesyłaniu prostych poleceń od klienta, na które odpowiada serwer pocztowy
•	Do przesyłania danych zastosowano NVT ASCII (7-bitowy kod znaków, który przesyłany jest w postaci 8-bitowych bajtów z najstarszym bitem ustawionym na 0).  
•	Protokół daje dowolność w dołączaniu porządkowych nagłówków wiadomości - na różnych poziomach przekazu przez MTA

SMTP - format wiadomości
•	Wiadomość zawiera trzy części:
•	Koperta – używana jest przez MTA w celu dostarczenia wiadomości. Zawiera przede wszystkim adres nadawcy i odbiorcy
•	Nagłówki – używane są przez agentów użytkownika. Każde z pól nagłówka zawiera w kolejności: nazwę, dwukropek, wartość pola. Format i sposób interpretacji pól nagłówka określony jest w standardowej specyfikacji RFC 822. Nagłówki rozpoczynające się od znaku X są polami zdefiniowanymi przez użytkownika, pozostałe definiuje RFC 822.
•	Zawartość – jest tym co nadawca chce przekazać adresatowi -tekst w formacie NVT ASCII
SMTP - lista podstawowych komend

•	Polecenie	Składnia		Funkcja	:
•	Hello	HELLO <host-nadawcy>	Identyfikacja hosta nadającego 
•	From	MAIL FROM:<adres-nadawcy>	Adres nadawcy	
•	Recipient	RCPT TO:<adres-odbiorcy>	Adres odbiorcy	
•	Data	DATA		Początek wiadomości	
•	Reset	RSET		Anulowanie wiadomości	
•	Verify	VRFY <łańcuch-znaków>	Weryfikacja nazwy użytkownika
•	Noop	NOOP 		Zmusza serwer do przesłania OK.	
•	QUIT	QUIT		Zakończenie sesji SMTP	

SMTP - przykład (I)
•	SMTP jest prostym protokołem umożliwiającym przesyłanie wiadomości bez żadnych programów pocztowych. Wystarczy połączyć się telnetem z portem 25 systemu odbiorcy i wpisać list za pomocą komend SMTP.
•	Przykład listu wysłanego przez użytkownika mitu z hosta ernie.icslab.agh.edu.pl do mitu2 na host plus.agh.edu.pl  (I - połączenie):

•	mitu@plus:~ (22) > telnet ernie 25
•	Trying 149.156.127.5...
•	Connected to ernie.
•	Escape character is '^]'.
•	220 ernie.icslab.agh.edu.pl ESMTP Sendmail 8.8.7/8.8.5/ts-tmpl.970124+rchk1.22; Sat, 21 Apr 2001 15:08:25 +0200 (MET DST)
•	hello ernie
•	250 ernie.icslab.agh.edu.pl Hello mitu@plus.agh.edu.pl [149.156.127.16], pleased to meet you

SMTP - przykład (II)
•	Przykład wysyłania listu - ciąg dalszy (II)

•	mail from:< mitu@ernie.icslab.agh.edu.pl>
•	250 < mitu@ernie.icslab.agh.edu.pl >... Sender ok
•	rcpt to:< mitu2@plus.agh.edu.pl >
•	250 < mitu2@plus.agh.edu.pl >... Recipient ok
•	data
•	354 Enter mail, end with "." on a line by itself
•	test
•	.
•	250 PAA24739 Message accepted for delivery
•	quit
•	221 ernie.icslab.agh.edu.pl closing connection
•	Connection closed by foreign host.
•	mitu@plus:~ (23) >

SMTP - rozszerzenie MIME
•	MIME dodaje kilka nowe nagłówki wiadomości (zgodnie z zaleceniami RFC 822) i wymaga aby agenci użytkownika obsługiwali MIME. MIME nie wymaga wprowadzania  żadnych zmian do MTA
•	Nowe nagłówki:
•	Content-Transfer-Encoding – sposób kodowania zawartości
•	Content-Type – definiuje typ danych wiadomości:
–	Text	
–	Multipart	
–	Message	
–	Application	
–	Image	
–	Audio	
–	Video	

Sendmail - najbardziej znany serwer pocztowy
•	Unifikacja programów obsługi i protokołów pocztowych
•	Funkcjonalność:
•	Przesyłanie poczty pomiędzy różnymi programami pocztowymi  w systemie unixowym
•	Odbieranie i wysyłanie wiadomości przez SMTP
•	Utrzymywanie obowiązujących w całym systemie aliasów, co pozwala na tworzenie list adresowych
•	Sendmail’a należy uruchomić jako demona. Będzie on nasłuchiwał na porcie TCP 25 i przetwarzał przychodzące listy

POP
•	Protokół pozwala na przesyłanie poczty od serwera pocztowego do lokalnego programu pocztowego użytkownika (tzw. “pobieranie poczty”)
•	Weryfikacja nazwy użytkownika i jego hasła
•	Protokół rozwinięto do wersji POP2, POP3 (obecna)
•	POP2 używa portu TCP/109, a POP3 TCP/110
•	Podobnie jak i w przypadku SMTP polecenia protokołu POP można zapisywać do odpowiedniego portu TCP nawiązując wcześniej z połączenie za pomocą telnet’a

POP3 - lista podstawowych komend
•	USER nazwa-uzytkownika		Nazwa konta użytkownika	
•	PASS hasło			Hasło użytkownika	
•	STAT		Wyświetla liczbę nieodebranych wiadomości i ich objętość w bajtach
•	RETR n	Odbiera wiadomość o numerze n	
•	DELE n	Usuwa wiadomość o numerze n	
•	LAST		Wyświetla numer wiadomości na której ostatnio wykonano polecenie
•	LIST  [n]	Wyświetla objętość wszystkich wiadomości lub n 	
•	TOP n l	Wyświetla nagłówki I l pierwszych linii wiadomości n	
•	NOOP	Nic nie rób	
•	QUIT		Kończy sesję POP3	

POP3 - przykład
•	telnet galaxy.uci.agh.edu.pl 110 
•	Trying 149.156.96.9.110...
•	Connected to galaxy.uci.agh.edu.pl.
•	Escape character is '^]'.
•	+OK QPOP (version 3.0.2) at galaxy starting.  
•	user mitu
•	+OK Password required for mitu.
•	pass mojehaslo:)
•	+OK mitu has 23 visible messages (0 hidden) in 57094 octets.
•	stat
•	+OK 23 57094
•	list
•	+OK 23 visible messages (57094 octets)
•	1 2482
•	2 2430
•	.
•	retr 2
•	+OK 2430 octets
•	<... TU ZOSTANĄ WYŚWIETLONE SZCZEGÓŁY WIADOMOŚCI.

IMAP
•	Jest odpowiednikiem protokołu POP z rozbudowaną funkcjonalnością
•	Pozwala na synchronizację skrzynki pocztowej
•	Możliwość manipulowania pojedynczymi wiadomościami zarówno w systemie serwera, jak i w systemie klienta. Zmiany dokonane w jednym z tych systemów zostaną uwzględnione w skrzynkach pocztowych obydwu
•	IMAP wykorzystuje port TCP 143
•	Protokół rozwinięto do wersji IMAP2, IMAP3, IMAP4 (obecna)
•	W systemie UNIX - demon imapd - obsługuje serwer pocztowy z użyciem IMAP
Procmail
•	Systemem lokalnego przetwarzania poczty elektronicznej, główne przychodzącej
•	Wywoływany bezpośrednio przez mailer systemowy
•	Według reguł przetwarzania  zawartych  w  tych  plikach konfiguracyjnych Procmail kieruje wiadomość do odpowiedniej skrzynki, likwiduje ją, modyfikuje lub przekazuje dalej
•	Przykład zastosowania - plik .procmailrc z treścią usuwającą wiadomości przychodzące od someone.i.dont.like@somewhere.org 
	
	:0 
	*^From.*someone.i.dont.like@somewhere.org 
	/dev/null 

Kryptografia
•	Kryptografia - gałąź wiedzy i badań zajmująca się utajnionym zapisywaniem,
•	Szyfrowanie, kodowanie - proces przekształcania tekstu jawnego w tekst zaszyfrowany,
•	Rozszyfrowanie, dekodowanie - proces odwrotny
•	Tekst jawny i kryptogram  są podzielone na jednostki tekstu (pojedyncza litera , para liter (digram), trójka liter (trigram),blok składający się N liter)
•	Dwa podstawowe rodzaje szyfrów: przestawieniowe i podstawieniowe
•	Technika: ogólny algorytm szyfrowania E, ogólny algorytm deszyfrowania D i tajny klucz (lub klucze)

Kryptoanaliza
•	Kryptoanaliza - dziedzina wiedzy i badań zajmująca się metodami przełamywania szyfrów. 
•	Szyfr przełamywalny - szyfr przy którym jest możliwość odtworzenia tekstu jawnego bądź klucza na podstawie tekstu zaszyfrowanego, ewentualnie określenia klucza na podstawie znajomości tekstów jawnego i zaszyfrowanego. 
•	Kryptologia - obejmuje zarówno kryptografię, jak i kryptoanalizę.

Poufność, autentyczność, rodzaje kryptosystemów
•	Warunki konieczne, spełniane przez system szyfrowania:
•	Poufność - nie jest obliczeniowo możliwe ustalenie choćby fragmentu wiadomości na podstawie szyfru
•	Autentyczność - nie jest możliwa niewykrywalna zmiana zaszyfrowanej  informacji na jej drodze do uprawnionego odbiorcy
•	Kryptosystemy dzielimy na:
•	symetryczne - jednakowe klucze szyfrowania i deszyfrowania
•	asymetryczne - para kluczy ( najczęściej prywatny i publiczny)
Szyfr DES
•	Bazuje na algorytmie DES (podstawiania i permutacji)
•	Szyfrowane są 64 bitowe porcje informacji. Klucz ma 56 bitów
•	Algorytm:
•	Zamiana kolejności bitów w sekwencji szyfrującej - na podstawie klucza
•	Szesnastokrotne wykonanie kodowanej kluczem funkcji, która dokonuje podstawień bitów i następnie zamienia miejscami połową starszą i młodszą danych szyfrowanych
•	D3DES - wersja ulepszona DES - zwiększona długość klucza, wielokrotne szyfrowanie wariantami klucza

Szyfr RSA
•	Algorytm z kluczem jawnym 
•	Generowanie pary kluczy (klucza publicznego KE, klucza prywatnego KD),
•	Szyfrowanie wiadomości M przy pomocy klucza publicznego KE,
•	Deszyfrowanie kryptogramu C przy pomocy klucza prywatnego KD,
•	Możliwość bezpiecznego uzgodnienia wspólnego klucza prywatnego przez niezabezpieczony, podsłuchiwany kanał 

Szyfr IDEA
•	Pierwsze opracowanie - rok 1990,
•	Szyfrowanie 64-bitowych bloków tekstu jawnego,
•	Klucz 128 bitowy,
•	Polega na naprzemiennym mnożeniu modulo 2 przez bajty klucza i dodawaniu do siebie różnych bajtów z szyfrowanego bloku,
•	Kolejność tych operacji gwarantuje brak utraty informacji i możliwość przeprowadzenia procedury odwrotnej, dającej na podstawie kryptogramu tekst pierwotny.

Sposoby potwierdzania tożsamości
•	Logowanie - proces prowadzący do uwierzytelnienia użytkownika poprzez system operacyjny
•	Uwierzytelnienie (sprawdzenie tożsamości) następuje poprzez:
•	Hasła
•	Karty magnetyczne
•	Karty procesorowe
•	Systemy biometryczne

Firewall
•	Firewall (zapora ogniowa), trzy typy:
•	z dwiema kartami,
•	z ruterem ekranującym,
•	z dwoma ruterami ekranującymi.
•	Trzy typy fukcjonowania:
•	filtracja pakietów (packet-filtering firewall),
•	filtracja z inspekcja stanów (stateful-inspection firewall),
•	Pośredniczenie w sesji (application proxy firewall).
Usługi sieciowe w modelu peer to peer
•	Model tzw. sieci partnerskich (peer to peer network)
•	Sieć typu “każdy z każdym” - wszystkie uczestniczące w sieci komputery mają podobny stopień kontroli nad zasobami
•	Współdzielenie np. przestrzeni dyskowej i drukarek, czasu procesora
•	Zastosowanie dla małych grup roboczych (sieci odizolowane), przeznaczonych do realizacji spójnych zadań
•	Przykłady: Microsoft Windows for Workgroups, IBM LAN Server, Artisoft LANtastic, Novell Personal NetWare)

Usługi sieciowe w modelu mailslots
•	MSFS (Mailslot File System),
•	Jednokierunkowy transfer danych (do adresata)
•	Adresacja hierarchiczna, dostęp przez nazwę:
•	\\DomainName\mailslot\[path]name
•	Każdy mailslot posiada właściciela (proces odbierający)
•	Dwie klasy mailslotów:
•	Pierwsza - zorientowana połączeniowo, transfer danych dla w trybie jeden-do-jeden, lub jeden-do-wielu,
•	Druga - oparta na datagramach, transfer niegwarantowany, tryb jeden-do-jeden, lub jeden-do-wielu

Usługi sieciowe z użyciem named pipes
•	NPFS (Named Pipe File System),
•	Pipe jest sekcją dzielonej pamięci, używanej przez proces do komunikacji,
•	Adresacja hierarchiczna, dostęp przez nazwę:
•	\\ServerName\pipe\PipeName
•	Dostępne połączenie: jeden-do-jeden,
•	Pipe server - proces, który tworzy potok, pipe client - łączy się z gotowym potokiem,
•	Serwer potoku nie może tworzyć potoku na innym komputerze, jednak klient może może komunikować się zdalnie,
•	Potoki anonimowe (nienazwane) - nie są przewiązane z procesem tworzącym.

Usługi sieciowe w modelu klient - serwer
•	Model podstawowy: dwie stacje, jedna świadczy usługi, druga korzysta z usług
•	Zalety i wady:
•	łatwa realizacja i przejście z systemu rozproszonego
•	obciążenie zadaniami, pochodzące od oprogramowania aplikacyjnego, rozłożone jest na wiele maszyn
•	mały ruch w sieci, gdyż serwer przekazuje klientowi jedynie żądaną informację 
•	dane zgromadzone w jednym miejscu - łatwość kontroli nad danymi systemu
•	łatwość stosowania mechanizmów monitorowania i kontroli dostępu
•	problemy z kolizjami przy edycji wspólnych danych

TCP - przykład kodu serwera (Java)
•	ServerSocket socket;
•	Socket klient;    
•	BufferedReader net_in;
•	PrintWriter net_out;
•	try {	
•	  socket = new ServerSocket (2222);
•	  while (true) {	
•	     klient = socket.accept ();
•	     net_in = new BufferedReader (new InputStreamReader(klient.getInputStream()));
•	     net_out = new PrintWriter (new OutputStreamWriter(klient.getOutputStream()));
•	     String s =  net_in.readLine ();
•	     net_out.println (”Przyslales: " + s);
•	     net_out.flush ();
•	     net_in.close ();
•	     net_out.close ();
•	  }// while
•	} catch (IOException e) {}

TCP - przykład kodu
 klienta (Java)
•	Socket klient;    
•	BufferedReader net_in;
•	PrintWriter net_out;
•	try {	
•	   socket = new Socket (“200.200.200.200”, 2222);
•	   net_in = new BufferedReader (new InputStreamReader(socket.getInputStream ()));
•	   net_out = new PrintWriter (new OutputStreamWriter(socket.getOutputStream()),true);
•	   net_out.println (“Test...”);
•	   net_out.flush ();
•	   String s = net_in.readLine();
•	   System.out.println (“Odebrana odpowiedz: “ + s);
•	   net_in.close ();
•	   net_out.close ();
•	   socket.close ();
•	} catch (IOException e) {}

Mobile IP
•	Przeźroczysta migracja hosta - użytkownik ruchomy wraz z maszyna przechodzi z jednej sieci do drugiej i jest to niewidoczne dla aplikacji (w warstwach wyższych)
•	Home Agent (HA) oraz Foreign Agent  (FA) współpracują ze sobą aby zapewnić jednostce Mobile Host (MH) przemieszczanie bez zmiany jego adresu IP
•	Kiedy MH jest poza macierzystą siecią HA przesyła w jego imieniu pakiety do sieci, z której pochodzi
•	FA jest pośrednikiem rejestracyjnym w obcej sieci i pośredniczy w komunikacji na linii MH - HA po rejestracji (tunelowanie z enkapsulacją pakietów w innym protokole) 
Łączność satelitarna - usługi sieciowe
•	Obsługa obszarów o niskim zaludnieniu i bez infrastruktury
•	Szybkie podłączenie użytkownika do systemu i globalny zasięg usług
•	Możliwość stosowania broadcastu do multimediów (DVB - Digital Video Braoadcasting), Broadband Interactive (BBI) System
•	Klient dostaje współrzędne kierunkowe satelity z którym się łączy
•	Dwa typy satelitów: LEO - low orbit, GEO - geostacjonary
•	Propagacja sygnału na drodze host-satelita-host - około 0,5 sekundy

Internetowe systemy satelitarne
•	Początki - system Irydium (Motorola) złożony z 66 niskoorbitalnych satelitów okołoziemskich - bezprzewodowa łączność - telefaksy, pagery, transmisja danych, transmisja dźwięku. Prędkość transmisji z urządzenia zoptymalizowana dla przesyłu głosu (około 3,2 Kbps). Rozpoczął funkcjonowanie około 1998 r,
•	Obecnie istnieje kilka ogólnoświatowych systemów dostarczających usługi przesyłowe poprzez przekaźnik satelitarny,
•	Popularne zastosowania: łącze wychodzące od klienta (upload) to linia naziemna, łącze przychodzące (download) - sygnał satelitarny.

Łączność satelitarna - TELEDESIC
•	Szerokopasmowy satelitarny system transmisji danych
•	Wykorzystujący układ satelitów na orbitach LEO - 288 satelitów (plus 36 zapasowych) na 12 orbitach, wysokość orbit to 1440 km
•	Jakość transmisji jak w sieciach światłowodowych
•	Globalny zasięg 
•	Szerokopasmowa transmisja danych 19-29 GHz
•	Zakładany minimalny kąt elewacji terminala na satelitę 40 stopni
•	Satelity posiadają łącza optyczne lub mikrofalowe i komunikują się pomiędzy sobą (routing z przetwarzaniem ścieżek)
•	Gateway’e na ziemi pośredniczą w konwersji protokołów naziemnych (IP/TCP, ATM)
•	System posiada globalne naziemne centrum kontroli (NOCC - Network Operations Control Center)

Łączność satelitarna - TELEDESIC - terminale
•	Terminale są tutaj zarówno stacjonarne jak i przenośne,
•	tryb transmisji: MFTDMA (multi-frequency time division access) w łączu w dół i ATDMA (asynchronous TDMA) w łączu w górę,
•	przesył: łącze w dół -  do 64 Mbs, łącze w górę - do 2 Mbps (na żądanie, gdyż standardowo 16 kbps),
•	anteny: płaskie sterowane lub paraboliczne o średnicy 30 cm,
•	regulacja mocy nadawanej w zale no ci od warunków propagacyjnych (np. pogoda),
•	konieczność precyzyjnego repozycjonowania anteny.

Łączność satelitarna - SKYBRIDGE
•	Szerokopasmowa satelitarna sieć dostępowa - wykorzystanie satelitów na orbitach LEO - 80 satelitów LEO na wysokości 1469 km
•	Oparta na transmisji pakietów ATM
•	Pasmo częstotliwości 10 - 18 GHz 
•	Satelity nie posiadają łączy międzysatelitarnych
•	Szerokopasmowa transmisja danych od 16kb/s do 2 Mb/s
•	(łącze w górę) i 20 Mb/s (łącze w dół)
•	pokrycie obszarów do 68 stopni szerokości geograficznej (przy
•	Minimalnym kącie elewacji anteny terminala 30 stopni)
•	Satelity bez przetwarzania sygnałów (tylko zwykłe przekaźniki)
•	System ciągle jeszcze rozbudowywany

Łączność satelitarna - SKYBRIDGE - terminale
•	Transmisja pakietowa oparta na ATM
•	Dwa tryby:
•	Terminal indywidualny: łącze w górę - do 2 Mbs, łącze w dół - do 20 Mbs
•	Terminal zbiorowy: łącze w górę - do 10 Mbs, łącze w dół - do 100 Mbs
•	Możliwość śledzenia dwóch satelitów jednocześnie
•	Anteny: paraboliczne, bardzo małe

Łączność satelitarna - EUROSKYWAY
•	Europejska satelitarna sieć szerokopasmowej transmisji
•	Przepustowość do 32 Mb/s
•	Pięć satelitów geostacjonarnych pokrywających Europę, Płn. Aftykę, bliski Wschód
•	Łącza pomiędzy satelitami
•	Pasmo 20/30 GHz dla łacza satelita-ziemia i 56/64 GHz pomiędzy satelitami
•	anteny paraboliczne
•	MFTDMA
•	Przetwarzanie danych na satelicie

HTTP
•	HTTP - Hypertext Transfer Protocol - protokół transportowy, oparty o tryb zapytanie - odpowiedź
•	request - zapytanie HTTP, prosty przykład: 
•	GET Request-URL CRLF
•	response - odpowiedź serwera, kodowana zgodnie z protokołem HTTP
•	URL - Uniform Resource Locator - podstawowy adres HTTP, wskazujący zasoby jakie mają być udostępnione daną metodą
•	Standardowy port TCP/IP dla usług na bazie HTTP - 80

HTTP a WWW
•	Technika odtworzenia dokumentu WWW u klienta:
•	Klient kontaktuje się z serwerem wysyłając zapytanie z danym URL
•	Serwer wysyła dokument główny (np. w HTML)
•	Klient parsuje dokument zawierający linki do składowych dokumentu (grafika, dźwięk, obiekty osadzone, obikty w ramkach itp.). Następnie wysyła żądanie HTTp o każdy z tych elementów. Buduje dokument docelowy (np. graficznie) otrzymując jego składniki w toku indywidualnych połączeń HTTP. Dokument może być wyświetlany na bieżąco (gdy jest jeszcze niekompletny) lub po dopiero zakończeniu pobierania elemetnów.

HTTP - przykład (I)
•	Wysłano zapytanie: http://www.agh.edu.pl/user.php?ID=Michał
•	Zapytanie wysyłane przez klienta:   
•	GET /user.php?ID=Michał HTTP/1.1
•	Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash
•	Accept-Language: pl
•	Accept-Encoding: gzip
•	User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
•	Host: www.agh.edu.pl

HTTP - przykład (II)
•	Odpowiedź serwera:
•	HTTP/1.1 200 OK
•	Date: Thu, 01 Apr 2004 17:50:28 GMT
•	Server: Apache/1.3.29 (Unix) mod_ssl/2.8.16 OpenSSL/0.9.7a
•	Last-Modified: Wed, 31 Mar 2004 10:26:47 GMT
•	ETag: "48d5-c07-406a9ce7"
•	Accept-Ranges: bytes
•	Content-Length: 3079
•	Keep-Alive: timeout=15, max=100
•	Content-Type: text/html
•	CRLF CRLF
•	Dane - właściwy dokument HTTP

HTTP - metoda GET i POST
•	POST  - parametry (nazwy zmiennych, wartości) są wysyłane jako część nagłówka HTTP (definiowane w kolejnych liniach nagłówka jako niezależne dane). Stosowana w bardziej złożonych przypadkach, gdzie przekazujemy dużą ilość danych. Szczególnie istotne zastosowanie - upload plików na serwer HTTP.
•	GET  - nazwy zmiennych i ich wartości są doklejane do URL. Przykład:
http://x.pl/plik.php?zmienna1=wartosc1&zmienna2=wartosc2
Ograniczeniem tej metody jest długość adresu, zależna np. od typu przeglądarki. Całość przesyłanej z klienta informacji jest jawnie prezentowana użytkownikowi (w linii zapytania).. Możliwa jest edycja zapytania (parametry), przechowywanie kompletnego zapytania (bookmarks).
•	HEAD - analogiczna do GET, z tą różnicą że jest wymagany tylko nagłówek domumentu w odpowiedzi

HTTP - interfejs CGI
•	CGI (Common Gateway Interface) -standard interfejsu służącego wymianie informacji między serwerami WWW a zewnętrznymi programami klientów,
•	Na podstawie URL serwer uruchamia zewnętrzny program i przekazuje do niego parametry (zmienne środowiskowe) otrzymane z przeglądarki użytkownika,
•	Program realizuje zlecone operacje,
•	Wyjście z programu jest wysyłane bezpośrednio do klienta,
•	Konieczność ręcznego pobierania parametrów z linii zapytania URL,
•	Konieczność konwersji wartość parametrów dla przywrócenia w nich znaków zabronionych w URL.

Aplikacje internetowe - przegląd technologii
•	CGI - Common Gateway Interface, dowolny język, większość serwerów
•	PHP - Personal Hypertext Processor, język PHP3, PHP4, serwer Apache
•	ASP - Active Server Pages, języki VBScript, Jscript, serwer IIS (Internet Information Services)
•	.NET - języki C#, VBScript, Jscript i inne (platforma Microsoft .NET)
•	JSP - Java Server Pages, język Java,serwer Jakarta Tomcat

WAP
•	WAP - Wireless Application Protocol - protokół obsługi aplikacji internetowych uruchamianych na urządzeniach przenośnych,
•	Protokół technologicznie analogiczny do HTTP - technika klient-server (serwer stron WAP, klient WAP)
•	Nowy język opisu strony: WML (Wireless Markup Language), wzorowany na HTML,
•	Sprzętowe mikroprzeglądarki w urządzeniach klientów - dokumenty podzielone na buforowane “karty”
•	Dostosowanie do niewielkich transferów do urządzeń przenośnych - w przypadku telefonów komórkowych 9600 Kbps
•	Przesył niewielkich pakietów informacji prezentowanych opisem języka - w prostej oprawie graficznej

FTP (I)
•	FTP (File Transfer Protocol) - protokół transmisji plików
•	dwukierunkowy przesył plików zarówno tekstowych jak i binarnych
•	funkcjonalność w zakresie transferu informacji o plikach, zarządzania plikami i katalogami
•	połączenie na bazie TCP, typowy port połączenia kontrolnego: 21
•	Dwa połączenia: kontrolne i służące do przekazywania informacji o plikach (oraz samych plików) połączenie danych
•	Interakcyjny użytkownik wywołuje proces-klienta protokołu FTP w swoim systemie lokalnym, za jego pośrednictwem łączy się z serwerem na zdalnej maszynie

FTP (II)
•	Tryb tekstowy i binarny transmisji danych
•	Timeout dla połączenia FTP
•	Tryb pasywny i aktywny klienta. W trybie aktywnym klienta serwer po otrzymaniu żądania przesyłu danych przesyła je na gniazdo utworzone przez klienta (o numerze portu jest informowany protokołem). W trybie pasywnym - serwer sam zakłada gniazdo, a łączy się na nie klient. 
•	Anonimowe ftp - umożliwienie zalogowania się użytkownika standardowego o nazwie  anonymous i korzystanie z udostępnionych publicznych zasobów w ramach obowiązujących praw dostępu dla takich użytkowników

Klient FTP
•	Klasyczny interfejs tekstowy (tryb intearkcyjny) lub klient graficzny 
•	Praca w trybie sesji - otwarcie połączenia, realizacja komend, zamknięcie połączenia)
•	Komunikacja interakcyjna również na linii klient - serwer. Klient wysyła komunikat i czeka na stosowną odpowiedź (zgodnie z protokołem FTP)

Polecenia klienta FTP (I)
•	Otwarcie połączenia ftp nazwa-systemu-zdalnego, lub po uruchomieniu klienta: open nazwa-systemu-zdalnego
•	close lub disconnect - zamknięcie połączenia
•	bye lub quit - zakończenie proqramu klienta
•	ascii - ustawienie trybu transferu plików na znakowy
•	bin(ary) - ustawienie trybu transferu plików na binarny
•	prompt [on|off] - (wy)łączenie trybu potwierdzania interaktywnego operacji

Polecenia klienta FTP (II)
•	Operacje na katalogach:
•	cd. katalog-zdalny - zmiana katalogu
•	cdup - przejście w górę drzewa katalogów	
•	pwd - podaje nazwę bieżącego katalogu	
•	lcd katalog-lokalny  - tak jak cd. dla katalogów lokalnych	
•	ls [katalog-lokalny] - wyświetla zawartość katalogu-lokalnego, można podać argument, domyślnie katalog bieżący	

•	Ponieważ w programie klienta można operować zarówno na systemie plików lokalnym jak i zdalnym wprowadzono operator (‘!’), który postawiony jako przedrostek przed większością komend powoduje, że komenda ta dotyczy systemu lokalnego zamiast zdalnego

Polecenia klienta FTP (III)
•	get plik-zdalny [plik-lokalny]	pobiera plik zdalny i zapisuje na lokalnej maszynie w bieżącym katalogu pod nazwą plik-lokalny (gdy nie ma parametru to nie zmienia nazwy),	
•	put plik-lokalny [plik-zdalny]	to samo w drugą stronę,	
•	mget pliki-zdalne - działa na grupie plików określonych za pomocą wzorca metaznakowego (znaków specjalnych: *, ?, [a-d]
•	mput pliki-lokalne - działa na grupie plików określonych za pomocą wzorca metaznakowego (znaków specjalnych: *, ?, [a-d]	

Automatyzacja czynności klienta FTP 
•	Plik .netrc znajdujący się w katalogu użytkownika może zawierać makra dotyczące czynności jakie należy wykonać na systemie zdalnym
•	Identyfikacja zestawu czynności - poprzez nazwę hosta zdalnego i makra
•	Komendy 
•	machine nazwa_komputera	określa nazwę odległej maszyny	
•	login nazwa_użytkownika	nazwa użytkownika na tej maszynie	
•	password hasło		hasło	
•	macdef nazwa		makrodefinicja; jeśli nazwa ma wartość 				‘init’  to wykonywa jest ona 					automatycznie.	

Automatyzacja czynności klienta FTP - przykład
•	Treść .netrc:
•	machine deathstar.ia.agh.edu.pl
•	login mitu
•	password moje_haslo
•	macdef init
•	cd archiwum
•	bin
•	get arch_report
•	quit
•	Sposób użycie tej definicji:
•	mitu@galaxy:~ (124) ftp deathstar.ia.agh.edu.pl

Protokół FTP - przykład (I)
•	connecting to 149.156.96.9 ...
•	Connected to 149.156.96.9 port 21
•	220 AGH ftp server galaxy.uci.agh.edu.pl
•	USER mitu
•	331 Password required for mitu.
•	PASS (hidden)
•	230 User mitu logged in.
•	PWD
•	257 "/home/iagrp/mitu" is current directory.
•	SYST
•	215 UNIX Type: L8
•	Host type (S): UNIX (standard)
•	PORT 128,0,0,3,8,105
•	200 PORT command successful
•	LIST 
•	150 Opening ASCII mode data connection for file list
•	Received 3981 bytes in 0.4 secs, (9.26 KBps), transfer succeeded
•	226 Transfer complete.

Protokół FTP - przykład (II)
•	receiving czynniki.zip as czynniki.zip (1 of 1)
•	TYPE I
•	200 Type set to I
•	PORT 128,0,0,3,8,110
•	200 PORT command successful
•	RETR czynniki.zip
•	150 Opening BINARY mode data connection for czynniki.zip (26451 bytes)
•	Received 26451 bytes in 0.8 secs, (33.94 KBps), transfer succeeded
•	226 Transfer complete.

SSH (I)
•	Alternatywa dla TELNET lecz z dalszą, rozbudowaną funkcjonalnością (tunele, scp)
•	Połączenie szyfrowane klient-server
•	Każdy serwer posiada parę kluczy -  prywatny i publiczny
•	Klucz publiczny dostępny jest dla wszystkich użytkowników sieci
•	Procedura:
•	Klient pobiera klucz publiczny, sprawdza uwierzytelnienie serwera - jeśli znajdzie w swojej bazie inny klucz tego serwera - rozłącza się
•	Klient generuje losową liczbę 256 bitową - swój klucz prywatny
•	Klient liczbę tę szyfruje przy pomocy swojego klucza prywatnego oraz klucza publicznego serwera i tak zakodowaną przesyła do serwera
•	Serwer przy pomocy swojego klucza prywatnego i klucz publicznego klienta rozkodowuje wylosowaną liczbę, która stanowi klucz kodowy w dalszej komunikacji

SAMBA
•	Protokół negocjacyjny, bazujący na blokach SMB (Server Message Block)
•	Protokół nadbudowany nad NetBIOS
•	Funkcjonalność:
•	Współdzielenie katalogów
•	Otwarcie – zamknięcie pliku
•	Otwarcie – zamknięcie pliku drukarskiego
•	Czytanie – zapis pliku
•	Połączenie i rozłączenie od pliku lub usługi drukarskiej
•	Tworzenie – usuwanie pliku, katalogu
•	Pobieranie i ustawianie atrybutów
•	Blokowanie – odblokowywanie zakresu bitowego w pliku