###### tags: `Sieci Komputerowe`
# Ćwiczenia 1
## Zadanie 1
:::info
Dla każdego z podanych poniżej adresów IP w notacji CIDR określ, czy jest to adres sieci, adres rozgłoszeniowy czy też adres komputera. W każdym przypadku wyznacz odpowiadający mu adres sieci, rozgłoszeniowy i jakiś adres IP innego komputera w tej samej sieci.
$\blacktriangleright$ $10.1.2.3/8$
$\blacktriangleright$ $156.17.0.0/16$
$\blacktriangleright$ $99.99.99.99/27$
$\blacktriangleright$ $156.17.64.4/30$
$\blacktriangleright$ $123.123.123.123/32$
:::
### 10.1.2.3/8
10.1.2.3/8 - **adres komputera**
10.0.0.1/8 - **inny adres komputera**
10.0.0.0/8 - **adres sieci**
10.255.255.255/8 - **adres rozgłoszeniowy**
### 156.17.0.0/16
156.17.0.0/16 - **adres sieci**
156.17.0.1/16 - **adres komputera**
156.17.255.255/16 - **adres rozgłoszeniowy**
### 99.99.99.99/27
99.99.99.99/27 - **adres komputera**
maska:255.255.255.224
99.99.99.99
$AND$
255.255.255.224
$=$
99.99.99.96
99.99.99.96/27 - **adres sieci**
99.99.99.97/27 - **adres innego komputera**
99.99.99.127/27 - **adres rozgłoszeniowy**
### 156.17.64.4/30
maska: 255.255.255.252
156.17.64.4
$AND$
255.255.255.252
$=$
156.17.64.4/30 - **adres sieci**
156.17.64.5/30 - **adres komputera**
156.17.64.7/30 - **adres rozgłoszeniowy**
### 123.123.123.123/32
123.123.123.123/32 - **adres sieci**
123.123.123.123/32 - **adres komputera**
123.123.123.123/32 - **adres rozgłoszeniowy**
## Zadanie 2
:::info
Podziel sieć $10.10.0.0/16$ na $5$ rozłącznych podsieci, tak aby każdy z adresów IP z sieci $10.10.0.0/16$ był w jednej z tych 5 podsieci. Jak zmieniła się liczba adresów IP możliwych do użycia przy adresowaniu komputerów? Jaki jest minimalny rozmiar podsieci, który możesz uzyskać w ten sposób?
:::
Dokonujemy podziału tej sieci na tak, aby powstała sieć o najmniejszym możliwym rozmiarze.
1.
* $10.10.0.0/17$
* $10.10.128.0/17$
2.
* $10.10.0.0/17$
* $10.10.128.0/18$
* $10.10.192.0/18$
3.
* $10.10.0.0/17$
* $10.10.128.0/18$
* $10.10.192.0/19$
* $10.10.224.0/19$
4.
* $10.10.0.0/17$
* $10.10.128.0/18$
* $10.10.192.0/19$
* $10.10.224.0/20$
* $10.10.240.0/20$
:::info
Jak zmieniła się liczba adresów IP możliwych do użycia przy adresowaniu komputerów?
:::
Było: $2^{32-16}-2=2^{16}-2$
Jest: $2^{32-17}-2+2^{32-18}-2+2^{32-19}-2+2^{32-20}-2+2^{32-20}-2=\\=2^{15}+2^{14}+2^{13}+2*2^{12}-10=2^{16}-10$
**Po podziale dostępnych jest 8 adresów IP mniej.**
:::info
Jaki jest minimalny rozmiar sieci, który możesz uzyskać w ten sposób?
:::
Najmniejsza możliwa sieć: $10.10.240.0/20$
Minimalny rozmiar podsieci to $2^{32-20}-2=2^{12}-2=4096-2=4094$
## Zadanie 3
:::info
Tablica routingu zawiera następujące wpisy (podsieć $\rightarrow$ dokąd wysłać):
$\blacktriangleright$ $0.0.0.0/0$ $\rightarrow$ do routera $A$
$\blacktriangleright$ $10.0.0.0/23$ $\rightarrow$ do routera $B$
$\blacktriangleright$ $10.0.2.0/24$ $\rightarrow$ do routera $B$
$\blacktriangleright$ $10.0.3.0/24$ $\rightarrow$ do routera $B$
$\blacktriangleright$ $10.0.1.0/24$ $\rightarrow$ do routera $C$
$\blacktriangleright$ $10.0.0.128/25$ $\rightarrow$ do routera $B$
$\blacktriangleright$ $10.0.1.8/29$ $\rightarrow$ do routera $B$
$\blacktriangleright$ $10.0.1.16/29$ $\rightarrow$ do routera $B$
$\blacktriangleright$ $10.0.1.24/29$ $\rightarrow$ do routera $B$
Napisz równoważną tablicę routingu zawierającą jak najmniej wpisów.
:::
| ID | Router docelowy | Pierwszy adres sieci | Ostatni adres sieci |
| --- | --------------- | -------------------- | ------------------- |
| 1 | A | $0.0.0.0/0$ | $255.255.255.255/0$ |
| 2 | B | $10.0.0.0/23$ | $10.0.1.255/23$ |
| 3 | B | $10.0.2.0/24$ | $10.0.2.255/24$ |
| 4 | B | $10.0.3.0/24$ | $10.0.3.255/24$ |
| 5 | C | $10.0.1.0/24$ | $10.0.1.255/24$ |
| 6 | B | $10.0.0.128/25$ | $10.0.0.255/25$ |
| 7 | B | $10.0.1.8/29$ | $10.0.1.15/29$ |
| 8 | B | $10.0.1.16/29$ | $10.0.1.23/29$ |
| 9 | B | $10.0.1.24/29$ | $10.0.1.31/29$ |
Sieć pod id równym $6$ zawiera się w sieci $2$ i nie zawiera się w żadnym wpisie z routerem docelowym innym niż B, więc można ten wpis usunąć. Zauważmy, że wpis w tablicy $3$ i $4$ można scalić do jednego: $10.0.2.0/23$ (mają również ten sam router docelowy). Taki nowo powstały adres można scalić z siecią $2$ co daje adres $10.0.0.0/22$. Scalić możemy również sieci $7$ i $8$. Adres powstałej sieci to $10.0.1.8/28$
Nowo powstała tablica routingu:
| ID | Router docelowy | Pierwszy adres sieci | Ostatni adres sieci |
| --- | --------------- | -------------------- | ------------------- |
| 1 | A | $0.0.0.0/0$ | $255.255.255.255/0$ |
| 2 | B | $10.0.0.0/22$ | $10.0.3.255/22$ |
| 5 | C | $10.0.1.0/24$ | $10.0.1.255/24$ |
| 7 | B | $10.0.1.8/28$ | $10.0.1.23/28$ |
| 9 | B | $10.0.1.24/29$ | $10.0.1.31/29$ |
Sieci $7$ i $8$ zawierają się w sieci $5$, która ma inny router docelowy oraz obie te sieci mają inną maskę. Nowo powstała tablica jest minimalną tablicą routingu.
## Zadanie 4
:::info
Wykonaj powyższe zadanie dla tablicy
$\blacktriangleright$ $0.0.0.0/0$ $\rightarrow$ do routera $A$
$\blacktriangleright$ $10.0.0.0/8$ $\rightarrow$ do routera $B$
$\blacktriangleright$ $10.3.0.0/24$ $\rightarrow$ do routera $C$
$\blacktriangleright$ $10.3.0.32/27$ $\rightarrow$ do routera $B$
$\blacktriangleright$ $10.3.0.64/27$ $\rightarrow$ do routera $B$
$\blacktriangleright$ $10.3.0.96/27$ $\rightarrow$ do routera $B$
:::
| ID | Router docelowy | Pierwszy adres sieci | Ostatni adres sieci |
|:---:| --------------- | -------------------- | ------------------- |
| 1 | A | $0.0.0.0/0$ | $255.255.255.255/0$ |
| 2 | B | $10.0.0.0/8$ | $10.255.255.255/8$ |
| 3 | C | $10.3.0.0/24$ | $10.3.0.255/24$ |
| 4 | B | $10.3.0.32/27$ | $10.3.0.63/27$ |
| 5 | B | $10.3.0.64/27$ | $10.3.0.95/27$ |
| 6 | B | $10.3.0.96/27$ | $10.3.0.127/27$ |
Zauważmy, że sieci $4,5,6$ mają ten sam router docelowy $B$ oraz adresy tych sieci znajdują się "obok siebie" i wszyskie są zawarte wśród adresów sieci $3$ z routerem docelowym $C$, który jest zawarty w jeszcze większej sieci z routerem docelowym $B$, dlatego możemy podzielić sieć z routerem docelowym $C$ na dwie oraz usunąć sieci $4,5,6$ z tablicy routingu otrzymując minimalnej długości tablicę:
| ID | Router docelowy | Pierwszy adres sieci | Ostatni adres sieci |
| --- | --------------- |:--------------------:| ------------------- |
| 1 | A | $0.0.0.0/0$ | $255.255.255.255/0$ |
| 2 | B | $10.0.0.0/8$ | $10.255.255.255/8$ |
| 3 | C | $10.3.0.0/27$ | $10.3.0.31/27$ |
| 4 | C | $10.3.0.128/25$ | $10.3.0.255/25$ |
## Zadanie 5
:::info
Jak uporządkować wpisy w tablicy routingu, żeby zasada najlepszego dopasowania odpowiadała wyborowi „pierwszy pasujący” (tj. przeglądaniu tablicy od początku do końca aż do momentu napotkania dowolnej pasującej reguły)? Odpowiedź uzasadnij formalnie
:::
Wpisy w tablicy routingu należy uporządkować malejąco po rozmiarze maski.
Dowód:
Załóżmy, że tablica routingu jest posortowana malejąco po rozmiarze maski.
Weźmy adres komputera $X_1.X_2.X_3.X_4$ i weźmy pierwszy adres sieci od góry, do którego się dopasuje i nazwijmy go $A_1.A_2.A_3.A_4/M_1$ Weźmy kolejny adres sieci, położony później w tablicy routingu, do którego również pasuje adres $X_1.X_2.X_3.X_4$ i nazwijmy go $B_1.B_2.B_3.B_4/M_2$. Wiemy z założenia, że $M_2 \leq M_1$ czyli adres $A_1.A_2.A_3.A_4/M_1$ ma mniej równo dopasowanych bitów początkowych do adresu $B_1.B_2.B_3.B_4$ niż adres $A_1.A_2.A_3.A_4/M_1$ co oznacza, że nie jest lepszym dopasowaniem do adresu $X_1.X_2.X_3.X_4$
$\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\blacksquare$
## Zadanie 6
:::info
W podanej niżej sieci tablice routingu budowane są za pomocą algorytmu wektora odległości. Pokaż (krok po kroku), jak będzie się to odbywać. W ilu krokach zostanie osiągnięty stan stabilny

