ip

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



ÐÐÐÐÐÐÐÐ
       ip - ÑеализаÑÐ¸Ñ Ð¿ÑоÑокола IPv4 под Linux

ÐÐÐÐÐ
       #include <sys/socket.h>
       #include <netinet/in.h>

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

ÐÐÐСÐÐÐÐ
       Linux ÑеализÑÐµÑ Internet Protocol (IP) веÑÑии 4,
       опиÑаннÑй в RFC791 и RFC1122.  ip вклÑÑÐ°ÐµÑ Ð² ÑебÑ
       вÑоÑой ÑÑÐ¾Ð²ÐµÐ½Ñ ÑеализаÑии гÑÑпповÑÑ
       ÑообÑений, ÑооÑвеÑÑÑвÑÑÑий RFC1112.  ÐÑоме Ñого,
       он ÑодеÑÐ¶Ð¸Ñ Ð¼Ð°ÑÑÑÑÑизаÑÐ¾Ñ IP, вклÑÑаÑÑий в ÑебÑ
       ÑилÑÑÑ Ð¿Ð°ÐºÐµÑов.

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

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

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

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


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


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

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

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

       ÐнаÑением пеÑеменной sin_addr ÑвлÑеÑÑÑ Ð°Ð´ÑеÑ
       IP-ÑоÑÑа.  ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ addr, ÑвлÑÑÑаÑÑÑ Ñленом
       ÑÑÑÑкÑÑÑÑ struct in_addr, ÑодеÑÐ¶Ð¸Ñ Ð°Ð´ÑÐµÑ ÑокеÑа в
       ÑеÑевом ÑоÑмаÑе.  РабоÑаÑÑ Ñо ÑÑÑÑкÑÑÑой in_addr
       ÑледÑÐµÑ ÑолÑко поÑÑедÑÑвом библиоÑеÑнÑÑ
       ÑÑнкÑий inet_aton(3), inet_addr(3), inet_makeaddr(3) или
       напÑÑмÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿ÑеобÑазоваÑÐµÐ»Ñ Ð¸Ð¼ÐµÐ½
       (ÑмоÑÑи gethostbyname(3)).  ÐдÑеÑа IPv4 делÑÑÑÑ Ð½Ð°
       одиноÑнÑе, ÑиÑоковеÑаÑелÑнÑе и гÑÑпповÑе.
       ÐаждÑй одиноÑнÑй адÑÐµÑ ÑказÑÐ²Ð°ÐµÑ Ð½Ð° один
       инÑеÑÑÐµÐ¹Ñ ÑоÑÑа, ÑиÑоковеÑаÑелÑнÑе адÑеÑа
       ÑказÑваÑÑ Ð½Ð° вÑе ÑоÑÑÑ Ð² ÑеÑи, а гÑÑпповÑе
       адÑеÑа ÑооÑвеÑÑÑвÑÑÑ Ð²Ñем ÑоÑÑам в гÑÑппе.
       ÐаÑагÑÐ°Ð¼Ð¼Ñ Ð¼Ð¾Ð³ÑÑ Ð¿Ð¾ÑÑлаÑÑÑÑ Ð¿Ð¾
       ÑиÑоковеÑаÑелÑнÑм адÑеÑам ÑолÑко еÑли
       ÑÑÑановлен Ñлаг 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).  ÐаÑамеÑÑ "ÑÑÐ¾Ð²ÐµÐ½Ñ Ð¾Ð¿Ñии
       ÑокеÑа" ÑÑÐ¸Ñ ÑÑнкÑий Ñавен SOL_IP.  ÐвоиÑнÑй Ñлаг
       Ñо знаÑением нÑÐ»Ñ Ð¾Ð·Ð½Ð°ÑÐ°ÐµÑ "ложÑ", дÑÑгие
       знаÑÐµÐ½Ð¸Ñ -- "иÑÑина".


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


       IP_PKTINFO
              ÐеÑÐµÐ´Ð°ÐµÑ ÑлÑжебное ÑообÑение 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_ifindex, по адÑеÑÑ
              из ipi_spec_dst.


       IP_RECVTOS
              ÐÑли вклÑÑена, Ñо вмеÑÑе Ñ Ð¸ÑÑодÑÑими
              пакеÑами пеÑедаеÑÑÑ Ð²ÑпомогаÑелÑное
              ÑообÑение IP_TOS.  Ðно ÑодеÑÐ¶Ð¸Ñ Ð±Ð°Ð¹Ñ,
              коÑоÑÑй опÑеделÑÐµÑ Ð¿Ð¾Ð»Ðµ Тип
              СеÑвиÑа/ÐÑиоÑиÑÐµÑ Ð² заголовке пакеÑа.
              ÐжидаеÑÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкий ÑелоÑиÑленнÑй
              Ñлаг.


       IP_RECVTTL
              ÐÑли ÑÑÐ¾Ñ Ñлаг ÑÑÑановлен, Ñо в поле ÐÑемÑ
              Ðизни (time to live) полÑÑаемого пакеÑа,
              как байÑ, пеÑедаеÑÑÑ ÑпÑавлÑÑÑее
              ÑообÑение IP_RECVTTL.  Ðе поддеÑживаеÑÑÑ
              ÑокеÑами Ñипа SOCK_STREAM.


       IP_RECVOPTS
              ÐеÑÐµÐ´Ð°ÐµÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð²Ñе вÑодÑÑие
              опÑии IP, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑпÑавлÑÑÑего ÑообÑениÑ
              IP_OPTIONS.  Ðаголовок маÑÑÑÑÑизаÑии и
              дÑÑгие опÑии Ñже ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð´Ð»Ñ
              локалÑного ÑоÑÑа. Ðе поддеÑживаеÑÑÑ
              ÑокеÑами Ñипа SOCK_STREAM.


       IP_RETOPTS
              ÐденÑиÑна опÑии IP_RECVOPTS, но возвÑаÑаеÑ
              необÑабоÑаннÑе опÑии, пÑиÑем вÑеменнÑе
              оÑмеÑки и запиÑи о маÑÑÑÑÑизаÑии длÑ
              ÑÑого Ñопа еÑе не заполненÑ.


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


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


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


       IP_RECVERR (обÑÑвлено в <linux/errqueue.h>)
              ÐклÑÑÐ°ÐµÑ Ð±Ð¾Ð»ÐµÐµ надежнÑÑ Ð¿ÐµÑедаÑÑ
              ÑообÑений об оÑибкаÑ.  ÐÑли ÑÑа опÑиÑ
              вклÑÑена Ð´Ð»Ñ Ð´Ð°ÑагÑамного ÑокеÑа, Ñо
              вÑе поÑвлÑÑÑиеÑÑ Ð¾Ñибки бÑдÑÑ Ð¿Ð¾ÑÑавленÑ
              в оÑеÑÐµÐ´Ñ Ð¾Ñибок, ÑÐ²Ð¾Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾
              ÑокеÑа.  ÐÑли пÑи ÑабоÑе ÑокеÑа
              Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¾Ñибка, Ñо полÑзоваÑелÑ
              Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ ÐµÐµ пÑÑем вÑзова recvmsg(2) Ñ
              ÑÑÑановленнÑм Ñлагом MSG_ERRQUEUE.  СÑÑÑкÑÑÑа
              sock_extended_err, опиÑÑваÑÑÐ°Ñ Ð¾ÑибкÑ, бÑдеÑ
              пеÑедана в ÑлÑжебном ÑообÑении Ñипа
              IP_RECVERR ÑеÑез SOL_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 {
                     u_int32_t       ee_errno;       /* Ð½Ð¾Ð¼ÐµÑ Ð¾Ñибки */
                     u_int8_t        ee_origin;      /* оÑкÑда поÑвилаÑÑ Ð¾Ñибка */
                     u_int8_t        ee_type;        /* Ñип */
                     u_int8_t        ee_code;        /* код */
                     u_int8_t        ee_pad;
                     u_int32_t       ee_info;        /* дополниÑелÑÐ½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ */
                     u_int32_t       ee_data;        /* дÑÑгие даннÑе */
                     /* ÐалÑÑе Ð¼Ð¾Ð³Ñ ÑледоваÑÑ ÐµÑе даннÑе */
              };

              struct sockaddr *SOCK_EE_OFFENDER(struct sock_extended_err *);

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

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

              ÐамеÑÑÑе, ÑÑо Ñ TCP Ð½ÐµÑ Ð¾ÑеÑеди оÑибок;
              Флаг MSG_ERRQUEUE нелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð´Ð»Ñ
              ÑокеÑов Ñипа SOCK_STREAM.  Таким обÑазом,
              вÑе оÑибки можно полÑÑиÑÑ ÑолÑко как
              знаÑение, возвÑаÑаемое ÑÑнкÑией
              ÑокеÑа, или ÑеÑез опÑÐ¸Ñ SO_ERROR.

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

              ÐÑа опÑÐ¸Ñ ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¸Ð»Ð¸ возвÑаÑаеÑ
              знаÑение Ð½Ð¾Ð»Ñ Ð¸Ð»Ð¸ единиÑа. Ðо
              ÑмолÑаниÑ, опÑÐ¸Ñ IP_RECVERR оÑклÑÑена.


       IP_PMTU_DISCOVER
              УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¸Ð»Ð¸ возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение
              опÑии Path MTU Discovery (ÐбнаÑÑжение MTU
              ÐаÑÑÑÑÑа) ÑÑÑановленной Ð´Ð»Ñ ÑокеÑа. ÐÑли
              она вклÑÑена, Ñо Linux бÑÐ´ÐµÑ Ð¿ÑоизводиÑÑ
              обнаÑÑжение MTU маÑÑÑÑÑа, как опиÑано в
              RFC1191 Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑокеÑа. РпÑоÑивном
              ÑлÑÑае, Ñлаг ÑÑагменÑаÑии бÑдеÑ
              ÑÑÑанавливаÑÑÑÑ Ñ Ð²ÑÐµÑ Ð¸ÑÑодÑÑÐ¸Ñ Ð´Ð°ÑагÑамм.
              ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð²Ñей ÑиÑÑемÑ
              конÑÑолиÑÑеÑÑÑ sysctl-знаÑением ip_no_pmtu_disc
              Ð´Ð»Ñ ÑокеÑов Ñипа SOCK_STREAM, а Ð´Ð»Ñ ÑокеÑов
              дÑÑÐ³Ð¸Ñ Ñипов ÑÑа опÑÐ¸Ñ Ð¾ÑклÑÑена. ÐÑли Ñип
              ÑокеÑа не SOCK_STREAM, Ñо оÑвеÑÑÑвенноÑÑÑ Ð·Ð°
              ÑÐ°Ð·Ð±Ð¸Ð²ÐºÑ Ð´Ð°Ð½Ð½ÑÑ Ð½Ð° пакеÑÑ, ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ
              ÑооÑвеÑÑÑвÑÐµÑ MTU, и за вÑполнение,
              по-необÑодимоÑÑи, повÑоÑной пеÑедаÑи
              даннÑÑ, ложиÑÑÑ Ð½Ð° полÑзоваÑелÑ. ÐÑли ÑÑоÑ
              Ñлаг ÑÑÑановлен, Ñо ÑдÑо бÑÐ´ÐµÑ Ð¾ÑвеÑгаÑÑ
              пакеÑÑ, ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ¾ÑоÑÑÑ Ð±Ð¾Ð»ÑÑе заданного
              знаÑÐµÐ½Ð¸Ñ MTU маÑÑÑÑÑа (оно задаеÑÑÑ ÑеÑез
              опÑÐ¸Ñ EMSGSIZE).


              Флаги опÑии   ÐÑ Ð·Ð½Ð°ÑениÑ
              Path MTU Discovery
              ===================    ============
              IP_PMTUDISC_WANT       ÐÑполÑзоваÑÑ ÑÑÑановки
                                     маÑÑÑÑÑизаÑоÑов.
              IP_PMTUDISC_DONT       Ðикогда не пÑоизводиÑÑ
                                     обнаÑÑжение MTU маÑÑÑÑÑа.
              IP_PMTUDISC_DO         ÐÑегда пÑоизводиÑÑ Ð¾Ð±Ð½Ð°ÑÑжение
                                     MTU маÑÑÑÑÑа.


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

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

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

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


       IP_MTU ÐозвÑаÑÐ°ÐµÑ Ð¸ÑполÑзÑемое в даннÑй
              Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð·Ð½Ð°Ñение MTU маÑÑÑÑÑа ÑекÑÑего
              ÑокеÑа.  ÐÑа опÑÐ¸Ñ Ð¸ÑполÑзÑеÑÑÑ ÑолÑко еÑли
              ÑÐ¾ÐºÐµÑ ÑÑÑановил Ñоединение. ÐозвÑаÑаеÑ
              Ñелое ÑиÑло. ÐнаÑение ÑÑой опÑии можно
              полÑÑиÑÑ ÑолÑко ÑеÑез getsockopt(2).

       IP_ROUTER_ALERT
              ÐеÑÐµÐ´Ð°ÐµÑ ÑÑÐ¾Ð¼Ñ ÑокеÑÑ Ð²Ñе пакеÑÑ, коÑоÑÑе
              пеÑеÑÑлаÑÑÑÑ Ñ Ð¾Ð¿Ñией IP Router Alert.  ÐÑа опÑиÑ
              иÑполÑзÑеÑÑÑ ÑолÑко в ÑокеÑÐ°Ñ Ñипа raw. Ðна
              Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð°, напÑимеÑ, длÑ
              демонов RSVP, запÑÑеннÑÑ Ð½Ð°
              полÑзоваÑелÑÑком ÑÑовне. ÐеÑеÑваÑеннÑе
              пакеÑÑ Ð½Ðµ пеÑеÑÑлаÑÑÑÑ ÑдÑом:
              оÑвеÑÑÑвенноÑÑÑ Ð·Ð° Ð¸Ñ Ð¿Ð¾Ð²ÑоÑнÑÑ Ð¾ÑÑÑлкÑ
              Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° полÑзоваÑеле.  СвÑзÑвание
              ÑокеÑа игноÑиÑÑеÑÑÑ, Ñакие пакеÑÑ
              ÑилÑÑÑÑÑÑÑÑ ÑолÑко пÑоÑоколом.  РкаÑеÑÑве
              аÑгÑменÑа иÑполÑзÑÐµÑ ÑелоÑиÑленнÑй Ñлаг.

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

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

       IP_ADD_MEMBERSHIP
              ÐÑиÑоединÑÐµÑ Ðº гÑÑппе Ð´Ð»Ñ Ð³ÑÑппового
              вÑзова. ÐÑгÑменÑом ÑвлÑеÑÑÑ ÑÑÑÑкÑÑÑа
              structip_mreqn.

              struct ip_mreqn {
                  struct in_addr imr_multiaddr; /* IP адÑÐµÑ Ð³ÑÑÐ¿Ð¿Ñ Ð´Ð»Ñ Ð³ÑÑппового вÑзова */
                  struct in_addr imr_address;   /* IP адÑÐµÑ Ð»Ð¾ÐºÐ°Ð»Ñного инÑеÑÑейÑа */
                  int            imr_ifindex;   /* ÑказаÑÐµÐ»Ñ Ð½Ð° инÑеÑÑÐµÐ¹Ñ */
              };

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

              ÐÐ»Ñ ÑовмеÑÑимоÑÑи, ÑÑаÑÐ°Ñ ÑÑÑÑкÑÑÑа ip_mreq вÑе
              еÑе поддеÑживаеÑÑÑ. Ðна оÑлиÑаеÑÑÑ Ð¾Ñ
              ÑÑÑÑкÑÑÑÑ ip_mreqn ÑолÑко оÑÑÑÑÑÑвием полÑ
              imr_ifindex.  ÐÑа опÑÐ¸Ñ Ð¸ÑполÑзÑеÑÑÑ ÑолÑко
              ÑеÑез setsockopt(2).

       IP_DROP_MEMBERSHIP
              УдалÑÐµÑ Ð¸Ð· гÑÑÐ¿Ð¿Ñ Ð´Ð»Ñ Ð³ÑÑппового
              вÑзова. ÐÑгÑменÑом ÑвлÑеÑÑÑ ÑÑÑÑкÑÑÑа ip_mreqn
              или ip_mreq , подобно опÑии IP_ADD_MEMBERSHIP.

       IP_MULTICAST_IF
              УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð»Ð¾ÐºÐ°Ð»Ñное ÑÑÑÑойÑÑво как
              ÑÐ¾ÐºÐµÑ Ð³ÑÑппового вÑзова.  ÐÑгÑменÑом
              ÑвлÑеÑÑÑ ÑÑÑÑкÑÑÑа ip_mreqn или ip_mreq подобно
              опÑии IP_ADD_MEMBERSHIP.

              ÐÑли ÑокеÑÑ Ð¿ÐµÑедаеÑÑÑ Ð½ÐµÐ¿ÑавилÑнаÑ
              опÑиÑ, Ñо возвÑаÑаеÑÑÑ Ð¾Ñибка ENOPROTOOPT .

