====== Warstwa łącza danych ====== ===== Warstwa łącza danych ===== Pozwala wysłać **ramki** do konkretnego urządzenia (lub urządzeń) do których nadawca jest połączony bezpośrednio (na warstwie fizycznej). Dla typowych rozwiązań w sieciach komputerowych podzielona na: * MAC ("dolna" część warstwy 2) http://en.wikipedia.org/wiki/Media_access_control * wprowadza adresację * obsługuje wielodostęp - rozwiązywanie konfliktów * eliminuje zniekształcone ramki (liczy [[http://pl.wikipedia.org/wiki/Cykliczny_kod_nadmiarowy|CRC]]) * implementacja zależna od warstwy fizycznej; w ethernecie opisana w [[http://en.wikipedia.org/wiki/IEEE_802.3|IEEE 802.3]] * LLC ("górna" część warstwy 2) http://en.wikipedia.org/wiki/Logical_link_control * przekazuje informacje o protokole warstwy wyższej * jeśli trzeba, dba o multileksację ramek * może korygować błędy i kontrolować przepływ * zdefiniowane w [[http://en.wikipedia.org/wiki/IEEE_802.2|IEEE 802.2]] * jednolita dla wielu rozwiązań na warstwie fizycznej Adres MAC - zapis, budowa adresu, OUI http://en.wikipedia.org/wiki/MAC_address \\ Założenie unikalności adresów [[http://standards.ieee.org/develop/regauth/oui/|"przydział" adresów]] [[http://standards.ieee.org/develop/regauth/oui/oui.txt|zajęte adresy]] \\ Adresy multicastowe (pierwszy oktet nieparzysty) i rozgłoszeniowe (broadcast, ff:ff:ff:ff:ff:ff) \\ IPv4 multicast: ''01:00:5e:…'' IPv6 multicast: ''33:33:…'' W Linuksie do zarządzania warstwą łącza danych (data //link// layer) służy komenda ''ifconfig'' (i inne) / ''ip link'' * odczyt adresu MAC: ''ifconfig eth0'' / '' ip link'' * zmiana adresu MAC: ''ifconfig eth0 hw ether 12:34:56:78:90:ab'' / '' ip link set dev eth0 address 12:34:56:78:90:ab'' ++++ Przykłady poleceń wyświetlających adres MAC: |
/ # ip l
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP mode DEFAULT group default qlen 1000
link/ether 5c:f9:dd:78:3d:88 brd ff:ff:ff:ff:ff:ff
3: p4p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 90:e2:ba:1a:4d:48 brd ff:ff:ff:ff:ff:ff
5: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 08:ed:b9:4c:31:8b brd ff:ff:ff:ff:ff:ff
/ # ifconfig -a
em1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 5c:f9:dd:78:3d:88 txqueuelen 1000 (Ethernet)
RX packets 2702 bytes 355076 (346.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 523 bytes 53668 (52.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 20 memory 0xddf00000-ddf20000
p4p1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.2 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 fe80::92e2:baff:fe1a:4d48 prefixlen 64 scopeid 0x20<link>
ether 90:e2:ba:1a:4d:48 txqueuelen 1000 (Ethernet)
RX packets 293 bytes 60122 (58.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 286 bytes 26478 (25.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0xdd420000-dd43ffff
wlan0: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 08:ed:b9:4c:31:8b txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
++++
Domena rozgłoszeniowa http://en.wikipedia.org/wiki/Broadcast_domain [[http://soisk.info/index.php?title=Domena_kolizyjna_i_rozg%C5%82oszeniowa|[1]]] [[http://study-ccna.com/collision-broadcast-domain|[2]]]
Urządzenia warstwy łącza danych to **mostki** (bridge) i **przełączniki** (switch)
===== Ethernet =====
* IEEE 802.3
* Ethernet obejmuje zarówno warstwę fizyczną jak i łącza danych
* http://pl.wikipedia.org/wiki/Ethernet
* Budowa ramki http://en.wikipedia.org/wiki/Ethernet_frame
* Ramki Ethernet II / IEEE 802.2 LLC
* Pole długość ramki / typ ramki, http://en.wikipedia.org/wiki/EtherType
===== Przełącznik (switch) =====
Wybór portu, tablica adresów MAC, pamięć CAM http://en.wikipedia.org/wiki/Content-addressable_memory
Pętle \\
Protokoły drzewa rozpinającego: http://en.wikipedia.org/wiki/Spanning_tree_protocol (STP, RSTP, PVSTP (cisco), MSTP)
Cut-through / fragment-free / store-and-forward
Przełączniki zarządzalne / wielowarstwowe http://en.wikipedia.org/wiki/Multilayer_switch
===== Mierzenie prędkości =====
* Do mierzenia prędkości na jednym urządzeniu musi działać program czekający na połączenie (serwer), na drugim należy uruchomić program który łączy się z serwerem i mierzy prędkość (klient)
* [[https://github.com/HewlettPackard/netperf|netperf]] [[https://hewlettpackard.github.io/netperf/doc/netperf.html|[1]]]
* serwer: ''netserver -N''
* klient: ''netperf -H /cel//>''
* [[https://iperf.fr/|iperf]]
* serwer: ''iperf3 -s''
* klient: ''iperf3 -c /cel//>''
Opcje programu netperf:
* ''netperf -h'' – pomoc ogólna
* ''netperf [-t {TCP_STREAM|…}] -- -h'' – pomoc dla wybranego testu
* ''netperf -D //1// …'' – wyniki pośrednie co 1 sekundę
* ''netperf -l //15// …'' – test o długości 15 sekund
* ''netperf -t UDP_STREAM …'' – test wykorzystujący protokół UDP
* ''netperf -t UDP_STREAM -H