home *** CD-ROM | disk | FTP | other *** search
- W. Richard Stevens, Gary R. Wright
-
- t│um. Piotr Czarnocki, Marcin Palacz
-
- Biblia TCP/IP, tom 2
-
-
- Ksi╣┐ka ta przeznaczona jest dla
- wszystkich, kt≤rzy chc╣ zrozumieµ, w jaki
- spos≤b zaimplementowane zosta│y protoko│y
- TCP/IP: programist≤w pisz╣cych aplikacje
- sieciowe, administrator≤w odpowiedzialnych
- za funkcjonowanie system≤w komputerowych i
- sieci u┐ywaj╣cych TCP/IP, jak r≤wnie┐ dla
- wszystkich innych programist≤w, chc╣cych
- dowiedzieµ siΩ, w jaki spos≤b du┐y i
- nietrywialny kod zosta│ umieszczony w
- rzeczywistym systemie operacyjnym.
- W ksi╣┐ce przedstawiony i om≤wiony zosta│
- kod ƒr≤d│owy powszechnie spotykanej, i
- czΩsto traktowanej jako referencyjna,
- implementacji TCP/IP. Jest to
- implementacja pochodz╣ca z Computer
- Systems Research Group (CSRG) w
- Uniwersytecie Kalifornijskim w Berkeley.
-
- Spis tre£ci
-
- Przedmowa
- Rozdzia│ 1 WstΩp
- 1.1 WstΩp
- 1.2 Prezentacja kodu ƒr≤d│owego
- 1.3 Historia
- 1.4 Interfejsy programowe aplikacji
- 1.5 Przyk│adowy program
- 1.6 Wywo│ania systemowe i funkcje
- biblioteczne
- 1.7 Om≤wienie implementacji obs│ugi sieci
- 1.8 Deskryptory
- 1.9 Bufory pamiΩci (mbuf) i przetwarzanie
- na wyj£ciu
- 1.10 Przetwarzanie danych wej£ciowych
- 1.11 Implementacja sieciowa - raz jeszcze
- 1.12 Poziomy przerwa± i wsp≤│bie┐no£µ
- 1.13 Organizacja kodu ƒr≤d│owego
- 1.14 Testowa sieµ
- 1.14 Podsumowanie
- Rozdzia│ 2 Mbuf: bufory pamiΩci
- 2.1 WstΩp
- 2.2 Wprowadzenie do kodu ƒr≤d│owego
- 2.3 Definicje mbuf
- 2.4 Struktura mbuf
- 2.5 Proste makroinstrukcje i funkcje
- operuj╣ce na buforach mbuf
- 2.6 Funkcje m\_devget i m\_pullup
- 2.7 Podsumowanie makroinstrukcji i funkcji
- mbuf
- 2.8 Podsumowanie struktur danych kodu
- sieciowego Net/3
- 2.9 m_copy i liczniki odwo│a± do klastra
- 2.10 Alternatywy
- 2.11 Podsumowanie
- Rozdzia│ 3 Warstwa interfejsu
- 3.1 WstΩp
- 3.2 Wprowadzenie do kodu ƒr≤d│owego
- 3.3 Struktura ifnet
- 3.4 Struktura ifaddr
- 3.5 Struktura sockaddr
- 3.6 Specjalizacja ifnet i ifaddr
- 3.7 Przegl╣d inicjacji sieci
- 3.8 Inicjacja Ethernetu
- 3.9 Inicjacja SLIP
- 3.10 Inicjacja pΩtli zwrotnej
- 3.11 Funkcja if_attach
- 3.12 Funkcja ifinit
- 3.13 Podsumowanie
- Rozdzia│ 4 Interfejsy: Ethernet
- 4.1 WstΩp
- 4.2 Wprowadzenie do kodu ƒr≤d│owego
- 4.3 Interfejs Ethernet
- 4.4 Wywo│anie systemowe ioctl
- 4.5 Podsumowanie
- Rozdzia│ 5 Interfejsy: SLIP i pΩtla
- zwrotna
- 5.1 WstΩp
- 5.2 Wprowadzenie do kodu ƒr≤d│owego
- 5.3 Interfejs SLIP
- 5.4 Interfejs pΩtli zwrotnej
- 5.5 Podsumowanie
- Rozdzia│ 6 Adresowanie IP
- 6.1 WstΩp
- 6.2 Wprowadzenie do kodu ƒr≤d│owego
- 6.3 Przegl╣d struktur interfejs≤w i
- adresowych
- 6.4 Struktura sockaddr_in
- 6.5 Struktura in_ifaddr
- 6.6 Przypisanie adresu
- 6.7 Przetwarzanie ioctl w interfejsie
- 6.8 Internetowe funkcje narzΩdziowe
- 6.9 Funkcje narzΩdziowe ifnet
- 6.10 Podsumowanie
- Rozdzia│ 7 Domeny i protoko│y
- 7.1 WstΩp
- 7.2 Wprowadzenie do kodu ƒr≤d│owego
- 7.3 Struktura domain
- 7.4 Struktura protosw
- 7.5 Struktury IP: domain i protosw
- 7.6 Funkcje pffindproto i pffindtype
- 7.7 Funkcja pfctlinput
- 7.8 Inicjacja IP
- 7.9 Wywo│anie systemowe sysctl
- 7.10 Podsumowanie
- Rozdzia│ 8 IP - protok≤│ Internetu
- 8.1 WstΩp
- 8.2 Wprowadzenie do kodu ƒr≤d│owego
- 8.3 Pakiety IP
- 8.4 Przetwarzanie na wej£ciu - funkcja
- ipintr
- 8.5 Przekazywanie - funkcja ip_forward
- 8.6 Przetwarzanie wyj£ciowe - funkcja
- ip_output
- 8.7 Suma kontrolna - funkcja in_cksum
- 8.8 Wywo│ania systemowe setsockopt i
- getsockopt
- 8.9 Funkcja ip_sysctl
- 8.10 Podsumowanie
- Rozdzia│ 9 Przetwarzanie opcji IP
- 9.1 WstΩp
- 9.2 Wprowadzenie do kodu ƒr≤d│owego
- 9.3 Format opcji
- 9.4 Funkcja ip_dooptions
- 9.5 Opcja rejestracji trasy
- 9.6 Opcja trasy nadawcy i rejestracji
- trasy
- 9.7 Opcja znacznika czasu
- 9.8 Funkcja ip_insertoptions
- 9.9 Funkcja ip_pcbopts
- 9.10 Ograniczenia
- 9.11 Podsumowanie
- Rozdzia│ 10 Fragmentacja i odtwarzanie
- datagram≤w IP
- 10.1 WstΩp
- 10.2 Wprowadzenie do kodu ƒr≤d│owego
- 10.3 Fragmentacja
- 10.4 Funkcja ip_optcopy
- 10.5 Odtwarzanie datagram≤w
- 10.6 Funkcja ip_reass
- 10.7 Funkcja ip_slowtimo
- 10.8 Podsumowanie
- Rozdzia│ 11 ICMP - internetowy protok≤│
- komunikat≤w kontrolnych
- 11.1 WstΩp
- 11.2 Wprowadzenie do kodu ƒr≤d│owego
- 11.3 Struktura icmp
- 11.4 Struktura protosw protoko│u ICMP
- 11.5 Przetwarzanie wej£ciowe - funkcja
- icmp_input
- 11.6 Przetwarzanie komunikat≤w o b│Ωdach
- 11.7 Przetwarzanie ┐╣da±
- 11.8 Przetwarzanie komunikat≤w o
- przekierowaniu
- 11.9 Przetwarzanie odpowiedzi
- 11.10 Przetwarzanie wyj£ciowe
- 11.11 Funkcja icmp_error
- 11.12 Funkcja icmp_reflect
- 11.13 Funkcja icmp_send
- 11.14 Funkcja icmp_sysctl
- 11.15 Podsumowanie
- Rozdzia│ 12 Przesy│anie w trybie multicast
- IP
- 12.1 WstΩp
- 12.2 Wprowadzenie do kodu ƒr≤d│owego
- 12.3 Ethernetowe adresy multicast
- 12.4 Struktura ether_multi
- 12.5 Ethernetowe odbieranie w trybie
- multicast
- 12.6 Struktura in_multi
- 12.7 Struktura ip_moptions
- 12.8 Opcje gniazd zwi╣zane z przesy│aniem
- w trybie multicast
- 12.9 Warto£ci TTL przy przesy│aniu w
- trybie multicast
- 12.10 Funkcja ip_setmoptions
- 12.11 Do│╣czanie do grupy multicast IP
- 12.12 Rezygnacja z przynale┐no£ci do grupy
- multicastowej IP
- 12.13 Funkcja ip_getmoptions
- 12.14 Przetwarzanie wej£ciowe przy
- przesy│aniu multicast - funkcja ipintr
- 12.15 Przetwarzanie wyj£ciowe przy
- przesy│aniu multicast - funkcja ip_output
- 12.16 Rozwa┐ania o szybko£ci dzia│ania
- 12.17 Podsumowanie
- Rozdzia│ 13 IGMP - internetowy protok≤│
- zarz╣dzania grupami
- 13.1 WstΩp
- 13.2 Wprowadzenie do kodu ƒr≤d│owego
- 13.3 Struktura igmp
- 13.4 Struktura protosw IGMP
- 13.5 Do│╣czanie do grupy - funkcja
- igmp_joingroup
- 13.6 Funkcja igmp_fasttimo
- 13.7 Przetwarzanie wej£ciowe - funkcja
- igmp_input
- 13.8 Opuszczanie grupy - funkcja
- igmp_leavegroup
- 13.9 Podsumowanie
- Rozdzia│ 14 Rutowanie przesy│ania
- grupowego IP
- 14.1 WstΩp
- 14.2 Wprowadzenie do kodu ƒr≤d│owego
- 14.3 Przetwarzanie wyj£ciowe przesy│ania
- multicast - raz jeszcze
- 14.4 Demon mrouted
- 14.5 Interfejsy wirtualne
- 14.6 IGMP raz jeszcze
- 14.7 Routing przesy│ania multicast
- 14.8 Przekazywanie multicast - funkcja
- ip_mforward
- 14.9 Zako±czenie przetwarzania - funkcja
- ip_mrouter_done
- 14.10 Podsumowanie
- Rozdzia│ 15 Warstwa gniazd
- 15.1 WstΩp
- 15.2 Wprowadzenie do kodu ƒr≤d│owego
- 15.3 Struktura socket
- 15.4 Wywo│ania systemowe
- 15.5 Procesy, deskryptory i gniazda
- 15.6 Wywo│anie systemowe socket
- 15.7 Funkcja getsock i sockargs
- 15.8 Wywo│anie systemowe bind
- 15.9 Wywo│anie systemowe listen
- 15.10 Funkcje tsleep i wakeup
- 15.11 Wywo│anie systemowe accept
- 15.12 Funkcje sonewconn i soisconnected
- 15.13 Wywo│anie systemowe connect
- 15.14 Wywo│anie systemowe shutdown
- 15.15 Wywo│anie systemowe close
- 15.16 Podsumowanie
- Rozdzia│ 16 Operacje wej£cia/wyj£cia
- gniazda
- 16.1 Wprowadzenie
- 16.2 Wprowadzenie do kodu ƒr≤d│owego
- 16.3 Bufory gniazd
- 16.4 Wywo│ania systemowe write, writev,
- sendto i sendmsg
- 16.5 Odwo│anie systemowe sendmsg
- 16.6 Funkcja sendit
- 16.7 Funkcja sosend
- 16.8 Wywo│ania systemowe read, readv,
- recvfrom oraz recvmsg
- 16.9 Wywo│anie systemowe recvmsg
- 16.10 Funkcja recvit
- 16.11 Funkcja soreceive
- 16.12 Kod soreceive
- 16.13 Wywo│anie systemowe select
- 16.14 Podsumowanie
- Rozdzia│ 17 Opcje gniazda
- 17.1 Wprowadzenie
- 17.2 Wprowadzenie do kodu ƒr≤d│owego
- 17.3 Funkcja systemowa setsockopt
- 17.4 Wywo│anie systemowe getsockopt
- 17.5 Wywo│ania systemowe fcntl oraz ioctl
- 17.6 Wywo│anie systemowe getsockname
- 17.7 Wywo│anie systemowe getpeername
- 17.8 Podsumowanie
- Rozdzia│ 18 Drzewo podstawowe tablic
- routingu
- 18.1 Wprowadzenie
- 18.2 Struktura tablic routingu
- 18.3 Gniazda routingu
- 18.4 Wprowadzenie do kodu ƒr≤d│owego
- 18.5 Struktura danych wΩz│a podstawowego
- 18.6 Struktury rutuj╣ce
- 18.7 Inicjacja: funkcje route_init oraz
- rtable_init
- 18.8 Inicjacja: funkcje rn_init i
- rn_inithead
- 18.9 Powielone klucze i listy masek
- 18.10 Funkcja rn_match
- 18.11 Funkcja rn_search
- 18.12 Podsumowanie
- Rozdzia│ 19 »╣dania routingu oraz
- komunikaty routingu
- 19.1 Wprowadzenie
- 19.2 Funkcje rtalloc oraz rtalloc1
- 19.3 Makro RTFREE oraz funkcja rtfree
- 19.4 Funkcja rtrequest
- 19.5 Funkcja rt_setgate
- 19.6 Funkcja rtinit
- 19.7 Funkcja rtredirect
- 19.8 Struktura komunikatu routingu
- 19.9 Funkcja rt_missmsg
- 19.10 Funkcja rt_ifmsg
- 19.11 Funkcja rt_newaddrmsg
- 19.12 Funkcja rt_msg1
- 19.13 Funkcja rt_msg2
- 19.14 Funkcja sysctl_rtable
- 19.15 Funkcja sysctl_dumpentry
- 19.16 Funkcja sysctl_iflist
- 19.17 Podsumowanie
- Rozdzia│ 20 Gniazda rutowania
- 20.1 Wprowadzenie
- 20.2 Struktury routedomain oraz protosw
- 20.3 Bloki kontroli rutowania
- 20.4 Funkcja raw_init
- 20.5 Funkcja route_output
- 20.6 Funkcja rt_xaddrs
- 20.7 Funkcja rt_setmetrics
- 20.8 Funkcja raw_input
- 20.9 Funkcja route_usrreq
- 20.10 Funkcja raw_usrreq
- 20.11 Funkcje raw_attach, raw_detach oraz
- raw_disconnect
- 20.12 Podsumowanie
- Rozdzia│ 21 ARP: Protok≤│ rozr≤┐niania
- adres≤w
- 21.1 Wprowadzenie
- 21.2 ARP i tablica routingu
- 21.3 Wprowadzenie do kodu ƒr≤d│owego
- 21.4 Struktury ARP
- 21.5 Funkcja arpwhohas
- 21.6 Funkcja arprequest
- 21.7 Funkcja arpintr
- 21.8 Funkcja in_arpinput
- 21.9 Funkcje zegara ARP
- 21.10 Funkcja arpresolve
- 21.11 Funkcja arplookup
- 21.12 Proxy ARP
- 21.13 Funkcja arp_rtrequest
- 21.14 ARP i przesy│anie multicast
- 21.15 Podsumowanie
- Rozdzia│ 22 Bloki kontroli protoko│u
- 22.1 Wprowadzenie
- 22.2 Wprowadzenie do kodu ƒr≤d│owego
- 22.3 Struktura inpcb
- 22.4 Funkcje in_pcballoc oraz in_pcbdetach
- 22.5 Wi╣zanie, │╣czenie oraz
- demultipleksacja
- 22.6 Funkcja in_pcblookup
- 22.7 Funkcja in_pcbbind
- 22.8 Funkcja in_pcbconnect
- 22.9 Funkcja in_pcbdisconnect
- 22.10 Funkcje in_setsockaddr oraz
- in_setsockport
- 22.11 Funkcje in_pcbnotify, in_rtchange
- oraz in_losing
- 22.12 U£ci£lenia implementacyjne
- 22.13 Podsumowanie
- Rozdzia│ 23 UDP: Protok≤│ datagram≤w
- u┐ytkownika
- 23.1 Wprowadzenie
- 23.2 Wprowadzenie do kodu ƒr≤d│owego
- 23.3 Struktura UDP protosw
- 23.4 Nag│≤wek UDP
- 23.5 Funkcja udp_init
- 23.6 Funkcja udp_output
- 23.7 Funkcja udp_input
- 23.8 Funkcja udp_saveport
- 23.9 Funkcja udp_ctlinput
- 23.10 Funkcja udp_usrreq
- 23.11 Funkcja udp_sysctl
- 23.12 U£ci£lenia implementacyjne
- 23.13 Podsumowanie
- Rozdzia│ 24 TCP: Protok≤│ steruj╣cy
- transmisj╣
- 24.1 Wprowadzenie
- 24.2 Wprowadzenie do kodu ƒr≤d│owego
- 24.3 Struktura protosw TCP
- 24.4 Nag│≤wek TCP
- 24.6 Diagram przej£µ pomiΩdzy stanami TCP
- 24.7 Numery kolejne TCP
- 24.8 Funkcja tcp_init
- 24.9 Podsumowanie
- Rozdzia│ 25 Zegary TCP
- 25.1 Wprowadzenie
- 25.2 Wprowadzenie do kodu ƒr≤d│owego
- 25.3 Funkcja tcp_canceltimers
- 25.4 Funkcja tcp_fasttimo
- 25.5 Funkcja tcp_slowtimo
- 25.6 Funkcja tcp_timers
- 25.7 Wyznaczanie warto£ci zegara
- retransmisji
- 25.8 Funkcja tcp_newtcpcb
- 25.9 Funkcja tcp_setpersist
- 25.10 Funkcja tcp_xnit_timer
- 25.11 Czas oczekiwania na retransmisjΩ:
- funkcja tcp_timers
- 25.12 Przyk│ad RTT
- 25.13 Podsumowanie
- Rozdzia│ 26 Wyj£cie TCP
- 26.1 Wprowadzenie
- 26.2 Przegl╣da tcp_output
- 26.3 Okre£lenie, czy segment powinien
- zostaµ wys│any
- 26.4 Opcje TCP
- 26.5 Opcja skali okna
- 26.6 Opcja znacznika czasu
- 26.7 Wys│anie segmentu
- 26.8 Funkcja tcp_template
- 26.9 Funkcja tcp_respond
- 26.10 Podsumowanie
- Rozdzia│ 27 Funkcje TCP
- 27.1 Wprowadzenie
- 27.2 Funkcja tcp_drain
- 27.3 Funkcja tcp_drop
- 27.4 Funkcja tcp_close
- 27.5 Funkcja tcp_mss
- 27.6 Funkcja tcp_ctlinput
- 27.7 Funkcja tcp_notify
- 27.8 Funkcja tcp_quench
- 27.9 Makro TCP_REASS oraz funkcja
- tcp_reass
- 27.10 Funkcja tcp_trace
- 27.11 Podsumowanie
- Rozdzia│ 28 Wej£cie TCP
- 28.1 Wprowadzenie
- 28.2 Przetwarzanie wstΩpne
- 28.3 Funkcja tcp_dooptions
- 28.4 Przewidywanie nag│≤wka
- 28.5 Przetwarzanie danych wej£ciowych TCP:
- d│uga £cie┐ka
- 28.6 Zako±czenie operacji aktywnego i
- pasywnego otwarcia po│╣czenia
- 28.7 PAWS - zabezpieczenie przed
- zawiniΩtymi numerami kolejnymi
- 28.8 Obcinanie segment≤w, aby dane
- zmie£ci│y siΩ w oknie
- 28.9 Po│╣czenia z samym sob╣ i otwarcia
- jednoczesne
- 28.10 ZapamiΩtywanie znacznika czasu
- 28.11 Przetwarzanie RST
- 28.12 Podsumowanie
- Rozdzia│ 29 Wej£cie TCP (ci╣g dalszy)
- 29.1 WstΩp
- 29.2 Przegl╣d przetwarzania ACK
- 29.3 Doko±czenie operacji pasywnego
- otwarcia i jednoczesnego otwarcia
- 29.4 Algorytmy szybkiej retransmisji i
- odzyskiwania danych
- 29.5 Przetwarzanie ACK
- 29.6 Od£wie┐enie informacji dotycz╣cych
- okna
- 29.7 Przetwarzanie w trybie pilnym
- 29.8 Funkcja tcp_pulloutofband
- 29.9 Przetwarzanie odebranych danych
- 29.10 Przetwarzanie FIN
- 29.11 Przetwarzanie ko±cowe
- 29.12 U£ci£lenia implementacyjne
- 29.13 Kompresja nag│≤wka
- 29.14 Podsumowanie
- Rozdzia│ 30 TCP - ┐╣dania u┐ytkownika
- 30.1 Wprowadzenie
- 30.2 Funkcja tcp_usrreq
- 30.3 Funkcja tcp_attach
- 30.4 Funkcja tcp_disconnect
- 30.5 Funkcja tcp_usrclosed
- 30.6 Funkcja tcp_ctloutput
- 30.7 Podsumowanie
- Rozdzia│ 31 BPF: Filtr pakiet≤w BSD
- 31.1 Wprowadzenie
- 31.2 Wprowadzenie do kodu ƒr≤d│owego
- 31.3 Struktura bpf_if
- 31.5 Wej£cie BPF
- 31.6 Wyj£cie BPF
- 31.7 Podsumowanie
- Rozdzia│ 32 IP dla danych
- nieprzetworzonych
- 32.1 Wprowadzenie
- 32.2 Wprowadzenie do kodu ƒr≤d│owego
- 32.3 Struktura protosw IP dla danych
- nieprzetworzonych
- 32.4 Funkcja rip_init
- 32.5 Funkcja rip_input
- 32.6 Funkcja rip_output
- 32.7 Funkcja rip_usrreq
- 32.8 Funkcja rip_ctloutput
- 32.9 Podsumowanie
- Epilog
- Dodatek A Rozwi╣zania do wybranych µwicze±
- Dodatek B DostΩp do kodu ƒr≤d│owego
- Dodatek C Zgodno£µ z RFC 1122
- C.1 Wymagania dla warstwy │╣cza
- C.2 Wymagania IP
- C.3 Wymagania dla opcji IP
- C.4 Fragmentacja i wymagania dotycz╣ce
- odtwarzania
- C.5 Wymagania dotycz╣ce ICMP
- C.6 Wymagania dotycz╣ce przesy│ania
- multicast
- C.7 Wymagania dotycz╣ce IGMP
- C.8 Wymagania dotycz╣ce rutowania
- C.9 Wymagania dotycz╣ce ARP
- C.10 Wymagania dotycz╣ce UDP
- C.11 Wymagania dotycz╣ce TCP
- Bibliografia
- Indeks
-
-
- ------------------
- ISBN 83-87216-25-9
- Wydawnictwo RM, kwiecie± 98
- str. 1236, format 172x242,
- oprawa twarda lakierowana
-
- WiΩcej informacji:
- http://www.rm.com.pl/tcpip2.htm