2001 © Sławomir Jeżewski Katedra Informatyki Stosowanej
PŁ.
Programowanie sieciowe
Wykład VI a
Dostęp do warstwy łącza danych
Warstwowy Model Sieci ISO-OSI
(Open System Interconnection )
Warstwa fizyczna
Warstwa łącza
danych
Warstwa sieci
Warstwa
transportowa
Warstwa sesji
Warstwa prezentacji
Warstwa aplikacji
ISO-OSI
Warstwa łącza danych
Warstwa fizyczna
Warstwa łącza
danych
Warstwa sieci
Ramki
Pakiety
Adresy IP
Adresy
fizyczne
Zadania warstwy łącza
danych
•
Określanie przyporządkowania
IP/FIZ
•
Formowanie ramek / pakietów
•
Kontrola poprawności odbioru
danych
•
Separacja warstwy sieciowej i
warstwy fizycznej
Metody dostępu do
warstwy łącza danych
•
BPF ( BSD Packet Filter )
•
DLPI ( SVR4 Data Link Provider
Interface )
•
Interfejs SOCK_PACKET ( Linux )
BPF
(BSD 4.4)
jądro systemu
Kopie wysyłanych
i odbieranych
pakietów
Warstwa
łącza
danych
BPF
IPv6
IPv4
bufo
r
Program
użytkowy
Program
użytkowy
bufo
r
filtr
filtr
przestrzeń procesów
Dostęp programowy do urządzenia
filtrującego
•
ioctl
•
open /dev/bpf0 , /dev/bpf1 , .....
•
read/write
DLPI
(Data Link provider SVR4)
jądro systemu
Warstwa
łącza
danych
IPv6
IPv4
bufmo
d
Program
użytkowy
Program
użytkowy
bufmo
d
pfmo
d
pfmo
d
przestrzeń procesów
Dostęp programowy do urządzenia
filtrującego
•
DL_ATTACH_REQ
•
open /dev/le0
•
read/write
SOCK_PACKET
(Linux)
jądro systemu
Kopie wszystkich
wysyłanych i
odbieranych
pakietów
Warstwa
łącza
danych
IPv6
IPv4
Program
użytkowy
Program
użytkowy
filtr
przestrzeń procesów
Dostęp programowy
•
ioctl SIOCGIFFLAGS
IFF_PROMISC,
•
socket( AF_INET, SOCK_PACKET, htons(mode) )
•
read/write
•
ioctl SIOCSIFFLAGS
ETH_P_LOOP
0x0003 /* All packets */
ETH_P_LOOP
0x0060 /* Ethernet Loopback packet */
ETH_P_ECHO
0x0200 /* Ethernet Echo packet */
ETH_P_PUP
0x0400 /* Xerox PUP packet */
ETH_P_IP
0x0800 /* Internet Protocol packet */
ETH_P_X25
0x0805 /* CCITT X.25 */
ETH_P_ARP
0x0806 /* Address Resolution packet */
ETH_P_BPQ
0x08FF /* G8BPQ AX.25 Ethernet Packet
ETH_P_DEC
0x6000 /* DEC Assigned proto */
ETH_P_DNA_DL
0x6001 /* DEC DNA Dump/Load */
ETH_P_DNA_RC
0x6002 /* DEC DNA Remote Console */
ETH_P_DNA_RT
0x6003 /* DEC DNA Routing */
ETH_P_LAT
0x6004 /* DEC LAT */
ETH_P_DIAG
0x6005 /* DEC Diagnostics */
ETH_P_CUST
0x6006 /* DEC Customer use */
ETH_P_SCA
0x6007 /* DEC Systems Comms Arch */
ETH_P_RARP
0x8035 /* Reverse Addr Res packet */
ETH_P_ATALK
0x809B /* Appletalk DDP */
ETH_P_AARP
0x80F3 /* Appletalk AARP */
ETH_P_IPX
0x8137 /* IPX over DIX */
ETH_P_IPV6
0x86DD /* IPv6 over bluebook */
2001 © Sławomir Jeżewski Katedra Informatyki Stosowanej
PŁ.
Programowanie sieciowe
Wykład II b
Rozgłaszanie i rozsyłanie grupowe
( Protokół IGMP )
Internet Group Management Protocol
Rozgłaszanie
( broadcasting )
•
Obciążenie komputerów
•
Obciążenie sieci
Rozsyłanie pakietów do wszystkich komputerów w danej sieci lokalnej
Adresy rozgłoszeniowe
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8
16
31
0
.
.
.
.
24
.
.
.
255
.
.
255
255
.
255
255
255
255
255
255
255
Grupa rozgłoszeniowa
Def
Grupa rozgłoszeniowa to zespół komputerów
reprezentowanych jednym numerem IP
Zasady rozgłaszania
grupowego
•
Każda stacja może należeć do jednej lub więcej grup rozgłoszeniowych
•
Pakiet wsłany do grupy rozgłoszeniowej trafia do wszystkich
komputerów niezależnie od przynależności do sieci fizycznej
•
Przynalezność do grupy rozgłoszeniowej jest dynamiczna
•
Do obsługi rozgłaszania grupowego mogą być dedykowane
specjalne komputery ( multicasting routers )
•
Rozgłaszanie jest z osobna konfigurowane dla każdego
interfejsu fizycznego w komputerze.
Zasady rozgłaszania
grupowego
•
Rozgłaszanie grupowe jest opcją dodatkową oprogramowania IP
–
brak obsługi rozgłaszania grupowego w implementacji stosu IP
–
implementacja częściowa
–
pełna implementacja
Adresy rozgłoszeniowe
224.0.0.0
-
239.255.255.255
224.0.0.0
-
nie przypisany
224.0.0.1
-
adres specjalny ( wszystkie komputery )
Pozostałe numery
-
Assigned Numbers RFC 790
Zasady obsługi pakietów
rozsyłania grupowego
•
Umożliwić wysyłanie pakietów z adresem grupy D
•
Czas życia pakietów domyślnie musi być równy 1
•
Stos IP musi odrzucać te datagramy, które adresowane są do obcych grup
•
Rozsyłanie pakietów winno odbywać się z wykorzystaniem możliwości sieci
fizycznej
–
Rozgłaszanie w sieci fizycznej ( bradcast )
–
Rozsyłanie grupowe w sieci fizycznej ( multicast )
–
Rozsyłanie przez router rozgłoszeniowy
Zasady obsługi pakietów
rozsyłania grupowego
•
Przynależność do grupy musi być dynamiczna
–
JoinHostGroup
–
LeaveHostGroup
•
Pakiet wysyłany do grupy musi być blokowany w lokalnej petli IP
•
Nie generuje się pakietów ICMP w odpowiedzi na
pakiety rozgłoszeniowe
•
Pakiety skierowane pod adres 224.0.0.1 nie są
transmitowane poza sieć lokalną
Internet Group
Management Protocol
(IGMP)
•
Pozyskiwanie i uaktualnianie informacji o przynależności
do grup rozgłoszeniowych
•
Uaktualnianie informacji nie może odbywać się częściej
niż co 1 min
Format datagramów IGMP
Suma kontrolna
V
Adres grupowy
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10
16
31
0
T
Nie
używane
1
Wersja
1
Zapytanie o przynależność ( Membership Query)( brama)
2
Odpowiedź na zapytanie ( Membership Report ) ( host )
Maszyna stanów IGMP
Nie należy do
grupy
Odpowiedź
na
zapytanie
Dołączenie do grupy
Należy do
grupy
Opuszczenie
grupy
Opuszczenie
grupy
Zapytanie
MQ
Odebrano
odpowiedź
MR
Timer
•
recv ,recfrom, read, readv
Funkcje wejscia i wyjścia bez
blokowania
•
write writev send sendto
•
connect
•
accept
Protokół SMTP
S M TP
U ż y tk o w n ik
S y s t e m
p li k ó w
S y s t e m
p li k ó w
U ż y tk o w n ik
Komunikaty SMTP
•
Komunikaty mają formę łańcuchów znaków zakończonych CRLF
•
Znaki zdefiniowane są standardem ASCII
•
Znaki mają rozmiar 7 bitów
Komunikaty SMTP
•
Ogólna postać komunikatu
<POLECENIE> <CRLF>
<POLECENIE><SPACJA><PARAMETR> <CRLF>
Definicja formalna
konunikatu SMTP
•
<reverse-path>
::= <path>
•
<forward-path>
::= <path>
•
<path>
::= "<" [ <a-d-l> ":" ] <mailbox> ">"
•
<a-d-l>
::= <at-domain> | <at-domain> "," <a-d-l>
•
<at-domain>
::= "@" <domain>
•
<domain>
::= <element> | <element> "." <domain>
•
<element>
::= <name> | "#" <number> | "[" <dotnum> "]"
•
<mailbox>
::= <local-part> "@" <domain>
•
<local-part> ::= <dot-string> | <quoted-string>
•
<name>
::= <a> <ldh-str> <let-dig>
•
<ldh-str>
::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
•
<let-dig>
::= <a> | <d>
•
<let-dig-hyp>
::= <a> | <d> | "-"
•
<dot-string> ::= <string> | <string> "." <dot-string>
•
<string>
::= <char> | <char> <string>
•
<quoted-string>
::= """ <qtext> """
•
<qtext>
::= "\" <x> | "\" <x> <qtext> | <q> | <q> <qtext>
Definicja formalna
Komunikatu SMTP
•
<dotnum>
::= <snum> "." <snum> "." <snum> "." <snum>
•
<number>
::= <d> | <d> <number>
•
<CRLF>
::= <CR> <LF>
•
<CR>
::= znak powrotu karetki (ASCII kod 13)
•
<LF>
::= znak nowej linii (ASCII kod 10)
•
<SP>
::= znak spacji (ASCII kod 32)
•
<snum>
::= 1, 2, lub 3 cyfry tworzące wartość
całkowitą liczbę
•
decymalną z zakresu 0-255
•
<a> ::= znaki z zakresu A-Z i a-z
•
<c> ::= jakikolwiek znak ASCII 128, lecz nie znak
•
specjalny czy spacja.
•
<d> ::= cyfra 0- 9
•
<q> ::= jakikolwiek znak ASCII 128 lecz nie CR, LF, ", \
•
<x> ::= znak ASCII 128
•
<special>
::= "<" | ">" | "(" | ")" | "[" | "]" | "\" | "."
•
| "," | ";" | ":" | "@" """ | znaki kontrolne 0-31 i 127
Komenda SMTP
Znaczenie
Parametry
HELLO
Identyfikacja nadawcy SMTP
Nazwa stacji wysyłającej wiadomość
Komenda inicjalizująca transmisję
wiadomości pocztowej
Adresy stacji leżące na drodze zwrotnej
wiadomości
SEND
Komenda inicjalizująca dostarczenie danych
bezpośrednio do terminala odbiorcy
SOML
(SEND OR MAIL)
Komenda inicjalizująca dostarczenie danych
bezpośrednio do terminala odbiorcy lub do
jego skrzynki pocztowej
SAML
(SEND AND MAIL )
Komenda inicjalizująca dostarczenie danych
bezpośrednio do terminala odbiorcy i do jego
skrzynki pocztowej
RCPT
Komenda określająca odbiorcę wiadomości skrzynka pocztowa odbiorcy wiadomości,
oraz adresy stacji leżących na drodze do
adresata
DATA
Komenda inicjalizująca wysyłanie danych z
wiadomości.
-
RSET
Odwołuje akcje związane z wysłaniem
wiadomości
-
VRFY
Weryfikuje poprawność adresu odbiorcy
Skrzynka pocztowa adresata
EXPN
Rozwija nazwę listy mailowej podając
adresy wszystkich należących do niej
użytkowników
Nazwa listy dyskusyjnej
HELP
Podaje pomoc ogólną lub na temat danego
polecenia
Nazwa polecenia
NOOP
Nic nie rób
QUIT
Zamyka połączenie
TURN
Zmienia role nadawcy i odbiorcy
wiadomości
Format odpowiedzi SMTP
•
1yz- pozytywna odpowiedź przed przystąpieniem do działania
•
2yz- pozytywna odpowiedź po zakończeniu działania
•
3yz- pozytywna odpowiedź w trakcie działania
•
4yz- odpowiedź negatywna - wynikająca z warunków
chwilowych
•
5yz- odpowiedź negatywna permanentnie
<XXX><SPACJA><OPIS><CRLF>
Format odpowiedzi SMTP
•
500 Syntax error, command unrecognized
•
501 Syntax error in parameters or arguments
•
502 Command not implemented
•
503 Bad sequence of commands
•
504 Command parameter not implemented
•
•
211 System status, or system help reply
•
214 Help message
•
•
220 <domain> Service ready
•
221 <domain> Service closing transmission channel
•
421 <domain> Service not available,
•