Co to jest i czym się różni od siebie Store&Forward i Cut-Through?

Są to różne sposoby odbierania/wysyłania ramek danych. Spotyka się je w bridge'ach i switchach, głównie w technologii Ethernet.

Urządzenia korzystające z Store&Forward czekają na odebranie całej ramki danych, zanim zaczną wysyłać ją do właściwego odbiorcy. Dzięki temu możliwe jest chwilowe zapamiętywanie ramki w pamięci urządzenia (gdy odbiorca akurat jest zajęty odbieraniem innych danych) oraz zredukowanie liczby błędnych transmisji. Urządzenie mając do dyspozycji całą ramkę może sprawdzić jej poprawność zanim się zdecyduje na wysłanie. Wadą może być wprowadzanie opóźnienia w transmisji.

Urządzenia oparte na technologii Cut-Through zaczyna wysyłać dane gdy tylko odbiorą ich wystarczającą ilość dla ustalenia odbiorcy. Dzięki temu redukuje się znacząco opóźnienie przy przejściu danych przez urządzenie i zwiększa szybkość sieci. Wadą może być transmitowanie uszkodzonych ramek, zmniejszając przepustowość sieci, gdyż urządzenie nie widzi całej ramki i nie może dokonać jej sprawdzenia. Na drugi problem natrafia się gdy urządzenie jednocześnie zacznie odbierać dwie ramki danych przeznaczone do tego samego odbiorcy. Ponieważ nie może ich jednocześnie wysłać, tylko jedna z ramek będzie wysłana. Druga zostanie stracona.

Czasami spotyka się także tryb Cut-Through Fragment Free (dotyczy tylko Ethernetu), w którym urządzenie rozpoczyna wysyłanie danych po otrzymaniu pierwszych 64 bajtów danych. Jest to minimalny rozmiar ramki w Ethernecie. Takie rozwiązanie jest kompromisem między szybkością przesyłania danych (C-T) a unikaniem wszystkich błędów (S&F).

W praktyce spotykane dzisiaj switche korzystają z mieszanki obydwóch technologii. Jeśli jest to możliwe, dane są przesyłane jako C-T. Gdy pojawia się więcej niż jedna ramka do tego samego odbiorcy (nagminne w dzisiejszych czasach przy komunikacji wiele komputerów <—> serwer/router) lub gdy wzrasta liczba błędów w sieci, switch przechodzi do trybu S&F. S&F jest także niezbędne gdy switch posiada porty o różnych szybkościach.


Do czego służą poszczególne warstwy modelu OSI?

  1. służy do fizycznej transmisji między dwoma, bezpośrednio, fizycznie ze sobą połączonymi systemami. Przykładem standardów opisujących tą warstwę są EIA/TIA-232 (dawniej RS-232) dla łączy szeregowych, bądź 100BaseFX dla Ethernetu.
  2. służy do logicznej transmisji między dwoma połączonymi ze sobą bezpośrednio systemami (dotyczy też połączenia przez bridge lub switch). Korzysta z fizycznych adresów urządzeń (np. adres MAC w przypadku Ethernetu). Przykładami standardów dotyczących warstwy są Ethernet czy Token Ring.
  3. służy do logicznej transmisji między dowolnymi systemami, niekoniecznie bezpośrednio ze sobą połączonymi. Korzysta z adresów logicznych, nazywanych adresami sieciowymi. Przykładem standardu dla tej warstwy są protokoły IP i IPX.
  4. służy do transmisji między dwoma stacjami końcowymi znajdującymi się gdziekolwiek w sieci oraz rozróżnienia między różnymi usługami (programami) dostępnymi na tych stacjach. Przykładem standardu jest protokół TCP.

Za co odpowiadają warstwy modelu OSI i jak przekazują miedzy sobą dane na przykładzie połączenia telnetem (czyli krótka historia życia jednego pakietu).

Przyjmijmy, ze połączenie z serwerem 1.2.3.4 jest już nawiązane [1] i zobaczmy co się dzieje jeśli naciśniesz jakiś klawisz (dla wyjaśnienia telnet wysyła do serwera informację o każdym naciśnięciu klawisza).

  1. A więc wciskasz <p>.
  2. Program „telnet” pracujący w warstwach 5–7 otrzymał znak „p” uznał, że należy go przesłać dalej do serwera o adresie 1.2.3.4 (port 23 telnet)przekazuje go wiec w „dół” do warstwy 4 „TCP weź wyślij „p” do 1.2.3.4”.
  3. TCP (warstwa 4) sprawdza czy jest zestawione połączenie z serwerem, jaki jest numer sekwencji (wykorzystywany przy sprawdzaniu kolejności nadchodzących danych) i przygotowuje porcje danych w których zawiera swój numer portu (np 1543 [2]) numer portu docelowego (23 — telnet) numery sekwencji (trzeba sprawdzać czy wszystkie dane dotarły i uporządkować je), sumę kontrolną i jeszcze kilka dodatkowych informacji a na koniec jako dane nasza literkę „p” po czym wola warstwę 3 — „wyślij mój segment do adresu 1.2.3.4”.
  4. IP (warstwa 3) tworzy pakiet, w jego nagłówku umieszcza adres docelowy (czyli 1.2.3.4) i adres źródłowy (czyli adres maszyny na której pracujesz) ustawia kilka flag (min to ze nadawca jest TCP) i jako dane dołącza to wszystko co dostał z warstwy 4. Na koniec patrzy co dalej zrobić z tym pakietem, niestety host 1.2.3.4 nie jest w Twojej sieci lokalnej i trzeba go przesłać poprzez domyślny router. Znajduje więc jego (routera) MACadres i przekazuje całość do warstwy 2.
  5. Ethernet (bo właśnie on jest na warstwie drugiej) przygotowuje swój nagłówek w którym zawiera między innymi MACadres routera i swój, a jako dane umieszcza pakiet warstwy 3 i przekazujemy to do warstwy 1.
  6. Tranzystorki na karcie sieciowej pracowicie wysyłają kolejne bity w kabel, inne układy sprawdzają czy nie wystąpiła kolizja (jeszcze inne mrugają diodką). Dane wreszcie znalazły się w przewodzie.

