ip

IP(7)           Ð ÑководÑÑво пÑогÑаммиÑÑа Linux           IP(7)



ÐÐЯ
       ip - ÑеализаÑÐ¸Ñ Ð¿ÑоÑокола IPv4 в Linux

ÐÐÐÐÐ
       #include <sys/socket.h>
       #include <netinet/in.h>
       #include <netinet/ip.h> /* вклÑÑÐ°ÐµÑ Ð¿ÑедÑдÑÑий */

       tcp_socket = socket(AF_INET, SOCK_STREAM, 0);
       udp_socket = socket(AF_INET, SOCK_DGRAM, 0);
       raw_socket = socket(AF_INET, SOCK_RAW, protocol);

ÐÐÐСÐÐÐÐ
       Ð Linux Ñеализован пÑоÑокол ÐнÑеÑнеÑа (Internet
       Protocol, IP) веÑÑии 4, опиÑаннÑй в RFC 791 и RFC 1122. Ð
       модÑле ip ÑодеÑжиÑÑÑ ÑеализаÑÐ¸Ñ Ð²ÑоÑого ÑÑовнÑ
       гÑÑпповÑÑ Ð¼Ð½Ð¾Ð³Ð¾Ð°Ð´ÑеÑнÑÑ ÑообÑений, коÑоÑаÑ
       ÑооÑвеÑÑÑвÑÐµÑ RFC 1112. ÐÑоме Ñого, в нÑм имееÑÑÑ
       маÑÑÑÑÑизаÑÐ¾Ñ IP Ñ ÑилÑÑÑаÑией пакеÑов.

       ÐÑогÑаммнÑй инÑеÑÑÐµÐ¹Ñ ÑовмеÑÑим Ñ Ð¸Ð½ÑеÑÑейÑом
       ÑокеÑов BSD. Ðолее подÑобнÑÑ Ð¸Ð½ÑоÑмаÑиÑ
       ÑмоÑÑиÑе в socket(7).

       Ð¡Ð¾ÐºÐµÑ IP ÑоздаÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ socket(2):

           socket(AF_INET, socket_type, protocol);

       ÐозможнÑе ÑÐ¸Ð¿Ñ ÑокеÑа (socket_type): SOCK_STREAM (длÑ
       оÑкÑÑÑÐ¸Ñ ÑокеÑа tcp(7)), SOCK_DGRAM (Ð´Ð»Ñ Ð¾ÑкÑÑÑиÑ
       ÑокеÑа udp(7)), SOCK_RAW (Ð´Ð»Ñ Ð¾ÑкÑÑÑÐ¸Ñ ÑокеÑа raw(7) Ñ
       пÑÑмÑм доÑÑÑпом к пÑоÑÐ¾ÐºÐ¾Ð»Ñ IP). Ð protocol задаÑÑÑÑ
       пÑоÑокол IP, коÑоÑÑй ÑказÑваеÑÑÑ Ð²
       IP-заголовке пÑинимаемÑÑ Ð¸Ð»Ð¸ оÑпÑавлÑемÑÑ
       пакеÑов. ÐопÑÑÑимÑе знаÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑа
       protocol: 0 и IPPROTO_TCP â Ð´Ð»Ñ ÑокеÑов TCP, 0 и IPPROTO_UDP â
       Ð´Ð»Ñ ÑокеÑов UDP. ÐÐ»Ñ SOCK_RAW можно ÑказаÑÑ Ð»Ñбой
       из IP-пÑоÑоколов, опиÑаннÑÑ Ð² RFC 1700 и
       заÑегиÑÑÑиÑованнÑÑ Ð² IANA.

       ÐÑли пÑоÑеÑÑ ÑоÑÐµÑ Ð¿ÑинимаÑÑ Ð½Ð¾Ð²Ñе вÑодÑÑие
       пакеÑÑ Ð¸Ð»Ð¸ ÑоединениÑ, Ñо он должен ÑвÑзаÑÑ
       ÑÐ¾ÐºÐµÑ Ñ Ð°Ð´ÑеÑом локалÑного инÑеÑÑейÑа Ñ
       помоÑÑÑ bind(2). ÐаждÑй IP-ÑÐ¾ÐºÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑвÑзан
       ÑолÑко Ñ Ð¾Ð´Ð½Ð¾Ð¹ задаваемой локалÑной
       паÑой (адÑеÑ, поÑÑ). ÐÑли в вÑзове bind(2) ÑказаÑÑ
       INADDR_ANY, Ñо ÑÐ¾ÐºÐµÑ Ð±ÑÐ´ÐµÑ ÑвÑзан Ñо вÑеми
       локалÑнÑми инÑеÑÑейÑами. ÐÑи вÑзове listen(2)
       Ð´Ð»Ñ Ð½ÐµÑвÑзанного ÑокеÑа пÑоиÑÑодиÑ
       авÑомаÑиÑеÑÐºÐ°Ñ Ð¿ÑивÑзка к пÑоизволÑно
       вÑбÑÐ°Ð½Ð½Ð¾Ð¼Ñ ÑÐ²Ð¾Ð±Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð¿Ð¾ÑÑÑ Ñ Ð»Ð¾ÐºÐ°Ð»ÑнÑм
       адÑеÑом INADDR_ANY. ÐÑи вÑзове connect(2) длÑ
       неÑвÑзанного ÑокеÑа пÑоиÑÑодиÑ
       авÑомаÑиÑеÑÐºÐ°Ñ Ð¿ÑивÑзка к пÑоизволÑно
       вÑбÑÐ°Ð½Ð½Ð¾Ð¼Ñ ÑÐ²Ð¾Ð±Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð¿Ð¾ÑÑÑ Ð¸Ð»Ð¸
       иÑполÑзÑÐµÐ¼Ð¾Ð¼Ñ Ð¾Ð±ÑÐµÐ¼Ñ Ð¿Ð¾ÑÑÑ Ñ Ð»Ð¾ÐºÐ°Ð»ÑнÑм
       адÑеÑом INADDR_ANY.

       ÐоÑле закÑÑÑÐ¸Ñ ÑвÑзанного локалÑного
       TCP-ÑокеÑа его адÑÐµÑ Ð±ÑÐ´ÐµÑ Ð½ÐµÐ´Ð¾ÑÑÑпен в
       ÑеÑение некоÑоÑого вÑемени, еÑли ÑолÑко не
       бÑл ÑÑÑановлен Ñлаг SO_REUSEADDR. СледÑеÑ
       пÑоÑвлÑÑÑ Ð¾ÑÑоÑожноÑÑÑ Ð¿Ñи иÑполÑзовании
       ÑÑого Ñлага, поÑколÑÐºÑ ÑÑо Ð´ÐµÐ»Ð°ÐµÑ TCP менее
       надежнÑм.

   ФоÑÐ¼Ð°Ñ Ð°Ð´ÑеÑа
       ÐдÑÐµÑ IP-ÑокеÑа опÑеделÑеÑÑÑ ÐºÐ°Ðº комбинаÑиÑ
       IP-адÑеÑа инÑеÑÑейÑа и номеÑа поÑÑа. Ð Ñамом
       пÑоÑоколе IP Ð½ÐµÑ Ð½Ð¾Ð¼ÐµÑов поÑÑов, они
       ÑеализÑÑÑÑÑ Ð¿ÑоÑоколами более вÑÑокого
       ÑÑовнÑ, напÑÐ¸Ð¼ÐµÑ udp(7) и tcp(7). У
       неÑÑÑÑкÑÑÑиÑованнÑÑ (raw) ÑокеÑов номеÑ
       пÑоÑокола IP ÑказÑваеÑÑÑ Ð² sin_port.

           struct sockaddr_in {
               sa_family_t    sin_family; /* ÑемейÑÑво адÑеÑов: AF_INET */
               in_port_t      sin_port;   /* поÑÑ ÑокеÑа в ÑеÑевом поÑÑдке
                                             Ð±Ð°Ð¹Ñ */
               struct in_addr sin_addr;   /* ÐнÑеÑнеÑ-адÑÐµÑ */
           };

           /* ÐнÑеÑнеÑ-адÑÐµÑ */
           struct in_addr {
               uint32_t       s_addr;     /* адÑÐµÑ Ð² ÑеÑевом поÑÑдке Ð±Ð°Ð¹Ñ */
           };

       ÐнаÑение sin_family вÑегда ÑÑÑанавливаеÑÑÑ Ð²
       AF_INET. ÐÑо обÑзаÑелÑно; в Linux 2.2 болÑÑÐ°Ñ ÑаÑÑÑ
       ÑеÑевÑÑ ÑÑнкÑий возвÑаÑÐ°ÐµÑ ÐºÐ¾Ð´ оÑибки EINVAL,
       еÑли ÑÑо ÑÑловие не вÑполнÑеÑÑÑ. Ð sin_port
       ÑказÑваеÑÑÑ Ð½Ð¾Ð¼ÐµÑ Ð¿Ð¾ÑÑа в ÑеÑевом поÑÑдке
       байÑ. ÐоÑÑÑ, номеÑа коÑоÑÑÑ Ð¼ÐµÐ½ÑÑе 1024,
       назÑваÑÑÑÑ Ð¿ÑивилегиÑованнÑми поÑÑами (или,
       иногда, заÑезеÑвиÑованнÑми поÑÑами).
       ТолÑко пÑивилегиÑованнÑе пÑоÑеÑÑÑ (в Linux:
       пÑоÑеÑÑÑ Ñ Ð¼Ð°Ð½Ð´Ð°Ñом CAP_NET_BIND_SERVICE в
       полÑзоваÑелÑÑком пÑоÑÑÑанÑÑве имÑн,
       ÑпÑавлÑÑÑим его ÑеÑевÑм пÑоÑÑÑанÑÑвом имÑн)
       могÑÑ Ð±ÑÑÑ ÑвÑÐ·Ð°Ð½Ñ Ñ ÑÑими ÑокеÑами Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ
       bind(2). ÐамеÑим, ÑÑо Ñ Ð½ÐµÑÑÑÑкÑÑÑиÑованного
       пÑоÑокола IPv4 Ð½ÐµÑ Ð¿Ð¾Ð½ÑÑÐ¸Ñ Ð¿Ð¾ÑÑов как ÑаковÑÑ,
       они ÑеализÑÑÑÑÑ ÑолÑко пÑоÑоколами более
       вÑÑокого ÑÑовнÑ, Ñипа tcp(7) и udp(7).

       Ð sin_addr ÑказÑваеÑÑÑ IP-адÑÐµÑ Ñзла. Рполе s_addr
       ÑÑÑÑкÑÑÑÑ struct in_addr ÑодеÑжиÑÑÑ Ð°Ð´ÑÐµÑ Ð¸Ð½ÑеÑÑейÑа
       Ñзла в ÑеÑевом поÑÑдке байÑ. ÐнаÑение in_addr
       должно бÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из INADDR_* (напÑимеÑ,
       INADDR_ANY) или ÑÑÑанавливаÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ
       библиоÑеÑнÑÑ ÑÑнкÑий inet_aton(3), inet_addr(3),
       inet_makeaddr(3) или напÑÑмÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ
       пÑеобÑазоваÑÐµÐ»Ñ Ð¸Ð¼Ñн (ÑмоÑÑиÑе gethostbyname(3)).

       ÐдÑеÑа IPv4 делÑÑÑÑ Ð½Ð° однознаÑнÑе (unicast),
       ÑиÑоковеÑаÑелÑнÑе (broadcast) и многоадÑеÑнÑе
       (multicast). ÐднознаÑнÑй адÑÐµÑ ÑказÑÐ²Ð°ÐµÑ Ð½Ð° один
       инÑеÑÑÐµÐ¹Ñ Ñзла, ÑиÑоковеÑаÑелÑнÑй адÑеÑ
       ÑказÑÐ²Ð°ÐµÑ Ð½Ð°  вÑе ÑÐ·Ð»Ñ Ð² ÑеÑи, а
       многоадÑеÑнÑй ÑказÑÐ²Ð°ÐµÑ Ð½Ð° вÑе ÑзлÑ
       многоадÑеÑной (multicast group). ÐейÑагÑÐ°Ð¼Ð¼Ñ Ð¼Ð¾Ð³ÑÑ
       поÑÑлаÑÑÑÑ Ð¸Ð»Ð¸ пÑинимаÑÑÑÑ Ð¿Ð¾
       ÑиÑоковеÑаÑелÑнÑм адÑеÑам ÑолÑко, еÑли длÑ
       ÑокеÑа ÑÑÑановлен Ñлаг SO_BROADCAST. Ð ÑекÑÑей
       ÑеализаÑии ÑокеÑам, оÑиенÑиÑованнÑм на
       ÑоединениÑ, ÑазÑеÑено имеÑÑ ÑолÑко
       однознаÑнÑе адÑеÑа.

       ÐамеÑим, ÑÑо знаÑение адÑеÑа и поÑÑа вÑегда
       ÑÑаниÑÑÑ Ð² ÑеÑевом поÑÑдке байÑ. Ð ÑаÑÑноÑÑи, ÑÑо
       ознаÑаеÑ, ÑÑо ÑÑебÑеÑÑÑ Ð²ÑзÑваÑÑ htons(3) Ð´Ð»Ñ ÑиÑла,
       обознаÑаÑÑего поÑÑ. ÐÑе ÑÑнкÑии из
       ÑÑандаÑÑной библиоÑеки, иÑполÑзÑемÑе длÑ
       ÑабоÑÑ Ñ Ð°Ð´ÑеÑами/поÑÑами, иÑполÑзÑÑÑ ÑеÑевой
       поÑÑдок байÑ.

       ÐÑÑÑ Ð½ÐµÑколÑко ÑпеÑиалÑнÑÑ Ð°Ð´ÑеÑов: INADDR_LOOPBACK
       (127.0.0.1) вÑегда ÑÑÑлаеÑÑÑ Ð½Ð° локалÑнÑй Ñзел
       ÑеÑез инÑеÑÑÐµÐ¹Ñ Ð¾Ð±ÑаÑной пеÑли; INADDR_ANY (0.0.0.0)
       ознаÑÐ°ÐµÑ Ð»Ñбой адÑÐµÑ Ð´Ð»Ñ ÑвÑзÑваниÑ;
       INADDR_BROADCAST (255.255.255.255) ознаÑÐ°ÐµÑ Ð»Ñбой Ñзел и,
       по иÑÑоÑиÑеÑким пÑиÑинам, пÑи ÑвÑзÑвании
       подобен INADDR_ANY.

   ÐаÑамеÑÑÑ ÑокеÑа
       IP поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð½ÐµÐºÐ¾ÑоÑÑе паÑамеÑÑÑ ÑокеÑа,
       оÑноÑÑÑиеÑÑ Ðº пÑоÑоколÑ, коÑоÑÑе могÑÑ Ð±ÑÑÑ
       ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ setsockopt(2) и пÑоÑиÑÐ°Ð½Ñ Ñ
       помоÑÑÑ getsockopt(2). ÐнаÑением ÑÑÐ¾Ð²Ð½Ñ (level)
       паÑамеÑÑов ÑокеÑа Ð´Ð»Ñ IP ÑвлÑеÑÑÑ IPPROTO_IP.
       ÐогиÑеÑкий Ñлаг в виде Ñелого ÑиÑла Ñо
       знаÑением Ð½Ð¾Ð»Ñ Ð¾Ð·Ð½Ð°ÑÐ°ÐµÑ Â«Ð»Ð¾Ð¶Ñ», дÑÑгие
       знаÑÐµÐ½Ð¸Ñ â «иÑÑина».

       ÐÑли ÑокеÑÑ Ð¿ÐµÑедаеÑÑÑ Ð½ÐµÐ¿ÑавилÑнÑй паÑамеÑÑ,
       Ñо getsockopt(2) и setsockopt(2) завеÑÑаÑÑÑÑ Ñ Ð¾Ñибкой
       ENOPROTOOPT.

       IP_ADD_MEMBERSHIP (наÑÐ¸Ð½Ð°Ñ Ñ Linux 1.2)
              ÐÑиÑоединиÑÑÑÑ Ðº многоадÑеÑной гÑÑппе. Ð
              аÑгÑменÑе ÑказÑваеÑÑÑ ÑÑÑÑкÑÑÑа ip_mreqn.

                  struct ip_mreqn {
                      struct in_addr imr_multiaddr; /* IP-адÑÐµÑ Ð³ÑÑÐ¿Ð¿Ñ */
                      struct in_addr imr_address;   /* IP локалÑного
                                                       инÑеÑÑейÑа */
                      int            imr_ifindex;   /* Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð½ÑеÑÑейÑа */
                  };

              Ð imr_multiaddr ÑодеÑжиÑÑÑ Ð°Ð´ÑеÑ
              многоадÑеÑной гÑÑппÑ, в коÑоÑÑÑ
              пÑиложение ÑоÑÐµÑ Ð²Ð¾Ð¹Ñи или вÑйÑи. ÐÑо
              должен бÑÑÑ Ð¿ÑавилÑнÑй адÑеÑ
              многоадÑеÑной ÑаÑÑÑлки (инаÑе setsockopt(2)
              завеÑÑиÑÑÑ Ñ Ð¾Ñибкой EINVAL). Ð imr_address
              ÑказÑваеÑÑÑ Ð°Ð´ÑÐµÑ Ð»Ð¾ÐºÐ°Ð»Ñного инÑеÑÑейÑа,
              ÑеÑез коÑоÑÑй ÑиÑÑема должна войÑи в
              многоадÑеÑнÑÑ Ð³ÑÑппÑ; еÑли Ñказано
              знаÑение INADDR_ANY, Ñо нÑжнÑй инÑеÑÑейÑ
              вÑбиÑаеÑÑÑ ÑиÑÑемой ÑамоÑÑоÑÑелÑно. Ð
              imr_ifindex ÑказÑваеÑÑÑ Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð½ÑеÑÑейÑа,
              ÑеÑез коÑоÑÑй нÑжно войÑи/вÑйÑи в гÑÑппÑ
              imr_multiaddr, или 0, еÑли инÑеÑÑÐµÐ¹Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ
              лÑбÑм.

              СÑÑÑкÑÑÑа ip_mreqn доÑÑÑпна ÑолÑко наÑÐ¸Ð½Ð°Ñ Ñ
              Linux 2.2. ÐÐ»Ñ ÑовмеÑÑимоÑÑи, ÑÑаÑÐ°Ñ ÑÑÑÑкÑÑÑа
              ip_mreq (ÑÑÑеÑÑвÑÐµÑ Ñ Linux 1.2) по-пÑежнемÑ
              поддеÑживаеÑÑÑ; она оÑлиÑаеÑÑÑ Ð¾Ñ ip_mreqn
              ÑолÑко оÑÑÑÑÑÑвием Ð¿Ð¾Ð»Ñ imr_ifindex (пÑи
              пеÑедаÑе ÑдÑо опÑеделÑÐµÑ Ð½ÑжнÑÑ ÑÑÑÑкÑÑÑÑ
              иÑÑÐ¾Ð´Ñ Ð¸Ð· ÑазмеÑа, пеÑеданного в optlen).

              IP_ADD_MEMBERSHIP допÑÑÑим ÑолÑко Ð´Ð»Ñ setsockopt(2).

       IP_ADD_SOURCE_MEMBERSHIP (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.4.22 / 2.5.68)
              ÐÑиÑоединиÑÑÑÑ Ðº многоадÑеÑной гÑÑппе и
              ÑазÑеÑиÑÑ Ð¿ÑинимаÑÑ Ð´Ð°Ð½Ð½Ñе ÑолÑко из
              Ñказанного иÑÑоÑника. ÐÑгÑменÑом
              ÑвлÑеÑÑÑ ÑÑÑÑкÑÑÑа ip_mreq_source.

                  struct ip_mreq_source {
                      struct in_addr imr_multiaddr;  /* IP многоадÑеÑной
                                                        гÑÑÐ¿Ð¿Ñ */
                      struct in_addr imr_interface;  /* IP-адÑÐµÑ Ð»Ð¾ÐºÐ°Ð»Ñного
                                                        инÑеÑÑейÑа */
                      struct in_addr imr_sourceaddr; /* IP-адÑÐµÑ Ð¼Ð½Ð¾Ð³Ð¾Ð°Ð´ÑеÑного
                                                        иÑÑоÑника */
                  };

              СÑÑÑкÑÑÑа ip_mreq_source поÑожа на ip_mreqn,
              коÑоÑÐ°Ñ Ð¾Ð¿Ð¸Ñана в Ñазделе о IP_ADD_MEMBERSIP.
              Ðоле imr_multiaddr ÑодеÑÐ¶Ð¸Ñ Ð°Ð´ÑеÑ
              многоадÑеÑной гÑÑппÑ, к коÑоÑой
              пÑиложение ÑоÑÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑиÑÑÑÑ Ð¸Ð»Ð¸ вÑйÑи.
              Ðоле imr_interface ÑодеÑÐ¶Ð¸Ñ Ð°Ð´ÑÐµÑ Ð»Ð¾ÐºÐ°Ð»Ñного
              инÑеÑÑейÑа, Ñ ÐºÐ¾ÑоÑого ÑиÑÑема должна
              подклÑÑаÑÑÑÑ Ðº многоадÑеÑной гÑÑппе. Ð
              поле imr_sourceaddr ÑодеÑжиÑÑÑ Ð°Ð´ÑеÑ
              иÑÑоÑника, из коÑоÑого пÑиложение ÑоÑеÑ
              полÑÑаÑÑ Ð´Ð°Ð½Ð½Ñе.

              ÐÐ»Ñ Ð¿ÑиÑма даннÑÑ Ð¸Ð· неÑколÑкиÑ
              иÑÑоÑников ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾
              иÑполÑзоваÑÑ Ð½ÐµÑколÑко Ñаз.

       IP_BIND_ADDRESS_NO_PORT (наÑÐ¸Ð½Ð°Ñ Ñ Linux 4.2)
              ÐнÑоÑмиÑÑÐµÑ ÑдÑо, ÑÑо не ÑÑебÑеÑÑÑ
              ÑезеÑвиÑоваÑÑ ÑÑемеÑнÑй поÑÑ Ð¿Ñи
              иÑполÑзовании bind(2) Ñ Ð½Ð¾Ð¼ÐµÑом поÑÑа 0.
              Ðозднее, поÑÑ Ð±ÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки вÑбÑан
              пÑи connect(2); ÑÑо позволÑÐµÑ Ð¸ÑполÑзоваÑÑ
              обÑий иÑÑодÑÑий поÑÑ Ð¿Ð¾ÐºÐ° ÑникалÑна
              ÑвÑзка 4-Ñ Ð·Ð½Ð°Ñений.

       IP_BLOCK_SOURCE (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.4.22 / 2.5.68)
              ÐÑекÑаÑиÑÑ Ð¿ÑиÑм многоадÑеÑнÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð·
              Ñказанного иÑÑоÑника заданной гÑÑппÑ.
              ÐÑо допÑÑÑимо, еÑли пÑиложение
              подпиÑÑвалоÑÑ Ð½Ð° многоадÑеÑнÑÑ Ð³ÑÑÐ¿Ð¿Ñ Ñ
              помоÑÑÑ IP_ADD_MEMBERSHIP или IP_ADD_SOURCE_MEMBERSHIP.

              ÐÑгÑменÑом ÑвлÑеÑÑÑ ÑÑÑÑкÑÑÑа ip_mreq_source,
              опиÑÐ°Ð½Ð½Ð°Ñ Ð² Ñазделе о IP_ADD_SOURCE_MEMBERSHIP.

       IP_DROP_MEMBERSHIP (наÑÐ¸Ð½Ð°Ñ Ñ Linux 1.2)
              ÐÑйÑи из многоадÑеÑной гÑÑппÑ.
              ÐÑгÑменÑом ÑвлÑеÑÑÑ ÑÑÑÑкÑÑÑа ip_mreqn или
              ip_mreq, опиÑана в IP_ADD_MEMBERSHIP.

       IP_DROP_SOURCE_MEMBERSHIP (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.4.22 / 2.5.68)
              ÐÑйÑи из Ñказанной гÑÑÐ¿Ð¿Ñ â Ñо еÑÑÑ
              пÑекÑаÑиÑÑ Ð¿ÑиÑм даннÑÑ Ñказанной
              многоадÑеÑной гÑÑппÑ, коÑоÑÑе поÑÑÑпаÑÑ
              из Ñказанного иÑÑоÑника. ÐÑли
              пÑиложение подпиÑано на неÑколÑко
              иÑÑоÑников одной гÑÑппÑ, Ñо даннÑе из
              оÑÑавÑиÑÑÑ Ð¸ÑÑоÑников пÑÐ¾Ð´Ð¾Ð»Ð¶Ð°Ñ Ð¿Ð¾ÑÑÑпаÑÑ.
              ЧÑÐ¾Ð±Ñ Ð¿ÑекÑаÑиÑÑ Ð¿ÑиÑм даннÑÑ Ð¸Ð· вÑеÑ
              иÑÑоÑников ÑÑазÑ, иÑполÑзÑйÑе
              IP_DROP_MEMBERSHIP.

              ÐÑгÑменÑом ÑвлÑеÑÑÑ ÑÑÑÑкÑÑÑа ip_mreq_source,
              опиÑÐ°Ð½Ð½Ð°Ñ Ð² Ñазделе о IP_ADD_SOURCE_MEMBERSHIP.

       IP_FREEBIND (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.4)
              ÐÑÐ¾Ñ Ð»Ð¾Ð³Ð¸ÑеÑкий паÑамеÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑеÑ
              пÑивÑзаÑÑÑÑ (еÑли знаÑение Ñавно
              «иÑÑина») к IP-адÑеÑÑ, коÑоÑÑй не ÑвлÑеÑÑÑ
              локалÑнÑм или (пока) не ÑÑÑеÑÑвÑеÑ. ÐÑо
              позволÑÐµÑ Ð¿ÑоÑлÑÑиваÑÑ ÑокеÑ, не имеÑ
              нижележаÑего ÑеÑевого инÑеÑÑейÑа или
              назнаÑенного динамиÑеÑкого IP-адÑеÑа,
              коÑоÑÑÑ Ð¼Ð¾Ð¶ÐµÑ ÐµÑÑ Ð½Ðµ бÑÑÑ, когда
              пÑиложение пÑÑаеÑÑÑ ÑвÑзаÑÑÑÑ Ñ Ð½Ð¸Ð¼. ÐÑоÑ
              паÑамеÑÑ Ð¸Ð¼ÐµÐµÑ ÑквиваленÑнÑй инÑеÑÑейÑ
              ip_nonlocal_bind (опиÑан далее) в /proc на
              каждÑй ÑокеÑ.

       IP_HDRINCL (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.0)
              ÐÑли знаÑение Ñавно «иÑÑина», Ñо ÑÑо
              ознаÑаеÑ, ÑÑо полÑзоваÑÐµÐ»Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸Ð»
              заголовок IP в наÑало ÑÐ²Ð¾Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ.
              ÐопÑÑÑим ÑолÑко Ð´Ð»Ñ ÑокеÑов SOCK_RAW; более
              подÑобнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ ÑмоÑÑиÑе в raw(7). ÐÑли
              ÑÑÐ¾Ñ Ñлаг ÑÑÑановлен, Ñо знаÑениÑ,
              заданнÑе паÑамеÑÑами IP_OPTIONS, IP_TTL и
              IP_TOS, игноÑиÑÑÑÑÑÑ.

       IP_MSFILTER (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.4.22 / 2.5.68)
              ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿ÑедоÑÑавлÑÐµÑ Ð´Ð¾ÑÑÑп к
              ÑаÑÑиÑÐµÐ½Ð½Ð¾Ð¼Ñ Ð¿ÑогÑÐ°Ð¼Ð¼Ð½Ð¾Ð¼Ñ Ð¸Ð½ÑеÑÑейÑÑ
              ÑилÑÑÑаÑии. ÐÑгÑменÑом ÑвлÑеÑÑÑ ÑÑÑÑкÑÑÑа
              ip_msfilter.

                  struct ip_msfilter {
                      struct in_addr imsf_multiaddr; /* IP-адÑеÑ
                                                        многоадÑеÑной гÑÑÐ¿Ð¿Ñ */
                      struct in_addr imsf_interface; /* IP-адÑÐµÑ Ð»Ð¾ÐºÐ°Ð»Ñного
                                                        инÑеÑÑейÑа */
                      uint32_t       imsf_fmode;     /* Режим ÑилÑÑÑаÑии */

                      uint32_t       imsf_numsrc;    /* ÐолиÑеÑÑво иÑÑоÑников в
                                                        ÑледÑÑÑем маÑÑиве */
                      struct in_addr imsf_slist[1];  /* ÐаÑÑив адÑеÑов
                                                        иÑÑоÑников */
                  };

              ÐÐ»Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ñежима ÑилÑÑÑаÑии ÑÑÑеÑÑвÑеÑ
              два макÑоÑа â MCAST_INCLUDE и MCAST_EXCLUDE.
              Также, ÑÑÑеÑÑвÑÐµÑ Ð¼Ð°ÐºÑÐ¾Ñ IP_MSFILTER_SIZE(n),
              коÑоÑÑм можно опÑеделиÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво
              памÑÑи, ÑÑебÑемой Ð´Ð»Ñ ÑÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑÑÑÑкÑÑÑÑ
              ip_msfilter Ñ n иÑÑоÑниками в ÑпиÑке
              иÑÑоÑников.

              Ðолное опиÑание ÑилÑÑÑаÑии
              многоадÑеÑнÑÑ Ð¸ÑÑоÑников гÑÑпп ÑмоÑÑиÑе
              в RFC 3376.

       IP_MTU (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.2)
              ÐозвÑаÑÐ°ÐµÑ Ð¸Ð·Ð²ÐµÑÑное в даннÑй моменÑ
              знаÑение MTU маÑÑÑÑÑа ÑекÑÑего ÑокеÑа.
              ÐозвÑаÑаеÑÑÑ Ñелое ÑиÑло.

              ÐаÑамеÑÑ IP_MTU допÑÑкаеÑÑÑ ÑолÑко длÑ
              getsockopt(2) и Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ ÑолÑко
              Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑÑнного ÑокеÑа.

       IP_MTU_DISCOVER (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.2)
              УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¸Ð»Ð¸ возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение
              Path MTU Discovery (обнаÑÑжение знаÑÐµÐ½Ð¸Ñ MTU
              маÑÑÑÑÑа) Ð´Ð»Ñ ÑокеÑа. ÐÑли он ÑÑÑановлен,
              Ñо Linux бÑÐ´ÐµÑ Ð¿ÑоизводиÑÑ Ð¾Ð±Ð½Ð°ÑÑжение
              знаÑÐµÐ½Ð¸Ñ MTU маÑÑÑÑÑа Ð´Ð»Ñ ÑокеÑов SOCK_STREAM
              ÑоглаÑно RFC 1191. ÐÐ»Ñ ÑокеÑов не SOCK_STREAM
              пÑи знаÑении IP_PMTUDISC_DO Ñ Ð²ÑÐµÑ Ð¸ÑÑодÑÑиÑ
              пакеÑов бÑÐ´ÐµÑ ÑÑÑанавливаÑÑÑÑ Ñлаг
              запÑеÑа ÑÑагменÑаÑии. ÐÑвеÑÑÑвенноÑÑÑ Ð·Ð°
              ÑÐ°Ð·Ð±Ð¸Ð²ÐºÑ Ð´Ð°Ð½Ð½ÑÑ Ð½Ð° пакеÑÑ ÑоглаÑно
              ÑазмеÑÑ MTU, и за вÑполнение, пÑи
              необÑодимоÑÑи, повÑоÑной пеÑедаÑи
              даннÑÑ, Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° полÑзоваÑеле. ЯдÑо
              бÑÐ´ÐµÑ Ð¾ÑвеÑгаÑÑ Ð¿Ð°ÐºÐµÑÑ (Ñ Ð¾Ñибкой EMSGSIZE),
              ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ Ð±Ð¾Ð»ÑÑе ÑекÑÑего знаÑениÑ
              MTU Ñ Ð¼Ð°ÑÑÑÑÑа. ÐÑи знаÑении IP_PMTUDISC_WANT
              дейÑагÑамма бÑÐ´ÐµÑ ÑÑагменÑиÑоваÑÑÑÑ Ð¿Ð¾
              ÑазмеÑÑ MTU, еÑли ÑÑебÑеÑÑÑ, инаÑе
              ÑÑÑанавливаеÑÑÑ Ñлаг запÑеÑа
              ÑÑагменÑаÑии.

              СиÑÑемное знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾
              пеÑеклÑÑаÑÑ Ð¼ÐµÐ¶Ð´Ñ IP_PMTUDISC_WANT и
              IP_PMTUDISC_DONT, запиÑÑваÑ, ÑооÑвеÑÑÑвенно,
              нÑлевое и ненÑлевое знаÑение в Ñайл
              /proc/sys/net/ipv4/ip_no_pmtu_disc.

              ÐÑокладка маÑÑÑÑÑа MTU    обнаÑÑжение и назнаÑение
              IP_PMTUDISC_WANT                   ÐÑполÑзоваÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ маÑÑÑÑÑа ÑÐ²Ð¾Ñ Ð·Ð½Ð°Ñение.
              IP_PMTUDISC_DONT                   Ðикогда не вÑполнÑÑÑ Ð¾Ð±Ð½Ð°ÑÑжение знаÑÐµÐ½Ð¸Ñ MTU маÑÑÑÑÑа.
              IP_PMTUDISC_DO                     ÐÑегда вÑполнÑÑÑ Ð¾Ð±Ð½Ð°ÑÑжение знаÑÐµÐ½Ð¸Ñ MTU маÑÑÑÑÑа.
              IP_PMTUDISC_PROBE                  УÑÑановиÑÑ DF, но игноÑиÑоваÑÑ Ð¼Ð°ÑÑÑÑÑ MTU.

              ÐÑли знаÑение Path MTU Discovery задано, Ñо
              ÑдÑо авÑомаÑиÑеÑки ÑÐ»ÐµÐ´Ð¸Ñ Ð·Ð° MTU маÑÑÑÑÑа
              Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑдалÑнного Ñзла. Ðогда Ñ
              некоÑоÑÑм Ñзлом ÑÑÑановлено
              Ñоединение Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ connect(2), ÑекÑÑее
              знаÑение MTU маÑÑÑÑÑа можно легко
              полÑÑиÑÑ ÑеÑез паÑамеÑÑ ÑокеÑа IP_MTU
              (напÑимеÑ, поÑле Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ Ð¾Ñибки
              EMSGSIZE). ÐнаÑение MTU Ð¼Ð¾Ð¶ÐµÑ Ñо вÑеменем
              менÑÑÑÑÑ. ÐÐ»Ñ ÑокеÑов без ÑÑÑановлениÑ
              ÑоединениÑ, коÑоÑÑе имеÑÑ Ð½ÐµÑколÑко
              Ñзлов-полÑÑаÑелей, новое знаÑение MTU
              Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñзла назнаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ
              бÑÑÑ Ð¿Ð¾Ð»ÑÑено Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¾ÑеÑеди оÑибок
              (ÑмоÑÑиÑе IP_RECVERR). ÐÑи каждом вÑодÑÑем
              ÑообÑении об обновлении MTU в оÑеÑедÑ
              бÑÐ´ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑÑÑ Ð½Ð¾Ð²Ð°Ñ Ð¾Ñибка.

              Ðо вÑÐµÐ¼Ñ Ð¿ÑоÑеÑÑа обнаÑÑÐ¶ÐµÐ½Ð¸Ñ MTU
              наÑалÑнÑе пакеÑÑ Ð¾Ñ Ð´ÐµÐ¹ÑагÑамнÑÑ ÑокеÑов
              могÑÑ Ð±ÑÑÑ Ð¾ÑбÑоÑенÑ. ÐÑиложениÑ,
              иÑполÑзÑÑÑие UDP, Ð´Ð¾Ð»Ð¶Ð½Ñ ÑÑиÑÑваÑÑ ÑÑо и не
              дÑмаÑÑ, ÑÑо ÑÑи пакеÑÑ Ð±ÑдÑÑ Ð¿ÐµÑеданÑ
              повÑоÑно.

              ЧÑÐ¾Ð±Ñ Ð·Ð°Ð¿ÑÑÑиÑÑ Ð¿ÑоÑеÑÑ Ð¾Ð±Ð½Ð°ÑÑÐ¶ÐµÐ½Ð¸Ñ MTU
              маÑÑÑÑÑа Ð´Ð»Ñ ÑокеÑов без ÑÑÑановлениÑ
              ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑнаÑала ÑÑÑановиÑÑ
              болÑÑой ÑÐ°Ð·Ð¼ÐµÑ Ð´ÐµÐ¹ÑагÑÐ°Ð¼Ð¼Ñ (Ñ ÑазмеÑом
              заголовка до 64ÐбайÑ) и ÑокÑаÑаÑÑ ÐµÐ³Ð¾
              пÑи изменении MTU маÑÑÑÑÑа.

              ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð½Ð°ÑалÑнÑÑ Ð¾ÑÐµÐ½ÐºÑ MTU маÑÑÑÑÑа,
              ÑоединиÑе дейÑагÑамнÑй ÑÐ¾ÐºÐµÑ Ñ Ð°Ð´ÑеÑом
              назнаÑениÑ, иÑполÑзÑÑ connect(2), и ÑзнайÑе
              знаÑение MTU пÑÑем вÑзова getsockopt(2) Ñ
              паÑамеÑÑом IP_MTU.

              Ðозможно ÑеализоваÑÑ Ð¾Ð±Ð½Ð°ÑÑжение MTU
              ÑоглаÑно RFC 4821 Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑокеÑов Ñипа
              SOCK_DGRAM или SOCK_RAW, ÑÑÑановив знаÑение
              IP_PMTUDISC_PROBE (доÑÑÑпно, наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.6.22).
              Ð ÑаÑÑноÑÑи, ÑÑо Ñакже полезно длÑ
              инÑÑÑÑменÑов диагноÑÑики, ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº
              tracepath(8), коÑоÑÑм нÑжно ÑмÑÑленно поÑÑлаÑÑ
              пÑовеÑоÑнÑе пакеÑÑ Ð±Ð¾Ð»ÑÑего ÑазмеÑа, Ñем
              иÑÑледÑемÑй Path MTU.

       IP_MULTICAST_ALL (since Linux 2.6.31)
              ÐÐ¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ
              полиÑики доÑÑавки многоадÑеÑнÑÑ
              ÑообÑений в ÑокеÑÑ, подÑоединÑннÑе к
              ÑÐ°Ð±Ð»Ð¾Ð½Ð½Ð¾Ð¼Ñ (wildcard) адÑеÑÑ INADDR_ANY.
              ÐÑгÑменÑом ÑвлÑеÑÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкое Ñелое (по
              ÑмолÑÐ°Ð½Ð¸Ñ 1). ÐÑли знаÑение Ñавно 1, Ñо
              ÑÐ¾ÐºÐµÑ Ð±ÑÐ´ÐµÑ Ð¿ÑинимаÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾Ñ Ð²ÑеÑ
              гÑÑпп, к коÑоÑÑм бÑло вÑполнено
              пÑиÑоединение глобалÑно вÑей ÑиÑÑемÑ. Ð
              пÑоÑивном ÑлÑÑае бÑдÑÑ Ð´Ð¾ÑÑавлÑÑÑÑÑ
              ÑообÑÐµÐ½Ð¸Ñ Ð¾Ñ Ð³ÑÑпп, к коÑоÑÑм бÑло
              вÑполнено пÑиÑоединение ÑвнÑм
              обÑазом(напÑимеÑ, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ IP_ADD_MEMBERSHIP)
              на ÑÑом ÑокеÑе.

       IP_MULTICAST_IF (наÑÐ¸Ð½Ð°Ñ Ñ Linux 1.2)
              ÐазнаÑÐ°ÐµÑ Ð»Ð¾ÐºÐ°Ð»Ñное ÑÑÑÑойÑÑво длÑ
              многоадÑеÑного гÑÑппового ÑокеÑа
              (multicast socket). ÐÑгÑменÑом Ð´Ð»Ñ setsockopt(2)
              ÑвлÑеÑÑÑ ÑÑÑÑкÑÑÑа ip_mreqn или ip_mreq (наÑÐ¸Ð½Ð°Ñ Ñ
              Linux 3.5), Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð°Ñ IP_ADD_MEMBERSHIP или ÑÑÑÑкÑÑÑе
              in_addr (пÑи пеÑедаÑе ÑдÑо опÑеделÑÐµÑ Ð½ÑжнÑÑ
              ÑÑÑÑкÑÑÑÑ Ð¸ÑÑÐ¾Ð´Ñ Ð¸Ð· ÑазмеÑа, пеÑеданного в
              optlen). ÐÐ»Ñ getsockopt(2) аÑгÑменÑом ÑвлÑеÑÑÑ
              ÑÑÑÑкÑÑÑа in_addr.

       IP_MULTICAST_LOOP (наÑÐ¸Ð½Ð°Ñ Ñ Linux 1.2)
              УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¸Ð»Ð¸ возвÑаÑаеÑ
              логиÑеÑкий Ñлаг в виде Ñелого ÑиÑла, в
              завиÑимоÑÑи Ð¾Ñ Ñого, бÑдÑÑ Ð»Ð¸ пакеÑÑ,
              иÑполÑзÑÑÑие многоадÑеÑнÑÑ Ð°Ð´ÑеÑаÑиÑ,
              заколÑÑовÑваÑÑÑÑ Ð½Ð° локалÑнÑе ÑокеÑÑ.

       IP_MULTICAST_TTL (наÑÐ¸Ð½Ð°Ñ Ñ Linux 1.2)
              УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¸Ð»Ð¸ возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение
              вÑемени ÑÑÑеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ (time-to-live) длÑ
              многоадÑеÑнÑÑ Ð¸ÑÑодÑÑÐ¸Ñ Ð¸Ð· ÑÑого ÑокеÑа
              пакеÑов, иÑполÑзÑÑÑÐ¸Ñ Ð¼Ð½Ð¾Ð³Ð¾Ð°Ð´ÑеÑнÑÑ
              адÑеÑаÑиÑ. ÐÐ»Ñ Ð¿Ð¾Ð´Ð¾Ð±Ð½ÑÑ Ð¿Ð°ÐºÐµÑов оÑенÑ
              важно ÑÑÑановиÑÑ Ð½Ð°Ð¸Ð¼ÐµÐ½ÑÑее возможное
              знаÑение TTL. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½Ð¾ Ñавно 1,
              ÑÑо знаÑиÑ, ÑÑо многоадÑеÑнÑе пакеÑÑ Ð½Ðµ
              вÑйдÑÑ Ð·Ð° пÑÐµÐ´ÐµÐ»Ñ Ð»Ð¾ÐºÐ°Ð»Ñной ÑеÑи, еÑли
              ÑолÑко полÑзоваÑелÑÑÐºÐ°Ñ Ð¿ÑогÑамма Ñвно
              не попÑоÑÐ¸Ñ ÑÑого. ÐнаÑением аÑгÑменÑа
              ÑвлÑеÑÑÑ Ñелое ÑиÑло.

       IP_NODEFRAG (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.6.36)
              ÐÑли ÑÑÑановлен (аÑгÑÐ¼ÐµÐ½Ñ Ð½Ðµ Ñавен нÑлÑ),
              Ñо на ÑÑовне netfilter запÑеÑаеÑÑÑ Ð²ÑполнÑÑÑ
              пеÑебоÑÐºÑ (reassembly) иÑÑодÑÑÐ¸Ñ Ð¿Ð°ÐºÐµÑов.
              ÐнаÑением аÑгÑменÑа ÑвлÑеÑÑÑ Ñелое ÑиÑло.

              ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð´Ð¾Ð¿ÑÑкаеÑÑÑ ÑолÑко длÑ
              ÑокеÑов Ñ Ñипом SOCK_RAW.

       IP_OPTIONS (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.0)
              УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¸Ð»Ð¸ возвÑаÑÐ°ÐµÑ Ð¿Ð°ÑамеÑÑÑ
              IP, коÑоÑÑе поÑÑлаÑÑÑÑ Ñ ÐºÐ°Ð¶Ð´Ñм пакеÑом из
              данного ÑокеÑа. ÐÑгÑменÑами ÑвлÑÑÑÑÑ
              ÑказаÑÐµÐ»Ñ Ð½Ð° бÑÑÐµÑ Ð¿Ð°Ð¼ÑÑи Ñ ÑÑими
              паÑамеÑÑами и ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ð°ÑамеÑÑа.
              СиÑÑемнÑй вÑзов setsockopt(2) ÑÑÑанавливаеÑ
              паÑамеÑÑÑ IP, ÑвÑзаннÑе Ñ ÑокеÑом. ÐÐ»Ñ IPv4
              макÑималÑнÑй ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ð°ÑамеÑÑа IPv4 Ñавен
              40 байÑам. ÐÑе возможнÑе паÑамеÑÑÑ
              пеÑеÑиÑÐ»ÐµÐ½Ñ Ð² RFC 791. ÐÑли пакеÑ,
              ÑÑÑанавливаÑÑий Ñоединение Ñ ÑокеÑом
              Ñипа SOCK_STREAM, ÑодеÑÐ¶Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ IP, Ñо ÑÑи
              паÑамеÑÑÑ IP (Ñ Ð¸Ð½Ð²ÐµÑÑиÑованнÑми
              заголовками маÑÑÑÑÑизаÑии) бÑдÑÑ
              иÑполÑзоваÑÑÑÑ Ð² ÑÑом ÑокеÑе. ÐоÑле
              ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑ
              паÑамеÑÑÑ Ð²ÑодÑÑими пакеÑами запÑеÑено.
              Ðо ÑмолÑаниÑ, обÑабоÑка вÑÐµÑ Ð¿Ð°ÑамеÑÑов,
              ÑвÑзаннÑÑ Ñ Ð¼Ð°ÑÑÑÑÑизаÑией Ð¾Ñ Ð¸ÑÑоÑника,
              оÑклÑÑена, но ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ вклÑÑиÑÑ ÑеÑез
              инÑеÑÑÐµÐ¹Ñ accept_source_route в /proc. ÐÑÑгие
              паÑамеÑÑÑ, напÑÐ¸Ð¼ÐµÑ ÑвÑзаннÑе Ñ
              вÑеменнÑми оÑмеÑками (timestamp),
              пÑодолжаÑÑ Ð¾Ð±ÑабаÑÑваÑÑÑÑ. ÐлÑ
              дейÑагÑамнÑÑ ÑокеÑов паÑамеÑÑÑ IP могÑÑ
              бÑÑÑ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ ÑолÑко локалÑнÑм
              полÑзоваÑелем. ÐÑзов getsockopt(2) Ñ
              паÑамеÑÑом IP_OPTIONS помеÑÐ°ÐµÑ Ð² ÑказаннÑй
              бÑÑÐµÑ ÑекÑÑие паÑамеÑÑÑ IP, иÑполÑзÑемÑе
              пÑи оÑпÑавке.

       IP_PKTINFO (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.2)
              ÐеÑÐµÐ´Ð°ÐµÑ Ð²ÑпомогаÑелÑное (ancillary)
              ÑообÑение IP_PKTINFO Ñ ÑÑÑÑкÑÑÑой pktinfo, коÑоÑаÑ
              ÑодеÑÐ¶Ð¸Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ вÑодÑÑем
              пакеÑе. ÐопÑÑкаеÑÑÑ ÑолÑко Ð´Ð»Ñ ÑокеÑов,
              оÑиенÑиÑованнÑÑ Ð½Ð° поÑÑÐ»ÐºÑ Ð´ÐµÐ¹ÑагÑамм.
              ÐÑгÑменÑом ÑвлÑеÑÑÑ Ñлаг, коÑоÑÑй ÑообÑаеÑ
              ÑокеÑÑ, нÑжно ли поÑÑлаÑÑ ÑообÑение
              IP_PKTINFO или неÑ. Само ÑообÑение можеÑ
              бÑÑÑ Ð¿Ð¾Ñлано/полÑÑено ÑолÑко в виде
              ÑпÑавлÑÑÑего ÑообÑÐµÐ½Ð¸Ñ Ñ Ð¿Ð°ÐºÐµÑом,
              иÑполÑзÑÑ recvmsg(2) или sendmsg(2).

                  struct in_pktinfo {
                      unsigned int   ipi_ifindex;  /* Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð½ÑеÑÑейÑа */
                      struct in_addr ipi_spec_dst; /* локалÑнÑй адÑÐµÑ */
                      struct in_addr ipi_addr;     /* заголовок адÑеÑа
                                                      назнаÑÐµÐ½Ð¸Ñ */
                  };

              ipi_ifindex ÑÑо ÑникалÑнÑй Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð½ÑеÑÑейÑа,
              из коÑоÑого бÑл полÑÑен ÑÑÐ¾Ñ Ð¿Ð°ÐºÐµÑ.
              ipi_spec_dst ÑÑо локалÑнÑй адÑÐµÑ Ð¿Ð°ÐºÐµÑа, а
              ipi_addr ÑÑо адÑÐµÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ, ÑказаннÑй в
              заголовке пакеÑа. ÐÑли паÑамеÑÑ IP_PKTINFO
              пеÑедаÑÑÑÑ Ð² sendmsg(2) и ipi_spec_dst не Ñавно
              нÑлÑ, Ñо ipi_spec_dst бÑÐ´ÐµÑ Ð¸ÑполÑзован как
              локалÑнÑй адÑÐµÑ Ð¸ÑÑоÑника пÑи пÑоÑмоÑÑе
              ÑаблиÑÑ Ð¼Ð°ÑÑÑÑÑизаÑии и Ð´Ð»Ñ ÑÑÑановки
              IP-паÑамеÑÑов маÑÑÑÑÑизаÑии Ð¾Ñ Ð¸ÑÑоÑника.
              ÐÑли знаÑение ipi_ifindex не Ñавно нÑлÑ, Ñо
              пÑи поиÑке в ÑаблиÑе маÑÑÑÑÑизаÑии
              вмеÑÑо знаÑÐµÐ½Ð¸Ñ ipi_spec_dst иÑполÑзÑеÑÑÑ
              пеÑвиÑнÑй локалÑнÑй адÑÐµÑ Ð¸Ð½ÑеÑÑейÑа Ñ
              ÑказаннÑм индекÑом.

       IP_RECVERR (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.2)
              ÐÐµÐ»Ð°ÐµÑ Ð¿ÐµÑедаÑÑ ÑообÑений об оÑибкаÑ
              более надÑжной. ÐÑли ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ
              ÑÑÑановлен Ð´Ð»Ñ Ð´ÐµÐ¹ÑагÑамного ÑокеÑа, Ñо
              вÑе возникаÑÑие оÑибки бÑдÑÑ Ð¿Ð¾ÑÑавленÑ
              в оÑеÑÐµÐ´Ñ Ð¾Ñибок, ÑÐ²Ð¾Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾
              ÑокеÑа. ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¾Ñибки пÑи
              опеÑаÑии Ñ ÑокеÑом полÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ
              воÑполÑзоваÑÑÑÑ Ð²Ñзовом recvmsg(2) Ñ
              ÑÑÑановленнÑм Ñлагом MSG_ERRQUEUE. СÑÑÑкÑÑÑа
              sock_extended_err, опиÑÑваÑÑÐ°Ñ Ð¾ÑибкÑ, бÑдеÑ
              пеÑедана в вÑпомогаÑелÑном ÑообÑении
              Ñ Ñипом IP_RECVERR и ÑÑовнем IPPROTO_IP. ÐÑоÑ
              паÑамеÑÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ Ð´Ð»Ñ Ð½Ð°Ð´ÐµÐ¶Ð½Ð¾Ð¹
              обÑабоÑки оÑибок Ð´Ð»Ñ ÑокеÑов без
              ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑоединениÑ. РпакеÑе Ñ
              оÑибкой из оÑеÑеди оÑибок, Ñакже
              ÑодеÑжиÑÑÑ Ð¿Ð¾ÑÑÐ¸Ñ Ð¿Ð¾Ð»ÑÑеннÑÑ Ð´Ð°Ð½Ð½ÑÑ.

              ÐÑпомогаÑелÑное ÑообÑение IP_RECVERR
              ÑодеÑÐ¶Ð¸Ñ ÑÑÑÑкÑÑÑÑ sock_extended_err:

                  #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;   /* Ð½Ð¾Ð¼ÐµÑ Ð¾Ñибки */
                      uint8_t  ee_origin;  /* где возникла оÑибка */
                      uint8_t  ee_type;    /* Ñип */
                      uint8_t  ee_code;    /* код */
                      uint8_t  ee_pad;
                      uint32_t ee_info;    /* дополниÑелÑÐ½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ */
                      uint32_t ee_data;    /* дÑÑгие даннÑе */
                      /* ÐалÑÑе могÑÑ ÑледоваÑÑ Ð´Ð°Ð½Ð½Ñе */
                  };

                  struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *);

              Ð ee_errno ÑодеÑжиÑÑÑ Ð½Ð¾Ð¼ÐµÑ Ð¾Ñибки в
              оÑеÑеди. Ð ee_origin ÑодеÑжиÑÑÑ ÐºÐ¾Ð´ иÑÑоÑника
              оÑибки. ÐнаÑение оÑÑалÑнÑÑ Ð¿Ð¾Ð»ÐµÐ¹
              завиÑÐ¸Ñ Ð¾Ñ Ð¿ÑоÑокола. ÐакÑÐ¾Ñ SO_EE_OFFENDER
              возвÑаÑÐ°ÐµÑ ÑказаÑÐµÐ»Ñ Ð½Ð° адÑÐµÑ ÑеÑевого
              обÑекÑа, в коÑоÑом возникла оÑибка,
              ÑоглаÑно ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ ÑказаÑÐµÐ»Ñ Ð½Ð°
              вÑпомогаÑелÑное ÑообÑение. ÐÑли адÑеÑ
              неизвеÑÑен, Ñо поле sa_family ÑÑÑÑкÑÑÑÑ sockaddr
              ÑодеÑÐ¶Ð¸Ñ AF_UNSPEC, и оÑÑалÑнÑе Ð¿Ð¾Ð»Ñ sockaddr не
              опÑеделенÑ.

              ÐÐ»Ñ IP ÑÑÑÑкÑÑÑа sock_extended_err иÑполÑзÑеÑÑÑ
              ÑледÑÑÑим обÑазом: знаÑение Ð¿Ð¾Ð»Ñ ee_origin
              ÑÑÑанавливаеÑÑÑ Ð² SO_EE_ORIGIN_ICMP, еÑли
              оÑибка полÑÑена из пакеÑа ICMP, или в
              SO_EE_ORIGIN_LOCAL, еÑли возникла локалÑнаÑ
              оÑибка. ÐеизвеÑÑнÑе знаÑÐµÐ½Ð¸Ñ ÑледÑеÑ
              игноÑиÑоваÑÑ. ÐнаÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÐµÐ¹ ee_type и
              ee_code ÑÑÑанавливаÑÑÑÑ Ð¸ÑÑÐ¾Ð´Ñ Ð¸Ð· знаÑений
              полей Ñипа и кода заголовка ICMP. ÐÑи
              оÑÐ¸Ð±ÐºÐ°Ñ EMSGSIZE поле ee_info ÑодеÑжиÑ
              обнаÑÑженнÑÑ Ð²ÐµÐ»Ð¸ÑÐ¸Ð½Ñ MTU. СообÑение
              Ñакже ÑодеÑÐ¶Ð¸Ñ ÑÑÑÑкÑÑÑÑ sockaddr_in Ñзла,
              вÑзвавÑего оÑибкÑ, коÑоÑÐ°Ñ Ð´Ð¾ÑÑÑпна
              ÑеÑез макÑÐ¾Ñ SO_EE_OFFENDER. ÐÑли иÑÑоÑник
              неизвеÑÑен, Ñо поле sin_family адÑеÑа,
              возвÑаÑÑнного макÑоÑом SO_EE_OFFENDER,
              ÑодеÑÐ¶Ð¸Ñ Ð·Ð½Ð°Ñение AF_UNSPEC. ÐÑли оÑибка
              возникла в ÑеÑи, Ñо вÑе паÑамеÑÑÑ IP
              (IP_OPTIONS, IP_TTL и Ñ.д.), коÑоÑÑе иÑполÑзÑÑÑÑÑ
              ÑокеÑом и ÑодеÑжаÑÑÑ Ð² пакеÑе Ñ
              опиÑанием оÑибки, пеÑедаÑÑÑÑ Ð²
              ÑпÑавлÑÑÑÐ¸Ñ ÑообÑениÑÑ. ÐаннÑе пакеÑа,
              вÑзвавÑего оÑибкÑ, возвÑаÑаÑÑÑÑ ÐºÐ°Ðº
              ноÑмалÑнÑе даннÑе. ÐамеÑÑÑе, ÑÑо Ñ TCP неÑ
              оÑеÑеди оÑибок; Ñлаг MSG_ERRQUEUE нелÑзÑ
              иÑполÑзоваÑÑ Ð´Ð»Ñ ÑокеÑов Ñипа SOCK_STREAM.
              ÐаÑамеÑÑ IP_RECVERR допÑÑÑим Ð´Ð»Ñ TCP, но вÑе
              оÑибки возвÑаÑаÑÑÑÑ ÑолÑко ÑеÑез ÑÑнкÑиÑ
              ÑокеÑа или ÑеÑез паÑамеÑÑ SO_ERROR.

              ÐÐ»Ñ Ð½ÐµÑÑÑÑкÑÑÑиÑованнÑÑ ÑокеÑов,
              паÑамеÑÑом IP_RECVERR вклÑÑаеÑÑÑ Ð¿ÐµÑедаÑа в
              пÑиложение вÑÐµÑ Ð¿Ð¾Ð»ÑÑаемÑÑ Ð¾Ñибок ICMP,
              инаÑе ÑообÑаеÑÑÑ ÑолÑко об оÑÐ¸Ð±ÐºÐ°Ñ Ð²
              ÑокеÑаÑ, оÑиенÑиÑованнÑÑ Ð½Ð° Ñоединение.

              ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑÑÑанавливаеÑÑÑ Ð¸Ð»Ð¸
              возвÑаÑаеÑÑÑ ÐºÐ°Ðº логиÑеÑкий Ñлаг в
              виде Ñелого ÑиÑла. Ðо ÑмолÑаниÑ,
              паÑамеÑÑ IP_RECVERR вÑклÑÑен.

       IP_RECVOPTS (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.2)
              ÐеÑÐµÐ´Ð°ÐµÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð²Ñе вÑодÑÑие
              паÑамеÑÑÑ IP Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑпÑавлÑÑÑего
              ÑообÑÐµÐ½Ð¸Ñ IP_OPTIONS. ÐÐ»Ñ Ð»Ð¾ÐºÐ°Ð»Ñного Ñзла
              заполнÑеÑÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº маÑÑÑÑÑизаÑии и
              дÑÑгие паÑамеÑÑÑ. Ðе поддеÑживаеÑÑÑ
              ÑокеÑами Ñипа SOCK_STREAM.

       IP_RECVORIGDSTADDR (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.6.29)
              ÐаннÑй логиÑеÑкий паÑамеÑÑ Ð²ÐºÐ»ÑÑаеÑ
              вÑпомогаÑелÑное ÑообÑение IP_ORIGDSTADDR в
              recvmsg(2), в коÑоÑом ÑдÑо возвÑаÑаеÑ
              пеÑвонаÑалÑнÑй адÑÐµÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ
              полÑÑенной дейÑагÑаммÑ.
              ÐÑпомогаÑелÑное ÑообÑение ÑодеÑжиÑ
              ÑÑÑÑкÑÑÑÑ struct sockaddr_in.

       IP_RECVTOS (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.2)
              ÐÑли вклÑÑÑн, Ñо вмеÑÑе Ñ Ð²ÑодÑÑими
              пакеÑами пеÑедаÑÑÑÑ Ð²ÑпомогаÑелÑное
              ÑообÑение IP_TOS. РнÑм ÑодеÑжиÑÑÑ Ð±Ð°Ð¹Ñ, в
              коÑоÑом Ñказано поле Ñипа
              ÑеÑвиÑа/пÑиоÑиÑеÑа из заголовка
              пакеÑа. ÐжидаеÑÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкое знаÑение
              в виде Ñелого ÑиÑла.

       IP_RECVTTL (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.2)
              ÐÑли Ñказан ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ, Ñо пеÑедаÑÑÑÑ
              ÑпÑавлÑÑÑее ÑообÑение IP_TTL Ñ Ð±Ð°Ð¹Ñом
              знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ñ Ð²Ñемени ÑÑÑеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·
              полÑÑенного пакеÑа. Ðе поддеÑживаеÑÑÑ
              ÑокеÑами Ñипа SOCK_STREAM.

       IP_RETOPTS (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.2)
              ÐденÑиÑен паÑамеÑÑÑ IP_RECVOPTS, но
              возвÑаÑÐ°ÐµÑ Ð½ÐµÐ¾Ð±ÑабоÑаннÑе паÑамеÑÑÑ,
              пÑиÑÑм без заполненнÑÑ Ð²ÑеменнÑÑ Ð¼ÐµÑок
              и запиÑи о маÑÑÑÑÑизаÑии до ÑÑой ÑоÑки
              (hop).

       IP_ROUTER_ALERT (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.2)
              ÐеÑедаÑÑ ÑÑÐ¾Ð¼Ñ ÑокеÑÑ Ð²Ñе пеÑеÑÑлаемÑе
              (forwarded) пакеÑÑ Ñ ÑÑÑановленнÑм
              паÑамеÑÑом IP Router Alert. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ
              иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Â«ÑÑÑÑÑ» ÑокеÑов. Ðн можеÑ
              бÑÑÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½, напÑимеÑ, Ð´Ð»Ñ ÑлÑжб RSVP,
              запÑÑеннÑÑ Ð² пÑоÑÑÑанÑÑве полÑзоваÑелÑ.
              ÐеÑеÑваÑеннÑе пакеÑÑ Ð´Ð°Ð»ÑÑе ÑдÑом не
              пеÑеÑÑлаÑÑÑÑ: оÑвеÑÑÑвенноÑÑÑ Ð·Ð° Ð¸Ñ Ð¾ÑÑÑлкÑ
              Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° полÑзоваÑеле. СвÑзÑвание
              ÑокеÑа игноÑиÑÑеÑÑÑ, Ñак как пакеÑÑ
              ÑилÑÑÑÑÑÑÑÑ Ð¿Ð¾ пÑоÑоколÑ. ÐжидаеÑÑÑ
              логиÑеÑкое знаÑение в виде Ñелого
              ÑиÑла.

       IP_TOS (наÑÐ¸Ð½Ð°Ñ Ñ Linux 1.0)
              УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¸Ð»Ð¸ полÑÑÐ°ÐµÑ Ð·Ð½Ð°Ñение
              Ð¿Ð¾Ð»Ñ Type-Of-Service (TOS, Ñип ÑеÑвиÑа) каждого
              IP-пакеÑа, коÑоÑÑй оÑÑÑлаеÑÑÑ Ñ ÑÑого
              ÑокеÑа. ÐÑо поле иÑполÑзÑеÑÑÑ Ð´Ð»Ñ
              ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿ÑиоÑиÑеÑа пакеÑа в ÑеÑи.
              ÐнаÑение TOS ÑÑаниÑÑÑ Ð² одном байÑе.
              СÑÑеÑÑвÑÐµÑ Ð½ÐµÑколÑко ÑÑандаÑÑнÑÑ Ñлагов
              TOS: IPTOS_LOWDELAY â Ð´Ð»Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð¸Ð·Ð°Ñии
              задеÑжки пеÑедаваемого ÑÑаÑика,
              IPTOS_THROUGHPUT â Ð´Ð»Ñ Ð¾Ð¿ÑимизаÑии пÑопÑÑкной
              ÑпоÑобноÑÑи, IPTOS_RELIABILITY â Ð´Ð»Ñ ÑвелиÑениÑ
              надÑжноÑÑи, IPTOS_MINCOST â пÑи пеÑеÑÑлки
              даннÑÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ Ð½ÐµÐ²Ð°Ð¶Ð½Ð° ÑкоÑоÑÑÑ
              пеÑедаÑи. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ñказано не более
              одного из ÑÑÐ¸Ñ Ð·Ð½Ð°Ñений TOS. ÐÑе дÑÑгие
              биÑÑ ÑвлÑÑÑÑÑ Ð½ÐµÐ´ÐµÐ¹ÑÑвиÑелÑнÑми и должнÑ
              бÑÑÑ Ð¾Ð±Ð½ÑленÑ. Ðо ÑмолÑаниÑ, Linux поÑÑлаеÑ
              дейÑагÑÐ°Ð¼Ð¼Ñ Ñ IPTOS_LOWDELAY пеÑвÑми, но
              ÑоÑное поведение завиÑÐ¸Ñ Ð¾Ñ
              наÑÑÑоенного поÑÑдка оÑеÑедноÑÑи (queueing
              discipline). ÐÐ»Ñ ÑÑÑановки некоÑоÑÑÑ
              вÑÑокопÑиоÑиÑеÑнÑÑ Ñипов ÑеÑвиÑа могÑÑ
              поÑÑебоваÑÑÑÑ Ð¿Ñава ÑÑпеÑполÑзоваÑелÑ
              (Ð¼Ð°Ð½Ð´Ð°Ñ CAP_NET_ADMIN).

       IP_TRANSPARENT (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.6.24)
              УÑÑановка ÑÑого логиÑеÑкого паÑамеÑÑа
              вклÑÑÐ°ÐµÑ Ð¿ÑозÑаÑное пÑокÑиÑование на
              заданнÑй ÑокеÑ. ÐаннÑй паÑамеÑÑ ÑокеÑа
              позволÑÐµÑ Ð²ÑзвавÑÐµÐ¼Ñ Ð¿ÑиложениÑ
              пÑивÑзаÑÑÑÑ Ðº нелокалÑÐ½Ð¾Ð¼Ñ IP-адÑеÑÑ Ð¸
              ÑабоÑаÑÑ ÐºÐ»Ð¸ÐµÐ½Ñом и ÑеÑвеÑом Ñ Ð²Ð½ÐµÑним
              адÑеÑом как Ñ Ð»Ð¾ÐºÐ°Ð»Ñной конеÑной
              ÑоÑкой. ÐÐÐÐЧÐÐÐÐ: ÑÑебÑеÑÑÑ Ð½Ð°ÑÑÑойка
              маÑÑÑÑÑизаÑии пакеÑов Ð´Ð»Ñ Ð²Ð½ÐµÑнего
              адÑеÑа ÑеÑез TProxy (Ñо еÑÑÑ, ÑиÑÑемÑ, на
              коÑоÑой наÑодиÑÑÑ Ð¿Ñиложение,
              пÑименÑÑÑее паÑамеÑÑ ÑокеÑа IP_TRANSPARENT).
              ÐÐ»Ñ ÑÑÑановки данного паÑамеÑÑа ÑокеÑа
              ÑÑебÑÑÑÑÑ Ð¿Ñава ÑÑпеÑполÑзоваÑÐµÐ»Ñ (мандаÑ
              CAP_NET_ADMIN).

              Также, Ð´Ð»Ñ ÑÑÑановки данного паÑамеÑÑа
              на пеÑенапÑавлÑемÑй ÑÐ¾ÐºÐµÑ ÑÑебÑеÑÑÑ
              пеÑенапÑавление TProxy Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ñели TPROXY
              в iptables.

       IP_TTL (наÑÐ¸Ð½Ð°Ñ Ñ Linux 1.0)
              УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¸Ð»Ð¸ полÑÑÐ°ÐµÑ ÑекÑÑее
              знаÑение Ð¿Ð¾Ð»Ñ Ð²Ñемени ÑÑÑеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ (time
              to live), коÑоÑое ÑказÑваеÑÑÑ Ð² каждом
              пакеÑе, оÑÑÑлаемом Ñ ÑÑого ÑокеÑа.

       IP_UNBLOCK_SOURCE (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.4.22 / 2.5.68)
              РазблокиÑоваÑÑ Ñанее заблокиÑованнÑй
              многоадÑеÑнÑй иÑÑоÑник. ÐозвÑаÑаеÑ
              EADDRNOTAVAIL, еÑли ÑказаннÑй иÑÑоÑник не
              заблокиÑован.

              ÐÑгÑменÑом ÑвлÑеÑÑÑ ÑÑÑÑкÑÑÑа ip_mreq_source,
              опиÑÐ°Ð½Ð½Ð°Ñ Ð² Ñазделе о IP_ADD_SOURCE_MEMBERSHIP.

   ÐнÑеÑÑейÑÑ Ð² /proc
       ÐаÑÑÑÐ¾Ð¹ÐºÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑÑ Ð¿Ð°ÑамеÑÑов пÑоÑокола IP
       можно оÑÑÑеÑÑвлÑÑÑ ÑеÑез инÑеÑÑÐµÐ¹Ñ /proc. ÐÑе
       паÑамеÑÑÑ Ð´Ð¾ÑÑÑÐ¿Ð½Ñ Ð¿Ð¾ÑÑедÑÑвом ÑÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸
       запиÑи Ñайлов из каÑалога /proc/sys/net/ipv4/. ÐлÑ
       логиÑеÑÐºÐ¸Ñ (Boolean) паÑамеÑÑов знаÑениÑ
       ÑказÑваÑÑÑÑ Ð² виде ÑелÑÑ ÑиÑел: ненÑлевое
       знаÑение («иÑÑина») ознаÑÐ°ÐµÑ Ð²ÐºÐ»ÑÑаеÑ
       паÑамеÑÑа, а нÑлевое знаÑение («ложÑ») â
       вÑклÑÑение.

       ip_always_defrag (Boolean; наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.2.13)
              [ÐоÑвилÑÑ Ð² ÑдÑе веÑÑии 2.2.13; в ÑанниÑ
              веÑÑиÑÑ ÑÑо ÑвойÑÑво конÑÑолиÑовалоÑÑ Ñ
              помоÑÑÑ Ñлага CONFIG_IP_ALWAYS_DEFRAG вÑемени
              компилÑÑии; даннÑй паÑамеÑÑ ÑбÑан в 2.4.x]

              ÐÑли ÑÑÐ¾Ñ Ñлаг вклÑÑÑн (не Ñавен 0), Ñо
              вÑодÑÑие ÑÑагменÑÑ (ÑаÑÑи IP-пакеÑов,
              коÑоÑÑе обÑазÑÑÑÑÑ, еÑли некоÑоÑÑй Ñзел,
              наÑодÑÑийÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð¾ÑпÑавиÑелем и
              полÑÑаÑелем, ÑеÑаеÑ, ÑÑо пакеÑÑ ÑлиÑком
              велики и ÑазделÑÐµÑ Ð¸Ñ Ð½Ð° кÑÑоÑки) бÑдÑÑ
              Ñнова ÑобÑÐ°Ð½Ñ (деÑÑагменÑиÑованнÑ)
              пеÑед далÑнейÑей обÑабоÑкой, даже
              еÑли они Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿ÐµÑеÑÐ»Ð°Ð½Ñ Ð´Ð°Ð»ÑÑе.

              ÐклÑÑайÑе ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑолÑко на
              межÑеÑевом ÑкÑане, коÑоÑÑй ÑвлÑеÑÑÑ
              единÑÑвенной ÑвÑзÑÑ Ñ Ð²Ð°Ñей ÑеÑÑÑ, или на
              пÑозÑаÑном пÑокÑи; никогда не
              вклÑÑайÑе его на обÑÑном маÑÑÑÑÑизаÑоÑе
              или Ñзле. РпÑоÑивном ÑлÑÑае,
              Ñоединение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ð°ÑÑÑено, еÑли
              ÑÑагменÑÑ Ð¿ÐµÑедаÑÑÑÑ Ð¿Ð¾ ÑазлиÑнÑм линиÑм.
              ÐеÑÑагменÑаÑÐ¸Ñ Ñакже ÑÑебÑÐµÑ Ð¼Ð½Ð¾Ð³Ð¾
              памÑÑи и пÑоÑеÑÑоÑного вÑемени.

              ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð²ÐºÐ»ÑÑаеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки пÑи
              наÑÑÑойке маÑкаÑадинга или
              пÑозÑаÑного пÑокÑиÑованиÑ.

       ip_autoconfig (в Linux 2.2 по 2.6.17)
              Ðе опиÑан.

       ip_default_ttl (integer; по ÑмолÑаниÑ: 64; наÑÐ¸Ð½Ð°Ñ Ñ Linux
       2.2)
              УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð·Ð½Ð°Ñение time-to-live по
              ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¸ÑÑодÑÑÐ¸Ñ Ð¿Ð°ÐºÐµÑов. ÐÑо
              знаÑение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¾ длÑ
              каждого оÑделÑного ÑокеÑа Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ
              паÑамеÑÑа IP_TTL.

       ip_dynaddr (Boolean; по ÑмолÑаниÑ: вÑклÑÑен; наÑинаÑ
       Ñ Linux 2.0.31)
              ÐклÑÑÐ°ÐµÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑкÑÑ Ð°Ð´ÑеÑаÑÐ¸Ñ ÑокеÑа и
              Ð¿Ð¾Ð´Ð¼ÐµÐ½Ñ (masquerading) пÑи изменении адÑеÑа
              инÑеÑÑейÑа. ÐÑо полезно Ð´Ð»Ñ Ð¸Ð½ÑеÑÑейÑов
              коммÑÑиÑÑемÑÑ Ñоединений (dialup) Ñ
              изменÑÑÑимиÑÑ IP-адÑеÑами. ÐнаÑение 0
              ознаÑÐ°ÐµÑ Ð½Ðµ подменÑÑÑ, 1 вклÑÑаеÑ
              Ð¿Ð¾Ð´Ð¼ÐµÐ½Ñ Ð¸ 2 вклÑÑÐ°ÐµÑ Ñежим подÑобноÑÑей
              ÑабоÑÑ.

       ip_forward (Boolean; по ÑмолÑаниÑ: вÑклÑÑен; наÑинаÑ
       Ñ Linux 1.2)
              ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð¿ÐµÑеÑÑÐ»ÐºÑ (forwarding)
              IP-пакеÑов. ÐеÑеÑÑлка IP Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ
              вклÑÑена Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ инÑеÑÑейÑа в
              оÑделÑноÑÑи.

       ip_local_port_range (наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.2)
              Ð ÑÑом Ñайле ÑодеÑжаÑÑÑ Ð´Ð²Ð° ÑелÑÑ ÑиÑла,
              опÑеделÑÑÑие диапазон локалÑнÑÑ Ð¿Ð¾ÑÑов
              по ÑмолÑаниÑ, вÑделеннÑÑ Ð´Ð»Ñ ÑокеÑов, Ñ
              коÑоÑÑе Ð½ÐµÑ Ñвно пÑивÑзанного номеÑа
              поÑÑа  â Ñо еÑÑÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ ÑÑемеÑнÑÑ Ð¿Ð¾ÑÑов.
              ÐÑемеÑнÑй поÑÑ Ð²ÑделÑеÑÑÑ ÑокеÑÑ Ð² ÑледÑÑÑиÑ
              ÑлÑÑаÑÑ:

              *  пÑи вÑзове bind(2) в номеÑе поÑÑа адÑеÑа
                 ÑокеÑа Ñказан 0;

              *  ÐÑзов listen(2) вÑзван Ð´Ð»Ñ Ð¿Ð¾Ñокового
                 ÑокеÑа, коÑоÑÑй еÑÑ Ð½Ðµ пÑивÑзан;

              *  ÐÑзов connect(2) вÑзван Ð´Ð»Ñ ÑокеÑа, коÑоÑÑй
                 еÑÑ Ð½Ðµ пÑивÑзан;

              *  ÐÑзов sendto(2) вÑзван Ð´Ð»Ñ Ð´ÐµÐ¹ÑагÑамного
                 ÑокеÑа, коÑоÑÑй еÑÑ Ð½Ðµ пÑивÑзан.

              ÐÑделение ÑÑемеÑнÑÑ Ð¿Ð¾ÑÑов наÑинаеÑÑÑ Ñ
              пеÑвого ÑиÑла в ip_local_port_range и
              заканÑиваеÑÑÑ Ð²ÑоÑÑм ÑиÑлом. ÐÑли
              диапазон ÑÑемеÑнÑÑ Ð¿Ð¾ÑÑов законÑилÑÑ, Ñо
              ÑооÑвеÑÑÑвÑÑÑий ÑиÑÑемнÑй вÑзов веÑнÑÑ
              оÑÐ¸Ð±ÐºÑ (но ÑмоÑÑиÑе ÐÐФÐÐТЫ).

              ÐамеÑим, ÑÑо диапазон поÑÑов в
              ip_local_port_range не должен конÑликÑоваÑÑ Ñ
              поÑÑами, иÑполÑзÑемÑми Ð´Ð»Ñ Ð¼Ð°ÑкаÑадинг
              (ÑоÑÑ ÑÑо пÑовеÑÑеÑÑÑ). Также, пÑоизволÑнÑе
              знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð²ÑзваÑÑ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ñ
              некоÑоÑÑми пакеÑнÑми ÑилÑÑÑами
              межÑеÑевÑÑ ÑкÑанов, коÑоÑÑе делаÑÑ
              пÑÐµÐ´Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð± иÑполÑзÑемÑÑ
              локалÑнÑÑ Ð¿Ð¾ÑÑаÑ. ÐеÑвое ÑиÑло должно
              бÑÑÑ Ð½Ðµ менее 1024, или лÑÑÑе более 4096,
              ÑÑÐ¾Ð±Ñ Ð½Ðµ пеÑеÑекаÑÑÑÑ Ñ Ð²Ñем извеÑÑнÑми
              поÑÑами и минимизиÑоваÑÑ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ñ
              межÑеÑевÑми ÑкÑанами.

       ip_no_pmtu_disc (Boolean; по ÑмолÑаниÑ: вÑклÑÑен;
       наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.2)
              ÐÑли вклÑÑÑн, Ñо, по ÑмолÑаниÑ, не
              пÑоизводиÑÑÑ Ð¾Ð±Ð½Ð°ÑÑжение знаÑÐµÐ½Ð¸Ñ MTU Ñ
              маÑÑÑÑÑа Ð´Ð»Ñ TCP ÑокеÑов. ÐбнаÑÑжение MTU
              маÑÑÑÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð²ÐµÑÑиÑÑÑÑ Ñ Ð¾Ñибкой из-за
              вÑÑÑеÑивÑиÑÑÑ Ð½Ð° пÑÑи невеÑно наÑÑÑоеннÑÑ
              межÑеÑевÑÑ ÑкÑанов (коÑоÑÑе оÑбÑаÑÑваÑÑ
              вÑе пакеÑÑ ICMP) или из-за невеÑно
              наÑÑÑоеннÑÑ Ð¸Ð½ÑеÑÑейÑов (напÑимеÑ,
              Ñоединение ÑоÑка-ÑоÑка, Ñ ÐºÐ¾ÑоÑого оба
              конÑа не договоÑилиÑÑ Ð¾ MTU). ÐÑÑÑе
              иÑпÑавиÑÑ Ð²ÑÑÑеÑеннÑе на пÑÑи неиÑпÑавнÑе
              маÑÑÑÑÑизаÑоÑÑ, Ñем глобалÑно оÑклÑÑаÑÑ
              обнаÑÑжение MTU маÑÑÑÑÑа, поÑÐ¾Ð¼Ñ ÑÑо ÑÑо
              оÑклÑÑение пÑиведÑÑ Ðº вÑÑокой нагÑÑзке
              на ÑеÑÑ.

       ip_nonlocal_bind (Boolean; по ÑмолÑаниÑ: вÑклÑÑен;
       наÑÐ¸Ð½Ð°Ñ Ñ Linux 2.4)
              ÐÑли ÑÑÑановлен, Ñо ÑÑо позволÑеÑ
              пÑоÑеÑÑам пÑивÑзÑваÑÑÑÑ (bind(2)) к
              нелокалÑнÑм IP-адÑеÑам, ÑÑо полезно, но
              Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к неÑабоÑоÑпоÑобноÑÑи
              некоÑоÑÑÑ Ð¿Ñиложений.

       ip6frag_time (integer; по ÑмолÑаниÑ: 30)
              ÐÑÐµÐ¼Ñ Ð² ÑекÑндаÑ, на коÑоÑое ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ IPv6
              оÑÑаÑÑÑÑ Ð² памÑÑи.

       ip6frag_secret_interval (integer; по ÑмолÑаниÑ: 600)
              ÐнÑеÑвал ÑегенеÑаÑии (в ÑекÑндаÑ)
              конÑÑолÑной ÑÑÐ¼Ð¼Ñ ÑекÑеÑа (hash secret) (или
              вÑÐµÐ¼Ñ ÑÑÑеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð½ÑÑолÑной ÑÑммÑ
              ÑекÑеÑа) ÑÑагменÑов IPv6.

       ipfrag_high_thresh (integer), ipfrag_low_thresh (integer)
              ÐÑли колиÑеÑÑво ÑÑагменÑов IP, ÑÑоÑÑÐ¸Ñ Ð²
              оÑеÑеди, доÑÑÐ¸Ð³Ð°ÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ipfrag_high_thresh,
              Ñо оÑеÑÐµÐ´Ñ ÑкоÑаÑиваеÑÑÑ Ð´Ð¾ знаÑениÑ
              ipfrag_low_thresh. СодеÑÐ¶Ð¸Ñ Ñелое ÑиÑло,
              ознаÑаÑÑее колиÑеÑÑво байÑ.

       neigh/*
              СмоÑÑиÑе в arp(7).

   ÐÑÐ·Ð¾Ð²Ñ ioctl
       ÐÑе вÑÐ·Ð¾Ð²Ñ ioctl, опиÑаннÑе в socket(7), пÑименимÑ
       к ip.

       ÐÑÐ·Ð¾Ð²Ñ ioctl Ð´Ð»Ñ Ð½Ð°ÑÑÑойки обÑÐ¸Ñ Ð¿Ð°ÑамеÑÑов
       ÑÑÑÑойÑÑв опиÑÐ°Ð½Ñ Ð² netdevice(7).

ÐШÐÐÐÐ
       EACCES ÐолÑзоваÑÐµÐ»Ñ Ð¿Ð¾Ð¿ÑÑалÑÑ Ð²ÑполниÑÑ
              дейÑÑвие, не Ð¸Ð¼ÐµÑ Ð½Ð° ÑÑо необÑодимÑÑ
              полномоÑий. ÐÑимеÑÑ ÑÐ°ÐºÐ¸Ñ Ð´ÐµÐ¹ÑÑвий:
              поÑÑлка пакеÑа по ÑиÑоковеÑаÑелÑномÑ
              адÑеÑÑ Ð±ÐµÐ· пÑедваÑиÑелÑной ÑÑÑановки
              Ñлага SO_BROADCAST; поÑÑлка пакеÑа по
              запÑеÑÑÐ½Ð½Ð¾Ð¼Ñ Ð¼Ð°ÑÑÑÑÑÑ; изменение
              наÑÑÑоек межÑеÑевого ÑкÑана не имеÑ
              пÑав ÑÑпеÑполÑзоваÑÐµÐ»Ñ (мандаÑа
              CAP_NET_ADMIN); ÑвÑзÑвание ÑокеÑа Ñ
              заÑезеÑвиÑованнÑм поÑÑом, не Ð¸Ð¼ÐµÑ Ð¿Ñав
              ÑÑпеÑполÑзоваÑÐµÐ»Ñ (мандаÑа
              CAP_NET_BIND_SERVICE).

       EADDRINUSE
              ÐопÑÑка ÑвÑзаÑÑ ÑÐ¾ÐºÐµÑ Ñ Ñже иÑполÑзÑемÑм
              адÑеÑом.

       EADDRNOTAVAIL
              ÐÑл запÑоÑен неÑÑÑеÑÑвÑÑÑий инÑеÑÑÐµÐ¹Ñ Ð¸Ð»Ð¸
              запÑоÑеннÑй иÑÑодÑÑий адÑÐµÑ Ð½Ðµ ÑвлÑеÑÑÑ
              локалÑнÑм.

       EAGAIN ÐейÑÑвие над неблокиÑÑÑÑим ÑокеÑом
              пÑивело Ð±Ñ Ðº его блокиÑовке.

       EALREADY
              ÐпеÑаÑÐ¸Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ð° неблокиÑÑÑÑем
              ÑокеÑе Ñже наÑодиÑÑÑ Ð² пÑоÑеÑÑе
              вÑполнениÑ.

       ECONNABORTED
              Соединение закÑÑÑо во вÑÐµÐ¼Ñ accept(2).

       EHOSTUNREACH
              Ð ÑаблиÑе маÑÑÑÑÑизаÑии Ð½ÐµÑ Ð´Ð¾Ð¿ÑÑÑимÑÑ
              запиÑей, ÑооÑвеÑÑÑвÑÑÑÐ¸Ñ Ð°Ð´ÑеÑÑ
              назнаÑениÑ. ÐÑа оÑибка Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÑÑÑ
              из-за ICMP-ÑообÑÐµÐ½Ð¸Ñ Ð¾Ñ ÑдалÑнного
              маÑÑÑÑÑизаÑоÑа или из-за локалÑной
              ÑаблиÑÑ Ð¼Ð°ÑÑÑÑÑизаÑии.

       EINVAL ÐеÑедан недопÑÑÑимÑй аÑгÑменÑ. ÐÑи
              опеÑаÑиÑÑ Ð¾ÑпÑавки ÑÑа оÑибка можеÑ
              возникнÑÑÑ Ð¸Ð·-за пеÑедаÑи по маÑÑÑÑÑÑ
              ÑÑÑÐ½Ð°Ñ Ð´ÑÑа (blackhole).

       EISCONN
              ÐÑзов connect(2) запÑÑен Ð´Ð»Ñ ÑокеÑа, Ñже
              ÑÑÑановивÑего Ñоединение.

       EMSGSIZE
              ÐейÑагÑамма болÑÑе знаÑÐµÐ½Ð¸Ñ MTU на
              маÑÑÑÑÑе, и она не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ
              ÑÑагменÑиÑована.

       ENOBUFS, ENOMEM
              ÐедоÑÑаÑоÑно Ñвободной памÑÑи. ЧаÑÑо ÑÑо
              ознаÑаеÑ, ÑÑо вÑделение памÑÑи
              огÑаниÑено не ÑазмеÑом ÑиÑÑемной
              памÑÑи, а гÑаниÑами бÑÑеÑа ÑокеÑа, но ÑÑо
              не вÑегда Ñак.

       ENOENT ÐÐ»Ñ ÑокеÑа вÑзван SIOCGSTAMP, но он еÑÑ Ð½Ðµ
              полÑÑил ни одного пакеÑа.

       ENOPKG Ðе наÑÑÑоена подÑиÑÑема ÑдÑа.

       ENOPROTOOPT и EOPNOTSUPP
              ÐеÑедан недопÑÑÑимÑй паÑамеÑÑ ÑокеÑа.

       ENOTCONN
              ÐпеÑаÑÐ¸Ñ Ð¾Ð¿Ñеделена ÑолÑко Ð´Ð»Ñ ÑокеÑа,
              ÑÑÑановивÑего Ñоединение, а ÑÑÐ¾Ñ ÑокеÑ
              не ÑоединÑн.

       EPERM  У полÑзоваÑÐµÐ»Ñ Ð½ÐµÑ Ð´Ð¾ÑÑаÑоÑнÑÑ
              полномоÑий, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð²ÑÑиÑÑ Ð¿ÑиоÑиÑеÑ,
              измениÑÑ Ð½Ð°ÑÑÑÐ¾Ð¹ÐºÑ Ð¸Ð»Ð¸ поÑлаÑÑ Ñигнал
              запÑаÑÐ¸Ð²Ð°ÐµÐ¼Ð¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ Ð¸Ð»Ð¸ гÑÑппе
              пÑоÑеÑÑов.

       EPIPE  Соединение неожиданно закÑÑлоÑÑ Ð¸Ð»Ð¸
              завеÑÑено (shut down) дÑÑгой ÑÑоÑоной.

       ESOCKTNOSUPPORT
              Ð¡Ð¾ÐºÐµÑ Ð½Ðµ наÑÑÑоен или запÑоÑен
              неизвеÑÑнÑй Ñип ÑокеÑа.

       ÐÑоÑоколами более вÑÑокого ÑÑÐ¾Ð²Ð½Ñ Ð¼Ð¾Ð³ÑÑ
       генеÑиÑоваÑÑÑÑ Ð´ÑÑгие оÑибки; ÑмоÑÑиÑе tcp(7),
       raw(7), udp(7) и socket(7).

ÐÐÐÐЧÐÐÐЯ
       ÐнаÑÐµÐ½Ð¸Ñ IP_FREEBIND, IP_MSFILTER, IP_MTU, IP_MTU_DISCOVER,
       IP_RECVORIGDSTADDR, IP_PKTINFO, IP_RECVERR, IP_ROUTER_ALERT и
       IP_TRANSPARENT еÑÑÑ ÑолÑко в Linux.

       ÐÑдÑÑе оÑÑоÑÐ¾Ð¶Ð½Ñ Ð¿Ñи иÑполÑзовании паÑамеÑÑа
       SO_BROADCAST â в Linux он не ÑвлÑеÑÑÑ
       пÑивилегиÑованнÑм. ÐÑли небÑежно оÑноÑиÑÑÑÑ
       к ÑиÑоковеÑаÑелÑнÑм ÑообÑениÑм, Ñо можно
       легко пеÑегÑÑзиÑÑ ÑеÑÑ. РновÑÑ Ð¿ÑоÑÐ¾ÐºÐ¾Ð»Ð°Ñ Ð´Ð»Ñ
       пÑиложений лÑÑÑе иÑполÑзоваÑÑ
       многоадÑеÑнÑе ÑаÑÑÑлки вмеÑÑо
       ÑиÑоковеÑаÑелÑнÑÑ. Ðе иÑполÑзÑйÑе
       ÑиÑоковеÑание.

       ÐÐ»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð°Ð´ÑеÑа назнаÑÐµÐ½Ð¸Ñ Ð¸
       инÑеÑÑейÑа полÑÑеннÑÑ Ð´ÐµÐ¹ÑагÑамм в некоÑоÑÑе
       ÑеализаÑиÑÑ ÑокеÑов BSD Ð²Ð²ÐµÐ´ÐµÐ½Ñ Ð¿Ð°ÑамеÑÑÑ
       ÑокеÑов IP_RCVDSTADDR и IP_RECVIF. Ð Linux Ð´Ð»Ñ ÑÑой Ñели
       еÑÑÑ Ð¾Ð±Ñий паÑамеÑÑ IP_PKTINFO.

       РнекоÑоÑÑÑ ÑеализаÑиÑÑ ÑокеÑов BSD Ñакже еÑÑÑ
       паÑамеÑÑ IP_RECVTTL, но вÑпомогаÑелÑное
       ÑообÑение Ñ Ñипом IP_RECVTTL пеÑедаÑÑÑÑ Ñ Ð²ÑоднÑм
       пакеÑом. Ð ÑÑом оÑлиÑие Ð¾Ñ Ð¿Ð°ÑамеÑÑа IP_TTL,
       иÑполÑзÑемого в Linux.

       ÐÑполÑзование ÑÑÐ¾Ð²Ð½Ñ Ð¿Ð°ÑамеÑÑов ÑокеÑа SOL_IP
       непеÑеноÑимо â в BSD-ÑÑÐµÐºÐ°Ñ Ð¸ÑполÑзÑеÑÑÑ
       ÑÑÐ¾Ð²ÐµÐ½Ñ IPPROTO_IP.

   СовмеÑÑимоÑÑÑ
       ÐÐ»Ñ ÑовмеÑÑимоÑÑи Ñ Linux 2.0 ÑÑÑаÑевÑий ÑинÑакÑиÑ
       socket(AF_INET, SOCK_PACKET, protocol) вÑÑ ÐµÑÑ
       поддеÑживаеÑÑÑ Ð´Ð»Ñ Ð¾ÑкÑÑÑÐ¸Ñ ÑокеÑов Ñипа
       packet(7). Такое иÑполÑзование не пооÑÑÑеÑÑÑ Ð¸
       должно бÑÑÑ Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ð¾ на socket(AF_PACKET, SOCK_RAW,
       protocol). ÐÑновное ÑазлиÑие Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸ в
       новой адÑеÑной ÑÑÑÑкÑÑÑе sockaddr_ll (вмеÑÑо ÑÑаÑой
       ÑÑÑÑкÑÑÑÑ sockaddr_pkt), ÑÑанÑÑей инÑоÑмаÑиÑ
       обобÑÑнного ÑÑÐ¾Ð²Ð½Ñ ÑоединениÑ.

ÐÐФÐÐТЫ
       СлиÑком много пÑоÑивоÑеÑий в знаÑениÑÑ
       оÑибок.

       ÐÑибка, иÑполÑзÑÐµÐ¼Ð°Ñ Ð¿Ñи диагноÑÑике
       иÑÑеÑÐ¿Ð°Ð½Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° ÑÑемеÑнÑÑ Ð¿Ð¾ÑÑов,
       оÑлиÑаеÑÑÑ Ð² ÑазлиÑнÑÑ ÑиÑÑемнÑÑ Ð²ÑзоваÑ
       (connect(2), bind(2), listen(2), sendto(2)), из-за Ñего
       ÑÑемеÑнÑе поÑÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð½Ð°Ð·Ð½Ð°ÑенÑ.

       Ðе опиÑÐ°Ð½Ñ ioctl Ð´Ð»Ñ Ð½Ð°ÑÑÑойки ÑпеÑиалÑнÑÑ
       паÑамеÑÑов IP Ð´Ð»Ñ Ð¸Ð½ÑеÑÑейÑа и ÑÐ°Ð±Ð»Ð¸Ñ ARP.

       ÐолÑÑение иÑÑодного адÑеÑа назнаÑÐµÐ½Ð¸Ñ Ð²
       msg_name Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ MSG_ERRQUEUE вÑзовом recvmsg(2) не
       ÑабоÑÐ°ÐµÑ Ð² некоÑоÑÑÑ ÑдÑÐ°Ñ 2.2.

СÐÐТРÐТРТÐÐÐÐ
       recvmsg(2), sendmsg(2), byteorder(3), ipfw(4), capabilities(7),
       icmp(7), ipv6(7), netlink(7), raw(7), socket(7), tcp(7), udp(7)

       ÐеÑвонаÑалÑÐ½Ð°Ñ ÑпеÑиÑикаÑÐ¸Ñ IP опиÑана в
       RFC 791. Ð RFC 1122 опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ ÑÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ
       Ñзлов IPv4. Ð RFC 1812 опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ ÑÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ
       маÑÑÑÑÑизаÑоÑов IPv4.



Linux                             2016-03-15                             IP(7)