Kompletny przewodnik po mechanizmach sieciowych Linuksa
-
Inicjalizacja urządzeń sieciowych.
-
Interfejsy pomiędzy urządzeniami i protokołami.
-
Rozwiązania specyficzne dla protokołów.
Sieci, a szczególnie internet, to jeden z filarów współczesnej informatyki. Niemal każdy elektroniczny gadżet może pracować w sieci za pośrednictwem różnych metod komunikacji. Ogromna ilość produkowanych dziś urządzeń sieciowych opiera się na różnych dystrybucjach systemu operacyjnego Linux. Ten dostępny nieodpłatnie system operacyjny od początku tworzony był z uwzględnieniem roli, jaką mógłby odgrywać w świecie sieci komputerowych, więc zaimplementowano w nim niemal wszystkie możliwe mechanizmy sieciowe. Dodatkowo filozofia, jaką przyjęto przy rozwoju tego systemu operacyjnego, pozwala wszystkim jego użytkownikom na dodawanie do jądra Linuksa własnych modułów zapewniających obsługę niestandardowych urządzeń i protokołów.
Książka "Linux. Mechanizmy sieciowe" to szczegółowe omówienie rozwiązań sieciowych, jakie zostały zastosowane w tym systemie operacyjnym. Opisuje sposoby, w jakie jądro Linuksa realizuje zadania przydzielane mu przez protokoły IP. Czytając ją, można poznać współczesną łączność sieciową na wziętych z życia przykładach. Pozycja ta jest doskonałym przewodnikiem po kodzie źródłowym funkcji sieciowych jądra systemu Linux. Przedstawia kod w języku C z obszernymi komentarzami i wyjaśnieniami zastosowanych mechanizmów.
-
Struktury danych
-
Rejestracja i inicjalizowanie urządzeń sieciowych
-
Powiadamianie jądra o odbiorze ramki
-
Obsługa protokołów
-
Implementacja mostkowania
-
Obsługa IPv4
-
Podsystem sąsiedztwa
-
Routing
SPIS TREŚCI:
Wstęp (13)
Część I Podstawy (21)
1. Wprowadzenie (23)
-
Podstawowa terminologia (23)
-
Typowe wzorce kodowania (24)
-
Narzędzia dostępne w przestrzeni użytkownika (36)
-
Przeglądanie kodu źródłowego (37)
-
Opcje oferowane w postaci łat (38)
2. Najważniejsze struktury danych (41)
-
Bufor gniazda: struktura sk_buff (41)
-
Struktura net_device (60)
-
Pliki występujące w tym rozdziale (73)
3. Interfejs użytkownik - jądro (75)
-
Informacje ogólne (75)
-
procfs kontra sysctl (77)
-
Interfejs ioctl (84)
-
Netlink (86)
-
Serializacja zmian konfiguracji (87)
Część II Inicjalizacja systemu (89)
4. Łańcuchy powiadomień (91)
-
Przyczyny wprowadzenia łańcuchów powiadomień (91)
-
Informacje ogólne (93)
-
Definiowanie łańcucha (93)
-
Rejestracja w łańcuchu (94)
-
Powiadamianie o zdarzeniach (95)
-
Łańcuchy powiadomień w podsystemach sieciowych (96)
-
Strojenie za pośrednictwem systemu plików /proc (97)
-
Funkcje i zmienne występujące w tym rozdziale (97)
-
Pliki i katalogi występujące w tym rozdziale (98)
5. Inicjalizacja urządzeń sieciowych (99)
-
Ogólne informacje na temat inicjalizacji systemu (99)
-
Rejestracja i inicjalizacjaa urządzeń (101)
-
Podstawowe cele inicjalizacji kart sieciowych (101)
-
Interakcje pomiędzy urządzeniami i jądrem (102)
-
Opcje inicjalizacji (107)
-
Opcje modułów (108)
-
Inicjalizacja warstwy obsługi urządzeń: net_dev_init (109)
-
Kod pomocniczy w przestrzeni użytkownika (111)
-
Urządzenia wirtualne (114)
-
Strojenie za pośrednictwem systemu plików /proc (117)
-
Funkcje i zmienne występujące w tym rozdziale (118)
-
Pliki i katalogi występujące w tym rozdziale (118)
6. Warstwa PCI i karty sieciowe (119)
-
Struktury danych występujące w tym rozdziale (119)
-
Rejestracja sterownika karty sieciowej PCI (121)
-
Zarządzanie zasilaniem i Wake-on-LAN (122)
-
Przykład rejestracji sterownika karty sieciowej PCI (123)
-
Ogólny schemat (125)
-
Strojenie za pośrednictwem systemu plików /proc (125)
-
Funkcje i zmienne występujące w tym rozdziale (127)
-
Pliki i katalogi występujące w tym rozdziale (127)
7. Infrastruktura jądra związana z inicjacją komponentów (129)
-
Opcje uruchamiania jądra (129)
-
Kod inicjacji modułu (135)
-
Optymalizacja etykiet opartych na makrach (138)
-
Procedury inicjacji wykonywane podczas uruchamiania systemu (140)
-
Optymalizacja pamięci (142)
-
Strojenie za pośrednictwem systemu plików /proc (146)
-
Funkcje i zmienne występujące w tym rozdziale (146)
-
Pliki i katalogi występujące w tym rozdziale (147)
8. Rejestracja i inicjacja urządzeń (149)
-
Kiedy urządzenie zostaje zarejestrowane (150)
-
Kiedy urządzenie zostaje wyrejestrowane (151)
-
Przydział struktur net_device (151)
-
Szkielet zarejestrowania i wyrejestrowania karty sieciowej (152)
-
Inicjacja urządzenia (154)
-
Organizacja struktur net_device (158)
-
Stan urządzenia (160)
-
Rejestrowanie i wyrejestrowywanie urządzeń (162)
-
Rejestracja urządzenia (166)
-
Wyrejestrowanie urządzenia (168)
-
Włączanie i wyłączanie urządzenia sieciowego (172)
-
Aktualizacja stanu reguły kolejkowania (173)
-
Konfigurowanie urządzeń z przestrzeni użytkownika (177)
-
Urządzenia wirtualne (180)
-
Blokowanie (182)
-
Strojenie za pośrednictwem systemu plików /proc (183)
-
Funkcje i zmienne występujące w tym rozdziale (183)
-
Pliki i katalogi występujące w tym rozdziale (184)
Część III Wysyłanie i odbieranie (185)
9. Przerwania i sterowniki sieciowe (187)
-
Decyzje i kierunki ruchu (187)
-
Powiadamianie sterownika o odebraniu ramki (189)
-
Procedury obsługi przerwań (192)
-
Struktura danych softnet_data (213)
10. Odbiór ramki (217)
-
Interakcje z innymi opcjami (218)
-
Włączanie i wyłączanie urządzenia (218)
-
Kolejki (219)
-
Powiadamianie jądra o odbiorze ramki: NAPI i netif_rx (219)
-
Stary interfejs pomiędzy sterownikami urządzeń i jądrem: pierwsza część netif_rx (225)
-
Zarządzanie obciążeniem (231)
-
Obsługa przerwania NET_RX_SOFTIRQ: net_rx_action (234)
11. Wysyłanie ramki (245)
-
Włączanie i wyłączanie wysyłania (247)
12. Informacje o przerwaniach (265)
-
Dane statystyczne (265)
-
Strojenie za pośrednictwem systemów plików /proc i sysfs (266)
-
Funkcje i zmienne występujące w tej części książki (267)
-
Pliki i katalogi występujące w tej części książki (268)
13. Procedury obsługi protokołów (271)
-
Przegląd stosu protokołowego (271)
-
Wykonanie odpowiedniej procedury obsługi protokołu (279)
-
Organizacja procedur obsługi protokołów (283)
-
Rejestracja procedury obsługi protokołu (284)
-
Ethernet i ramki IEEE 802.3 (286)
-
Strojenie za pośrednictwem systemu plików /proc (296)
-
Funkcje i zmienne występujące w tym rozdziale (297)
-
Pliki i katalogi występujące w tym rozdziale (297)
Część IV Mostkowanie (299)
14. Mostkowanie: podstawowe koncepcje (301)
-
Wtórniki, mosty i routery (301)
-
Mosty i przełączniki (303)
-
Hosty (304)
-
Łączenie sieci lokalnych za pomocą mostów (304)
-
Mostkowanie różnych technologii sieci lokalnych (305)
-
Uczenie się adresów (306)
-
Sieci z wieloma mostami (308)
15. Mostkowanie: protokół drzewa częściowego (315)
-
Podstawowa terminologia (316)
-
Przykład hierarchicznej topologii L2 zawierającej mosty (316)
-
Podstawowe elementy protokołu Spanning Tree Protocol (320)
-
Identyfikatory portów i mostów (325)
-
Ramki BPDU (327)
-
Definiowanie aktywnej topologii (332)
-
Liczniki czasu (339)
-
Zmiany topologii (344)
-
Kapsułkowanie ramek BPDU (348)
-
Wysyłanie konfiguracyjnych ramek BPDU (348)
-
Przetwarzanie ramek wejściowych (351)
-
Czas konwergencji (353)
-
Przegląd nowych wersji protokołu STP (354)
16. Mostkowanie: implementacja w Linuksie (359)
-
Abstrakcja urządzenia mostkującego (359)
-
Ważne struktury danych (362)
-
Inicjalizacja kodu mostkowania (364)
-
Tworzenie urządzeń i portów mostkujących (365)
-
Tworzenie nowego urządzenia mostkującego (365)
-
Procedura inicjalizacyjna urządzenia mostkującego (366)
-
Usuwanie mostu (367)
-
Dodawanie portów do mostu (367)
-
Usuwanie portu mostu (370)
-
Włączanie i wyłączanie urządzenia mostkującego (370)
-
Włączanie i wyłączanie portu mostu (371)
-
Zmiana stanu portu (373)
-
Panorama (373)
-
Baza przekazywania (375)
-
Obsługa ruchu wejściowego (378)
-
Wysyłanie danych z urządzenia mostkującego (382)
-
Spanning Tree Protocol (STP) (383)
-
Łańcuch powiadomień netdevice (390)
17. Mostkowanie: zagadnienia różne (393)
-
Narzędzia konfiguracyjne działające w przestrzeni użytkownika (393)
-
Dostrajanie za pomocą systemu plików /proc (398)
-
Dostrajanie za pomocą systemu plików /sys (398)
-
Statystyka (399)
-
Struktury danych przedstawione w tej części książki (400)
-
Funkcje i zmienne przedstawione w tej części książki (404)
-
Pliki i katalogi przedstawione w tej części książki (405)
Część V Internet Protocol Version 4 (IPv4) (407)
18. Internet Protocol Version 4 (IPv4): pojęcia (409)
-
Protokół IP: panorama (409)
-
Nagłówek IP (411)
-
Opcje IP (414)
-
Fragmentacja i defragmentacja pakietów (420)
-
Sumy kontrolne (430)
19. Internet Protocol Version 4 (IPv4): funkcje i cechy jądra Linuksa (437)
-
Główne struktury danych IPv4 (437)
-
Ogólna obsługa pakietów (441)
-
Opcje IP (450)
20. Internet Protocol Version 4 (IPv4): przekazywanie i lokalne dostarczanie (461)
-
Przekazywanie (461)
-
Dostarczanie lokalne (466)
21. Internet Protocol Version 4 (IPv4): transmisja (469)
-
Kluczowe funkcje transmisyjne (470)
-
Interfejs do podsystemu sąsiedztwa (504)
22. Internet Protocol Version 4 (IPv4): obsługa fragmentacji (505)
-
Fragmentacja IP (506)
-
Defragmentacja IP (514)
23. Internet Protocol Version 4 (IPv4): zagadnienia różne (527)
-
Długo przechowywane informacje o partnerze IP (527)
-
Wybór wartości identyfikatora w nagłówku IP (531)
-
Statystyka IP (532)
-
Konfiguracja IP (535)
-
IP-over-IP (540)
-
Protokół IPv4: co z nim jest nie tak? (541)
-
Dostrajanie za pomocą systemu plików /proc (542)
-
Struktury danych opisywane w tej części książki (545)
-
Funkcje i zmienne wspomniane w tej części książki (554)
-
Pliki i katalogi wspomniane w tej części książki (556)
24. Protokół warstwy czwartej i obsługa Raw IP (557)
-
Dostępne protokoły L4 (557)
-
Rejestracja protokołu L4 (558)
-
Dostarczanie danych L3 do L4: ip_local_deliver_finish (562)
-
IPv4 a IPv6 (569)
-
Dostrajanie za pomocą systemu plików /proc (569)
-
Funkcje i zmienne przedstawione w tym rozdziale (570)
-
Pliki i katalogi przedstawione w tym rozdziale (570)
25. Internet Control Message Protocol (ICMPv4) (571)
-
Nagłówek ICMP (572)
-
Treść ICMP (573)
-
Typy komunikatów ICMP (574)
-
Zastosowania protokołu ICMP (580)
-
Panorama (583)
-
Inicjalizacja protokołu (584)
-
Struktury danych opisywane w tym rozdziale (585)
-
Wysyłanie komunikatów ICMP (587)
-
Odbieranie komunikatów ICMP (594)
-
Statystyka ICMP (601)
-
Przekazywanie powiadomień o błędach do warstwy transportu (603)
-
Dostrajanie za pomocą systemu plików /proc (604)
-
Funkcje i zmienne przedstawione w tym rozdziale (605)
-
Pliki i katalogi przedstawione w tym rozdziale (605)
Część VI Podsystem sąsiedztwa (607)
26. Podsystem sąsiedztwa: pojęcia (609)
-
Co to jest sąsiad? (609)
-
Do czego potrzebne są protokoły sąsiedztwa? (612)
-
Implementacja w Linuksie (617)
-
Pośredniczenie w protokole sąsiedztwa (619)
-
Wysyłanie i przetwarzanie żądań odwzorowania adresu (622)
-
Stany sąsiadów i wykrywanie nieosiągalności sieci (625)
27. Podsystem sąsiedztwa: infrastruktura (633)
-
Główne struktury danych (633)
-
Wspólny interfejs między protokołami L3 a protokołami sąsiedztwa (636)
-
Ogólne zadania infrastruktury sąsiedztwa (646)
-
Liczniki referencji do struktur neighbour (650)
-
Tworzenie wpisu sąsiada (651)
-
Usuwanie sąsiada (653)
-
Działanie w charakterze pośrednika (658)
-
Buforowanie nagłówków L2 (662)
-
Inicjalizacja i finalizacja protokołu (666)
-
Interakcja z innymi podsystemami (667)
-
Interakcja między protokołami sąsiedztwa a funkcjami transmisyjnymi L3 (670)
-
Kolejkowanie (671)
28. Podsystem sąsiedztwa: Address Resolution Protocol (ARP) (677)
-
Format pakietu ARP (678)
-
Przykład transakcji ARP (680)
-
Spontaniczny ARP (681)
-
Odpowiedzi z wielu interfejsów (683)
-
Konfigurowalne opcje ARP (685)
-
Inicjalizacja protokołu ARP (691)
-
Inicjalizacja struktury neighbour (693)
-
Wysyłanie i odbieranie pakietów ARP (698)
-
Przetwarzanie wejściowych pakietów ARP (703)
-
Pośredniczenie ARP (710)
-
Przykłady (715)
-
Zdarzenia zewnętrzne (717)
-
ARPD (719)
-
Reverse Address Resolution Protocol (RARP) (722)
-
Ulepszenia w ND (IPv6) w stosunku do ARP (IPv4) (722)
29. Podsystem sąsiedztwa: zagadnienia różne (723)
-
Zarządzanie sąsiadami przez administratora systemu (723)
-
Dostrajanie za pomocą systemu plików /proc (726)
-
Struktury danych przedstawione w tej części książki (731)
-
Funkcje i zmienne przedstawione w tej części książki (744)
-
Pliki i katalogi przedstawione w tej części książki (745)
Część VII Routing (747)
30. Routing: pojęcia (749)
-
Routery, trasy i tablice tras (750)
-
Podstawowe elementy routingu (754)
-
Tablica tras (764)
-
Wyszukiwania (768)
-
Odbieranie pakietów a wysyłanie pakietów (770)
31. Routing: zagadnienia zaawansowane (773)
-
Zasady routingu opartego na polityce (773)
-
Zasady routingu wielościeżkowego (778)
-
Interakcje z innymi podsystemami jądra (784)
-
Demony protokołów routingu (789)
-
Szczegółowe monitorowanie (791)
-
Komunikaty ICMP_REDIRECT (791)
-
Filtrowanie ścieżek odwrotnych (796)
32. Routing: implementacja w Linuksie (799)
-
Opcje jądra (799)
-
Główne struktury danych (802)
-
Zasięgi tras i adresów (806)
-
Podstawowe i wtórne adresy IP (808)
-
Uniwersalne procedury pomocnicze i makra (809)
-
Globalne blokady (811)
-
Inicjalizacja podsystemu routingu (811)
-
Zdarzenia zewnętrzne (813)
-
Interakcje z innymi podsystemami (824)
33. Routing: bufor tras (827)
-
Inicjalizacja bufora tras (827)
-
Organizacja tablicy tras (828)
-
Podstawowe operacje na buforze (829)
-
Buforowanie wielościeżkowe (838)
-
Interfejs między DST a wywołującymi protokołami (843)
-
Opróżnianie bufora tras (849)
-
Odśmiecanie (850)
-
Ograniczanie częstotliwości wyjściowych komunikatów ICMP (860)
34. Routing: tablice tras (861)
-
Organizacja tablic mieszających w podsystemie routingu (861)
-
Inicjalizacja tablicy tras (867)
-
Dodawanie i usuwanie tras (868)
-
Routing oparty na polityce i jego wpływ na definicje tablic tras (873)
35. Routing: wyszukiwania (875)
-
Panorama funkcji wyszukiwawczych (875)
-
Procedury pomocnicze (876)
-
Przeszukiwanie tablicy: fn_hash_lookup (877)
-
Funkcja fib_lookup (882)
-
Ustawianie funkcji odbiorczych i transmisyjnych (882)
-
Ogólna struktura procedur routingu wejściowego i wyjściowego (885)
-
Routing wejściowy (887)
-
Routing wyjściowy (895)
-
Wpływ routingu wielościeżkowego na wybór następnego przeskoku (902)
-
Routing oparty na polityce (905)
-
Routing źródłowy (908)
-
Routing oparty na polityce i klasyfikator oparty na tablicy tras (909)
36. Routing: zagadnienia różne (913)
-
Narzędzia konfiguracyjne działające w przestrzeni użytkownika (913)
-
Statystyka (919)
-
Dostrajanie za pomocą systemu plików /proc (919)
-
Włączanie i wyłączanie przekazywania (926)
-
Struktury danych przedstawione w tej części książki (928)
-
Funkcje i zmienne przedstawione w tej części książki (944)
-
Pliki i katalogi przedstawione w tej części książki (946)
Skorowidz (949)