.\" -*- coding: UTF-8 -*-
'\" t
.\" SPDX-License-Identifier: Linux-man-pages-1-para
.\"
.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
.\"
.\" $Id: ip.7,v 1.19 2000/12/20 18:10:31 ak Exp $
.\"
.\" FIXME The following socket options are yet to be documented
.\"
.\" 	IP_XFRM_POLICY (2.5.48)
.\"	    Needs CAP_NET_ADMIN
.\"
.\" 	IP_IPSEC_POLICY (2.5.47)
.\"	    Needs CAP_NET_ADMIN
.\"
.\"	IP_MINTTL (2.6.34)
.\"	    commit d218d11133d888f9745802146a50255a4781d37a
.\"	    Author: Stephen Hemminger <shemminger@vyatta.com>
.\"
.\"	MCAST_JOIN_GROUP (2.4.22 / 2.6)
.\"
.\"	MCAST_BLOCK_SOURCE (2.4.22 / 2.6)
.\"
.\"	MCAST_UNBLOCK_SOURCE (2.4.22 / 2.6)
.\"
.\"	MCAST_LEAVE_GROUP (2.4.22 / 2.6)
.\"
.\"	MCAST_JOIN_SOURCE_GROUP (2.4.22 / 2.6)
.\"
.\"	MCAST_LEAVE_SOURCE_GROUP (2.4.22 / 2.6)
.\"
.\"	MCAST_MSFILTER (2.4.22 / 2.6)
.\"
.\"	IP_UNICAST_IF (3.4)
.\"	    commit 76e21053b5bf33a07c76f99d27a74238310e3c71
.\"	    Author: Erich E. Hoover <ehoover@mines.edu>
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH ip 7 "2 maja 2024 r." "Linux man\-pages 6.9.1" 
.SH NAZWA
ip \- Implementacja protokołu IPv4 dla systemu Linux
.SH SKŁADNIA
.nf
.\" .B #include <net/netinet.h> -- does not exist anymore
.\" .B #include <linux/errqueue.h> -- never include <linux/foo.h>
\fB#include <sys/socket.h>\fP
\fB#include <netinet/in.h>\fP
\fB#include <netinet/ip.h> \fP/* nadzbiór poprzedniego */
.P
\fItcp_socket\fP\fB = socket(AF_INET, SOCK_STREAM, 0);\fP
\fIudp_socket\fP\fB = socket(AF_INET, SOCK_DGRAM, 0);\fP
\fIraw_socket\fP\fB = socket(AF_INET, SOCK_RAW, \fP\fIprotocol\fP\fB);\fP
.fi
.SH OPIS
Linux implementuje protokół IPv4 opisany w RFC\ 791 i RFC\ 1122. \fBip\fP
zawiera drugi poziom implementacji adresowania grupowego (multicasting)
zgodny z RFC\ 1112. Zawiera też router IP, włączając w to filtr pakietów.
.P
Interfejs programistyczny jest zgodny z gniazdami BSD. Więcej informacji na
temat gniazd można znaleźć, przeglądając \fBsocket\fP(7).
.P
Gniazdo IP jest tworzone za pomocą \fBsocket\fP(2):
.P
.in +4n
.EX
socket(AF_INET, typ_gniazda, protokół);
.EE
.in
.P
Prawidłowe typy gniazd obejmują \fBSOCK_STREAM\fP do otwarcia gniazda
strumieniowego, \fBSOCK_DGRAM\fP do otwarcia gniazda datagramowego i
\fBSOCK_RAW\fP do otwarcia gniazda \fBraw\fP(7) w celu bezpośredniego dostępu do
protokołu IP.
.P
\fIprotocol\fP jest protokołem IP w nagłówku IP, który ma być otrzymany lub
wysłany. Prawidłowe wartości \fIprotocol\fP to:
.IP \[bu] 3
0 i \fBIPPROTO_TCP\fP dla gniazd strumieniowych \fBtcp\fP(7);
.IP \[bu]
0 i \fBIPPROTO_UDP\fP dla gniazd datagramowych \fBudp\fP(7);
.IP \[bu]
\fBIPPROTO_SCTP\fP dla gniazd strumieniowych \fBsctp\fP(7); oraz
.IP \[bu]
\fBIPPROTO_UDPLITE\fP dla gniazd datagramowych \fBudplite\fP(7).
.P
W przypadku \fBSOCK_RAW\fP można podać prawidłowe liczby przypisane w RFC\ 1700
protokołowi IP IANA.
.P
Kiedy proces chce odbierać nowe, nadchodzące pakiety lub połączenia,
powinien podłączyć gniazdo do adresu lokalnego interfejsu za pomocą funkcji
\fBbind\fP(2). W takim przypadku do dowolnej lokalnej pary (adres, port) można
podłączyć tylko jedno gniazdo IP. Gdy w wywołaniu \fBbind\fP(2) podana jest
wartość \fBINADDR_ANY\fP, to gniazdo zostanie dowiązane do \fIwszystkich\fP
lokalnych interfejsów sieciowych. Gdy do niedowiązanego gniazda wywoływane
jest \fBlisten\fP(2), to gniazdo zostanie automatycznie dowiązane do losowo
wybranego wolnego portu, przy czym adres lokalny zostanie ustawiony na
\fBINADDR_ANY\fP. Gdy dla niedowiązanego gniazda zostanie wywołane
\fBconnect\fP(2), gniazdo to zostanie automatycznie dowiązane do losowo
wybranego wolnego portu lub do używalnego portu dzielonego, przy czym adres
lokalny zostanie ustawiony na \fBINADDR_ANY\fP.
.P
Przypisywanie (często w literaturze: "nazywanie") lokalnego gniazda TCP jest
niemożliwe przez pewien okres czasu po jego zamknięciu, chyba że zostanie
dla tego gniazda ustawiony atrybut \fBSO_REUSEADDR\fP. Należy używać tego
atrybutu z rozwagą, gdyż czyni on TCP mniej niezawodnym.
.SS "Format adresu"
Adres gniazda IP jest przedstawiony za pomocą kombinacji adresu interfejsu
IP i 16\-bitowego numeru portu. Podstawowy protokół IP nie zawiera numerów
portów, są one zaimplementowane w protokołach wyższej warstwy, takich jak
\fBudp\fP(7) i \fBtcp\fP(7). Dla gniazd surowych \fIsin_port\fP jest ustawione na
protokół IP.
.P
.in +4n
.EX
struct sockaddr_in {
    sa_family_t    sin_family; /* rodzina adresów: AF_INET */
    in_port_t      sin_port;   /* port \- sieciowa kolejność bajtów */
    struct in_addr sin_addr;   /* adres internetowy */
};
\&
/* adres internetowy */
struct in_addr {
    uint32_t       s_addr;     /* adres \- sieciowa kolejność bajtów */
};
.EE
.in
.P
\fIsin_family\fP ma zawsze wartość \fBAF_INET\fP. Jest to wymagane; w Linuksie 2.2
większość funkcji sieciowych zwraca \fBEINVAL\fP, jeśli brakuje tego
ustawienia. \fIsin_port\fP zawiera numer portu podany w sieciowej kolejności
bajtów. Numery portów niższe niż 1024 są nazywane \fIportami uprzywilejowanymi\fP (lub czasem \fIportami zarezerwowanymi\fP). Tylko procesy
uprzywilejowane (na Linuksie: proces z przywilejem \fBCAP_NET_BIND_SERVICE\fP w
przestrzeni nazw użytkownika zarządzającą swoją sieciową przestrzenią nazw)
mogą wywołać \fBbind\fP(2) dla tego rodzaju gniazd. Należy zauważyć, że surowy
protokół IPv4 jako taki nie zawiera pojęcia portu (takie rozróżnienie jest
dopiero w warstwie transportowej, a to jest warstwa sieciowa). Numery portów
występują dopiero w protokołach wyższej warstwy, takich jak \fBtcp\fP(7) i
\fBudp\fP(7).
.P
\fIsin_addr\fP to adres IP komputera (maszyny). Pole \fIs_addr\fP struktury
\fIstruct in_addr\fP zawiera adres interfejsu maszyny w sieciowej kolejności
bajtów. Polu \fIin_addr\fP należy albo przypisać jedną z wartości \fBINADDR_*\fP
(np. \fBINADDR_LOOPBACK\fP) za pomocą \fBhtonl\fP(3), albo użyć funkcji
bibliotecznych \fBinet_aton\fP(3), \fBinet_addr\fP(3), \fBinet_makeaddr\fP(3) do
ustawienia wartości, albo ustawić bezpośrednio przez funkcję obsługi nazw
(patrz też \fBgethostbyname\fP(3)).
.P
.\" Leave a loophole for XTP @)
Adresy IPv4 dzielimy na pojedyncze (unicast), rozgłoszeniowe (broadcast) i
grupowe (multicast). Adresy pojedyncze określają pojedynczy interfejs
maszyny, adresy rozgłoszeniowe określają wszystkie maszyny w obrębie jakiejś
sieci (podsieci), a adresy grupowe wszystkie maszyny w obrębie jakiejś grupy
odbiorców. Datagramy kierowane do adresów rozgłoszeniowych trafiają do
odbiorcy tylko wtedy, gdy jego gniazdo ma ustawiony atrybut rozgłoszenia
\fBSO_BROADCAST\fP. Ten sam atrybut musi być też ustawiony, gdy zachodzi
potrzeba wysłania datagramów rozgłoszenia. W obecnej implementacji gniazda
połączeniowe mogą używać wyłącznie adresów pojedynczych.
.P
Należy zauważyć, że dla adresu i portu zawsze jest używana sieciowa
kolejność bajtów. W szczególności oznacza to, że trzeba używać funkcji
\fBhtons\fP(3) dla numeru przypisanego do portu. Wszystkie funkcje standardowej
biblioteki manipulujące adresem/portem automatycznie przekształcają podaną
wartość na jej sieciową reprezentację.
.SS "Adresy specjalne i zarezerwowane"
Istnieje wiele adresów specjalnych:
.TP 
\fBINADDR_LOOPBACK\fP (127.0.0.1)
zawsze odnosi się do komputera lokalnego za pośrednictwem urządzenia pętli
zwrotnej (loopback);
.TP 
\fBINADDR_ANY\fP (0.0.0.0)
oznacza każdy adres, do kojarzenia gniazd;
.TP 
\fBINADDR_BROADCAST\fP (255.255.255.255)
ma w przypadku \fBbind\fP(2), ze względów historycznych, taki sam skutek jak
\fBINADDR_ANY\fP. Pakiet zaadresowany do \fBINADDR_BROADCAST\fP za pośrednictwem
gniazda z ustawionym \fBSO_BROADCAST\fP będzie rozgłaszał do wszystkich stacji
w segmencie sieci lokalnej, tak długo, jak połączenie ma możliwość
rozgłaszania.
.TP 
Najwyższe numery adresów
.TQ
Najniższe numery adresów
.\" commit 58fee5fc83658aaacf60246aeab738946a9ba516
W każdej podsieci lokalnej, innej niż punkt do punktu, z połączeniem
obsługującym rozgłaszanie, adres o najwyższym możliwym numerze (np. adres
\&.255 w podsieci z maską sieciową 255.255.255.0) służy jako adres
rozgłoszeniowy. Nie można go użytecznie przypisać do indywidualnego
interfejsu i można go zaadresować jedynie gniazdem z ustawioną opcją
\fBSO_BROADCAST\fP. Standardy internetowe historycznie rezerwowały również
adres o najniższym możliwym numerze (np. adres .0 w podsieci z maską
sieciową 255.255.255.0) do rozgłaszania, choć nazywały go
\[Bq]przestarzałym\[rq] do tego celu (część źródeł odnosi się do niego
również jako do \[Bq]adresu sieci\[rq]). Od Linuksa 5.14 jest on traktowany
jako standardowy adres pojedynczy i może być przypisany do interfejsu.
.P
Standardy internetowe tradycyjnie rezerwowały również różne adresy do
określonych celów, choć Linux części z nich nie traktuje już w specjalny
sposób.
.TP 
[0.0.0.1, 0.255.255.255]
.TQ
[240.0.0.0, 255.255.255.254]
.\" commit 96125bf9985a75db00496dd2bc9249b777d2b19b
.\" commit 1e637c74b0f84eaca02b914c0b8c6f67276e9697
Adresy w tych zakresach (0/8 i 240/4) są zarezerwowane globalnie. Od Linuksa
5.3 i Linuksa 2.6.25 adresy, odpowiednio, 0/8 i 240/4, inne niż
\fBINADDR_ANY\fP i \fBINADDR_BROADCAST\fP są traktowane jako zwykłe adresy
pojedyncze. Systemy przestrzegające tradycyjnego zachowania mogą nie
współpracować z tymi zakresami historycznie zarezerwowanych adresów.
.TP 
[127.0.0.1, 127.255.255.254]
Adresy w tym zakresie (127/8) są traktowane jako adresy pętli zwrotnej,
podobnie do standardowego adresu pętli zwrotnej \fBINADDR_LOOPBACK\fP
(127.0.0.1);
.TP 
[224.0.0.0, 239.255.255.255]
Adresy w tym zakresie (224/4) są przeznaczone do użycia grupowego
(multicast).
.SS "Opcje gniazda"
.\" or SOL_IP on Linux
IP wspiera niektóre opcje specyficzne dla protokołu, które mogą być
ustawione przy użyciu \fBsetsockopt\fP(2) i odczytane z pomocą
\fBgetsockopt\fP(2). Poziom opcji gniazda dla IP to \fBIPPROTO_IP\fP. Dla każdego
ze znaczników logicznych wartość całkowita zero oznacza fałsz, a każda inna
\- prawdę.
.P
Gdy poda się nieprawidłową opcję gniazda, \fBgetsockopt\fP(2) i
\fBsetsockopt\fP(2) zwrócą błąd \fBENOPROTOOPT\fP.
.TP 
\fBIP_ADD_MEMBERSHIP\fP (od Linuksa 1.2)
Przyłącza grupę adresów. Argumentem jest struktura \fIip_mreqn \fP.
.IP
.in +4n
.EX
struct ip_mreqn {
    struct in_addr imr_multiaddr; /* grupowy adres IP */
    struct in_addr imr_address;   /* adres IP interfejsu
                                     lokalnego */
    int            imr_ifindex;   /* indeks interfejsu */
};
.EE
.in
.IP
.\" (i.e., within the 224.0.0.0-239.255.255.255 range)
\fIimr_multiaddr\fP zawiera adres grupy, którą aplikacja chce podłączyć lub
rozłączyć. Musi być to poprawny adres grupowy (multicast; w przeciwnym
wypadku \fBsetsockopt\fP(2) zwróci błąd \fBEINVAL\fP). \fIimr_address\fP jest to
adres lokalnego interfejsu, przez który system powinien połączyć grupę;
jeśli jest równy \fBINADDR_ANY\fP, to odpowiedni interfejs jest wybierany przez
system. \fIimr_ifindex\fP jest indeksem interfejsu, który powinien być
podłączony/odłączony do obsługi grupy \fIimr_multiaddr\fP lub 0, by wskazać na
dowolny interfejs.
.IP
Struktura \fIip_mreqn\fP jest dostępna tylko od wersji 2.2 Linuksa. Dla
kompatybilności, stara struktura \fIip_mreq\fP wciąż jest obsługiwana. Różni
się wprawdzie od \fIip_mreqn\fP, lecz tylko tym, że nie zawiera pola
\fIimr_ifindex\fP (jądro określa którą strukturę zastosowano na podstawie
rozmiaru podanego w \fIoptlen\fP).
.IP
.\"
\fBIP_ADD_MEMBERSHIP\fP jest prawidłowe wyłącznie dla \fBsetsockopt\fP(2).
.TP 
\fBIP_ADD_SOURCE_MEMBERSHIP\fP (od Linuksa 2.4.22 / Linuksa 2.5.68)
Przyłącza adres grupowy (multicast) i zezwala na otrzymywanie danych jedynie
z podanego źródła. Argumentem jest struktura \fIip_mreq_source\fP.
.IP
.in +4n
.EX
struct ip_mreq_source {
    struct in_addr imr_multiaddr;  /* grupowy adres IP */
    struct in_addr imr_interface;  /* adres IP interfejsu
                                      lokalnego */
    struct in_addr imr_sourceaddr; /* adres IP
                                      grupowego źródła */
};
.EE
.in
.IP
Struktura \fIip_mreq_source\fP jest podobna do \fIip_mreqn\fP opisanej pod hasłem
\fBIP_ADD_MEMBERSHIP\fP. Pole \fIimr_multiaddr\fP zawiera adres grupowy do którego
aplikacja ma zamiar dołączyć lub opuścić go. Pole \fIimr_interface\fP jest
adresem interfejsu lokalnego z którego system powinien dołączyć do adresu
grupowego. Pole \fIimr_sourceaddr\fP zawiera adres źródłowy, z którego
aplikacja ma zamiar otrzymywać dane.
.IP
Opcja może być użyta kilkakrotnie aby otrzymywać dane z kilku źródeł.
.TP 
\fBIP_BIND_ADDRESS_NO_PORT\fP (od Linuksa 4.2)
.\" commit 90c337da1524863838658078ec34241f45d8394d
Informuje jądro, aby nie rezerwować portu efemerycznego przy korzystaniu z
\fBbind\fP(2) z numerem portu 0. Port będzie wybrany automatycznie później, w
trakcie wykonywania \fBconnect\fP(2), w sposób umożliwiający współdzielenie
portu źródłowego tak długo, jak długo unikatowa jest czteroelementowa
krotka.
.TP 
\fBIP_BLOCK_SOURCE\fP (od Linuksa 2.4.22 / 2.5.68)
Kończy otrzymywanie danych grupowych z podanego źródła i podanej grupy. Jest
to odpowiednie jedynie po zapisaniu się do adresu grupowego za pomocą
\fBIP_ADD_MEMBERSHIP\fP lub \fBIP_ADD_SOURCE_MEMBERSHIP\fP.
.IP
Argumentem jest struktura \fIip_mreq_source\fP opisana w części dotyczącej
\fBIP_ADD_SOURCE_MEMBERSHIP\fP.
.TP 
\fBIP_DROP_MEMBERSHIP\fP (od Linuksa 1.2)
Odłącza się od grupy adresów. Argumentem jest struktura \fIip_mreqn\fP lub
\fIip_mreq\fP podobna do \fBIP_ADD_MEMBERSHIP\fP.
.TP 
\fBIP_DROP_SOURCE_MEMBERSHIP\fP (od Linuksa 2.4.22 / 2.5.68)
Odłącza się od grupy z podanego źródła \[em] zaprzestaje otrzymywania danych
z podanej grupy adresów pochodzącej z podanego źródła. Jeśli programy
zostały przypisane do wielu źródeł z tej samej grupy, dane z pozostałych
źródeł wciąż będą dostarczane. Aby zatrzymać otrzymywanie danych ze
wszystkich źródeł na raz, należy użyć \fBIP_DROP_MEMBERSHIP\fP.
.IP
Argumentem jest struktura \fIip_mreq_source\fP opisana w części dotyczącej
\fBIP_ADD_SOURCE_MEMBERSHIP\fP.
.TP 
\fBIP_FREEBIND\fP (od Linuksa 2.4)
.\" Precisely: since Linux 2.4.0-test10
Jeśli jest włączona, to ta opcja logiczna pozwala na przypisanie do adresu
nielokalnego lub (jeszcze) nieistniejącego. Pozwala to na nasłuchiwanie na
gnieździe bez wymagania, żeby  interfejs sieciowy niższej warstwy lub podany
dynamiczny adres IP były ustawione podczas próby przypisania gniazda przez
aplikację. Ta opcja jest odpowiednikiem \- dla pojedynczego gniazda \-
opisanego poniżej interfejsu \fI/proc\fP \fIip_nonlocal_bind\fP.
.TP 
\fBIP_HDRINCL\fP (od Linuksa 2.0)
Jeśli włączone, to dopuszczalne jest tworzenie przez użytkownika własnego
nagłówka IP przed danymi użytkownika. Działa to jedynie dla gniazd
\fBSOCK_RAW\fP, patrz \fBraw\fP(7), by uzyskać więcej informacji. Gdy ten znacznik
jest włączony, to wartości ustawiane przez \fBIP_OPTIONS\fP, \fBIP_TTL\fP i
\fBIP_TOS\fP są ignorowane.
.TP 
\fBIP_LOCAL_PORT_RANGE\fP (od Linuksa 6.3)
Ustawia lub pobiera domyślny przedział lokalnych portów przypisany do
gniazda. Opcji tej można użyć do zawężenia dla danego gniazda, globalnego
przedziału lokalnych portów, zdefiniowanego w interfejsie \fI/proc\fP
\fIip_local_port_range\fP opisanym poniżej.
.IP
Opcja przyjmuje wartość \fIuint32_t\fP, gdzie wysokie 16 bitów ustawia górną
granicę przedziału (włącznie), a niskie 16 bitów ustawia dolną granicę
przedziału (włącznie). Wartości 16\-bitowe powinny przestrzegać kolejności
bajtów komputera.
.IP
Dolna granica przedziału musi być mniejsza od górnej granicy przedziału, a
żadna nie może wynosić zero. Przy naruszeniu tych warunków, ustawienie opcji
zawiedzie z błędem EINVAL.
.IP
Jeśli któraś z granic jest poza globalnym przedziałem portów lokalnych lub
wynosi zero, to przedział nie ma zastosowania.
.IP
Aby zresetować ustawienie, należy podać zero jako zarówno górną jak i dolną
granicę przedziału.
.TP 
\fBIP_MSFILTER\fP (od Linuksa 2.4.22 / 2.5.68)
Opcja pozwala na uzyskanie dostępu do zaawansowanego interfejsu filtrowania
pełnostanowego. Argumentem jest struktura \fIip_msfilter\fP.
.IP
.in +4n
.EX
struct ip_msfilter {
    struct in_addr imsf_multiaddr; /* grupowy adres IP
    struct in_addr imsf_interface; /* adres IP interfejsu
                                      lokalnego */
    uint32_t       imsf_fmode;     /* Tryb filtrowania */
\&
    uint32_t       imsf_numsrc;    /* Liczba źródeł
                                      w poniższej tablicy */
    struct in_addr imsf_slist[1];  /* Tablica źródeł
                                      adresów */
};
.EE
.in
.IP
Do określenia trybu filtrowania służą dwa makra \- \fBMCAST_INCLUDE\fP i
\fBMCAST_EXCLUDE\fP. Makro \fBIP_MSFILTER_SIZE\fP(n) służy natomiast do określenia
wielkości pamięci potrzebnej do przechowania struktury \fIip_msfilter\fP z \fIn\fP
źródeł w liście źródeł.
.IP
Pełny opis filtrowania źródeł adresów zawiera dokument RFC 3376.
.TP 
\fBIP_MTU\fP (od Linuksa 2.2)
.\" Precisely: since Linux 2.1.124
Pobiera bieżącą wartość MTU ścieżki obecnego gniazda. Zwraca liczbę
całkowitą.
.IP
\fBIP_MTU\fP jest poprawne tylko do \fBgetsockopt\fP(2) i można go użyć wyłącznie
gdy gniazdo zostało połączone.
.TP 
\fBIP_MTU_DISCOVER\fP (od Linuksa 2.2)
.\" Precisely: since Linux 2.1.124
Ustawia lub pobiera opcję badania MTU ścieżki (ang. Path MTU Discovery) dla
gniazda. Gdy opcja ta jest włączona, to Linux będzie przeprowadzał badanie
MTU ścieżki dla gniazd \fBSOCK_STREAM\fP zgodnie z definicją zawartą w RFC\ 1191. W przypadku gniazd nie będących gniazdami \fBSOCK_STREAM\fP,
\fBIP_PMTUDISC_DO\fP wymusza ustawienie we wszystkich pakietach wychodzących
znacznika zakazu fragmentacji. Za poprawne zgodne z wartością MTU,
podzielenie na pakiety i za wykonanie ewentualnych retransmisji jest
odpowiedzialny program użytkownika.  Jądro odrzuci (z błędem \fBEMSGSIZE\fP)
pakiety większe niż znane MTU ścieżki. Ustawienie znacznika
\fBIP_PMTUDISC_WANT\fP spowoduje sfragmentowanie datagramu, jeśli MTU ścieżki
tego wymaga, albo \- w przeciwnym wypadku \- ustawienie znacznika zakazującego
fragmentacji.
.IP
Domyślną dla systemu wartość można ustawić na  \fBIP_PMTUDISC_WANT\fP lub na
\fBIP_PMTUDISC_DONT\fP, wpisując odpowiednio \- zero lub wartość niezerową \- do
pliku \fI/proc/sys/net/ipv4/ip_no_pmtu_disc\fP.
.TS
tab(:);
c l
l l.
Wart. badan. MTU ścieżki:Znaczenie
IP_PMTUDISC_WANT:Używaj ustawień zależnych od trasy.
IP_PMTUDISC_DONT:Nie badaj MTU ścieżki.
IP_PMTUDISC_DO:Zawsze badaj MTU ścieżki.
IP_PMTUDISC_PROBE:Ustawia bit DF, ale ignoruje MTU ścieżki.
.TE
.IP
Gdy włączone jest badanie MTU ścieżki, jądro automatycznie namierza wartości
MTU ścieżki dla każdego komputera docelowego. Gdy aktywne jest połączenie z
danym komputerem, można wygodnie odczytać aktualnie rozpoznaną wartość MTU
ścieżki za pomocą \fBconnect\fP(2) używając opcji gniazda \fBIP_MTU\fP (np. po
wystąpieniu błędu \fBEMSGSIZE\fP). Wartość MTU ścieżki może się zmieniać z
czasem. Dla gniazd bezpołączeniowych z wieloma komputerami docelowymi MTU
dla danego, również nowego, komputera docelowego można uzyskać za pomocą
kolejki błędów (zobacz \fBIP_RECVERR\fP). Po nadejściu każdej aktualizacji MTU
zostanie skolejkowany nowy błąd.
.IP
W trakcie rozpoznawania MTU, pakiety inicjujące z gniazd datagramowych mogą
zostać porzucone. Programy korzystające z UDP powinny być tego świadome i
nie brać tego pod uwagę w swojej strategii retransmisji pakietów.
.IP
Aby zainicjować proces badania MTU ścieżki dla gniazd niepołączonych, można
rozpocząć z dużym rozmiarem datagramu (nagłówek o długości do 64 kilobajtów)
i pozwolić na jego zmniejszenie w wyniku aktualizacji MTU ścieżki.
.IP
Aby oszacować inicjalne MTU ścieżki, należy podłączyć gniazdo datagramowe do
adresu docelowego za pomocą \fBconnect\fP(2) i pobrać MTU, wołając
\fBgetsockopt\fP(2) z opcją \fBIP_MTU\fP.
.IP
Poprzez ustawienie wartości w \fBIP_PMTUDISC_PROBE\fP (dostępnej od Linuksa
2.6.22) możliwe jest zaimplementowanie opisanego w RFC\ 4821 próbkowania MTU
dla gniazd  \fBSOCK_DGRAM\fP lub \fBSOCK_RAW\fP. Jest to szczególnie użyteczne w
narzędziach diagnostycznych typu \fBtracepath\fP(8), które w sposób zamierzony
chcą wysyłać pakiety testowe większe niż zaobserwowane MTU ścieżki.
.TP 
\fBIP_MULTICAST_ALL\fP (od Linuksa 2.6.31)
Tej opcji można użyć do modyfikacji zasad dostarczania wiadomości
grupowych. Argument wynosi 0 lub 1 (domyślnie 1). Gdy jest ustawiony na 1,
to gniazdo otrzyma wiadomości ze wszystkich grup, które dołączono globalnie
z całego systemu. W przeciwnym razie dostarczone będą tylko wiadomości z
grup dołączonych jawnie (np. opcją \fBIP_ADD_MEMBERSHIP\fP) do tego konkretnego
gniazda.
.TP 
\fBIP_MULTICAST_IF\fP (od Linuksa 1.2)
.\" net: IP_MULTICAST_IF setsockopt now recognizes struct mreq
.\" Commit: 3a084ddb4bf299a6e898a9a07c89f3917f0713f7
Ustawia lokalne urządzenie dla gniazda grupowego. Argumentem do
\fBsetsockopt\fP(2) jest \fIip_mreqn\fP lub (od Linuksa 3.5) \fIip_mreq\fP, struktura
podobna do \fBIP_ADD_MEMBERSHIP\fP; albo struktura \fIin_addr\fP (jądro określa
którą strukturę się podało na podstawie rozmiaru przekazanego w
\fIoptlen\fP). Do \fBgetsockopt\fP(2) argumentem jest struktura \fIin_addr\fP.
.TP 
\fBIP_MULTICAST_LOOP\fP (od Linuksa 1.2)
Ustawia lub pobiera logiczny argument typu całkowitego, określający, czy
przesyłane pakiety grupowe powinny wracać do lokalnego gniazda.
.TP 
\fBIP_MULTICAST_TTL\fP (od Linuksa 1.2)
Ustawia lub pobiera wartość czasu życia pakietu dla wychodzących z tego
gniazda pakietów grupowych. Jest bardzo istotne w przypadku adresowania
grupowego, by ustawić najmniejszą możliwą wartość TTL. Domyślnie jest to 1,
co oznacza, że pakiety grupowe nie opuszczają sieci lokalnej, chyba że
program użytkownika wyraźnie tego żąda. Argument jest liczbą całkowitą.
.TP 
\fBIP_NODEFRAG\fP (od Linuksa 2.6.36)
Jeśli włączone (argument jest niezerowy), łączenie pakietów wychodzących
przez warstwę netfilter jest wyłączone. Argumentem jest liczba całkowita.
.IP
Ta opcja jest prawidłowa tylko dla gniazd \fBSOCK_RAW\fP.
.TP 
\fBIP_OPTIONS\fP (od Linuksa 2.0)
.\" Precisely: since Linux 1.3.30
Ustawia lub pobiera opcje IP, które będą wysyłane z każdym pakietem z danego
gniazda. Argumenty są wskaźnikiem do bufora pamięci zawierającego opcje i
ich długości. \fBsetsockopt\fP(2) ustawia opcje IP skojarzone z
gniazdem. Maksymalny rozmiar opcji dla IPv4 to 40 bajtów. Zobacz RFC\ 791,
by poznać możliwe opcje. Gdy pakiet wstępnego potwierdzenia połączenia (ACK)
dla gniazda typu \fBSOCK_STREAM\fP zawiera opcje IP, to opcje wychodzącego
pakietu IP będą automatycznie pobrane z opcji IP pobranego pakietu z
odwróconymi nagłówkami mówiącymi o trasie. Po ustanowieniu połączenia
przychodzące pakiety nie są uprawnione do zmiany swoich opcji. Przetwarzanie
wszystkich przychodzących opcji źródła jest domyślnie wyłączone, ale można
je włączyć ustawiając \fIaccept_source_route\fP w interfejsie \fI/proc\fP. W
przypadku gniazd datagramowych opcje IP mogą być ustawione jedynie przez
użytkownika lokalnego. Funkcja \fBgetsockopt\fP(2) z argumentem \fBIP_OPTIONS\fP
zwróci obecnie wysłane opcje przez umieszczenie ich w dostarczonym buforze.
.TP 
\fBIP_PASSSEC\fP (od Linuksa 2.6.17)
.\" commit 2c7946a7bf45ae86736ab3b43d0085e43947945c
Jeśli na stacjach wysyłających i przyjmujących skonfigurowano etykietowany
IPSEC lub NetLabel, opcja ta włącza kontekst bezpieczeństwa drugiego
gniazda, w komunikacie pomocniczym typu \fBSCM_SECURITY\fP, odbieranym za
pomocą \fBrecvmsg\fP(2). Opcja jest wspierana tylko dla gniazd UDP; w przypadku
gniazd TCP lub SCTP proszę przeczytać opis opcji \fBSO_PEERSEC\fP poniżej.
.IP
Podana wartość jest argumentem do \fBsetsockopt\fP(2), a zwracana jako wynik
\fBgetsockopt\fP(2) jest flaga logiczna będąca liczbą całkowitą.
.IP
Kontekst bezpieczeństwa zwrócony przez komunikat pomocniczy \fBSCM_SECURITY\fP
ma ten sam format, jak opisany przy opcji \fBSO_PEERSEC\fP poniżej.
.IP
Uwaga: ponowne użycie typu komunikatu \fBSCM_SECURITY\fP dla opcji gniazda
\fBIP_PASSSEC\fP było prawdopodobnie pomyłką, jako że pozostałe komunikaty
kontrolne IP mają swój schemat numeracji w przestrzeni nazw IP i często
używają wartości opcji gniazda jako typu komunikatu. Obecnie nie występuje
konflikt, ponieważ opcją IP z taką samą wartością jak \fBSCM_SECURITY\fP jest
\fBIP_HDRINCL\fP, a ona nigdy nie jest używana do typu komunikatów kontrolnych.
.TP 
\fBIP_PKTINFO\fP (od Linuksa 2.2)
.\" Precisely: since Linux 2.1.68
Przekazuje pomocniczy komunikat \fBIP_PKTINFO\fP zawierający strukturę
\fIpktinfo\fP dostarczającą trochę informacji o przychodzącym pakiecie. Działa
to jedynie dla gniazd datagramowych. Argument jest znacznikiem mówiącym
gniazdu, czy należy przekazać komunikat \fBIP_PKTINFO\fP, czy też nie. Sam
komunikat może zostać przesłany/otrzymany wraz z pakietem jedynie jako
komunikat sterujący za pomocą \fBrecvmsg\fP(2) lub \fBsendmsg\fP(2).
.IP
.in +4n
.EX
struct in_pktinfo {
    unsigned int   ipi_ifindex;  /* Indeks interfejsu */
    struct in_addr ipi_spec_dst; /* Adres lokalny */
    struct in_addr ipi_addr;     /* Nagłówek adresu
                                    docelowego */
};
.EE
.in
.IP
.\" This field is grossly misnamed
\fIipi_ifindex\fP jest unikatowym indeksem interfejsu, przez który pakiet
został odebrany. Adres \fIipi_spec_dst\fP jest lokalnym adresem pakietu, a
\fIipi_addr\fP jest adresem docelowym wynikającym z nagłówka pakietu. Jeśli
\fBIP_PKTINFO\fP jest przekazane do \fBsendmsg\fP(2), a \fIipi_spec_dst\fP ma wartość
niezerową, to zostanie użyte jako źródłowy adres lokalny podczas
przeszukiwania tablicy trasowania i dla ustawienia opcji trasowania według
adresu źródłowego. Gdy \fIipi_ifindex\fP ma wartość niezerową, to podstawowy
adres lokalny interfejsu wskazywanego przez ten indeks nadpisuje
\fIipi_spec_dst\fP podczas przeszukiwania tablicy trasowania.
.IP
Nieobsługiwane w przypadku gniazd \fBSOCK_STREAM\fP.
.TP 
\fBIP_RECVERR\fP (od Linuksa 2.2)
.\" Precisely: since Linux 2.1.15
.\" or SOL_IP on Linux
Włącza przekazywanie dodatkowych komunikatów o błędach, zwiększając
niezawodność połączenia. Gdy jest to ustawione w gnieździe datagramowym, to
wszystkie generowane błędy będą zapamiętane w specjalnej kolejce błędów
przypisanej do gniazda. Gdy użytkownik (proces użytkownika) otrzyma błąd
(przez zwrócony kod błędu operacji na gnieździe), to może go odebrać,
używając funkcji \fBrecvmsg\fP(2) z ustawionym znacznikiem
\fBMSG_ERRQUEUE\fP. Struktura opisująca błąd \fIsock_extended_err\fP zostanie
przekazana w pomocniczym komunikacie o typie \fBIP_RECVERR\fP i poziomie
\fBIPPROTO_IP\fP. Jest to niezwykle pomocne przy niezawodnym przechwytywaniu
błędów niepołączonych gniazd. Odbierana z kolejki błędów porcja danych
zawiera pakiet z informacją o błędzie.
.IP
Komunikat sterujący \fBIP_RECVERR\fP zawiera strukturę \fIsock_extended_err\fP
zdefiniowaną następująco:
.IP
.in +4n
.EX
#define SO_EE_ORIGIN_NONE    0
#define SO_EE_ORIGIN_LOCAL   1
#define SO_EE_ORIGIN_ICMP    2
#define SO_EE_ORIGIN_ICMP6   3
\&
struct sock_extended_err {
    uint32_t ee_errno;   /* numer błędu */
    uint8_t  ee_origin;  /* źródło błędu */
    uint8_t  ee_type;    /* typ */
    uint8_t  ee_code;    /* kod */
    uint8_t  ee_pad;
    uint32_t ee_info;    /* informacje dodatkowe */
    uint32_t ee_data;    /* inne dane */ 
    /* Dalej mogą wystąpić dodatkowe dane */
};
\&
struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *);
.EE
.in
.IP
\fIee_errno\fP zawiera numer \fIerrno\fP błędu kolejki. \fIee_origin\fP jest kodem
miejsca pochodzenia błędu. Pozostałe pola są zależne od protokołu. Makro
\fBSO_EE_OFFENDER\fP zwraca wskaźnik do adresu obiektu sieciowego, z którego
pochodził błąd o zadanym wskaźniku do komunikatu pomocniczego. Gdy ten adres
nie jest znany, pole \fIsa_family\fP struktury \fIsockaddr\fP zawiera wartość
\fBAF_UNSPEC\fP a pozostałe pola tej struktury \fIsockaddr\fP są niezdefiniowane.
.IP
.\" FIXME . Is it a good idea to document that? It is a dubious feature.
.\" On
.\" .B SOCK_STREAM
.\" sockets,
.\" .B IP_RECVERR
.\" has slightly different semantics. Instead of
.\" saving the errors for the next timeout, it passes all incoming
.\" errors immediately to the user.
.\" This might be useful for very short-lived TCP connections which
.\" need fast error handling. Use this option with care:
.\" it makes TCP unreliable
.\" by not allowing it to recover properly from routing
.\" shifts and other normal
.\" conditions and breaks the protocol specification.
IP używa struktury \fIsock_extended_err\fP w następujący sposób: \fIee_origin\fP
ustawione na \fBSO_EE_ORIGIN_ICMP\fP dla błędów odbieranych jako pakiet ICMP
albo też \fBSO_EE_ORIGIN_LOCAL\fP dla błędów generowanych lokalnie. Nieznane
wartości należy ignorować. \fIee_type\fP i \fIee_code\fP są ustawiane zgodnie z
typem i kodem pól w nagłówku ICMP. \fIee_info\fP zawiera rozpoznaną wartość MTU
dla błędów \fBEMSGSIZE\fP. Komunikat zawiera również \fIsockaddr_in węzła\fP,
który spowodował błąd, a do którego można uzyskać dostęp za pomocą makra
\fBSO_EE_OFFENDER\fP. Pole \fIsin_family\fP adresu \fBSO_EE_OFFENDER\fP ma wartość
\fIAF_UNSPEC\fP, gdy źródło błędu nie jest znane. Gdy błąd pochodzi z sieci,
wszystkie opcje IP (\fBIP_OPTIONS\fP, \fBIP_TTL\fP itd.) włączone w gnieździe i
zawarte w pakiecie błędu są przekazywane jako komunikaty kontrolne. Właściwe
dane pakietu, który spowodował błąd są zwracane jako normalne dane. Należy
zauważyć, że TCP nie ma kolejki błędów; \fBMSG_ERRQUEUE\fP jest nielegalne w
przypadku gniazd \fBSOCK_STREAM\fP. \fBIP_RECVERR\fP jest poprawne dla TCP, ale
wszystkie błędy są przekazywane przez zwracaną wartość funkcji albo przez
\fBSO_ERROR\fP.
.IP
Dla gniazd surowych, \fBIP_RECVERR\fP włącza przepuszczanie do aplikacji
wszystkich odebranych komunikatów ICMP o błędach. W przeciwnym przypadku
błędy są zgłaszane tylko dla gniazd połączonych.
.IP
Ustawia lub pobiera znacznik logiczny zapisany za pomocą liczby
całkowitej. \fBIP_RECVERR\fP jest domyślnie wyłączone.
.TP 
\fBIP_RECVOPTS\fP (od Linuksa 2.2)
.\" Precisely: since Linux 2.1.15
Przekazuje użytkownikowi wszystkie nadchodzące opcje IP z komunikatu
sterującego \fBIP_OPTIONS\fP. Nagłówek wyboru trasy i inne opcje są już
wstępnie wypełnione informacjami o lokalnej maszynie. Nieobsługiwane w
przypadku gniazd typu \fBSOCK_STREAM\fP.
.TP 
\fBIP_RECVORIGDSTADDR\fP (od Linuksa 2.6.29)
.\" commit e8b2dfe9b4501ed0047459b2756ba26e5a940a69
Ta opcja logiczna włącza komunikat pomocniczy \fBIP_ORIGDSTADDR\fP w
\fBrecvmsg\fP(2), w którym jądro zwraca oryginalny adres docelowy otrzymywanego
właśnie datagramu. Ten komunikat pomocniczy zawiera strukturę \fIstruct sockaddr_in\fP. Nieobsługiwane w przypadku gniazd \fBSOCK_STREAM\fP.
.TP 
\fBIP_RECVTOS\fP (od Linuksa 2.2)
.\" Precisely: since Linux 2.1.68
Jeśli jest ustawione, to pomocniczy komunikat \fBIP_TOS\fP jest przepuszczany
razem z nadchodzącymi pakietami. Zawiera on bajt, który określa pole
zdefiniowane także jako bajt znajdujące się w nagłówku pakietu, a zwane Typ
Usługi/Pierwszeństwa. Wymaga logicznego znacznika w postaci liczby
całkowitej. Nieobsługiwane w przypadku gniazd \fBSOCK_STREAM\fP.
.TP 
\fBIP_RECVTTL\fP (od Linuksa 2.2)
.\" Precisely: since Linux 2.1.68
Gdy ten znacznik jest ustawiony, przepuszczany jest komunikat pomocniczy
\fBIP_TTL\fP, zawierający pole określane mianem \[Bq]czas życia\[rq]
odbieranego pakietu w postaci 32\-bitowej liczby. Nie jest to wspierane w
przypadku strumieniowych gniazd typu \fBSOCK_STREAM\fP.
.TP 
\fBIP_RETOPTS\fP (od Linuksa 2.2)
.\" Precisely: since Linux 2.1.15
Działanie identyczne do \fBIP_RECVOPTS\fP, ale zwraca surowe, nieprzetworzone
opcje, włącznie z rekordem opcji, mówiącym o znaczniku czasowym i trasie,
niewypełnionym wartościami w tym przejściu pakietu. Nieobsługiwane w
przypadku gniazd \fBSOCK_STREAM\fP.
.TP 
\fBIP_ROUTER_ALERT\fP (od Linuksa 2.2)
.\" Precisely: since Linux 2.1.68
Przekazuje wszystkie pakiety z opcją alarmu rutera IP, które miałyby być
przekazywane (ang. forwarded) do tego gniazda. Działa tylko dla gniazd
surowych. Jest to przydatne na przykład dla demonów RSVP działających w
przestrzeni użytkownika. Wykorzystane pakiety nie są przekazywane
(ang. forwarded) przez jądro. Ponowne ich wysłanie należy do obowiązków
programu użytkownika. Dowiązywanie gniazda jest w tym przypadku ignorowane,
pakiety te są filtrowane jedynie na podstawie protokołu. Wymaga liczby
całkowitej jako argumentu.
.TP 
\fBIP_TOS\fP (od Linuksa 1.0)
.\" FIXME elaborate on this
.\" The priority can also be set in a protocol-independent way by the
.\" .RB ( SOL_SOCKET ", " SO_PRIORITY )
.\" socket option (see
.\" .BR socket (7)).
Ustawia lub pobiera pole znacznika Typ\-Usługi (ang. Type\-Of\-Service, w
skrócie TOS), które jest przesyłane z każdym pakietem IP pochodzącym z
danego gniazda. Służy do ustalenia priorytetów pakietów w sieci. TOS jest
bajtem. Oto definicje niektórych standardowych znaczników TOS:
\fBIPTOS_LOWDELAY\fP \- minimalizacja opóźnienia we wzajemnym ruchu,
\fBIPTOS_THROUGHPUT\fP \- optymalizacja wyjścia, \fBIPTOS_RELIABILITY\fP \-
optymalizacja pod kątem niezawodności, a \fBIPTOS_MINCOST\fP powinna być
używana jako \[Bq]dane wypełniające\[rq] tam, gdzie szybkość transmisji nie
ma większego znaczenia. Można podać najwyżej jedną z powyższych wartości
TOS. Inne bity są niepoprawne i powinny być wyzerowane. Linux domyślnie
wysyła najpierw datagram \fBIPTOS_LOWDELAY\fP, ale dokładne zachowanie zależy
od konfiguracji właściwości szeregowania. Niektóre poziomy o wysokim
priorytecie mogą wymagać uprawnień administratora (ustawionego atrybutu
\fICAP_NET_ADMIN\fP).
.TP 
\fBIP_TRANSPARENT\fP (od Linuksa 2.6.24)
.\" commit f5715aea4564f233767ea1d944b2637a5fd7cd2e
.\"     This patch introduces the IP_TRANSPARENT socket option: enabling that
.\"     will make the IPv4 routing omit the non-local source address check on
.\"     output. Setting IP_TRANSPARENT requires NET_ADMIN capability.
.\" http://lwn.net/Articles/252545/
Ustawienie tej opcji logicznej włącza przezroczyste
(ang. \[Bq]transparent\[rq]) proxy dla tego gniazda. Ta opcja gniazda
pozwala wywołującej aplikacji przypisanie gniazda do nielokalnego adresu IP
i operowanie jako zarówno klient, jak i serwer z zewnętrznym adresem IP dla
lokalnego punktu docelowego. \fBUWAGA:\fP wymaga to takiego ustawienia reguł
trasowania, żeby pakiety wysyłane na ten adres zewnętrzny były przekazywane
przez TProxy (tj. system na którym działa aplikacja korzysta z opcji gniazda
\fBIP_TRANSPARENT\fP). Włączenie tej opcji wymaga uprawnień administratora
(przywilej \fBCAP_NET_ADMIN\fP).
.IP
Przekierowanie TProxy używające celu TPROXY z \fBiptables\fP(8) także wymagają
włączenia tej opcji w przekierowywanym gnieździe.
.TP 
\fBIP_TTL\fP (od Linuksa 1.0)
Ustawia lub pobiera pole \[Bq]czas życia\[rq] (ang. Time\-To\-Live, w skrócie
TTL) dla każdego wychodzącego z danego gniazda pakietu IP.
.TP 
\fBIP_UNBLOCK_SOURCE\fP (od Linuksa 2.4.22 / 2.5.68)
Odblokowuje zablokowaną uprzednio grupę adresów. Zwraca \fBEADDRNOTAVAIL\fP gdy
podane źródło nie było zablokowane.
.IP
Argumentem jest struktura \fIip_mreq_source\fP opisana w części dotyczącej
\fBIP_ADD_SOURCE_MEMBERSHIP\fP.
.TP 
\fBSO_PEERSEC\fP (od Linuksa 2.6.17)
Jeśli na stacjach wysyłających i przyjmujących skonfigurowano etykietowany
IPSEC lub NetLabel, ta opcja gniazda tylko do odczytu zwraca kontekst
bezpieczeństwa drugiego gniazda połączonego z tym gniazdem. Domyślnie będzie
to taka sama wartość jak wartość kontekstu procesu tworzącego drugie
gniazdo, chyba że zostanie przesłoniona zasadami lub procesem z wymaganymi
uprawnieniami.
.IP
Argumentem do \fBgetsockopt\fP(2) jest wskaźnik do bufora określonej długości w
bajtach, którego łańcuch kontekstu bezpieczeństwa ma zostać
skopiowany. Jeśli długość bufora jest mniejsza niż długość łańcucha
kontekstu bezpieczeństwa, to \fBgetsockopt\fP(2) zwróci \-1, ustawi \fIerrno\fP na
\fBERANGE\fP i zwróci wymaganą długość za pomocą \fIoptlen\fP. Wywołujący powinien
początkowo przydzielić co najmniej \fBNAME_MAX\fP bajtów dla bufora, choć nie
ma gwarancji, że będzie to wielkość wystarczająca. Może zajść konieczność
dostosowania wielkości bufora do zwróconej długości i wykonanie drugiego
podejścia.
.IP
Łańcuch kontekstu bezpieczeństwa może zawierać kończący znak null w
zwracanej długości, ale nie jest to gwarantowane. Kontekst bezpieczeństwa
"foo" może być reprezentowany jako {'f','o','o'} o długości 3 lub
{'f','o','o','\e0'} o długości 4, oba te warianty są uważane za
równorzędne. Łańcuch jest drukowalny, nie zawiera znaków null innych niż
kończące łańcuch oraz ma nieokreślone kodowanie (w szczególności, nie
gwarantuje się kodowania ASCII lub UTF\-8).
.IP
.\" commit 2c7946a7bf45ae86736ab3b43d0085e43947945c
.\" commit d452930fd3b9031e59abfeddb2fa383f1403d61a
Użycie tej opcji do gniazd w rodzinie adresowej \fBAF_INET\fP jest obsługiwane
od Linuksa 2.6.17 w przypadku gniazd TCP, a od Linuksa 4.17 w przypadku
gniazd SCTP.
.IP
.\"
W przypadku SELinuksa, NetLabel przenosi jedynie część MLS kontekstu
bezpieczeństwa partnera poprzez łącze, pozostała część kontekstu
bezpieczeństwa uzyskuje wartości domyślne, zdefiniowane w początkowym
identyfikatorze bezpieczeństwa (SID) netmsg. NetLabel można jednak
skonfigurować, w celu przesyłania pełnego kontekstu bezpieczeństwa pętlą
zwrotną. Etykietowany IPSEC zawsze przekazuje pełny kontekst bezpieczeństwa,
jako część ustanawiania powiązania bezpieczeństwa (ang. security association
\[en] SA) i sprawdza je w zależności od powiązania dla każdego pakietu.
.SS "Interfejsy /proc"
.\" FIXME As at 2.6.12, 14 Jun 2005, the following are undocumented:
.\"  ip_queue_maxlen
.\"  ip_conntrack_max
.\"
Protokół IP obsługuje zbiór interfejsów \fI/proc\fP i korzysta z niech do
ustawiania niektórych parametrów globalnych. Parametry są dostępne  przez
zapis lub odczyt plików z katalogu \fI/proc/sys/net/ipv4/\fP. Interfejsy
opisane jako \fIlogiczne\fP pobierają liczbę całkowitą, której wartość
niezerowa (\[Bq]prawda\[rq]) oznacza, że dana opcja jest włączona, a zero
(\[Bq]fałsz\[rq]), oznacza, że opcja jest wyłączona.
.TP 
\fIip_always_defrag\fP (logiczna; od Linuksa 2.2.13)
[Nowa w Linuksie 2.2.13; we wcześniejszych wersjach jądra funkcją tą
sterowało się w czasie kompilacji za pomocą opcji
\fBCONFIG_IP_ALWAYS_DEFRAG\fP, która nie jest już obecna w Linuksie 2.4.x i
kolejnych]
.IP
Gdy ten znacznik logiczny jest włączony (różny od 0), przychodzące fragmenty
(części pakietów IP, które się pojawiają, gdy pewien komputer pomiędzy
komputerem źródłowym a docelowym zdecyduje, że pakiety były za duże i
podzieli je na kawałki) będą ponownie złożone (zdefragmentowane) przed ich
przetworzeniem, nawet jeśli mają być przekazane dalej (and. forwarded).
.IP
Należy włączać jedynie przy działającej zaporze sieciowej, stanowiącej
główne wejście do danej sieci lub działającym przezroczystym proxy; nigdy
nie należy tego włączać na zwykłym routerze lub komputerze. W przeciwnym
przypadku łączność może zostać zakłócona, gdy fragmenty będą podróżować
innymi łączami. Defragmentacja powoduje również znaczne wykorzystanie
pamięci i czasu procesora.
.IP
.\"
Jest to włączane automagicznie, gdy skonfigurowane jest maskowanie lub
przezroczyste proxy.
.TP 
\fIip_autoconfig\fP (od Linuksa 2.2 do Linuksa 2.6.17)
.\" Precisely: since Linux 2.1.68
.\" FIXME document ip_autoconfig
.\"
Nie udokumentowane.
.TP 
\fIip_default_ttl\fP (liczba, domyślnie: 64; od Linuksa 2.2)
.\" Precisely: since Linux 2.1.15
.\"
Ustawia domyślną wartość \[Bq]czasu życia\[rq] (ang. time\-to\-live)
wychodzących pakietów. Może być ona zmieniona dla gniazda za pomocą opcji
\fBIP_TTL\fP.
.TP 
\fIip_dynaddr\fP (logiczna; domyślnie: wyłączona; od Linuksa 2.0.31)
.\"
Włącza dynamiczne adresowanie gniazda oraz przepisywanie adresu dla
maskowania przy zmianie adresu interfejsu. Jest to bardzo przydatne w
przypadku korzystania z interfejsu sprzęgniętego z linią telefoniczną,
którego adres IP może się zmieniać. 0 oznacza brak przepisywania, 1 włącza
przepisywanie, a 2 włącza tryb rozwlekły (ang. verbose).
.TP 
\fIip_forward\fP(logiczna; domyślnie: wyłączona; od Linuksa 1.2)
.\"
Włącza przekazywanie (ang. forwarding) pakietów przy użyciu logicznego
znacznika. Może być ustawione także na podstawie interfejsu.
.TP 
\fIip_local_port_range\fP (od Linuksa 2.2)
.\" Precisely: since Linux 2.1.68
Plik zawierający dwa liczby całkowite określające domyślny zakres lokalnych
portów przypisanych do gniazd niebędących bezpośrednio przydzielonych do
portu \[em] tj. zakres ten jest używany do \fIportów efemerycznych\fP (portów
przypisywanych dynamicznie). Port efemeryczny jest przydzielany do gniazda w
następujących sytuacjach:
.RS
.IP \[bu] 3
numer portu w adresie gniazda jest określony jako 0 w trakcie wywoływania
\fBbind\fP(2);
.IP \[bu]
\fBlisten\fP(2) jest wywoływane na gnieździe strumieniowym, które nie było
wcześniej przydzielone;
.IP \[bu]
\fBconnect\fP(2) była wywołana na gnieździe, które nie było wcześniej
przydzielone;
.IP \[bu]
\fBsendto\fP(2) jest wywoływane na gnieździe datagramowym, które nie było
wcześniej przydzielone.
.RE
.IP
Przypisywanie portów efemerycznych rozpoczyna się od pierwszego numeru w
\fIip_local_port_range\fP i kończy się na drugim numerze. Jeśli wyczerpie się
zakres portów efemerycznych, to odpowiednie wywołanie systemowe zwróci błąd
(ale proszę sprawdzić rozdział USTERKI!).
.IP
.\"
Proszę zauważyć, że zakres portów w \fIip_local_port_range\fP nie powinien
pokrywać się z zakresem portów wykorzystywanym do maskowania (chociaż taka
sytuacja jest obsługiwana). Dowolny wybór może również powodować problemy z
niektórymi zaporami sieciowymi, które robią pewne założenia odnośnie do
portów używanych lokalnie. Pierwsza liczba powinna być większa niż 1024,
albo \- co byłoby lepsze \- większa niż 4096, aby uniknąć konfliktów z dobrze
znanymi portami i zminimalizować problemy z zaporami sieciowymi.
.TP 
\fIip_no_pmtu_disc\fP (logiczna; domyślnie: wyłączona; od Linuksa 2.2)
.\" Precisely: 2.1.15
.\"
.\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt
Jeśli jest to włączone, to domyślnie nie będzie wykonywane badanie MTU
ścieżki dla gniazd TCP. Badanie MTU może się nie sprawdzać w przypadku źle
skonfigurowanych zapór sieciowych (odrzucających wszelkie pakiety ICMP) lub
źle skonfigurowanych interfejsów (np. połączenie typu point\-to\-point, gdzie
oba końce nie zgadzają się na MTU). Lepiej poprawić wszelkie wadliwie
skonfigurowane rutery po drodze niż całkowicie wyłączyć badanie MTU ścieżki,
ponieważ niewykonywanie tej operacji pociąga za sobą duże straty w obrębie
sieci.
.TP 
\fIip_nonlocal_bind\fP (logiczna; domyślnie: wyłączona; od Linuksa 2.4)
.\" Precisely: patch-2.4.0-test10
.\"
.\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt
Jeżeli ustawione, pozwala procesowi na wywołanie funkcji \fBbind\fP() z
nielokalnym adresem IP, co może być całkiem przydatne, ale może popsuć
niektóre aplikacje.
.TP 
\fIip6frag_time\fP (liczba; domyślnie: 30)
.\"
.\" The following is from Linux 2.6.12: Documentation/networking/ip-sysctl.txt
Czas w sekundach przetrzymywania w pamięci fragmentu IPv6.
.TP 
\fIip6frag_secret_interval\fP (liczba; domyślnie: 600)
Interwał (w sekundach) odświeżania sekretnego klucza funkcji mieszającej
(lub czasu życia tego klucza) dla fragmentów IPv6.
.TP 
\fIipfrag_high_thresh\fP (liczba)
.TQ
\fIipfrag_low_thresh\fP (liczba)
Jeśli liczba zebranych w kolejce fragmentów IP osiągnie wartość określoną
przez \fIipfrag_high_thresh\fP, wtedy kolejka jest opróżniana do ilości
określonej w \fIipfrag_low_thresh\fP. Zawiera ona liczbę całkowitą z podaną
liczbą bajtów.
.TP 
\fIneigh/*\fP
.\" FIXME Document the conf/*/* interfaces
.\"
.\" FIXME Document the route/* interfaces
Patrz \fBarp\fP(7).
.SS "Kontrolki systemowe (ioctl)"
Do protokołu \fBip\fP mają zastosowanie wszystkie kontrolki wejścia/wyjścia
opisane w \fBsocket\fP(7).
.P
.\" FIXME Add a discussion of multicasting
Kontrolki konfigurowania ogólnych parametrów urządzenia są opisane w
\fBnetdevice\fP(7).
.SH BŁĘDY
.\" FIXME document all errors.
.\"     We should really fix the kernels to give more uniform
.\"     error returns (ENOMEM vs ENOBUFS, EPERM vs EACCES etc.)
.TP 
\fBEACCES\fP
Użytkownik próbował wykonać operację, nie mając potrzebnych praw. Obejmuje
to: wysyłanie pakietu na adres rozgłoszeniowy bez ustawionego znacznika
\fBSO_BROADCAST\fP, wysyłanie pakietu \fIzakazaną\fP drogą, próbę modyfikacji
ustawień zapory sieciowej, nie mając uprawnień administratora (ustawionego
przywileju \fBCAP_NET_ADMIN\fP), próbę przypisania uprzywilejowanego portu, nie
mając uprawnień administratora (ustawionego przywileju
\fBCAP_NET_BIND_SERVICE\fP).
.TP 
\fBEADDRINUSE\fP
Próbowano przypisać port do adresu będącego już w użyciu.
.TP 
\fBEADDRNOTAVAIL\fP
Zażądano nieistniejącego interfejsu lub żądany adres źródłowy nie jest
adresem lokalnym.
.TP 
\fBEAGAIN\fP
Operacja na gnieździe z wyłączonym blokowaniem spowodowałaby zablokowanie.
.TP 
\fBEALREADY\fP
Operacja łączenia na gnieździe nieblokującym już trwa.
.TP 
\fBECONNABORTED\fP
Połączenie zostało zamknięte podczas \fBaccept\fP(2).
.TP 
\fBEHOSTUNREACH\fP
Brak wpisu określającego adres docelowy w tabeli trasowania. Błąd ten może
być wywołany przez komunikat ICMP od zdalnego routera lub dla lokalnej
tabeli trasowania.
.TP 
\fBEINVAL\fP
Przypisano niewłaściwy argument. W przypadku operacji wysyłania może to być
spowodowane przez wysyłanie drogą przypisaną do \fIczarnej dziury\fP.
.TP 
\fBEISCONN\fP
\fBconnect\fP(2) była wywołana na już połączonym gnieździe.
.TP 
\fBEMSGSIZE\fP
Datagram jest większy niż wartość MTU po drodze do celu i nie może być
podzielony.
.TP 
\fBENOBUFS\fP
.TQ
\fBENOMEM\fP
Niewystarczająca ilość dostępnej pamięci. Często oznacza to, że
przydzielanie pamięci jest ograniczone przez ograniczenia bufora gniazda, a
nie przez ograniczenia pamięci systemowej. Jednak nie jest to pewne na 100%.
.TP 
\fBENOENT\fP
\fBSIOCGSTAMP\fP było wywołane na gnieździe, do którego nie dotarł żaden
pakiet.
.TP 
\fBENOPKG\fP
Podsystem jądra nie był konfigurowany.
.TP 
\fBENOPROTOOPT\fP i \fBEOPNOTSUPP\fP
Przypisano niewłaściwą opcję gniazda.
.TP 
\fBENOTCONN\fP
Operacja może być wykonana tylko na połączonym gnieździe, a gniazdo nie
zostało połączone.
.TP 
\fBEPERM\fP
Użytkownik nie ma praw do ustawiania wysokiego priorytetu, zmiany
konfiguracji lub wysyłania sygnałów do żądanych procesów lub grup procesów.
.TP 
\fBEPIPE\fP
Połączenie zostało nieoczekiwanie zamknięte lub wyłączył się drugi koniec.
.TP 
\fBESOCKTNOSUPPORT\fP
Gniazdo nie jest skonfigurowane lub zażądano nieznanego typu gniazda.
.P
Inne błędy mogą być generowane przez protokoły wyższych warstw; obejrzyj
\fBtcp\fP(7), \fBraw\fP(7), \fBudp\fP(7) i \fBsocket\fP(7).
.SH UWAGI
.\" IP_XFRM_POLICY is Linux-specific
.\" IP_IPSEC_POLICY is a nonstandard extension, also present on some BSDs
\fBIP_FREEBIND\fP, \fBIP_MSFILTER\fP, \fBIP_MTU\fP, \fBIP_MTU_DISCOVER\fP,
\fBIP_RECVORIGDSTADDR\fP, \fBIP_PASSSEC\fP, \fBIP_PKTINFO\fP, \fBIP_RECVERR\fP,
\fBIP_ROUTER_ALERT\fP, and \fBIP_TRANSPARENT\fP są typowo Linuksowe.
.P
Należy być bardzo ostrożnym przy stosowaniu opcji \fBSO_BROADCAST\fP \- nie jest
ona w systemie Linux uprzywilejowana, jest więc łatwo przeciążyć sieć za
pomocą niedbale użytych rozgłoszeń. W przypadku protokołów nowych aplikacji
lepiej używać grupy adresowej zamiast rozgłoszeń. Stosowanie adresów
rozgłoszeniowych jest niezalecane. W RFC 6762 pokazany jest przykład
protokołu (mDNS) korzystającego z nowocześniejszego podejścia do komunikacji
z otwartą grupą stacji w sieci lokalnej.
.P
Niektóre inne implementacje gniazd BSD dopuszczają dla gniazd opcje
\fBIP_RCVDSTADDR\fP i \fBIP_RECVIF\fP używane do pobierania adresu przeznaczenia i
interfejsu odbieranych datagramów. Linux udostępnia bardziej ogólną opcję
\fBIP_PKTINFO\fP, robiącą to samo.
.P
Niektóre implementacja gniazd BSD także udostępniają opcję \fBIP_RECVTTL\fP,
ale łącznie z przychodzącym pakietem jest przekazywany pomocniczy komunikat
o typie \fBIP_RECVTTL\fP. W tym właśnie różni się to od opcji \fBIP_TTL\fP,
używanej w Linuksie.
.P
Używanie poziomu opcji gniazd \fBSOL_IP\fP jest nieprzenośne; gniazda oparte na
BSD używają poziomu \fBIPPROTO_IP\fP.
.P
\fBINADDR_ANY\fP (0.0.0.0) i \fBINADDR_BROADCAST\fP (255.255.255.255) są neutralne
pod kątem kolejności bajtów. Oznacza to, że nie wpływa na nie \fBhtonl\fP(3).
.SS Zgodność
Dla zgodności z Linuksem 2.0, wciąż jest dopuszczalna przestarzała składnia
\fBsocket(AF_INET, SOCK_PACKET, \fP\fIprotokół\fP\fB)\fP, by stworzyć gniazdo typu
\fBpacket\fP(7). Nie jest to zbyt poprawne i powinno być zastępowane przez
\fBsocket(AF_PACKET, SOCK_RAW, \fP\fIprotokół\fP\fB)\fP. Głównym powodem jest różnica
w strukturze adresowej \fIsockaddr_ll\fP przechowującej informacje dla warstwy
łącza (dokładniej: warstwy kanałowej), które kiedyś przechowywane były w
\fBsockaddr_pkt\fP.
.SH USTERKI
Jest zbyt wiele nieokreślonych wartości błędów.
.P
Błąd używany do zdiagnozowania wyczerpania się zakresu portów efemerycznych
różni się między poszczególnymi wywołaniami systemowymi (\fBconnect\fP(2),
\fBbind\fP(2), \fBlisten\fP(2), \fBsendto\fP(2)), które przypisują porty efemeryczne.
.P
.\" .P
.\" Some versions of glibc forget to declare
.\" .IR in_pktinfo .
.\" Workaround currently is to copy it into your program from this man page.
Nie są opisane kontrolki wejścia/wyjścia do konfigurowania specyficznych dla
IP opcji interfejsu i tabele ARP.
.P
.\" .SH AUTHORS
.\" This man page was written by Andi Kleen.
Pobieranie pierwotnego adresu docelowego za pomocą wywołania \fBrecvmsg\fP(2) z
\fBMSG_ERRQUEUE\fP w \fImsg_name\fP nie działa w niektórych jądrach Linux 2.2.
.SH "ZOBACZ TAKŻE"
\fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBbyteorder\fP(3), \fBcapabilities\fP(7),
\fBicmp\fP(7), \fBipv6\fP(7), \fBnetdevice\fP(7), \fBnetlink\fP(7), \fBraw\fP(7),
\fBsocket\fP(7), \fBtcp\fP(7), \fBudp\fP(7), \fBip\fP(8)
.P
Plik źródeł jądra \fIDocumentation/networking/ip\-sysctl.txt\fP.
.P
RFC\ 791 \- oryginalny opis IP. RFC\ 1122 \- wymagania stacji IPv4. RFC\ 1812
\- wymagania rutera IPv4.
.PP
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są:
Paweł Wilk <siefca@pl.qmail.org>,
Robert Luberda <robert@debian.org>
i
Michał Kułach <michal.kulach@gmail.com>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
