Cisco CyberOps Associate - Ethernet i protokoły Ethenetu
Każda ramka o długości mniejszej niż 64 bajty jest uważana za “fragment kolizji” lub “ramkę runt” i jest automatycznie odrzucana przez stacje odbiorcze. Ramki zawierające więcej niż 1500 bajtów danych są uważane za “jumbo” lub “baby giant frames”.
Jeśli rozmiar przesyłanej ramki jest mniejszy niż minimalny lub większy niż maksymalny, urządzenie odbiorcze odrzuca ramkę. Odrzucone ramki są prawdopodobnie wynikiem kolizji lub innych niechcianych sygnałów. Są one uważane za nieprawidłowe. Niemniej jednak interfejsy Fast Ethernet i Gigabit Ethernet niektórych przełączników Cisco Catalyst można skonfigurować tak, aby obsługiwały większe ramki jumbo.
Pole ramki Ethernet.
- Pola preambuły i Start Frame Delimiter: Preambuła (7 bajtów) i Start Frame Delimiter (SFD), zwany również początkiem ramki (1 bajt), służą do synchronizacji między urządzeniami wysyłającymi a odbierającymi. Pierwsze osiem bajtów ramki służy do zwrócenia uwagi węzłów odbiorczych. W zasadzie pierwsze kilka bajtów informuje odbiorniki, że mają się przygotować do odbioru nowej ramki.
- Pole adresu MAC docelowego: To pole 6 bajtów jest identyfikatorem zamierzonego odbiorcy. Jak pamiętasz, ten adres jest używany przez warstwę 2 do pomocy urządzeniom w określeniu, czy ramka jest do nich adresowana. Adres w ramce jest porównywany z adresem MAC w urządzeniu. Jeśli występuje dopasowanie, urządzenie akceptuje ramkę. Może to być adres unicast, multicast lub broadcast.
- Pole adresu MAC źródłowego: To pole 6 bajtów identyfikuje źródłowy interfejs lub kartę sieciową ramki. Adres MAC źródłowy może być tylko adresem unicast.
- Pole Typu / Długości: To pole 2 bajtów identyfikuje protokół warstwy wyższej, który jest enkapsulowany w ramce Ethernet. Wspólne wartości to, w systemie szesnastkowym, 0x800 dla IPv4, 0x86DD dla IPv6 i 0x806 dla ARP.
- Pole danych: To pole (46 - 1500 bajtów) zawiera enkapsulowane dane z wyższej warstwy, które stanowią ogólną jednostkę danych warstwy 3 lub, bardziej powszechnie, pakiet IPv4. Wszystkie ramki muszą mieć co najmniej 64 bajty długości. Jeśli mała paczka jest enkapsulowana, używane są dodatkowe bity zwane “pad”, aby zwiększyć rozmiar ramki do tego minimum.
- Kod kontrolny ramki (FCS): Pole FCS (4 bajty) służy do wykrywania błędów w ramce. Wykorzystuje ono cykliczną sumę kontrolną (CRC). Urządzenie wysyłające dołącza wyniki CRC do pola FCS ramki. Urządzenie odbierające otrzymuje ramkę i generuje CRC, aby sprawdzić, czy wystąpiły
Aby osiągnąć komunikację od urządzenia do urządzenia między granicami sieci, protokoły warstwy sieciowej wykonują cztery podstawowe operacje:
- Adresowanie urządzeń końcowych: Urządzenia końcowe muszą być skonfigurowane z unikalnym adresem IP w celu identyfikacji w sieci. Warstwa sieciowa umieszcza adres IP nadawcy i odbiorcy w nagłówku. Nagłówek ten zawiera identyfikator sieci (network ID) i identyfikator hosta (host ID).
- Enkapsulacja: Warstwa sieciowa enkapsuluje jednostkę danych protokołu (PDU) z warstwy transportowej w pakiet. Proces enkapsulacji dodaje informacje nagłówka IP, takie jak adres IP źródła (nadawcy) i adres IP docelowego (odbiorcy). Proces enkapsulacji jest wykonywany przez źródło pakietu IP.
- Routing: Warstwa sieciowa dostarcza usługi kierowania pakietami do hosta docelowego w innej sieci. Aby podróżować do innych sieci, pakiet musi być przetwarzany przez router. Rolą routera jest wybór najlepszej ścieżki i kierowanie pakietami w kierunku hosta docelowego w procesie znanym jako routing. Pakiet może przechodzić przez wiele routerów, zanim dotrze do hosta docelowego. Każdy router, przez który przechodzi pakiet, nazywany jest hopem.
- De-enkapsulacja: Gdy pakiet dociera do warstwy sieciowej hosta docelowego, host sprawdza nagłówek IP pakietu. Jeśli adres IP docelowego w nagłówku odpowiada jego własnemu adresowi IP, nagłówek IP jest usuwany z pakietu. Po de-enkapsulacji przez warstwę sieciową wynikająca jednostka danych warstwy 4 jest przekazywana do odpowiedniej usługi w warstwie transportowej. Proces de-enkapsulacji jest wykonywany przez hosta docelowego pakietu IP.
W przeciwieństwie do warstwy transportowej (czwarta warstwa OSI), która zarządza transportem danych między procesami działającymi na każdym hoście, protokoły komunikacyjne warstwy sieciowej (takie jak IPv4 i IPv6) określają strukturę pakietu i przetwarzanie używane do przesyłania danych z jednego hosta do drugiego. Działanie bez uwzględniania danych przesyłanych w każdym pakiecie pozwala warstwie sieciowej na przesyłanie pakietów dla wielu rodzajów komunikacji między wieloma hostami.
4. Protokół IP enkapsuluje segment warstwy transportowej (warstwa bezpośrednio powyżej warstwy sieciowej) lub inne dane, dodając nagłówek IP. Nagłówek IP jest używany do dostarczenia pakietu do hosta docelowego.
- Bezstanowość (Connectionless) - Przed wysłaniem pakietów danych nie jest tworzona dedykowana połączenie punkt-punkt z docelowym urządzeniem.
- Najlepszy wysiłek (Best Effort) - IP jest w swojej naturze niewiarygodny, ponieważ dostarczenie pakietów nie jest gwarantowane.
- Niezależność od nośnika (Media Independent) - Działanie jest niezależne od medium (np. miedź, światłowód lub bezprzewodowe), które przesyła dane.
Nagłówek pakietu IPv4 składa się z pól zawierających ważne informacje o pakiecie. Te pola zawierają liczby binarne, które są analizowane przez proces warstwy 3.
Wartości binarne każdego pola identyfikują różne ustawienia pakietu IP. Diagramy nagłówków protokołów, które są czytane od lewej do prawej i od góry do dołu, dostarczają wizualizacji do odwoływania się do pól protokołu. Diagram nagłówka protokołu IP na rysunku identyfikuje pola pakietu IPv4.
Najważniejsze pola w nagłówku IPv4 to:
- Wersja - Zawiera 4-bitową wartość binarną ustawioną na 0100, co identyfikuje to jako pakiet IPv4.
- Differentiated Services lub DiffServ (DS) - Dawniej nazywane pole typu usługi (ToS), pole DS to 8-bitowe pole używane do określenia priorytetu każdego pakietu. Sześć najważniejszych bitów pola DiffServ to bity punktu kodowego usług różnicowanych (DSCP), a ostatnie dwa bity to bity powiadomienia o przeciążeniu (ECN).
- Time to Live (TTL) - TTL zawiera 8-bitową wartość binarną, która ogranicza czas życia pakietu. Urządzenie źródłowe pakietu IPv4 ustawia początkową wartość TTL. Jest ona zmniejszana o jeden za każdym razem, gdy pakiet jest przetwarzany przez router. Jeśli pole TTL spadnie do zera, router odrzuca pakiet i wysyła do źródłowego adresu IP komunikat ICMP Time Exceeded. Ponieważ router zmniejsza TTL każdego pakietu, musi również ponownie obliczyć sumę kontrolną nagłówka.
- Protokół - To pole służy do identyfikacji protokołu następnego poziomu. Ta 8-bitowa wartość binarna wskazuje rodzaj danych, który pakiet przenosi, umożliwiając warstwie sieciowej przekazanie danych do odpowiedniego protokołu warstwy wyższej. Wspólne wartości to ICMP (1), TCP (6) i UDP (17).
- Suma kontrolna nagłówka - Służy do wykrywania uszkodzeń w nagłówku IPv4.
- Adres źródłowy IPv4 - Zawiera 32-bitową wartość binarną reprezentującą adres źródłowy IPv4 pakietu. Adres źródłowy IPv4 jest zawsze adresem unicast.
- Adres docelowy IPv4 - Zawiera 32-bitową wartość binarną reprezentującą adres docelowy IPv4 pakietu. Adres docelowy IPv4 może być adresem unicast, multicast lub broadcast.
Najczęściej używane pola to adresy IP źródłowe i docelowe. Te pola identyfikują, skąd pochodzi pakiet i dokąd zmierza. Zazwyczaj te adresy nie zmieniają się w trakcie podróży od źródła do celu.
Pola Długość Nagłówka Internetowego (IHL), Całkowita Długość i Suma Kontrolna Nagłówka służą do identyfikacji i weryfikacji pakietu.
Pola Identyfikatora, Flag i Przesunięcia fragmentu są używane do ponownego ułożenia pakietu zfragmentowanego. W szczególności pakiet IPv4 wykorzystuje te pola, aby śledzić fragmenty. Router może być zmuszony do fragmentacji pakietu IPv4, gdy przekazuje go z jednego medium na inne o mniejszym MTU.
9. Adres IPv4 to 32-bitowy adres hierarchiczny, który identyfikuje sieć i hosta w sieci.
Bity w części sieciowej adresu muszą być identyczne dla wszystkich urządzeń znajdujących się w tej samej sieci. Bity w części hosta adresu muszą być unikalne, aby zidentyfikować konkretny host w sieci. Jeśli dwa hosty mają ten sam wzór bitów w określonej części sieciowej 32-bitowego strumienia, to oznacza, że te dwa hosty znajdują się w tej samej sieci.
Ale jak hosty wiedzą, która część 32 bitów identyfikuje sieć, a która hosta? Odpowiedzialność za to spoczywa na masce podsieci.
10. Maska podsieci mówi o tym, która część adresu IP identyfikuje sieć, a która hosta.
11. Aby skrócić adres maski podsieci wymyślono tzw. prefiks. Długość prefiksu to liczba bitów ustawionych na 1 w masce podsieci. Jest zapisywana w “notacji ukośnika”, co oznacza ukośnik (/) po którym podaje się liczbę bitów ustawionych na 1. Dlatego należy zliczyć liczbę bitów w masce podsieci i poprzedzić ją ukośnikiem.
Operacja logiczna AND polega na porównaniu dwóch bitów, co daje wyniki przedstawione poniżej. Zauważ, że tylko 1 AND 1 daje wynik równy 1. Wszystkie inne kombinacje dają wynik 0.
- 1 AND 1 = 1
- 0 AND 1 = 0
- 1 AND 0 = 0
- 0 AND 0 = 0
Uwaga: W logice cyfrowej 1 oznacza Prawda (True), a 0 oznacza Fałsz (False). W przypadku operacji AND obie wartości wejściowe muszą być Prawdą (1), aby wynik był Prawdą (1).
Aby zidentyfikować adres sieciowy hosta IPv4, adres IPv4 jest logicznie ANDowany, bit po bicie, z maską podsieci. Operacja AND między adresem a maską podsieci daje adres sieciowy.
Na przykładzie hosta o adresie IPv4 192.168.10.10 i masce podsieci 255.255.255.0 (/24), można zobaczyć, jak operacja AND jest używana do odkrywania adresu sieciowego:
- Adres hosta IPv4 (192.168.10.10) - Adres hosta w formacie dziesiętnym z kropkami i binarnym.
- Maska podsieci (255.255.255.0) - Maska podsieci w formacie dziesiętnym z kropkami i binarnym.
- Adres sieciowy (192.168.10.0) - Operacja logiczna AND między adresem IPv4 a maską podsieci daje adres sieciowy IPv4, który jest wyrażony w formacie dziesiętnym z kropkami i binarnym.
Na przykładzie pierwszej sekwencji bitów zauważ, że operacja AND jest wykonywana na bicie 1 adresu hosta i bicie 1 maski podsieci. To powoduje, że bit sieciowy ma wartość 1. 1 AND 1 = 1.
Operacja AND między adresem hosta IPv4 a maską podsieci daje adres sieciowy IPv4 dla tego hosta. W tym przykładzie operacja AND między adresem hosta 192.168.10.10 a maską podsieci 255.255.255.0 (/24) daje adres sieciowy IPv4 192.168.10.0/24. Jest to ważna operacja w protokole IPv4, ponieważ informuje hosta, do jakiej sieci należy. Ponadto:
Adres pierwszego hosta (First Usable Host Address):
- Adres pierwszego hosta to pierwszy adres IP w danej podsieci.
- Obliczamy go, dodając 1 do adresu sieciowego.
- Na przykład, jeśli adres sieciowy to
192.168.10.0
, to adres pierwszego hosta to192.168.10.1
.
Adres ostatniego hosta (Last Usable Host Address):
- Adres ostatniego hosta to ostatni dostępny adres IP w danej podsieci.
- Obliczamy go, odejmując 1 od adresu rozgłoszeniowego.
- Na przykład, jeśli adres rozgłoszeniowy to
192.168.10.63
, to adres ostatniego hosta to192.168.10.62
.
Adres rozgłoszeniowy (Broadcast Address):
- Adres rozgłoszeniowy to adres, który jest używany do kierowania komunikatów do wszystkich hostów w danej podsieci.
- Obliczamy go, odejmując 1 od adresu sieciowego i ustawiając wszystkie bity hosta na 1.
- Na przykład, jeśli adres sieciowy to
192.168.10.0
, to adres rozgłoszeniowy to192.168.10.63
.
13. Klasy adresów IPv4 i adresy prywatne
W przeszłości, w początkach rozwoju protokołu IPv4, stosowano tzw. adresowanie klasowe (classful addressing). W ramach tego podejścia, adresy IPv4 były przypisywane na podstawie trzech klas: A, B i C.
Klasa A (0.0.0.0/8 do 127.0.0.0/8):
- Przeznaczona do obsługi bardzo dużych sieci, które mogą zawierać ponad 16 milionów adresów hostów.
- Wykorzystuje stały prefiks /8, gdzie pierwszy oktet wskazuje adres sieciowy, a pozostałe trzy oktety to adresy hostów.
Klasa B (128.0.0.0/16 do 191.255.0.0/16):
- Przeznaczona do obsługi średnich i większych sieci, które mogą zawierać do około 65 000 adresów hostów.
- Wykorzystuje stały prefiks /16, gdzie dwa pierwsze oktety wskazują adres sieciowy, a pozostałe dwa oktety to adresy hostów.
Klasa C (192.0.0.0/24 do 223.255.255.0/24):
- Przeznaczona do obsługi małych sieci, które mogą zawierać maksymalnie 254 adresy hostów.
- Wykorzystuje stały prefiks /24, gdzie trzy pierwsze oktety wskazują adres sieciowy, a ostatni oktet to adresy hostów.
Istnieją również inne klasy adresów, takie jak klasa D (przeznaczona dla adresów multicastowych) i klasa E (eksperymentalna).
Adresy prywatne są używane wewnętrznie w organizacjach i nie są routowane w Internecie. Są to bloki adresów, które nie są unikalne i mogą być używane przez dowolną sieć wewnętrzną. Oto przykłady bloków adresów prywatnych:
- 10.0.0.0/8 (10.0.0.0 do 10.255.255.255)
- 172.16.0.0/12 (172.16.0.0 do 172.31.255.255)
- 192.168.0.0/16 (192.168.0.0 do 192.168.255.255)
Adresy prywatne nie są dostępne w Internecie i muszą być przetłumaczone na adresy publiczne za pomocą mechanizmu Network Address Translation (NAT). Na przykład w domowych routerach, hosty otrzymują adresy prywatne (np. 192.168.1.0/24), a interfejs routera łączący się z dostawcą usług internetowych (ISP) otrzymuje adres publiczny.
14. Tak jak w przypadku protokołu IPv4, również w IPv6 pakiety zawsze są tworzone na hoście źródłowym. Host źródłowy musi wiedzieć, jak kierować pakiet do hosta docelowego. W tym celu urządzenia końcowe tworzą swoje własne tablice routingu. W tym temacie omówimy, jak urządzenia końcowe wykorzystują tablice routingu.
Kolejną rolą warstwy sieciowej jest kierowanie pakietów między hostami. Host może wysłać pakiet do następujących celów:
- Do samego siebie - Host może wykonać ping do swojego własnego adresu, wysyłając pakiet na specjalny adres IPv4 127.0.0.1 lub adres IPv6 ::/1, który jest nazywany interfejsem pętli zwrotnej. Wykonanie pingu na interfejsie pętli zwrotnej testuje stos protokołu TCP/IP na hoście.
- Do hosta lokalnego - Jest to host docelowy znajdujący się w tej samej sieci lokalnej co host wysyłający. Host źródłowy i docelowy mają ten sam adres sieciowy.
- Do hosta zdalnego - Jest to host docelowy znajdujący się w innej sieci. Host źródłowy i docelowy nie mają tego samego adresu sieciowego.
Decyzja, czy pakiet jest przeznaczony dla hosta lokalnego czy zdalnego, zależy od urządzenia źródłowego. Wersja protokołu IP wpływa na sposób określenia, czy docelowy adres IP znajduje się w tej samej sieci, co urządzenie źródłowe:
- W IPv4 - Urządzenie źródłowe używa swojej maski podsieci w połączeniu z własnym adresem IPv4 i adresem IPv4 docelowego hosta, aby dokonać tej oceny.
- W IPv6 - Lokalny router reklamuje adres sieci lokalnej (prefiks) we wszystkich urządzeniach w sieci.
W sieci domowej lub firmowej może być wiele urządzeń przewodowych i bezprzewodowych połączonych za pomocą urządzenia pośredniczącego, takiego jak przełącznik LAN lub punkt dostępu bezprzewodowego (WAP). To urządzenie pośredniczące zapewnia połączenia między hostami lokalnymi w sieci lokalnej. Hosty lokalne mogą się nawzajem osiągać i udostępniać informacje bez potrzeby dodatkowych urządzeń. Jeśli host wysyła pakiet do urządzenia skonfigurowanego z tą samą siecią IP co urządzenie źródłowe, pakiet jest po prostu przekazywany z interfejsu hosta, przez urządzenie pośredniczące, aż do urządzenia docelowego.
Oczywiście w większości przypadków chcemy, aby nasze urządzenia mogły łączyć się poza segmentem sieci lokalnej. Urządzenia poza segmentem sieci lokalnej nazywane są hostami zdalnymi. Gdy urządzenie źródłowe wysyła pakiet do urządzenia docelowego znajdującego się w innej sieci, potrzebna jest pomoc routerów i routingu. Routing to proces identyfikowania najlepszej ścieżki do celu. Router podłączony do segmentu sieci lokalnej nazywany jest bramą domyślną.
15. Brama domyślna to urządzenie sieciowe (np. router lub przełącznik warstwy 3), które może kierować ruchem do innych sieci. Jeśli użyjemy analogii, że sieć to jak pokój, to brama domyślna jest jak drzwi. Jeśli chcemy przejść do innego pokoju lub innej sieci, musimy znaleźć te drzwi.
W sieci brama domyślna to zazwyczaj router o następujących cechach:
- Posiada lokalny adres IP w tym samym zakresie adresów co inne hosty w sieci lokalnej.
- Może przyjmować dane do sieci lokalnej i przekazywać dane poza sieć lokalną.
- Kieruje ruch do innych sieci.
Brama domyślna jest niezbędna do przesyłania ruchu poza sieć lokalną. Ruch nie może być przekazywany poza sieć lokalną, jeśli nie ma bramy domyślnej, adres bramy domyślnej nie jest skonfigurowany lub brama domyślna jest wyłączona.
16. Tablica routingu hosta zwykle zawiera bramę domyślną. W protokole IPv4 host otrzymuje adres IPv4 bramy domyślnej dynamicznie za pomocą protokołu Dynamic Host Configuration Protocol (DHCP) lub konfiguruje go ręcznie. W protokole IPv6 router reklamuje adres bramy domyślnej lub host może go skonfigurować ręcznie.
17, Na hoście z systemem Windows można użyć polecenia route print
lub netstat -r
, aby wyświetlić tablicę routingu hosta. Oba polecenia generują ten sam wynik. Na pierwszy rzut oka może wydawać się on przytłaczający, ale jest dość prosty do zrozumienia.
Poniższy rysunek przedstawia przykładową topologię oraz wynik wygenerowany przez polecenie netstat -r
.
Wpisanie polecenia netstat -r
lub równoważnego polecenia route print
wyświetla trzy sekcje związane z bieżącymi połączeniami sieciowymi TCP/IP:
- Lista interfejsów - Wyświetla adres MAC (Media Access Control) oraz przypisany numer interfejsu dla każdego zdolnego do sieci interfejsu na hoście, w tym adapterów Ethernet, Wi-Fi i Bluetooth.
- Tabela tras IPv4 - Wyświetla wszystkie znane trasy IPv4, w tym połączenia bezpośrednie, sieć lokalną i domyślne trasy lokalne.
- Tabela tras IPv6 - Wyświetla wszystkie znane trasy IPv6, w tym połączenia bezpośrednie, sieć lokalną i domyślne trasy lokalne
- Omitowanie wiodących zer: W adresach IPv6 można pominąć wiodące zera w dowolnym hextecie. Na przykład 01ab można zapisać jako 1ab, a 09f0 jako 9f0. To nie dotyczy zer na końcu, aby uniknąć niejednoznaczności.
- Podwójny dwukropek (::): Podwójny dwukropek może zastąpić dowolny ciąg jednego lub więcej hextetów o długości 16 bitów, składających się z samych zer. Na przykład 2001:db8:cafe:1:0:0:0:1 (po pominięciu wiodących zer) można zapisać jako 2001:db8:cafe:1::1. Podwójny dwukropek (::) używany jest zamiast trzech hextetów o wartości 0 (0:0:0).
- Niepoprawne użycie podwójnego dwukropka: Przykładem niepoprawnego użycia podwójnego dwukropka jest 2001:db8::abcd::1234. Podwójny dwukropek użyty jest dwukrotnie. Poprawne rozwinięcia to m.in. 2001:db8::abcd:0000:0000:1234 i 2001:db8:0000:abcd::1234.
- Długość prefiksu: W IPv6 długość prefiksu (prefix length) jest używana do określenia części sieciowej adresu. Zaleca się stosowanie 64-bitowego identyfikatora interfejsu (Interface ID) dla większości sieci.