ip

Autres langues

Langue: ru

Autres versions - même langue

Version: 11 íÁÑ 1999 (openSuse - 09/10/07)

Autres sections - même nom

Section: 7 (Divers)

îáú÷áîéå

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:
18



#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>