Może spójrzmy jeszcze co się stało z naszą literką „p”.

Warstwa Dane
5–7
p
4
nagłówek tcp
p
3
nagłówek ip
nagłówek tcp
p
2
nagłówek ethernet
nagłówek ip
nagłówek tcp
p
1 ......1010101111001010101000110111011010101010100111.......

A nasz pakiet wędruje, dotarł do huba (warstwa 1) tam proste układy elektroniczne wzmocniły (zregenerowały) sygnał i rozesłały go na wszystkie swoje porty. Dalej spotkał switch (warstwa 2), który spojrzał na nagłówek warstwy drugiej i uznał ze ten MACadres docelowy znajduje się na jego 20 porcie, wiec cały pakiet został tam przesłany (i tylko tam). Teraz trafiamy do routera, ten rozpakował pakiet ethernetowy, wyjął z niego dane i przygląda się pakietowi warstwy 3 (IP), „mam to przesłać do 1.2.3.4 sprawdźmy więc w tablicy routingu gdzie to jest... aha słać przez port szeregowy”. Zapakował więc IP tym razem w PPP i posłał dalej.

Nasz pakiecik jeszcze wiele razy będzie przepakowywany aż wreszcie trafi do hosta 1.2.3.4 tam przy przeglądaniu nagłówka IP procesor stwierdzi „o to do mnie!”, wyjmie dane z tego pakietu i przekaże je do wyższej warstwy. TCP sprawdzi swój nagłówek, a ma co sprawdzać do niego przecież należy utrzymanie spójności i ciągłości danych, po czym przekaże do demona teletu „wiesz dostałem od a.b.c.d z portu 1543 literkę „p” dla ciebie”.

Co zrobi telnet tego nie wiem ale na pewno jakoś Ci odpowie a jego odpowiedz zostanie „zapakowana” w TCP później w IP....

[1] samo nawiązanie połączenia TCP to jest dość długa historia

[2] port (i tym samym numer) jest przydzielany podczas zestawiania połączenia i jest indywidualny dla każdego programu.


Często słyszę o adresie MAC na karcie sieciowej, co to właściwie jest i czy się nadaje na kompot?

MAC nie nadaje się na kompot, bo to jest tylko skrót od „Media Access Control” i jest to unikalny numer karty sieciowej w sieci. W sieciach Ethernet adres MAC jest tożsamy z adresem Ethernetowym. Innymi słowy, każda karta Ethernet ma swój unikalny adres, zazwyczaj na stale przypisany, choć czasem można go zmieniać programowo. Adresy kart Arcnet można było przestawiać odpowiednimi przełącznikami.

Adresy MAC są w pulach rozdzielane producentom sprzętu. Pierwsze trzy cyfry w adresie określają producenta karty, np.:

080020     (base 16)             SUN MICROSYSTEMS INC.
002048     (base 16)            

FORE SYSTEMS, INC.
00105A     (base 16)             3COM CORPORATION

Pełna lista (ponad 1MB) znajduje się:
http://standards.ieee.org/regauth/oui/oui.txt


Co to jest kolizja i CSMA/CD?

CSMA/CD (Carrier Sense, Multiple Access with Collision Detection — Wykrywanie Nośnej, Wielostacyjny Dostęp z Wykrywaniem Kolizji) (może ktoś lepiej przetłumaczy :(). Metoda dostępu do medium (kabla), w której chcąca nadawać stacja sprawdza czy łącze nie jest zajęte i jeżeli jest wolne to zaczyna nadawanie. Jeżeli dwie stacje zaczynają nadawać w tej samej chwili występuje tzw. kolizja. W tym momencie stacje przerywają nadawanie i odczekują losowy odcinek czasu. Metoda ta stosowana jest w klasycznym (half-duplex) Ethernecie. Przy dużym obciążeniu sieci (wiele stacji), kolizje zdarzają się bardzo często co powoduje ogólne spowolnienie pracy sieci. Za alarmującą uważa się zwykle ilość kolizji przekraczającą 15% prób dostępu i 60% wykorzystanie pasma. Teoretycznie efektywne wykorzystanie pasma w Ethernecie może sięgać 85% reszta to właśnie kolizje i czasy martwe. Ramka Ethernetu zaczyna się od 64 bitów (8 bajtów) naprzemiennych 1 i 0. Jest to tzw preambuła. Aby kolizje były skutecznie wykrywane sygnał ten musi dotrzeć do wszystkich stacji zanim nie rozpocznie się nadawanie właściwych danych. To właśnie prędkość rozchodzenia się sygnału w kablu a nie jego tłumienie limituje odległości (długości kabli).

Dokument ten stanowi cześć FAQ grupy pl.comp.networking

Copyright © Dawid Suder, 2009 - 2012