SYSCTL-ÐÐÐЧÐÐÐЯ
       IP пÑоÑокол поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ sysctl длÑ
       конÑигÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑÑ Ð¾Ð¿Ñий.
       Ð sysctl-знаÑениÑм можно полÑÑиÑÑ Ð´Ð¾ÑÑÑп пÑÑем
       ÑÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ запиÑи в ÑÐ°Ð¹Ð»Ñ /proc/sys/net/ipv4/* или
       ÑеÑез иÑполÑзование инÑеÑÑейÑа sysctl(2).

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

       ip_forward
              ÐклÑÑаеÑ/оÑклÑÑÐ°ÐµÑ Ð¿ÐµÑенапÑавление
              IP-пакеÑов в завиÑимоÑÑи Ð¾Ñ Ð·Ð½Ð°ÑениÑ
              Ñлага.  ÐеÑенапÑавление IP Ñакже можеÑ
              бÑÑÑ ÑÑÑановлено Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ инÑеÑÑейÑа
              в оÑделÑноÑÑи.

       ip_dynaddr
              ÐклÑÑÐ°ÐµÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸ÑеÑкÑÑ Ð°Ð´ÑеÑаÑÐ¸Ñ ÑокеÑа и
              маÑкаÑадинг Ð¿Ð¾Ð´Ð¼ÐµÐ½Ñ Ð²Ñодного адÑеÑа
              пÑи изменении адÑеÑа инÑеÑÑейÑа. ÐÑо
              полезно Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÑÑиÑÑемого инÑеÑÑейÑа Ñ
              изменÑÑÑимÑÑ IP адÑеÑом.  0 ознаÑÐ°ÐµÑ Ð½Ðµ
              подменÑÑÑ, 1 вклÑÑÐ°ÐµÑ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ñ Ð¸ 2
              вклÑÑÐ°ÐµÑ Ð¼Ð½Ð¾Ð³Ð¾ÑловнÑй Ñежим.

       ip_autoconfig
              Ðе опиÑан.

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

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

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

       ip_always_defrag
              [ÐоÑвилоÑÑ Ð½Ð°ÑÐ¸Ð½Ð°Ñ Ñ ÑдÑа 2.2.13; в ÑанниÑ
              веÑÑиÑÑ ÑдÑа ÑÑа возможноÑÑÑ
              конÑÑолиÑовалаÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии Ñ
              помоÑÑÑ Ñлага CONFIG_IP_ALWAYS_DEFRAG].

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

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

              ÐÑа опÑÐ¸Ñ Ð²ÐºÐ»ÑÑаеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки, еÑли
              конÑигÑÑиÑÑеÑÑÑ Ð¼Ð°ÑкаÑадинг или
              пÑозÑаÑнÑй пÑокÑи-ÑеÑвеÑ.

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

IOCTLS
       ÐÑе ioctls, опиÑаннÑе в socket(7), пÑÐ¸Ð¼ÐµÐ½Ð¸Ð¼Ñ Ðº ip.

       Ioctls Ð´Ð»Ñ ÐºÐ¾Ð½ÑигÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑайеÑволов,
       опиÑÐ°Ð½Ñ Ð² ipfw(7) из пакеÑа ipchains.

       Ioctls Ð´Ð»Ñ ÐºÐ¾Ð½ÑигÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑаÑакÑеÑнÑÑ
       паÑамеÑÑов ÑÑÑÑойÑÑв, опиÑÐ°Ð½Ñ Ð² netdevice(7).

ÐÐÐÐЧÐÐÐЯ
       ÐÑдÑÑе оÑÑоÑÐ¾Ð¶Ð½Ñ Ð¿Ñи иÑполÑзовании опÑии
       SO_BROADCAST - она не ÑвлÑеÑÑÑ Ð¿ÑивилегиÑованной
       в Linux. ÐÑли небÑежно оÑноÑиÑÑÑÑ Ðº
       ÑиÑоковеÑаÑелÑнÑм ÑообÑениÑм, Ñо можно
       легко пеÑегÑÑзиÑÑ ÑеÑÑ.  РновÑÑ Ð¿ÑоÑÐ¾ÐºÐ¾Ð»Ð°Ñ Ð´Ð»Ñ
       пÑиложений лÑÑÑе иÑполÑзоваÑÑ Ð³ÑÑпповой
       вÑзов вмеÑÑо ÑиÑоковеÑаÑелÑнÑÑ ÑообÑений.
       ШиÑоковеÑаÑелÑнÑе ÑообÑÐµÐ½Ð¸Ñ ÑейÑаÑ
       иÑполÑзÑÑÑÑÑ Ñеже.

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

ÐÐÐЫ ÐШÐÐÐÐ
       ENOTCONN
              ÐейÑÑвие должно вÑполнÑÑÑÑÑ ÑолÑко над
              ÑокеÑом, ÑÑÑановивÑем Ñоединение, а ÑÑоÑ
              ÑÐ¾ÐºÐµÑ Ñоединение не ÑÑÑановил.

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

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

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


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

       ENOPROTOOPT и EOPNOTSUPP
              ÐеÑедана недопÑÑÑÐ¸Ð¼Ð°Ñ Ð¾Ð¿ÑиÑ.

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

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

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

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

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

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

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

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

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

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

       ENODEV СеÑевое ÑÑÑÑойÑÑво недоÑÑÑпно или
              неÑпоÑобно поÑÑлаÑÑ IP пакеÑÑ.

       ENOPKG IP-подÑиÑÑема ÑдÑа не ÑконÑигÑÑиÑована.

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

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

ÐÐРСÐÐ
       ÐпÑии IP_PKTINFO, IP_MTU, IP_PMTU_DISCOVER, IP_PKTINFO, IP_RECVERR
       и IP_ROUTER_ALERT ÑвлÑÑÑÑÑ Ð½Ð¾Ð²Ñми в Linux 2.2.  Ðолее
       Ñого, они ÑпеÑиÑиÑÐ½Ñ Ð´Ð»Ñ Linux и поÑÑÐ¾Ð¼Ñ Ð¸Ñ Ð½Ðµ
       ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð² пеÑеноÑимÑÑ
       пÑогÑаммаÑ.

       СÑÑÑкÑÑÑа ip_mreqn поÑвилаÑÑ Ð² Linux 2.2.  Linux 2.0
       поддеÑживал ÑолÑко ÑÑÑÑкÑÑÑÑ ip_mreq.

       Sysctl-знаÑÐµÐ½Ð¸Ñ Ð±Ñли Ð²Ð²ÐµÐ´ÐµÐ½Ñ Ð² Linux 2.2.

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

ÐШÐÐÐÐ Ð ÐÐÐÐÐÐЦÐÐ
       СлиÑком много пÑоÑивоÑеÑивÑÑ Ð·Ð½Ð°Ñений
       оÑибок.

       Ðе опиÑÐ°Ð½Ñ ioctls Ð´Ð»Ñ ÐºÐ¾Ð½ÑигÑÑиÑованиÑ
       ÑпеÑиÑиÑнÑÑ Ð´Ð»Ñ IP опÑий инÑеÑÑейÑа и ÑÐ°Ð±Ð»Ð¸Ñ ARP.

       ÐекоÑоÑÑе веÑÑии glibc забÑвали обÑÑвиÑÑ
       in_pktinfo.  ÐбойÑи ÑÑо можно, ÑкопиÑовав
       обÑÑвление ÑÑой ÑÑÑÑкÑÑÑÑ Ð¸Ð· ÑÑой ÑÑÑаниÑÑ
       ÑÑководÑÑва.

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

ÐÐТÐРЫ
       ÐÑÑ ÑÑÑаниÑÑ ÑÑководÑÑва напиÑал Andi Kleen.

СÐÐТРРТÐÐÐÐ
       sendmsg(2), recvmsg(2), socket(7), netlink(7), tcp(7), udp(7), raw(7),
       ipfw(7).

       RFC791, где опиÑана изнаÑалÑÐ½Ð°Ñ ÑпеÑиÑикаÑиÑ
       IP.
       RFC1122, где опиÑÐ°Ð½Ñ ÑÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº ÑоÑÑÑ Ð´Ð»Ñ IPv4.
       RFC1812, где опиÑÐ°Ð½Ñ ÑÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº маÑÑÑÑÑизаÑоÑÑ
       Ð´Ð»Ñ IPv4.

ÐÐÐ ÐÐÐÐ
       Copyright (C) 2000 ÐнÑон ÐÑпов <astray@yandex.ru>




СÑÑаниÑÑ Ð ÑководÑÑва 11ÐÐаÑn1999                            IP(7)