Architektura sieci komputerowej

Transkrypt

Architektura sieci komputerowej
Model warstwowy i architektura sieci komputerowej
1 Wprowadzenie
Wymagania wstępne: znajomość podstaw modelu warstwowego OSI.
1.1 Podstawowe pojęcia
Ze względu na swą złożoność, oprogramowanie i sprzęt sieciowy podzielone są na niezależne
funkcjonalnie warstwy (ang. layer). Jedna warstwa odpowiada za realizację odrębnego zbioru
funkcji. Każda warstwa (oprócz najwyższej) dostarcza sąsiedniej warstwie wyższej interfejsu
do swoich usług. Model warstwowy określa liczbę warstw oraz ogólne funkcje każdej z nich.
Komunikacja w sieci zgodnej z modelem warstwowym odbywa się tylko między
odpowiadającymi sobie warstwami po obu stronach. Warstwa numer N po stronie nadawczej
przesyła więc wiadomość tylko do warstwy numer N po stronie odbiorczej. Taką
komunikację umożliwia proces zwany kapsułkowaniem (ang. encapsulation).
Kapsułkowanie polega na umieszczeniu wiadomości warstwy wyższej wewnątrz wiadomości
warstwy niższej. Zanim wiadomość po stronie nadawczej zostanie wysłana, przekazywana
jest „w dół” stosu warstw; każda kolejna warstwa po otrzymaniu tej wiadomości od warstwy
wyższej, dodaje do niej własny nagłówek i (rzadziej) stopkę. U odbiorcy natomiast zachodzi
proces odwrotny. Wiadomość przekazywana jest „w górę” stosu warstw i każda kolejna
warstwa interpretuje, a następnie usuwa nagłówek dodany poprzednio przez tę samą warstwę
u nadawcy. Tak okrojona wiadomość przekazywana jest następnie warstwie wyższej.
Aplikacja u odbiorcy otrzymuje zatem oryginalne dane, wysłane wcześniej przez aplikację po
stronie nadawczej. Zasady omówionej tu komunikacji definiuje protokół sieciowy.
Wiadomość każdego protokołu sieciowego obejmuje dwie części: informacje sterujące (tzw.
nagłówek) oraz dane. Powyższy opis zilustrowano na rysunku 1, zakładającym istnienie
trzech warstw.
warstwa 3
(aplikacja)
N3
dane
warstwa 2
N2
N3
warstwa 3
(aplikacja)
N3
komunikacja warstw
(protokół)
warstwa 2
N2
dane
warstwa 1
(sprzęt)
dane
N3
dane
warstwa 1
(sprzęt)
transmisja bitów
Rysunek 1. Kapsułkowanie w modelu 3-warstwowym.
Warstwowy model sieci komputerowej został zaproponowany w połowie lat 80-tych
przez organizację ISO i nosi nazwę modelu OSI (ang. Open System Interconnection). Model
OSI wyróżnia 7 warstw, od najniższej – fizycznej, przez warstwy: łącza danych, sieciową,
transportową, sesji i prezentacji po warstwę aplikacji, która dostarcza interfejs usług
sieciowych programom użytkowym, zwanym aplikacjami.
Przez architekturę sieci komputerowej rozumie się zestaw konkretnych rozwiązań
protokołów w poszczególnych warstwach modelu. Dla przykładu, w architekturze TCP/IP
warstwę sieciową implementuje protokół IP, warstwę transportową – protokoły TCP oraz
UDP, a warstwę aplikacji – cały szereg protokołów aplikacyjnych, np. FTP (transferu plików
przez sieć Internet), SMTP (przesyłanie poczty elektronicznej) czy SSH (praca w zdalnym
systemie). Warto zauważyć, że wbrew swojej nazwie, architektura TCP/IP obejmuje dużo
więcej niż tylko dwa protokoły. Ponadto, architektura TCP/IP nie uwzględnia warstw sesji i
prezentacji oraz nie definiuje szczegółów dla warstw fizycznej i łącza danych.
Niniejsze ćwiczenie przybliża architekturę TCP/IP oraz proces kapsułkowania. Niektóre
pojęcia, związane z formatem komunikatów różnych warstw mogą być dla studentów
niezrozumiałe, lecz celem ćwiczenia jest zrozumienie wyłącznie koncepcji kapsułkowania i
warstwowej architektury oprogramowania sieciowego. Dlatego brak znajomości
wspomnianych pojęć nie powinien niepokoić studentów.
2.
Organizacja, wymagany sprzęt i oprogramowanie
•
•
•
zadania wykonywane są indywidualnie;
sprzęt: 1 komputer PC;
oprogramowanie: system Linux, analizatory sieciowe Ethereal oraz tcpdump.
3.
Zadania
1. Korzystając z rysunków zamieszczonych dwóch kolejnej stronie oraz z tabel 1-3, należy
stwierdzić, jaka aplikacja wygenerowała poniższą ramkę. Uwaga: Ramka pochodzi z sieci
technologii Ethernet DIX i nie zawiera preambuły (zaczyna się od pola Destination
address).
00
00
ad
00
65
50
3b
03
00
02
04
3f
04
00
70
4b
0d
63
00
6c
75
00
00
00
00
82
00
35
00
00
00
80
00
03
01
03
11
27
77
00
47
0f
dd
77
01
b0
3d
fc
77
86
96
00
06
0d
fe
02
67
08
11
01
6f
00
68
00
6f
45
96
00
67
00
fe
01
6c
2. Używając programów Ethereal oraz tcpdump (obydwa dostępne dla systemów Windows i
Linux), dokonaj analizy ramek w lokalnej sieci. Zdefiniuj filtr, który wyselekcjonuje
wszystkie ramki kapsułkujące pakiety IP, wysyłane z twojego komputera lub adresowane
do niego.
4.
Pytania sprawdzające
1.
2.
Jakie są zalety i wady warstwowej architektury sieci komputerowej?
Na czym polega kapsułkowanie wiadomości? Jak przebiega u nadawcy, a jak
u odbiorcy?
Warstwa wyższa może przekazać wiadomość warstwie niższej, gdyż ma dostęp do
interfejsu jej usług. Jak natomiast odbywa się przekazywanie wiadomości „w górę”
stosu warstw po stronie odbiorczej?
3.
5.
Literatura
1.
Koncepcja modelu warstwowego oraz zarys implementacji: A. S. Tanenbaum „Sieci
komputerowe”, Helion 2004.
Koncepcja modelu warstwowego: J. F. Kurose, F. Ross „Computer Networking – A
Top-Down Approach Featuring the Internet”, Prentice Hall 2003.
Implementacja modelu warstwowego: D. E. Comer i D. L. Stevens „Sieci komputerowe
TCP/IP”, WNT 1997.
2.
3.
Poniższe rysunki pochodzą z książki A. S. Tanenbaum „Sieci komputerowe”.
Rysunek 1. Format ramki Ethernet a) Ethernet DIX, b) Ethernet IEEE 802.3
Rysunek 2. Format pakietu IPv4
Rysunek 3. Format nagłówka UDP
Wartość szesnastkowa
6005
8137
0800
809B
Protokół
DEC
IPX
IP
AppleTalk
Tabela 1 - przykładowe wartości pola Type w ramce Ethernet DIX
Wartość dziesiętna
6
17
88
89
1
41
Protokół
TCP
UDP
EIGRP
OSPF
ICMP
IPv6
Tabela 2 - przykładowe wartości pola Protocol nagłówka IP
Aplikacja
FTP
SSH
TELNET
SMTP
DNS
HTTP
SNMP
Port UDP
53
Port TCP
20, 21
22
23
25
53
80
161
Tabela 3 - numery portów (dziesiętne) niektórych aplikacji
Kod ascii (ze strony http://www.neurophys.wisc.edu/www/comp/docs/ascii.html)
Decimal
------000
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
Octal
----000
001
002
003
004
005
006
007
010
011
012
013
014
015
016
017
020
021
022
023
024
025
026
027
030
031
032
033
034
035
036
037
040
041
042
043
044
045
046
047
050
051
052
053
054
055
056
057
060
061
062
063
064
065
066
067
070
071
072
073
074
075
076
077
100
101
102
103
104
105
106
107
110
111
112
113
114
115
116
117
120
121
Hex
--000
001
002
003
004
005
006
007
008
009
00A
00B
00C
00D
00E
00F
010
011
012
013
014
015
016
017
018
019
01A
01B
01C
01D
01E
01F
020
021
022
023
024
025
026
027
028
029
02A
02B
02C
02D
02E
02F
030
031
032
033
034
035
036
037
038
039
03A
03B
03C
03D
03E
03F
040
041
042
043
044
045
046
047
048
049
04A
04B
04C
04D
04E
04F
050
051
Binary
-----00000000
00000001
00000010
00000011
00000100
00000101
00000110
00000111
00001000
00001001
00001010
00001011
00001100
00001101
00001110
00001111
00010000
00010001
00010010
00010011
00010100
00010101
00010110
00010111
00011000
00011001
00011010
00011011
00011100
00011101
00011110
00011111
00100000
00100001
00100010
00100011
00100100
00100101
00100110
00100111
00101000
00101001
00101010
00101011
00101100
00101101
00101110
00101111
00110000
00110001
00110010
00110011
00110100
00110101
00110110
00110111
00111000
00111001
00111010
00111011
00111100
00111101
00111110
00111111
01000000
01000001
01000010
01000011
01000100
01000101
01000110
01000111
01001000
01001001
01001010
01001011
01001100
01001101
01001110
01001111
01010000
01010001
Value
----NUL
(Null char.)
SOH
(Start of Header)
STX
(Start of Text)
ETX
(End of Text)
EOT
(End of Transmission)
ENQ
(Enquiry)
ACK
(Acknowledgment)
BEL
(Bell)
BS
(Backspace)
HT
(Horizontal Tab)
LF
(Line Feed)
VT
(Vertical Tab)
FF
(Form Feed)
CR
(Carriage Return)
SO
(Shift Out)
SI
(Shift In)
DLE
(Data Link Escape)
DC1 (XON) (Device Control 1)
DC2
(Device Control 2)
DC3 (XOFF)(Device Control 3)
DC4
(Device Control 4)
NAK
(Negative Acknowledgement)
SYN
(Synchronous Idle)
ETB
(End of Trans. Block)
CAN
(Cancel)
EM
(End of Medium)
SUB
(Substitute)
ESC
(Escape)
FS
(File Separator)
GS
(Group Separator)
RS
(Request to Send)(Record Separator)
US
(Unit Separator)
SP
(Space)
!
(exclamation mark)
"
(double quote)
#
(number sign)
$
(dollar sign)
%
(percent)
&
(ampersand)
'
(single quote)
(
(left/opening parenthesis)
)
(right/closing parenthesis)
*
(asterisk)
+
(plus)
,
(comma)
(minus or dash)
.
(dot)
/
(forward slash)
0
1
2
3
4
5
6
7
8
9
:
(colon)
;
(semi-colon)
<
(less than)
=
(equal sign)
>
(greater than)
?
(question mark)
@
(AT symbol)
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
122
123
124
125
126
127
130
131
132
133
134
135
136
137
140
141
142
143
144
145
146
147
150
151
152
153
154
155
156
157
160
161
162
163
164
165
166
167
170
171
172
173
174
175
176
177
052
053
054
055
056
057
058
059
05A
05B
05C
05D
05E
05F
060
061
062
063
064
065
066
067
068
069
06A
06B
06C
06D
06E
06F
070
071
072
073
074
075
076
077
078
079
07A
07B
07C
07D
07E
07F
01010010
01010011
01010100
01010101
01010110
01010111
01011000
01011001
01011010
01011011
01011100
01011101
01011110
01011111
01100000
01100001
01100010
01100011
01100100
01100101
01100110
01100111
01101000
01101001
01101010
01101011
01101100
01101101
01101110
01101111
01110000
01110001
01110010
01110011
01110100
01110101
01110110
01110111
01111000
01111001
01111010
01111011
01111100
01111101
01111110
01111111
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
DEL
(left/opening bracket)
(back slash)
(right/closing bracket)
(caret/cirumflex)
(underscore)
(left/opening brace)
(vertical bar)
(right/closing brace)
(tilde)
(delete)