Add network unit 21 on Ethernet addresses and frames.

Cover MAC assignment plus Ethernet II, 802.3, SNAP, raw frames and sizes.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
pepaskopec-blip 2026-09-14 12:54:48 +02:00
commit 5522a77533
5 changed files with 175 additions and 18 deletions

View file

@ -31,7 +31,7 @@ GTK 4 interface.
German learning path German learning path
- **Správa počítačových sítí / Computer Network Administration** is open too - **Správa počítačových sítí / Computer Network Administration** is open too
(shown with a Wi-Fi icon) and leads to a 30-unit computer-networks path; (shown with a Wi-Fi icon) and leads to a 30-unit computer-networks path;
**units 1–20 are playable**, units 21–30 are locked placeholders **units 1–21 are playable**, units 22–30 are locked placeholders
- **Technické vybavení / Computer Hardware** is open (chip icon) and leads - **Technické vybavení / Computer Hardware** is open (chip icon) and leads
to a 10-unit hardware path; **units 1–3 are playable**, units 4–10 are to a 10-unit hardware path; **units 1–3 are playable**, units 4–10 are
locked placeholders locked placeholders
@ -62,7 +62,7 @@ GTK 4 interface.
- **Hints & model answers** – in exercises where you write or complete a German - **Hints & model answers** – in exercises where you write or complete a German
sentence the Czech meaning is shown right away as a hint, and clicking the sentence the Czech meaning is shown right away as a hint, and clicking the
check button also reveals the correct German sentence so you can compare check button also reveals the correct German sentence so you can compare
- **Computer networks path** – twenty unlocked units (theory slides + practice): - **Computer networks path** – twenty-one unlocked units (theory slides + practice):
1. **Výpočet IP adres / IP Address Calculation** – 4-slide VLSM walkthrough 1. **Výpočet IP adres / IP Address Calculation** – 4-slide VLSM walkthrough
and four interactive subnetting tasks (prefix, network, broadcast, host and four interactive subnetting tasks (prefix, network, broadcast, host
range) with check and “show solution” range) with check and “show solution”
@ -84,7 +84,8 @@ GTK 4 interface.
17. Aktivní prvky – slides + quiz 17. Aktivní prvky – slides + quiz
18. Switch (podrobně) – slides + quiz 18. Switch (podrobně) – slides + quiz
19. Směrování (Routing) – slides + quiz 19. Směrování (Routing) – slides + quiz
20. Směrovač a brána – slides + quiz 20. Směrovač a brána – slides + quiz
21. Adresy a rámce v ethernetu – slides + quiz
Progress for networks is saved to `progress/net.conf` (one flag per unit); Progress for networks is saved to `progress/net.conf` (one flag per unit);
completed network units show a checkmark on the path and count in Statistics completed network units show a checkmark on the path and count in Statistics
- **Computer hardware path** – three unlocked units (theory slides + quiz): - **Computer hardware path** – three unlocked units (theory slides + quiz):
@ -307,11 +308,11 @@ When launched, the application shows the welcome screen. From there:
unit 2 or **"Bei uns zu Hause"** for unit 3, then pick any bubble to start unit 2 or **"Bei uns zu Hause"** for unit 3, then pick any bubble to start
an exercise. Units 2 and 3 are available even if the earlier units are not an exercise. Units 2 and 3 are available even if the earlier units are not
finished yet. finished yet.
5. On the networks path, units **1–20** are open. Unit 1 (**Výpočet IP adres**) 5. On the networks path, units **1–21** are open. Unit 1 (**Výpočet IP adres**)
walks through four VLSM slides and then four interactive subnetting tasks walks through four VLSM slides and then four interactive subnetting tasks
with check / “show solution”. Units 2–20 each have theory slides followed by with check / “show solution”. Units 2–21 each have theory slides followed by
a multiple-choice quiz (basic concepts through routers and gateways). a multiple-choice quiz (basic concepts through Ethernet addresses/frames).
Units 21–30 stay locked placeholders. Units 22–30 stay locked placeholders.
6. On the hardware path, units **1–3** are open (architecture / von Neumann, 6. On the hardware path, units **1–3** are open (architecture / von Neumann,
computer history generations, bit & byte), each with slides and a quiz. computer history generations, bit & byte), each with slides and a quiz.
Units 4–10 stay locked. Units 4–10 stay locked.
@ -462,7 +463,7 @@ moderním GTK 4 rozhraním stylovaným přes CSS.
- **Deutsch** je otevřený (bublina s německou vlajkou) a vede na německou - **Deutsch** je otevřený (bublina s německou vlajkou) a vede na německou
učební cestu učební cestu
- **Správa počítačových sítí** je také otevřená (ikona Wi‑Fi) a vede na cestu - **Správa počítačových sítí** je také otevřená (ikona Wi‑Fi) a vede na cestu
s 30 jednotkami; **jednotky 1–20 jsou hratelné**, 21–30 jsou zamčené s 30 jednotkami; **jednotky 1–21 jsou hratelné**, 22–30 jsou zamčené
placeholdery placeholdery
- **Technické vybavení** je otevřené (ikona čipu) a vede na cestu - **Technické vybavení** je otevřené (ikona čipu) a vede na cestu
s 10 jednotkami; **jednotky 1–3 jsou hratelné**, 4–10 jsou zamčené s 10 jednotkami; **jednotky 1–3 jsou hratelné**, 4–10 jsou zamčené
@ -488,7 +489,7 @@ moderním GTK 4 rozhraním stylovaným přes CSS.
„Was siehst du?“, řazení vět, chybějící písmena) „Was siehst du?“, řazení vět, chybějící písmena)
- **Nápovědy a vzorové odpovědi** – u psaných / doplňovaných vět je hned - **Nápovědy a vzorové odpovědi** – u psaných / doplňovaných vět je hned
český význam; po kontrole se ukáže i správná německá věta český význam; po kontrole se ukáže i správná německá věta
- **Cesta počítačových sítí** – dvacet odemčených jednotek (snímky + cvičení): - **Cesta počítačových sítí** – jednadvacet odemčených jednotek (snímky + cvičení):
1. **Výpočet IP adres** – 4 snímky VLSM a čtyři interaktivní úlohy 1. **Výpočet IP adres** – 4 snímky VLSM a čtyři interaktivní úlohy
(prefix, síť, broadcast, rozsah uzlů) s kontrolou a „ukázat řešení“ (prefix, síť, broadcast, rozsah uzlů) s kontrolou a „ukázat řešení“
2. Základní pojmy a rozdělení sítí – snímky + kvíz 2. Základní pojmy a rozdělení sítí – snímky + kvíz
@ -509,7 +510,8 @@ moderním GTK 4 rozhraním stylovaným přes CSS.
17. Aktivní prvky – snímky + kvíz 17. Aktivní prvky – snímky + kvíz
18. Switch (podrobně) – snímky + kvíz 18. Switch (podrobně) – snímky + kvíz
19. Směrování (Routing) – snímky + kvíz 19. Směrování (Routing) – snímky + kvíz
20. Směrovač a brána – snímky + kvíz 20. Směrovač a brána – snímky + kvíz
21. Adresy a rámce v ethernetu – snímky + kvíz
Postup u sítí se ukládá do `progress/net.conf` (příznak na jednotku); Postup u sítí se ukládá do `progress/net.conf` (příznak na jednotku);
dokončené jednotky mají fajfku na cestě a počítají se ve Statistikách dokončené jednotky mají fajfku na cestě a počítají se ve Statistikách
- **Cesta technického vybavení** – tři odemčené jednotky (snímky + kvíz): - **Cesta technického vybavení** – tři odemčené jednotky (snímky + kvíz):
@ -730,10 +732,11 @@ Po spuštění se zobrazí úvodní obrazovka. Odtud:
4. Otevřete **"Neue Freunde"** (jednotka 1), **"Aus aller Welt"** (2) nebo 4. Otevřete **"Neue Freunde"** (jednotka 1), **"Aus aller Welt"** (2) nebo
**"Bei uns zu Hause"** (3) a vyberte bublinu cvičení. Jednotky 2 a 3 jdou **"Bei uns zu Hause"** (3) a vyberte bublinu cvičení. Jednotky 2 a 3 jdou
otevřít i bez dokončení předchozích. otevřít i bez dokončení předchozích.
5. Na síťové cestě jsou otevřené jednotky **1–20**. Jednotka 1 (**Výpočet IP 5. Na síťové cestě jsou otevřené jednotky **1–21**. Jednotka 1 (**Výpočet IP
adres**) má 4 snímky VLSM a pak 4 interaktivní úlohy s kontrolou / adres**) má 4 snímky VLSM a pak 4 interaktivní úlohy s kontrolou /
„ukázat řešení“. Jednotky 2–20 mají snímky teorie a kvíz s výběrem „ukázat řešení“. Jednotky 2–21 mají snímky teorie a kvíz s výběrem
(od základních pojmů po směrovač a bránu). Jednotky 21–30 zůstávají zamčené. (od základních pojmů po ethernetové adresy a rámce). Jednotky 22–30
zůstávají zamčené.
6. Na cestě technického vybavení jsou otevřené jednotky **1–3** (architektura / 6. Na cestě technického vybavení jsou otevřené jednotky **1–3** (architektura /
von Neumann, historie generací, bit a byte), každá se snímky a kvízem. von Neumann, historie generací, bit a byte), každá se snímky a kvízem.
Jednotky 4–10 zůstávají zamčené. Jednotky 4–10 zůstávají zamčené.
@ -777,8 +780,8 @@ exercise_u1.c cvičení jednotky 1 („Neue Freunde“)
exercise_u2.c cvičení jednotky 2 („Aus aller Welt“) exercise_u2.c cvičení jednotky 2 („Aus aller Welt“)
exercise_u3.c cvičení jednotky 3 („Bei uns zu Hause“) exercise_u3.c cvičení jednotky 3 („Bei uns zu Hause“)
settings.c panel nastavení (režim, téma, jazyk) settings.c panel nastavení (režim, téma, jazyk)
net.c cesta počítačových sítí (30 uzlů), jednotky 1–20 net.c cesta počítačových sítí (30 uzlů), jednotky 1–21
(1: VLSM cvičení; 2–20: kvízy s výběrem) (1: VLSM cvičení; 2–21: kvízy s výběrem)
hw.c cesta technického vybavení (10 uzlů), jednotky 1–3 hw.c cesta technického vybavení (10 uzlů), jednotky 1–3
(architektura, historie, bit/byte + kvízy) (architektura, historie, bit/byte + kvízy)
main.c vstupní bod aplikace a zapojení stránek main.c vstupní bod aplikace a zapojení stránek