:::
* Na początku mamy
| | A | B | C | D | E | F |
| --- | --- | --- | --- | --- | --- | --- |
| **A** | 0 | 1 | | | | |
| **B** | 1 | 0 | 1 | | | |
| **C** | | 1 | 0 | | 1 | 1 |
| **D** | | | | 0 | 1 | |
| **E** | | | 1 | 1 | 0 | 1 |
| **F** | | | 1 | | 1 | 0 |
| **S** | 1 | 1 | | | | |
* krok 1
| | A | B | C | D | E | F |
| --- |:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|
| **A** | 0 | 1 | 2(via B) | | | |
| **B** | 1 | 0 | 1 | | 2(via C) | 2(via C) |
| **C** | 2(via B) | 1 | 0 | 2(via E) | 1 | 1 |
| **D** | | | 2(via E) | 0 | 1 | 2(via E) |
| **E** | | 2(via C) | 1 | 1 | 0 | 1 |
| **F** | | 2(via C) | 1 | 2(via E) | 1 | 0 |
| **S** | 1 | 1 | 2(via B) | | | |
* krok 2
| | A | B | C | D | E | F |
| --- |:--------:|:--------:|:--------:|:--------:|:--------:|:---------:|
| **A** | 0 | 1 | 2(via B) | | 3(via C) | 3(via C) |
| **B** | 1 | 0 | 1 | 3(via E) | 2(via C) | 2(via C) |
| **C** | 2(via B) | 1 | 0 | 2(via E) | 1 | 1 |
| **D** | | 3(via C) | 2(via E) | 0 | 1 | 2(via E) |
| **E** | 3(via B) | 2(via C) | 1 | 1 | 0 | 1 |
| **F** | 3(via B) | 2(via C) | 1 | 2(via E) | 1 | 0 |
| **S** | 1 | 1 | 2(via B) | | 3(via C) | 3 (via C) |
* krok 3 (dostaliśmy stan stabilny)
| | A | B | C | D | E | F |
| --- |:--------:|:--------:|:--------:|:--------:|:--------:|:---------:|
| **A** | 0 | 1 | 2(via B) | 4(via E) | 3(via C) | 3(via C) |
| **B** | 1 | 0 | 1 | 3(via E) | 2(via C) | 2(via C) |
| **C** | 2(via B) | 1 | 0 | 2(via E) | 1 | 1 |
| **D** | 4(via B) | 3(via C) | 2(via E) | 0 | 1 | 2(via E) |
| **E** | 3(via B) | 2(via C) | 1 | 1 | 0 | 1 |
| **F** | 3(via B) | 2(via C) | 1 | 2(via E) | 1 | 0 |
| **S** | 1 | 1 | 2(via B) | 4(via E) | 3(via C) | 3 (via C) |
**W 3 krokach**
## Zadanie 7
:::info
Załóżmy, że w powyższej sieci tablice routingu zostały już zbudowane. Co będzie się działo, jeśli zostanie dodane połączenie między routerami $A$ i $D$?
:::
* Na początku mamy
| | A | B | C | D | E | F |
| --- |:--------:|:--------:|:--------:|:--------:|:--------:|:---------:|
| **A** | 0 | 1 | 2(via B) | 4(via E) | 3(via C) | 3(via C) |
| **B** | 1 | 0 | 1 | 3( E) | 2(via C) | 2(via C) |
| **C** | 2(via B) | 1 | 0 | 2(via E) | 1 | 1 |
| **D** | 4(via B) | 3(via C) | 2(via E) | 0 | 1 | 2(via E) |
| **E** | 3(via B) | 2(via C) | 1 | 1 | 0 | 1 |
| **F** | 3(via B) | 2(via C) | 1 | 2(via E) | 1 | 0 |
| **S** | 1 | 1 | 2(via B) | 4(via E) | 3(via C) | 3 (via C) |
Droga pomiędzy $A$ i $D$ zostanie zaktualizowana na długość $1$, a następnie wszystkie routery uzależnione od tych dwóch routerów zostaną powiadomione o możliwej krótszej drodze. Następnie te routery analizują i sprawdzają czy mają możliwość krótszej drogi do tych routerów, jak tak to to robią i wysyłają sygnały dalej i tak dalej.
* po wykonaniu kroków:
| | A | B | C | D | E | F |
| --- |:----:|:-----:|:----:|:----:|:-----:|:------:|
| **A** | 0 | 1 | 2(B) | 1 | 2(D) | 3( C) |
| **B** | 1 | 0 | 1 | 2(A) | 2( C) | 2( C) |
| **C** | 2(B) | 1 | 0 | 2(E) | 1 | 1 |
| **D** | 1 | 2(A) | 2(E) | 0 | 1 | 2(E) |
| **E** | 2(D) | 2( C) | 1 | 1 | 0 | 1 |
| **F** | 3(B) | 2( C) | 1 | 2(E) | 1 | 0 |
| **S** | 1 | 1 | 2(B) | 2(A) | 3( C) | 3 ( C) |
## Zadanie 8
:::info
W przedstawionej poniżej sieci uszkodzeniu ulega połączenie między routerami $D$ i $E$. Załóżmy, że w sieci działa algorytm wektora odległości wykorzystujący technikę zatruwania ścieżki zwrotnej (poison reverse). Pokaż — opisując krok po kroku jakie komunikaty są przesyłane między routerami — że może powstać cykl w routingu.

