Jesteś tutaj

Linux. Mechanizmy sieciowe

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)
 

openSuSE Linux

openSuSE jest dystrybucją Linuksa sponsorowaną przez firmę Novell. Jest to Linux doskonale sprawdzający się jako system serwerowy, choć głównym zamierzeniem jego twórców było stworzenie Linuksa typu desktop. OpenSuSE Linux jest doskonałą alternatywą dla systemów Microsoft. Zawiera dopracowane graficzne narzędzia konfiguracyjne YaST i SaX2. Doskonale nadaje się dla początkujących użytkowników Linuksa.

Mandriva Linux

Mandriva Linux jest jedną z najpopularniejszych dystrybucji ogólnego użytku ostatnich lat. Dzięki swojej innowacyjności zdobyla uznanie zarówno początkujących jak i zaawansowanych użytkowników Linuksa. W kolejnych, wydawanych cyklicznie w odstępach półrocznych wersjach Mandriva Linux jest liderem we wprowadzaniu nowych narzędzi i funkcjonalności, niedostępnych jeszcze w innych dystrybucjach Linuksa.

Slackware Linux

Slackware Linux jest jedną z najstarszych dystrybucji Linuksa, rozwijaną aktywnie aż do chwili obecnej. Pierwsza wersja Slackware Linux została wydana w lipcu 1993 roku jako dystrybucja dla zaawansowanych użytkowników. Do chwili obecnej, jako jedna z niewielu dystrybucji, Slackware Linux wykorzystuje podczas instalacji tekstową wersję instalatora, przez co uznawana jest niesłusznie za trudniejszą w instalacji niż inne popularne dystrybucje.

Copyright 2003-2011 PHU Altkomp

stat4u