1. Ćwiczenia Linux/Knoppix

2. Skaner sieci - Ethereal

3. Automaty skończone

4. SMTP, POP3, HTTP kontynuacja

5. Warstwa tranportowa

7. Protokoły rutingu

8. Warstwa sieci

9. Powtórzenie materiału

Wyjście

Automaty skończone

Poniższy diagram przedstawia zmianę biegów w samochodzie osobowym z ręczną skrzynią biegów. Wyjaśnij znaczenie wszystkich stanów diagramu. Uzupełnij diagram o wszystkie możliwe stany i przejścia. Na przejściach zaznaczaj kierunki strzałkami.

Rysunek 1

Zadanie

Zaprojektuj protokół komunikacji pomiędzy bankomatem i klientem. Bankomat powinien realizować następujące funkcje:

  1. Podanie i sprawdzenie PINu

  2. Stan konta

  3. Pobranie pieniędzy

Przejścia pomiędzy stanami bankomatu (i klienta) są powodowane przez zdarzenia (mogą to być warunki logiczne, które opisują zdarzenie). Przy każdym przejściu, bankomat (lub klient) może wykonać czynność. Zdarzenie wywołujące przejście należy narysować przy przejściu nad poziomą kreską, a czynność wykonywaną przy przejściu: pod tą kreską, w następujący sposób:

Rysunek 2

Zdarzenia mogą być puste (przejście jest wtedy obowiązkowe i może być tylko do jednego stanu). Czynności mogą także być puste - żadna czynność nie jest wtedy wykonywana przy przejściu do nowego stanu. Stany można wielokrotnie rysować na diagramie, żeby zwiększyć jego czytelność.

DNS

Wykorzystując narzędzie dig możemy prześledzić działanie systemu DNS. Jak wiemy system DNS jest strukturą hierarchiczną. W sieci Internet znajduję się 13 głównych serwerów DNS (root DNS servers) nazwanych od A do M.

[cogi@msh cogi]$ dig

; <<>> DiG 9.2.3 <<>>
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5728
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUESTION SECTION:
;.                              IN      NS

;; ANSWER SECTION:
.                       78897   IN      NS      h.root-servers.net.
.                       78897   IN      NS      c.root-servers.net.
.                       78897   IN      NS      g.root-servers.net.
.                       78897   IN      NS      f.root-servers.net.
.                       78897   IN      NS      b.root-servers.net.
.                       78897   IN      NS      j.root-servers.net.
.                       78897   IN      NS      k.root-servers.net.
.                       78897   IN      NS      l.root-servers.net.
.                       78897   IN      NS      m.root-servers.net.
.                       78897   IN      NS      i.root-servers.net.
.                       78897   IN      NS      e.root-servers.net.
.                       78897   IN      NS      d.root-servers.net.
.                       78897   IN      NS      a.root-servers.net.

;; ADDITIONAL SECTION:
h.root-servers.net.     78897   IN      A       128.63.2.53
c.root-servers.net.     78897   IN      A       192.33.4.12
g.root-servers.net.     78897   IN      A       192.112.36.4
f.root-servers.net.     78897   IN      A       192.5.5.241
b.root-servers.net.     78897   IN      A       192.228.79.201
j.root-servers.net.     78897   IN      A       192.58.128.30

k.root-servers.net.     78897   IN      A       193.0.14.129
l.root-servers.net.     78897   IN      A       198.32.64.12
m.root-servers.net.     78897   IN      A       202.12.27.33
i.root-servers.net.     78897   IN      A       192.36.148.17
e.root-servers.net.     78897   IN      A       192.203.230.10
d.root-servers.net.     78897   IN      A       128.8.10.90
a.root-servers.net.     78897   IN      A       198.41.0.4

;; Query time: 7 msec
;; SERVER: 10.1.1.1#53(10.1.1.1)
;; WHEN: Wed Oct 12 11:39:22 2005
;; MSG SIZE  rcvd: 449

Kolejnymi w hierarchii są serwery DNS obsługujące główne domeny (Top-Level Domain servers) np. com, edu, pl. Poniższy przykład przedstawia sposób uzyskania adresów IP serwerów DNS obsługujących domenę pl. Żądanie wysyłamy do serwera a.root-servers.net.

[cogi@msh cogi]$ dig -t ns pl @a.root-servers.net

; <<>> DiG 9.2.3 <<>> -t ns pl @a.root-servers.net
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25073
;; flags: qr rd; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 9

