Dydaktyka:
Feedback
(Tekstowa) powłoka systemowa (shell), terminal, konsola.
Programy np. xfce4-terminal
, konsole
Zmiana użytkownika – su
Wykonania programu na prawach innego użytkownika – sudo polecenie
Użycie sudo
do uruchomienia shella z prawami roota: sudo -s
(lub sudo -i
lub sudo su
)
Historia w konsoli: strzałki góra/dół, history
, ctrl+r, fc
Obsługa polecenia less
(wykonaj dla przykładu: convert -h | less
albo man less
):
/
– wyszukuje:n
– następne wystąpienieN
– poprzednieg
– początek dokumentu; G
– koniecq
– wyjście
Wzór polecenia (zwięzłe wyjaśnienie):
polecenie {jeden|z|wielu} <argument1> [-opcja1 <argument2>] --długa_opcja=<argument3> [opcja2]
Przykład polecenia:
polecenie jeden 42 [-opcja1 foo] --długa_opcja=x
Co trzeba wpisać w konsolę:
polecenie jeden 44 -oja1 baz --długa_opcja=x
Pomoc wbudowana w polecenia zwykle jest wyświetlana po podaniu opcji -h
(lub --help
), np:
tracepath -h
netstat -h
ip a h
ifconfig -h
Podręcznik systemowy – komenda man
i towarzyszące, np:
man tracepath
man ip
/ man 7 ip
/ man 8 ip
apropos
– lista stron które w tytule mają podane słowo, np. apropos network
whatis
– tytuły stron pod podaną nazwą, np. whatis write
Uwaga: informacje o narzędziach są podane dla wyjaśnienia dlaczego kilka komend realizuje to samo zadanie i dla uporządkowania wiedzy. Treści z tej sekcji (listy komend, nazwy paczek narzędzi, etc.) nie będą w żaden sposób wymagane na wejściówkach/teście.
Narzędzia: omawiane | ważne albo popularne | mocno
przestarzałe, mało znane albo zbędne
.
Pakiet narzędzi net-tools
powstał w 1983 roku, początkowo w systemie BSD.
Od tego czasu jest utrzymywany, jednak większość jego składników jest uznawana
za przestarzałe.
W skład wchodzą:
arp dnsdomainname domainname hostname
ifconfig ipmaddr iptunnel mii-tool nameif
netstat nisdomainname plipconfig rarp route
slattach ypdomainname
Około roku 2000 stworzono pakiet
iproute2
, mający
zastąpić net-tools
(i kilka innych, napisanych by udostępnić nowe możliwości
jądra systemu Linux).
Pakiet iproute2
zawiera następujące polecenia:
arpd ctstat genl ifcfg ifstat ip lnstat
nstat routef routel rtacct rtmon rtpr rtstat ss tc
Pomoc do komendy ip
jest rozbia na wiele stron podręcznika, np.
man ip-link
, man ip-address
iputils
- narzędzia
arping clockdiff ipg ping ping6 rarpd
rdisc tftpd tracepath tracepath6 traceroute6
Karta sieciowa (NIC – network interface card) – fizyczne urządzenie do komunikacji sieciowej.
Interfejs sieciowy (network interface) – logiczne urządzenie do komunikacji sieciowej.
Interface'y można podzielić na fizyczne (reprezentują fizyczne urządzenia sieciowe) i wirtualne (reszta).
Lista aktywnych urządzeń | ifconfig | ip link show up |
Lista wszystkich urządzeń | ifconfig -a | ip link [show] |
Lista adresów sieciowych | ifconfig [-a] | ip address [show [up]] |
Wszystkie argumenty polecenia ip
można dowolnie skracać, ale jeśli skróty
kolidują, narzędzie wybiera jedno rozwinięcie zamiast wyświetlić komunikat
o błędzie (sic!).
Np. ip link show
można zapisać jako ip l sh
, ale ip l s
jest już
traktowane jako ip link set
Polecenie ip
przyjmuje też opcje (podawane bezpośrednio po ip
), wśród
których warto znać opcję --brief
(i --json
).
Porównaj: ip link
i ip --brief link
Tradycyjne nazwy urządzeń (zwykle zakończone kolejnym numerem, jak np. eth0
) to m. inn.:
lo
eth
wlan, ath, wifi, radio
firewire
, infiniband ib
veth, dummy
,
mostki br
, urządzenia programowe tun, tap
,
tunele sit, tnl, ppp, vpn, gre
Około 2015 roku w systemie Linux zmieniono sposób nadawania nazw urządzeniom.
Stąd dla fizycznych interfejsów można spotkać nazwy: eno1, sls1, wwp2s0, wlx78e7d1ea46da
Wcześniej to, która karta sieciowa dostanie który numer (eth0, eth1) było trudne
do przewidzenia (ale stałe dla danej konfiguracji sprzętowej).
Co gorsza, kolejność po dodaniu nowej karty sieciowej lub awarii jednej z kart
mogła ulec zmianie.
Więcej szczegółów:
[1]
[2]
Włączenie interfejsu | ifconfig eth0 up | ip link set dev eth0 up |
Wyłączenie interfejsu | ifconfig eth0 down | ip link set dev eth0 down |
Dodanie nowego adresu do interfejsu | ip addr add 10.0.0.1/25 dev eth0 ip addr add fd00::1/64 dev eth0 |
Usunięcie adresu z interfejsu | ip addr del 10.0.0.1/25 dev eth0 ip addr del fd00::1/64 dev eth0 |
Wyczyszczenie adresów interfejsu (groźne) | ip addr flush dev eth0 |
Uwaga! Każdy adres bez maski polecenie ip
interpretuje jako adres z maską /32 (IPv4) lub /128 (IPv6)
Zmiana bieżącego adresu IPv4 i/lub maski | ifconfig eth0 [10.0.0.1] [netmask 255.255.255.128] |
Dodanie nowego adresu IPv4 do urządzenia (tworząc alias urządzenia) | ifconfig eth0:something 10.0.0.1 … |
'Usunięcie' dodatkowego adresu IPv4 z urządzenia (usunięcie aliasu) | ifconfig eth0:something down |
'Usunięcie' podstawowego adresu IPv4 z urządzenia | ifconfig eth0 0 |
Dodanie nowego adresu IPv6 | ifconfig eth0 add fd00::1/64 |
Usunięcie adresu IPv6 | ifconfig eth0 del fd00::1/64 |
Zauważ: w poleceniu ifconfig
adres IPv4 i adresy IPv6 konfiguruje się inaczej.
ifconfig
umie ustawić wiele adresów IPv6 na interfejsie, ale tylko jeden adres IPv4.
ifconfig
domyślnie dla IPv4 dobiera maskę pasującą do historycznej klasy adresu, a dla IPv6 /128.
Polecenie ifconfig
pozwala na zmianę wielu ustawień naraz, dla przykładu
poniższe polecenie ustawi adres i włączy interfejs:
ifconfig dummy0 192.168.0.1 netmask 255.255.255.0 up
ping <cel>
traceroute {-I|-T} <cel>
-I
lub -T
, która go skutecznie omijamtr <cel>
Jako cel można podać adres IP (np. ping 150.254.30.29
) lub nazwę słowną (przykładowo: ping cs.put.poznan.pl
, ping lab-net-1
)
Podane programy przyjmują też opcje -4
i -6
to użycia odpowiednio protokołu IPv4 i IPv6, np:
traceroute -4 -T nic.cl
Używając adresów IPv6 ze specjalnych bloków oznaczonych jako
link-local
należy jeszcze dodać na jakim interfejsie znajduje się cel, używając składni
adres%interfejs
, np. ping fe80::d8a8:fbff:fe92:2ddf%eth0
.
/ # ip a 10: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether da:a8:fb:92:2d:df brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 192.168.5.2/30 brd 192.168.5.3 scope link eth0 valid_lft forever preferred_lft forever inet 172.19.67.0/19 brd 172.19.95.255 scope global eth0:1 valid_lft forever preferred_lft forever inet 10.42.0.238/24 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::d8a8:fbff:fe92:2ddf/64 scope link valid_lft forever preferred_lft forever / # ifconfig eth0 Link encap:Ethernet HWaddr DA:A8:FB:92:2D:DF inet addr:192.168.5.2 Bcast:192.168.5.3 Mask:255.255.255.252 inet6 addr: fe80::d8a8:fbff:fe92:2ddf/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1326 errors:0 dropped:0 overruns:0 frame:0 TX packets:1063 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2681637 (2.5 MiB) TX bytes:123670 (120.7 KiB) eth0:1 Link encap:Ethernet HWaddr DA:A8:FB:92:2D:DF inet addr:172.19.67.0 Bcast:172.19.95.255 Mask:255.255.224.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1Uwaga: ifconfig w różnych dystrybucjach może mieć nieznacznie inny format wyjścia.
Do wyświetlenia listy interfejsów i adresów IP można użyć m. inn. komendy ipconfig
,
domyślnie pokazującej tylko aktywne interfejsy; ipconfig /all
pokaże wszystkie
Adresy IP można ustawić z "okienek" https://support.microsoft.com/en-us/windows/change-tcp-ip-settings-bd0a07af-15f5-cd6a-363f-ca2b6f391ace
Z linii poleceń należy użyć komendy netsh
, kontekstu netsh interface ip
https://learn.microsoft.com/…
Z PowerShella należy użyć cmdletów modułu NetTCPIP:
https://learn.microsoft.com/en-us/powershell/module/nettcpip/?view=windowsserver2025-ps
Windows dostarcza z systemem programy ping
(przełączniki nie są zgodne; patrz ping /?
) i tracert
.
Zwykle w całości realizowana przez sprzęt.
Główne zadanie – pozwala wysyłać i odbierać bity
Protokoły opisują wszystko potrzebne do przesłania bitów (m. in. medium, synchronizację, kodowanie, detekcję błędów, korekcję)
Całkowity brak interpretacji przesyłanych danych
Udostępnia informacje o stanie i pozwala zmieniać niektóre ustawienia (np. prędkość, dupleks, kanał radiowy)
Na warstwie fizycznej odbywa się autonegocjacja (http://en.wikipedia.org/wiki/Autonegotiation)
która wybiera najlepszy standard wspierany przez obie strony.
Pozwala to też na wykrywanie łącza – określenie czy coś w ogóle jest po drugiej stronie.
Wake on Lan jest funkcją kart sieciowych pozwalającą im włączyć komputer po otrzymaniu odpowiedniego pakietu.
Kabel sieciowy można też wykorzystać do zasilania podłączonych urządzeń. Takie rozwiązanie nazywa się PoE i jest popularne np. przy kamerach czy punktach dostępu do sieci bezprzewodowej.
Diody LED przy porcie ethernetowym przynajmniej wskazują czy nawiązano połączenie. Producent decyduje jakie funkcje pełnią dodatkowo (np. wskazywanie kolorem z jaką prędkością działa karta, czy mruganie w trakcie wysyłania danych).
Narzędzia do zarządzania warstwą fizyczną Ethernetu w Linuksie: mii-tool
/ ethtool
ethtool <ifname>
– wyświetla podstawowe informacje
ethtool --identify <ifname>
– prosi kartę o to, by zamrugała diodami tak
żeby można było ją odróżnić od innych1)
Informacje o tym, czy połączenie na warstwie fizycznej zostało nawiązane można sprawdzić przez:
ip link / ip address | brak pozostałych | karta jest wyłączona |
<…,NO-CARRIER,…,UP,…> state DOWN | brak połączenia na warstwie fizycznej | |
<…,UP,…,LOWER_UP,…> state UP | jest połączenie na warstwie fizycznej (i łącza danych) | |
ifconfig | brak pozostałych | karta jest wyłączona |
<…,UP,…> | brak połączenia na warstwie fizycznej | |
<…,UP,…,RUNNING,…> | jest połączenie na warstwie fizycznej (i łącza danych) | |
ethtool | Link detected: no | karta jest wyłączona lub brak połączenia na warstwie fizycznej |
Link detected: yes | jest połączenie na warstwie fizycznej | |
lampka przy porcie | nie świeci | karta jest wyłączona lub brak połączenia na warstwie fizycznej |
zapalona | jest połączenie na warstwie fizycznej |
/ # ethtool eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full 2500baseT/Full Supported pause frame use: Symmetric Receive-only Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full 2500baseT/Full Advertised pause frame use: Symmetric Receive-only Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Link partner advertised pause frame use: Symmetric Link partner advertised auto-negotiation: Yes Link partner advertised FEC modes: Not reported Speed: 1000Mb/s Duplex: Full Auto-negotiation: on master-slave cfg: preferred slave master-slave status: slave Port: Twisted Pair PHYAD: 0 Transceiver: external MDI-X: Unknown Supports Wake-on: pumbg Wake-on: g Link detected: yes
eth0
włączona i podłączona
eth1
włączona i niepodłączona
eth2
wyłączona
/ # ip l 10: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 link/ether da:a8:fb:92:2d:df brd ff:ff:ff:ff:ff:ff link-netnsid 0 12: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state LOWERLAYERDOWN mode DEFAULT group default qlen 1000 link/ether 4e:b4:72:09:49:fe brd ff:ff:ff:ff:ff:ff link-netnsid 0 14: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether 86:c9:1d:eb:7f:48 brd ff:ff:ff:ff:ff:ff link-netnsid 0 / # ifconfig -a eth0 Link encap:Ethernet HWaddr DA:A8:FB:92:2D:DF inet addr:10.42.0.238 Bcast:10.42.0.255 Mask:255.255.255.0 inet6 addr: fe80::d8a8:fbff:fe92:2ddf/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1321 errors:0 dropped:0 overruns:0 frame:0 TX packets:1058 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2681185 (2.5 MiB) TX bytes:123368 (120.4 KiB) eth1 Link encap:Ethernet HWaddr 4E:B4:72:09:49:FE UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) eth2 Link encap:Ethernet HWaddr 86:C9:1D:EB:7F:48 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) / # ethtool eth0 | grep 'Link detected:' Link detected: yes / # ethtool eth1 | grep 'Link detected:' Link detected: no / # ethtool eth2 | grep 'Link detected:' Link detected: no
Pozwala wysłać ramki do konkretnego urządzenia (lub urządzeń) do których nadawca jest połączony bezpośrednio (na warstwie fizycznej) lub za pośrednictwem urządzeń tej warstwy (np. switchy).
Ostatnia warstwa zależna od sprzętu. Zarządza kto kiedy może wysyłać dane, wprowadza adresy (adresy MAC), porządkuje bajty w ramki, sprawdza czy ramki zostały przesłane bez zniekształceń, umieszcza w ramce informację jaką treść zawierają jej dane.
Urządzenia warstwy łącza danych to mostki (bridge) i przełączniki (switch).
Adres MAC (adres fizyczny) ma
48 bitów i jest zapisywany szesnastkowo, w 6 grupach po 8 bajtów oddzielonych
dwukropkiem.
Przykład adresu: 5c:f9:dd:78:3d:88.
Domyślnie używany przez karty ethernetowe (i Wi-Fi) adres MAC jest ustawiany w
nienadpisywalnej pamięci karty.
Taki adres MAC jest podzielony na dwie części: pierwsza połowa to
identyfikator producenta (OUI), druga połowa to numer karty.
Producenci sprzętu muszą wykupić pulę adresów.
Lista zajętych początków adresów jest dostępna publicznie,
razem z informacją kto ma który OUI.
System operacyjny musi sam wpisać adres MAC do ramki sieciowej, adres MAC używany przez kartę można zmienić na inny.
Adresy MAC z ustawionym bitem 0x01 w pierwszym bloku to adresy multicastowe (i adres rozgłoszeniowy, ff:ff:ff:ff:ff:ff).
Adresy użyte przez IPv4 do multicastu zaczynają się od 01:00:5e:…
, a IPv6 od 33:33:…
Adresy MAC z ustawionym bitem 0x02 w pierwszym bloku to adresy lokalnie administrowane (nieunikalne). Można je nadawać np. urządzeniom wirtualnym.
W Linuksie do zarządzania warstwą łącza danych (data link layer) służy komenda ifconfig
(i inne) / ip link
.
odczyt adr. MAC | ifconfig [eth0] | ip link [show dev eth0] |
zmiana adr. MAC | ifconfig eth0 hw ether 12:34:56:78:90:ab | ip link set dev eth0 address 12:34:56:78:90:ab |
Większość sterowników kart pozwala zmieniać MAC tylko na wyłączonych kartach.
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
Ethernet opisuje2) jak stworzyć lokalną (kablową) sieć komputerową. Określa jak ma wyglądać warstwa fizyczna i warstwa łącza danych.
Na warstwie łącza danych określa m. inn. jak ma wyglądać pojedyncza
wiadomość (ramka) wysłana przez sieć.
Ramka ethernetowa zawiera adres MAC nadawcy i odbiorcy, oraz może mieć rozmiar
między 64B a 1500B.
Górna granica na wielkość ramki ma nazwę
MTU.
Unicast to wysłanie pakietu do jednego, wskazanego odbiorcy.
Multicast to wysłanie pakietu do grupy zainteresowanych odbiorców.
Broadcast to wysłanie pakietu do wszystkich (w zasięgu).
Anycast to wysłanie do najbliższego z grupy odbiorców.
Domyślnie Linuksy ignorują zapytania generowane przez ping
wysłane na adresy
multicastowe/rozgłoszeniowe IPv4.
Aby to zmienić, wykonaj z uprawnieniami roota komendę: sysctl net.ipv4.icmp_echo_ignore_broadcasts=0
Aby wybrany interfejs dołączył do grupy multicastowej, jakiś program musi tego zażądać. Na potrzeby ćwiczeń użyj komend:
socat -u udp4-recv:0,ip-add-membership=239.1.2.3:br0 stdio
socat -u udp6-recv:0,ipv6-join-group=[ff05::fedc:ba98]:br0 stdio
Listę grup do których należą interfejsy można sprawdzić komendą ip maddr
lub netstat -ng
Do przetestowania sposobów adresowania możesz użyć komend:
ping <adres IP innego komputera>
ping <adres IP grupy multicastowej>
ping -b <adresu IPv4 rozgłoszeniowy sieci>
lub ping -b 255.255.255.255
W tym ćwiczeniu warto dodać do Linuksowego programu
ping
jeszcze opcje -c2 -w1
-c count
ograniczy ilość zapytań co count,
a opcja -w limit
przerwie w momencie wysłania kolejnego zapytania,
jeśli była już odpowiedź na limit zapytań.
W IPv6 nie ma adresów rozgłoszeniowych. Zastąpił je m. inn. adres multicastowy
wszystkie węzły – ff02::1
, którego użycie, podobnie jak adresów z sieci
fe80::/64
, wymaga podania interfejsu który ma zostać użyty,
np. ping ff02::1%br0
Domena rozgłoszeniowa i kolizyjna [1] [2] to zbiór urządzeń do których dotrze ramka wysłana jako rozgłoszeniowa (domena rozgłoszeniowa) bądź dowolna (domena kolizyjna).
Do wysłania pakietu do wybranego urządzenia podaje się jego adres IP.
System operacyjny wysyłając ramkę sieciową (z tym pakietem w środku) musi
ustawić właściwy adres docelowy MAC.
Jeżeli urządzenie S ma wysłać pakiet do urządzenia R o podanym adresie IP i ten adres IP znajduje się w tej samej sieci co adres IP urządzenia S, to urządzenie S musi najpierw dowiedzieć się jaki adres MAC ma urządzenie R.
Do znajdowania adresów MAC dla podanego adresu IPv4 służy protokół ARP.
Do znajdowania adresów MAC dla podanego adresu IPv6 służy protokół NDP.
Wyświetlanie mapowań IP→MAC: ip neighbour
(działa też pisownia ip neighbor
).
Do wyświetlenia mapowań IPv4→MAC można użyć starszej komendy arp
.
Listę znanych mapowań można wyczyścić komendą ip neighbour flush {all|dev <ifname>}
.
Komenda arping
pozwala wysłać żądanie protokołu ARP:
arping -I <nazwa interfejsu> <adres IPv4>
np. arping -I br0 150.254.32.129
Komenda ndisc6
pozwala wysłać wiadomość Neighbor Solicitation protokołu NDP:
ndisc6 <adres IPv6> <nazwa interfejsu>
np. ndisc6 fd00::5 br0
Przełącznik na podstawie adresów źródłowych ramek buduje tablicę adresów MAC
(określającą na którym porcie jest dany adres).
Jeżeli adres docelowy ramki jest w tej tablicy, to wiadomość wysłana jest tylko
przez port przez który osiągalny jest docelowy adres.
Wiadomości rozgłoszeniowe i wiadomości do nieznanych adresów MAC wysyłane są na wszystkie porty poza tym z którego zostały otrzymane.
Adresy MAC multicastowe są obsługiwane inaczej – każdy komputer musi ogłosić że chce dołączyć do wybranej grupy (bądź ją opuścić) wysyłając odpowiednią wiadomości. Switch z tych wiadomości uczy się przez które porty należy wysłać wiadomości kierowane do konkretnej grupy.
Jeżeli w domenie rozgłoszeniowej (czyli w połączeniach między switchem / switchami)
powstanie pętla, to każdy pakiet
rozgłoszeniowy zacznie krążyć w tej pętli w nieskończoność, powodując powielanie go
na pozostałych portach (czym skutecznie popsuje całą domenę rozgłoszeniową). Jedynym
sposobem na zaradzenie jest zlikwidowanie pętli (np. przez wypięcie kabla).
Takim sytuacjom mają zapobiegać
protokoły drzewa rozpinającego
(STP, RSTP, PVSTP (cisco), MSTP).
Przełączniki zarządzalne to przełączniki które można w jakikolwiek sposób konfigurować.
Przełączniki wielowarstwowe to przełączniki które umieją wykonywać niektóre zadania z warstw wyższych niż łącza danych.