:::
* Stan przed awarią:
| | A | B | C | D | E |
| --- | ---- | ---- |:----:|:----:|:----:|
| **A** | 0 | 1 | 1 | 2(via B) | 3(via D) |
| **B** | 1 | 0 | 2(via A) | 1 | 2(via D) |
| **C** | 1 | 2(via A) | 0 | 1 | 2(via D) |
| **D** | 2(via B) | 1 | 1 | 0 | 1 |
| **E** | 3(via B) | 2(via D) | 2(via D) | 1 | 0 |
Przeanalizujmy trasę z routerów $A,B,C,D$ do routera $E$
* Trasa do E:
| | A | B | C | D |
| --- | ---- | ---- |:----:|:---:|
| **E** | 3(via B) | 2(via D) | 2(via D) | 1 |
* Możliwy scenariusz, który prowadzi do cyklu:
* Usuwamy połączenie z routera $D$ do routera $E$:
| | A | B | C | D |
| --- | ---- | ---- |:----:|:--------:|
| **E** | 3(via B) | 2(via D) | 2(via D) | $\infty$ |
* $D$ znajduje lepszą drogę do $E$ przez $C$:
| | A | B | C | D |
| --- | ---- | ---- |:----:|:----:|
| **E** | 3(via B) | 2(via D) | 2(via D) | 3(via C) |
* $C$ zna drogę przez $D$, która trwa 3, więc aktualizuje się do $4$
| | A | B | C | D |
| --- | ---- | ---- |:----:|:----:|
| **E** | 3(via B) | 2(via D) | 4(via D) | 3(via C) |
I tak każdy router po kolei będzie aktualizował swoje ścieżki, co prowadzi do cyklu.
## Zadanie 9 X
:::info
Pokaż, że przy wykorzystaniu algorytmu stanu łączy też może powstać cykl w routingu. W tym celu skonstruuj topologię sieci z dwoma wyróżnionymi, bezpośrednio połączonymi routerami $A$ i $B$. Załóż, że wszystkie routery znają topologię całej tej sieci. W pewnym momencie łącze między $A$ i $B$ ulega awarii, o czym $A$ i $B$ od razu się dowiadują. Zalewają one sieć odpowiednią aktualizacją. Pokaż, że w okresie propagowania tej aktualizacji (kiedy dotarła ona już do części routerów a do części nie) może powstać cykl w routingu.
:::
## Zadanie 10 X
:::info
Załóżmy, że sieć składa się z łączy jednokierunkowych (tj. topologia sieci jest grafem skierowanym) i nie zawiera cykli. Rozważmy niekontrolowany algorytm „zalewający” sieć jakimś komunikatem: komu- nikat zostaje wysłany początkowo przez pewien router; każdy router, który dostanie dany komunikat przesyła go dalej wszystkimi wychodzącymi z niego krawędziami. Pokaż, że istnieją takie sieci z n routerami, w których przesyłanie informacji zakończy się po czasie $2^{Ω(n)}$. Zakładamy, że przez jedno łącze można przesłać tylko jeden komunikat naraz, a przesłanie go trwa jednostkę czasu.
:::
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>