;; QUESTION SECTION:
;pl.                            IN      NS

;; ANSWER SECTION:
pl.                     172800  IN      NS      F-DNS.pl.
pl.                     172800  IN      NS      B-DNS.pl.
pl.                     172800  IN      NS      A-DNS.pl.
pl.                     172800  IN      NS      C-DNS.pl.
pl.                     172800  IN      NS      G-DNS.pl.
pl.                     172800  IN      NS      D-DNS.pl.
pl.                     172800  IN      NS      E-DNS.pl.

;; ADDITIONAL SECTION:
F-DNS.pl.               172800  IN      A       217.17.34.50
B-DNS.pl.               172800  IN      A       80.50.50.10
A-DNS.pl.               172800  IN      AAAA    2001:a10:1:1::44
A-DNS.pl.               172800  IN      A       195.187.245.44
C-DNS.pl.               172800  IN      AAAA    2001:610:240:0:53:cc:12:176
C-DNS.pl.               172800  IN      A       193.0.12.176
G-DNS.pl.               172800  IN      A       149.156.1.3
D-DNS.pl.               172800  IN      A       192.36.125.2
E-DNS.pl.               172800  IN      A       157.25.5.30

;; Query time: 151 msec
;; SERVER: 198.41.0.4#53(a.root-servers.net)
;; WHEN: Wed Oct 12 11:45:40 2005
;; MSG SIZE  rcvd: 328

Następne w hierarchii są serwery tzw. autorytatywne (authoritative DNS servers) obsługujące domeny firm, uczelnii itp. Zobaczmy jak możemy uzyskać informację o serwerach obsługujących domenę edu.pl. Zapytanie należy kierować do serwerów DNS obsługujących domenę pl.

[cogi@msh cogi]$ dig -t ns edu.pl @c-dns.pl

; <<>> DiG 9.2.3 <<>> -t ns edu.pl @c-dns.pl
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2548
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 6, ADDITIONAL: 7

;; QUESTION SECTION:
;edu.pl.                                IN      NS

;; AUTHORITY SECTION:
edu.pl.                 86400   IN      NS      b-dns.pl.
edu.pl.                 86400   IN      NS      d-dns.pl.
edu.pl.                 86400   IN      NS      e-dns.pl.
edu.pl.                 86400   IN      NS      f-dns.pl.
edu.pl.                 86400   IN      NS      g-dns.pl.
edu.pl.                 86400   IN      NS      a-dns.pl.

;; ADDITIONAL SECTION:
a-dns.pl.               86400   IN      A       195.187.245.44
a-dns.pl.               86400   IN      AAAA    2001:a10:1:1::44
b-dns.pl.               86400   IN      A       80.50.50.10
d-dns.pl.               86400   IN      A       192.36.125.2
e-dns.pl.               86400   IN      A       157.25.5.30
f-dns.pl.               86400   IN      A       217.17.34.50
g-dns.pl.               86400   IN      A       149.156.1.3

;; Query time: 132 msec
;; SERVER: 2001:610:240:0:53:cc:12:176#53(c-dns.pl)
;; WHEN: Wed Oct 12 11:59:33 2005
;; MSG SIZE  rcvd: 268

Pamiętajmy, że rekordy DNS mają kilka typów. W powyższych przykładach zadawaliśmy pytania o rekord typu NS (name server), czyli o serwery DNS obsługujące domeny wyspecyfikowane w parametrze polecenia dig (inne typu to np. MX, CNAME, A).

Zadania

  1. Uzyskaj informacje o serwerach obsługujących domenę uk (nazwy i adresy IP).

  2. Uzyskaj informację o serwerach DNS obsługujących domenę pjwstk.edu.pl. Zapytania rozpocznij od serwera a.root-servers.net.

  3. Host dns.pjwstk.edu.pl posiada dwa różne adresy. Inny dla sieci zewnętrznych oraz inny wewnątrz sieci pjwstk. Uzyskaj obydwa adresy IP.

  4. Sprawdź czy dns.pjwstk.edu.pl jest serwerem realizującym zapytania rekursywnie dla sieci wewnętrznej. Odpowiedź uzasadnij.

  5. Sprawdź czy dns.pjwstk.edu.pl jest serwerem buforującym (DNS caching). Odpowiedź uzasanij.

  6. Sprawdź jakie komputery są odpowiedzialne za wymianę poczty dla domeny icm.edu.pl.