22
i18n.c
View file

@ -317,6 +317,12 @@ const TrEntry tr_ui[] = {
"7 slides about routers and gateways, then a quiz."}, "7 slides about routers and gateways, then a quiz."},
{"net_ex20_title", "Kvíz: směrovač a brána", {"net_ex20_title", "Kvíz: směrovač a brána",
"Quiz: router and gateway"}, "Quiz: router and gateway"},
{"net_unit21", "Adresy a rámce v ethernetu",
"Ethernet addresses and frames"},
{"net_unit21_sub", "8 snímků o MAC a typech rámců a pak kvíz.",
"8 slides about MAC and frame types, then a quiz."},
{"net_ex21_title", "Kvíz: ethernet adresy a rámce",
"Quiz: Ethernet addresses and frames"},
{"net_quiz_intro", {"net_quiz_intro",
"Vyberte u každé otázky jednu správnou odpověď a stiskněte Zkontrolovat.", "Vyberte u každé otázky jednu správnou odpověď a stiskněte Zkontrolovat.",
"Choose one correct answer for each question and press Check."}, "Choose one correct answer for each question and press Check."},
@ -358,6 +364,8 @@ const TrEntry tr_ui[] = {
"Quiz on routing"}, "Quiz on routing"},
{"net_quiz20_head", "Kvíz ke směrovači a bráně", {"net_quiz20_head", "Kvíz ke směrovači a bráně",
"Quiz on router and gateway"}, "Quiz on router and gateway"},
{"net_quiz21_head", "Kvíz k ethernetovým adresám a rámcům",
"Quiz on Ethernet addresses and frames"},
{"net_slide_next", "Další", "Next"}, {"net_slide_next", "Další", "Next"},
{"net_slide_prev", "Zpět", "Back"}, {"net_slide_prev", "Zpět", "Back"},
{"net_slide_start", "Přejít na cvičení", "Go to the exercise"}, {"net_slide_start", "Přejít na cvičení", "Go to the exercise"},
@ -676,6 +684,20 @@ const TrEntry tr_content[] = {
"A gateway connects a LAN to a different environment"}, "A gateway connects a LAN to a different environment"},
{"Pojem brána někdy označuje router nebo LAN–WAN připojení", NULL, {"Pojem brána někdy označuje router nebo LAN–WAN připojení", NULL,
"Gateway sometimes means a router or LAN–WAN connection"}, "Gateway sometimes means a router or LAN–WAN connection"},
{"MAC adresa Ethernetu má 48 bitů a je unikátní", NULL,
"An Ethernet MAC address is 48 bits and unique"},
{"IEEE přidělí výrobci první 3 byty adresy", NULL,
"IEEE assigns the manufacturer the first 3 address bytes"},
{"Ethernet II: EtherType > 1500 (IP = 0800h)", NULL,
"Ethernet II: EtherType > 1500 (IP = 0800h)"},
{"IEEE 802.3: délka ≤ 1500 a rámec 802.2", NULL,
"IEEE 802.3: length ≤ 1500 and an 802.2 frame"},
{"Raw 802.3: Novell/IPX, začíná FFFFh", NULL,
"Raw 802.3: Novell/IPX, starts with FFFFh"},
{"Max. Ethernet II = 1518 B", NULL,
"Max Ethernet II frame = 1518 B"},
{"Min. rámec 64 B kvůli koliznímu okénku", NULL,
"Min frame is 64 B due to the collision window"},
{"čtrnáct", NULL, "fourteen"}, {"čtrnáct", NULL, "fourteen"},
{"sedmnáct", NULL, "seventeen"}, {"sedmnáct", NULL, "seventeen"},
{"dvacet", NULL, "twenty"}, {"dvacet", NULL, "twenty"},

1
main.c
View file

@ -266,6 +266,7 @@ void activate(GtkApplication *app, gpointer user_data) {
{"netunit18", "netex18", build_net_unit18_page, build_net_unit18_exercise_page}, {"netunit18", "netex18", build_net_unit18_page, build_net_unit18_exercise_page},
{"netunit19", "netex19", build_net_unit19_page, build_net_unit19_exercise_page}, {"netunit19", "netex19", build_net_unit19_page, build_net_unit19_exercise_page},
{"netunit20", "netex20", build_net_unit20_page, build_net_unit20_exercise_page}, {"netunit20", "netex20", build_net_unit20_page, build_net_unit20_exercise_page},
{"netunit21", "netex21", build_net_unit21_page, build_net_unit21_exercise_page},
}; };
for (guint i = 0; i < G_N_ELEMENTS(net_pages); i++) { for (guint i = 0; i < G_N_ELEMENTS(net_pages); i++) {

View file

@ -69,7 +69,8 @@
#define NET18_SLIDES 5 #define NET18_SLIDES 5
#define NET19_SLIDES 7 #define NET19_SLIDES 7
#define NET20_SLIDES 7 #define NET20_SLIDES 7
#define NET_LESSONS 20 #define NET21_SLIDES 8
#define NET_LESSONS 21
#define HW_UNITS 10 #define HW_UNITS 10
#define HW_LESSONS 3 #define HW_LESSONS 3
#define HW_SLIDES 3 #define HW_SLIDES 3
@ -1103,6 +1104,7 @@ GtkWidget *build_net_unit17_page(void);
GtkWidget *build_net_unit18_page(void); GtkWidget *build_net_unit18_page(void);
GtkWidget *build_net_unit19_page(void); GtkWidget *build_net_unit19_page(void);
GtkWidget *build_net_unit20_page(void); GtkWidget *build_net_unit20_page(void);
GtkWidget *build_net_unit21_page(void);
GtkWidget *net_qz_combo(void); GtkWidget *net_qz_combo(void);
void net_qz_set_prefix(GtkComboBoxText *c, int pfx); void net_qz_set_prefix(GtkComboBoxText *c, int pfx);
int net_qz_prefix(GtkComboBoxText *c); int net_qz_prefix(GtkComboBoxText *c);
@ -1136,6 +1138,7 @@ GtkWidget *build_net_unit17_exercise_page(void);
GtkWidget *build_net_unit18_exercise_page(void); GtkWidget *build_net_unit18_exercise_page(void);
GtkWidget *build_net_unit19_exercise_page(void); GtkWidget *build_net_unit19_exercise_page(void);
GtkWidget *build_net_unit20_exercise_page(void); GtkWidget *build_net_unit20_exercise_page(void);
GtkWidget *build_net_unit21_exercise_page(void);
void activate(GtkApplication *app, gpointer user_data); void activate(GtkApplication *app, gpointer user_data);
int main(int argc, char **argv); int main(int argc, char **argv);

132
net.c
View file

@ -5,7 +5,7 @@
NetLesson net_lessons[NET_LESSONS] = { NetLesson net_lessons[NET_LESSONS] = {
/* UI unit N maps to lesson content: unit 1 = IP/VLSM (extra); /* UI unit N maps to lesson content: unit 1 = IP/VLSM (extra);
* units 2–20 = source topics (Základní pojmy … směrovač a brána). */ * units 2–21 = source topics (Základní pojmy … ethernet adresy/rámce). */
{ .n_slides = NET_SLIDES, .unit_page = "netunit1", .ex_page = "netex1" }, { .n_slides = NET_SLIDES, .unit_page = "netunit1", .ex_page = "netex1" },
{ .n_slides = NET2_SLIDES, .unit_page = "netunit2", .ex_page = "netex2" }, { .n_slides = NET2_SLIDES, .unit_page = "netunit2", .ex_page = "netex2" },
{ .n_slides = NET3_SLIDES, .unit_page = "netunit3", .ex_page = "netex3" }, { .n_slides = NET3_SLIDES, .unit_page = "netunit3", .ex_page = "netex3" },
@ -26,6 +26,7 @@ NetLesson net_lessons[NET_LESSONS] = {
{ .n_slides = NET18_SLIDES, .unit_page = "netunit18", .ex_page = "netex18" }, { .n_slides = NET18_SLIDES, .unit_page = "netunit18", .ex_page = "netex18" },
{ .n_slides = NET19_SLIDES, .unit_page = "netunit19", .ex_page = "netex19" }, { .n_slides = NET19_SLIDES, .unit_page = "netunit19", .ex_page = "netex19" },
{ .n_slides = NET20_SLIDES, .unit_page = "netunit20", .ex_page = "netex20" }, { .n_slides = NET20_SLIDES, .unit_page = "netunit20", .ex_page = "netex20" },
{ .n_slides = NET21_SLIDES, .unit_page = "netunit21", .ex_page = "netex21" },
}; };
void net_paragraph(GtkWidget *box, const char *text) { void net_paragraph(GtkWidget *box, const char *text) {
@ -467,7 +468,8 @@ void net_add_node(GtkFixed *fixed, int index) {
"net_unit1", "net_unit2", "net_unit3", "net_unit4", "net_unit5", "net_unit1", "net_unit2", "net_unit3", "net_unit4", "net_unit5",
"net_unit6", "net_unit7", "net_unit8", "net_unit9", "net_unit10", "net_unit6", "net_unit7", "net_unit8", "net_unit9", "net_unit10",
"net_unit11", "net_unit12", "net_unit13", "net_unit14", "net_unit15", "net_unit11", "net_unit12", "net_unit13", "net_unit14", "net_unit15",
"net_unit16", "net_unit17", "net_unit18", "net_unit19", "net_unit20" "net_unit16", "net_unit17", "net_unit18", "net_unit19", "net_unit20",
"net_unit21"
}; };
card = gtk_button_new(); card = gtk_button_new();
@ -1800,6 +1802,92 @@ GtkWidget *build_net_unit20_page(void) {
slides, NET20_SLIDES); slides, NET20_SLIDES);
} }
GtkWidget *build_net_unit21_page(void) {
static const NetSlide slides[NET21_SLIDES] = {
{
"1 / 8 • Ethernet", "Síťový hardware",
NULL,
{
"Jeden ze standardů síťového hardware.",
"Dnes nejpoužívanější.",
NULL,
},
},
{
"2 / 8 • Adresy", "48bitová MAC",
"Tip: IEEE přidělí první 3 B, výrobce další 3 B",
{
"Adresa má 48 bitů (6 bytů) a je celosvětově jedinečná.",
"Je pevně v síťové kartě už od výroby.",
"Výrobci dostávají bloky adres od IEEE.",
NULL,
},
},
{
"3 / 8 • Rámce", "Typy hlaviček",
NULL,
{
"Rámec = skupina bitů na linkové vrstvě.",
"Hlavička má adresy odesílatele/příjemce a typ obsahu.",
"Typy: Ethernet II, IEEE 802.3, 802.3 SNAP, raw 802.3.",
NULL,
},
},
{
"4 / 8 • Ethernet II", "DIX + EtherType",
"Tip: EtherType > 1500 (např. IP = 0800h)",
{
"Původní DIX Ethernet.",
"Hlavička: příjemce 6 B, odesílatel 6 B, EtherType 2 B.",
"EtherType identifikuje protokol (IP, IPX…).",
NULL,
},
},
{
"5 / 8 • IEEE 802.3", "Délka místo typu",
NULL,
{
"Místo EtherType je údaj o délce (vždy ≤ 1500).",
"Uvnitř je rámec 802.2 (stejný i pro Token Ring).",
"Typ protokolu je v SAP mezi linkovou a síťovou vrstvou.",
NULL,
},
},
{
"6 / 8 • Raw 802.3", "Novell / IPX",
NULL,
{
"„Holý“ rámec 802.3 bez 802.2 (Novell).",
"Funguje jen v prostředí IPX.",
"Paket začíná dvěma byty FFFFh.",
NULL,
},
},
{
"7 / 8 • SNAP", "802.2 SNAP",
"Tip: byty 15–16 za délkou = AAAAh",
{
"Vložen do rámce 802.3.",
"Rozšiřuje identifikaci protokolu až na 5 bytů.",
NULL,
},
},
{
"8 / 8 • Velikost", "Min / max / MTU",
NULL,
{
"Max. Ethernet II: 1500 + 18 = 1518 B.",
"Min. velikost: 64 B (kolizní okénko).",
"MTU je obvyklé omezení velikosti na routerech.",
NULL,
},
},
};
return build_net_unit_page(&net_lessons[20], "net_unit21", "net_unit21_sub",
slides, NET21_SLIDES);
}
/* Solutions below are the canonical "largest subnet first, in order A–D" /* Solutions below are the canonical "largest subnet first, in order A–D"
* allocation. Scenario 3 does not fit into a /24 as written, which is why * allocation. Scenario 3 does not fit into a /24 as written, which is why
* its "solution" explains that instead. */ * its "solution" explains that instead. */
@ -3085,3 +3173,43 @@ GtkWidget *build_net_unit20_exercise_page(void) {
(int)G_N_ELEMENTS(net20_qs)); (int)G_N_ELEMENTS(net20_qs));
} }
const ChoiceQ net21_qs[] = {
{"Ethernetová adresa má:",
{"48 bitů (6 bytů) a je jedinečná", "Jen 16 bitů", "Jen 32 bitů IP",
"Jen 8 bitů SAP"}, 4, 0},
{"První 3 byty MAC adresy přiděluje:",
{"IEEE výrobci", "Jen uživatel v BIOS", "Jen DNS server",
"Jen Aloha"}, 4, 0},
{"Ethernet II v hlavičce používá:",
{"EtherType (např. IP = 0800h, hodnota > 1500)",
"Jen délku ≤ 1500 bez typu", "Jen FFFFh bez adres",
"Jen AAAAh bez MAC"}, 4, 0},
{"IEEE 802.3 místo EtherType má:",
{"Údaj o délce (≤ 1500) a uvnitř 802.2", "Jen cut-through",
"Jen 64 B MTU bez délky", "Jen laserovou hlavičku"}, 4, 0},
{"Raw 802.3 (Novell):",
{"Bez 802.2, jen IPX, začíná FFFFh", "Funguje jen s HTTP",
"Má vždy EtherType 0800h", "Nemá žádné adresy"}, 4, 0},
{"Maximální rámec Ethernet II je:",
{"1518 B (1500 + 18)", "64 B", "900 µm", "250 µm"}, 4, 0},
{"Minimální velikost rámce plyne z:",
{"Kolizního okénka (64 B)", "Jen z MTU routeru", "Jen z SNAP AAAAh",
"Jen z Token Ring"}, 4, 0},
};
const char *net21_hints[] = {
"MAC adresa Ethernetu má 48 bitů a je unikátní",
"IEEE přidělí výrobci první 3 byty adresy",
"Ethernet II: EtherType > 1500 (IP = 0800h)",
"IEEE 802.3: délka ≤ 1500 a rámec 802.2",
"Raw 802.3: Novell/IPX, začíná FFFFh",
"Max. Ethernet II = 1518 B",
"Min. rámec 64 B kvůli koliznímu okénku",
};
GtkWidget *build_net_unit21_exercise_page(void) {
return build_net_mcq_page(20, "netunit21", "net_ex21_title", "net_quiz21_head",
net21_qs, net21_hints,
(int)G_N_ELEMENTS(net21_qs));
}