ip

Autres langues

Langue: ja

Version: 2001-06-19 (openSuse - 09/10/07)

Autres sections - même nom

Section: 7 (Divers)

̾Á°

ip - Linux IPv4 ¥×¥í¥È¥³¥ë¤Î¼ÂÁõ

½ñ¼°

#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* ¾åµ­¤Î¥¹¡¼¥Ñ¡¼¥»¥Ã¥È */

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

ÀâÌÀ

Linux ¤Ï RFC 791 ¤È RFC 1122 ¤Çµ­½Ò¤µ¤ì¤Æ¤¤¤ë Internet Protocol, version 4 ¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¡£ ip ¤Ë¤Ï RFC 1112 ¤Ë½àµò¤·¤¿ level 2 ¥Þ¥ë¥Á¥­¥ã¥¹¥È¤Î¼ÂÁõ¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£ ¤Þ¤¿¥Ñ¥±¥Ã¥È¥Õ¥£¥ë¥¿µ¡Ç½¤ò´Þ¤à IP ¥ë¡¼¥¿¡¼¤â¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¡£

¥×¥í¥°¥é¥ß¥ó¥°¡¦¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ï BSD ¥½¥±¥Ã¥È¤È¸ß´¹¤Ç¤¢¤ë¡£ ¥½¥±¥Ã¥È¤Ë´Ø¤¹¤ë¤è¤ê¾ÜºÙ¤Ê¾ðÊó¤Ï socket(7) ¤ò»²¾È¤Î¤³¤È¡£

IP ¥½¥±¥Ã¥È¤Ï¡¢ socket(2) ´Ø¿ô¤ò socket(PF_INET, socket_type, protocol) ¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤¹¤³¤È¤ÇÀ¸À®¤µ¤ì¤ë¡£ »ØÄê¤Ç¤­¤ë¥½¥±¥Ã¥È¥¿¥¤¥×¤Ï 3 ¤Ä¤¢¤ê¡¢ tcp(7) ¥½¥±¥Ã¥È¤ò¥ª¡¼¥×¥ó¤¹¤ë¾ì¹ç SOCK_STREAM¡¢ udp(7) ¥½¥±¥Ã¥È¤ò¥ª¡¼¥×¥ó¤¹¤ë¾ì¹ç SOCK_DGRAM¡¢ IP ¥×¥í¥È¥³¥ë¤ËľÀÜ¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Ë raw(7) ¥½¥±¥Ã¥È¤ò¥ª¡¼¥×¥ó¤¹¤ë¾ì¹ç¤Ë¤Ï SOCK_RAW ¤Ç¤¢¤ë¡£ protocol ¤ÏÁ÷¼õ¿®¤µ¤ì¤ë IP ¥Ø¥Ã¥À¤Ë½ñ¤«¤ì¤ë IP ¥×¥í¥È¥³¥ë¤Ç¤¢¤ë¡£ »ØÄê¤Ç¤­¤ëÃͤϡ¢ TCP ¥½¥±¥Ã¥È¤Ë¤Ï 0 ¤Þ¤¿¤Ï IPPROTO_TCP¡¢ UDP ¥½¥±¥Ã¥È¤Ë¤Ï 0 ¤Þ¤¿¤Ï IPPROTO_UDP ¤Ë¸Â¤é¤ì¤ë¡£ SOCK_RAW ¤ËÂФ·¤Æ¤Ï¡¢ RFC 1700 ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëÍ­¸ú¤Ê IANA IP ¥×¥í¥È¥³¥ë¤ò¡¢ ³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ëÈÖ¹æ¤Ç»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

¤¢¤ë¥×¥í¥»¥¹¤Ç¡¢¤ä¤Ã¤Æ¤¯¤ë¥Ñ¥±¥Ã¥È¤ò¼õ¿®¤·¤¿¤ê ÀܳÍ×µá¤ò¼õ¤±¤¿¤ê¤·¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢ ¤½¤Î¥×¥í¥»¥¹¤Ï¥í¡¼¥«¥ë¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¥¢¥É¥ì¥¹¤Ë¡¢ bind(2) ¤òÍѤ¤¤Æ¥½¥±¥Ã¥È¤ò¥Ð¥¤¥ó¥É¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¤¢¤ë¥í¡¼¥«¥ë¤Ê¡Ö¥¢¥É¥ì¥¹¤È¥Ý¡¼¥È¡×¤Î¥Ú¥¢¤ËÂФ·¤Æ¥Ð¥¤¥ó¥É¤Ç¤­¤ë IP ¥½¥±¥Ã¥È¤Ï°ì¤Ä¤Ë¸Â¤é¤ì¤ë¡£ bind(2) ¤Î¸Æ¤Ó½Ð¤·¤Ç INADDR_ANY ¤¬»ØÄꤵ¤ì¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢¥½¥±¥Ã¥È¤Ï¥í¡¼¥«¥ë¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î ¤¹¤Ù¤Æ¤Ë¥Ð¥¤¥ó¥É¤µ¤ì¤ë¡£ listen(2) ¤Þ¤¿¤Ï connect(2) ¤¬¥Ð¥¤¥ó¥É¤µ¤ì¤Æ¤¤¤Ê¤¤¥½¥±¥Ã¥È¤Ç¥³¡¼¥ë¤µ¤ì¤ë¤È¡¢ ¤½¤Î¥½¥±¥Ã¥È¤Ï¼«Æ°Åª¤Ë¥í¡¼¥«¥ë¤Ê¥¢¥É¥ì¥¹¤ò INADDR_ANY ¤Ë¥»¥Ã¥È¤·¡¢¶õ¤¤¤Æ¤¤¤ë¥Ý¡¼¥È¤ò¥é¥ó¥À¥à¤ËÁª¤ó¤Ç¥Ð¥¤¥ó¥É¤¹¤ë¡£

SO_REUSEADDR ¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢ ¥Ð¥¤¥ó¥É¤µ¤ì¤Æ¤¤¤¿ TCP ¥í¡¼¥«¥ë¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¤Ï ¥¯¥í¡¼¥º¤µ¤ì¤¿¸å¤·¤Ð¤é¤¯¤Î´Ö»È¤¨¤Ê¤¯¤Ê¤ë¡£ SO_REUSEADDR ¥Õ¥é¥°¤ò»È¤¦¤È TCP ¤Î¿®ÍêÀ­¤òÄã²¼¤µ¤»¤ë¤Î¤Ç¡¢ »È¤¦¤È¤­¤Ë¤ÏÃí°Õ¤¬É¬ÍפǤ¢¤ë¡£

¥¢¥É¥ì¥¹¤Î¥Õ¥©¡¼¥Þ¥Ã¥È

IP ¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¤Ï¡¢ IP ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¥¢¥É¥ì¥¹¤È 16¥Ó¥Ã¥È¤Î¥Ý¡¼¥ÈÈÖ¹æ¤ÎÁȤ߹ç¤ï¤»¤ÇÄêµÁ¤µ¤ì¤ë¡£ IP ¥×¥í¥È¥³¥ë¤½¤Î¤â¤Î¤Ï¥Ý¡¼¥ÈÈÖ¹æ¤ò°·¤ï¤Ê¤¤¡£ ¥Ý¡¼¥ÈÈÖ¹æ¤Ï¡¢ udp(7) ¤ä tcp(7) ¤È¤¤¤Ã¤¿¡¢¾å°Ì¤Î¥×¥í¥È¥³¥ë¤Ç¼ÂÁõ¤µ¤ì¤ë¡£ raw ¥½¥±¥Ã¥È¤Ç¤Ï¡¢ sin_port ¤¬ IP ¥×¥í¥È¥³¥ë¤Ë¥»¥Ã¥È¤µ¤ì¤ë¡£

struct sockaddr_in {

    sa_family_t    sin_family; /* address family: AF_INET */

    u_int16_t      sin_port;   /* port in network byte order */

    struct in_addr sin_addr;   /* internet address */

};



/* Internet address. */

struct in_addr {

    u_int32_t      s_addr;     /* address in network byte order */

};

sin_familiy ¤Ë¤Ï¾ï¤Ë AF_INET ¤ò¥»¥Ã¥È¤¹¤ë¡£¤³¤ì¤Ïɬ¿Ü¤Ç¤¢¤ë¡£ Linux 2.2 ¤Ç¤Ï¡¢¤³¤Î¥»¥Ã¥È¤ò˺¤ì¤ë¤È ¤Û¤È¤ó¤É¤Î¥Í¥Ã¥È¥ï¡¼¥¯´Ø¿ô¤Ï EINVAL ¤òÊÖ¤¹¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ sin_port ¤Ë¤Ï¥Ý¡¼¥ÈÈÖ¹æ¤ò¥Í¥Ã¥È¥ï¡¼¥¯¥Ð¥¤¥È¥ª¡¼¥À¡¼¤Ç»ØÄꤹ¤ë¡£ 1024 ̤Ëþ¤Î¥Ý¡¼¥ÈÈÖ¹æ¤ÏÆø¢¥Ý¡¼¥È¤È¤è¤Ð¤ì¤ë¡£ Æø¢¥×¥í¥»¥¹ (CAP_NET_BIND_SERVICE ¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤ò»ý¤Ä¥×¥í¥»¥¹) °Ê³°¤Î¥×¥í¥»¥¹¤Ï¡¢¤³¤ì¤é¤Î¥Ý¡¼¥È¤Ë¤Ï bind(2) ¤Ç¤­¤Ê¤¤¡£ IPv4 ¥×¥í¥È¥³¥ë¤½¤Î¤â¤Î¤Ë¤Ï¥Ý¡¼¥È¤Ë´Ø¤¹¤ë³µÇ°¤¬¤Ê¤¤¡£ ¥Ý¡¼¥È¤Ï¡¢ tcp(7) ¤ä udp(7) ¤È¤¤¤Ã¤¿¡¢¾å°Ì¤Î¥×¥í¥È¥³¥ë¤Ë¤ª¤¤¤Æ¼ÂÁõ¤µ¤ì¤ë¡£

sin_addr ¤Ï IP ¥Û¥¹¥È¥¢¥É¥ì¥¹¤Ç¤¢¤ë¡£ struct in_addr ¤Î s_addr ¥á¥ó¥Ð¤Ë¤Ï¡¢¥Û¥¹¥È¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¥¢¥É¥ì¥¹¤ò ¥Í¥Ã¥È¥ï¡¼¥¯¥Ð¥¤¥È¥ª¡¼¥À¡¼¤Ç»ØÄꤹ¤ë¡£ in_addr ¤Ï¡¢INADDR_* ¤Î°ì¤Ä (Î㤨¤Ð INADDR_ANY) ¤òÂåÆþ¤¹¤ë¡¢ ¥é¥¤¥Ö¥é¥ê´Ø¿ô inet_aton(3), inet_addr(3), inet_makeaddr(3) ¤òÍѤ¤¤ë¡¢¤¢¤ë¤¤¤Ï̾Á°²ò·èµ¡¹½ (name resolver) ¤òľÀÜÍѤ¤¤ë¡¢¤Î¤É¤ì¤«¤ÇÀßÄꤹ¤Ù¤­¤Ç¤¢¤ë¡£ (gethostbyname(3) ¤ò¸«¤è)¡£ IPv4 ¥¢¥É¥ì¥¹¤Ë¤Ï¡¢¥æ¥Ë¥­¥ã¥¹¥È¥¢¥É¥ì¥¹¡¢ ¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¥¢¥É¥ì¥¹¡¢¥Þ¥ë¥Á¥­¥ã¥¹¥È¥¢¥É¥ì¥¹¤¬¤¢¤ë¡£ ¥æ¥Ë¥­¥ã¥¹¥È¥¢¥É¥ì¥¹¤Ï¡¢¤¢¤ë¥Û¥¹¥È¤Î°ì¤Ä¤Î¥¢¥É¥ì¥¹¤ò»ØÄꤹ¤ë¡£ ¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¥¢¥É¥ì¥¹¤Ï¡¢¤¢¤ë¥Í¥Ã¥È¥ï¡¼¥¯¾å¤ÎÁ´¤Æ¤Î¥Û¥¹¥È¤ò»ØÄꤹ¤ë¡£ ¥Þ¥ë¥Á¥­¥ã¥¹¥È¥¢¥É¥ì¥¹¤Ï¡¢¥Þ¥ë¥Á¥­¥ã¥¹¥È¥°¥ë¡¼¥×¤Ë½ê°¤¹¤ë Á´¤Æ¤Î¥Û¥¹¥È¤ò»ØÄꤹ¤ë¡£¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¥¢¥É¥ì¥¹¤Ø¤Î¥Ç¡¼¥¿¥°¥é¥à¤Ï¡¢ SO_BROADCAST ¥½¥±¥Ã¥È¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¤ÈÁ÷¿®¡¦¼õ¿®¤Ç¤­¤Ê¤¤¡£ ¸½ºß¤Î¼ÂÁõ¤Ç¤Ï¡¢Àܳ»Ø¸þ¤Î¥½¥±¥Ã¥È¤Ë¤Ï¥æ¥Ë¥­¥ã¥¹¥È¥¢¥É¥ì¥¹¤·¤«»È¤¨¤Ê¤¤¡£

¥¢¥É¥ì¥¹¤È¥Ý¡¼¥È¤Ï¾ï¤Ë¥Í¥Ã¥È¥ï¡¼¥¯¥Ð¥¤¥È¥ª¡¼¥À¡¼¤Ç³ÊǼ¤µ¤ì¤ë¤³¤È¤ËÃí°Õ¤»¤è¡£ ¶ñÂÎŪ¤Ë¤Ï¡¢¥Ý¡¼¥È¤ò»ØÄꤹ¤ë¿ôÃÍ¤Ë¤Ï htons(3) ¤ò¸Æ¤Ó½Ð¤¹É¬Íפ¬¤¢¤ë¡£ ɸ½à¥é¥¤¥Ö¥é¥ê¤Ë¤¢¤ë¥¢¥É¥ì¥¹/¥Ý¡¼¥ÈÁàºî´Ø¿ô¤Ï ¤¹¤Ù¤Æ¥Í¥Ã¥È¥ï¡¼¥¯¥Ð¥¤¥È¥ª¡¼¥À¡¼¤ÇÆ°ºî¤¹¤ë¡£

ÆÃÊ̤ʥ¢¥É¥ì¥¹¤¬¤¤¤¯¤Ä¤«Â¸ºß¤¹¤ë:

INADDR_LOOPBACK(127.0.0.1)
loopback ¥Ç¥Ð¥¤¥¹¤òÄ̤·¤Æ¾ï¤Ë¥í¡¼¥«¥ë¤Ê¥Û¥¹¥È¤ò»²¾È¤¹¤ë¡£
INADDR_ANY(0.0.0.0)
¥Ð¥¤¥ó¥É¤ËÍѤ¤¤ëǤ°Õ¤Î¥¢¥É¥ì¥¹¡£
INADDR_BROADCAST(255.255.255.255)
Ǥ°Õ¤Î¥Û¥¹¥È¡£Îò»ËŪÍýͳ¤«¤é¡¢¥Ð¥¤¥ó¥É¤ÎºÝ¤Ë¤Ï INADDR_ANY ¤ÈƱ¤¸¸ú²Ì¤Ë¤Ê¤ë¡£

¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó

IP ¤Ë¤Ï¥×¥í¥È¥³¥ë¸ÇÍ­¤Î¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤¬¤¤¤¯¤Ä¤«Â¸ºß¤·¡¢ setsockopt(2) ¤ÇÀßÄ꤬¡¢ getsockopt(2) ¤Ç¼èÆÀ¤¬¤Ç¤­¤ë¡£ IP ¤Î¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¥ì¥Ù¥ë¤Ï IPPROTO_IP ¤Ç¤¢¤ë¡£ ¥Ö¡¼¥ëÀ°¿ôÃͤΥե饰¤Ç¤Ï¡¢ 0 ¤Ïµ¶¡¢¤½¤ì°Ê³°¤Ï¿¿¤ò°ÕÌ£¤¹¤ë¡£
IP_OPTIONS
¤³¤Î¥½¥±¥Ã¥È¤«¤éÁ÷¤é¤ì¤ë¥Ñ¥±¥Ã¥ÈÁ´¤Æ¤ËÉտ魯¤ë IP ¥ª¥×¥·¥ç¥ó¤ò ÀßÄꡦ¼èÆÀ¤¹¤ë¡£¥ª¥×¥·¥ç¥ó¤òÊݸ¤·¤Æ¤¤¤ë¥á¥â¥ê¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿¤È ¥ª¥×¥·¥ç¥ó¤ÎŤµ¤È¤ò°ú¤­¿ô¤Ë¼è¤ë¡£ setsockopt(2) ¤ò¸Æ¤Ó½Ð¤¹¤È¡¢¥½¥±¥Ã¥È¤Ë´ØÏ¢¤Å¤±¤é¤ì¤ë IP ¥ª¥×¥·¥ç¥ó¤òÀßÄê¤Ç¤­¤ë¡£ IPv4 ¤Ë¤ª¤±¤ë¥ª¥×¥·¥ç¥ó¤Î¥µ¥¤¥º¤ÎºÇÂçÃÍ¤Ï 40 ¥Ð¥¤¥È¤Ç¤¢¤ë¡£ ÍѤ¤¤ë¤³¤È¤Î¤Ç¤­¤ë¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Ï RFC 791 ¤ò¸«¤è¡£ SOCK_STREAM ¥½¥±¥Ã¥È¤ËÂФ¹¤ë½é´üÀܳÍ×µá¥Ñ¥±¥Ã¥È¤Ë IP ¥ª¥×¥·¥ç¥ó¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤È¡¢ ¥ë¡¼¥Æ¥£¥ó¥°¥Ø¥Ã¥À¤òÉÕ¤±¤ÆÌᤵ¤ì¤Æ¤¯¤ë½é´ü¥Ñ¥±¥Ã¥È¤Î IP ¥ª¥×¥·¥ç¥ó¤ËƱ¤¸¥ª¥×¥·¥ç¥ó¤¬¥»¥Ã¥È¤µ¤ì¤ë¡£Àܳ¤¬³ÎΩ¤µ¤ì¤¿¸å¡¢ ¤ä¤Ã¤Æ¤­¤¿¥Ñ¥±¥Ã¥È¤Î¥ª¥×¥·¥ç¥ó¤òÊѹ¹¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£ ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡£³°Éô¤«¤é¼õ¿®¤·¤¿¥Ñ¥±¥Ã¥È¤ÎÁ´¤Æ¤Î source routing ¥ª¥×¥·¥ç¥ó ¤Î½èÍý¤Ï̵¸ú¤È¤Ê¤Ã¤Æ¤ª¤ê¡¢ accept_source_route sysctl ¤òÍѤ¤¤ì¤Ð¤³¤ì¤òÍ­¸ú¤Ë¤Ç¤­¤ë¡£¤³¤ì¤ò̵¸ú¤Ë¤·¤Æ¤¤¤Æ¤â timestamps ¤Ê¤É ¤Î¾¤Î¥ª¥×¥·¥ç¥ó¤Î½èÍý¤Ï¹Ô¤ï¤ì¤ë¡£¥Ç¡¼¥¿¥°¥é¥à¥½¥±¥Ã¥È¤Ç¤Ï¡¢ IP ¥ª¥×¥·¥ç¥ó¤Ï¥í¡¼¥«¥ë¥æ¡¼¥¶¡¼¤·¤«ÀßÄê¤Ç¤­¤Ê¤¤¡£ getsockopt(2) ¤ò IP_OPTIONS ¤ò¤Ä¤±¤Æ¸Æ¤Ö¤È¡¢¸½ºßÁ÷¿®¤ËÍѤ¤¤é¤ì¤Æ¤¤¤ë IP ¥ª¥×¥·¥ç¥ó¤ò °ú¤­¿ô¤ËÍ¿¤¨¤¿¥Ð¥Ã¥Õ¥¡¤Ë¼èÆÀ¤Ç¤­¤ë¡£
IP_PKTINFO
IP_PKTINFO Êä½õ¥á¥Ã¥»¡¼¥¸¤òÅϤ¹¡£¤³¤ì¤Ë¤ÏÅþÃå¥Ñ¥±¥Ã¥È¤Ë´Ø¤¹¤ë¾ðÊó¤òÄ󶡤¹¤ë pktinfo ¹½Â¤ÂΤ¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£ ¥Ç¡¼¥¿¥°¥é¥à»Ø¸þ¤Î¥½¥±¥Ã¥È¤Ç¤·¤«Æ°ºî¤·¤Ê¤¤¡£ °ú¤­¿ô¤Ï IP_PKTINFO ¥á¥Ã¥»¡¼¥¸¤òÄ̲ᤵ¤»¤ë¤«¤É¤¦¤«¤ò¥½¥±¥Ã¥È¤Ë ÃΤ餻¤ë¥Õ¥é¥°¤Ç¤¢¤ë¡£ ¥á¥Ã¥»¡¼¥¸¼«¿È¤Ï recvmsg(2) ¤Þ¤¿¤Ï sendmsg(2) ¤òÍѤ¤¤¿¥Ñ¥±¥Ã¥È¤ÎÀ©¸æ¥á¥Ã¥»¡¼¥¸¤È¤·¤Æ¤Î¤ßÁ÷¼õ¿®¤Ç¤­¤ë¡£

struct in_pktinfo {

    unsigned int   ipi_ifindex;  /* Interface index */

    struct in_addr ipi_spec_dst; /* Local address */

    struct in_addr ipi_addr;     /* Header Destination

                                    address */

};

ipi_ifindex ¤Ï¥Ñ¥±¥Ã¥È¤¬¼õ¿®¤µ¤ì¤¿¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î¡¢Â¾¤È½Å¤Ê¤é¤Ê¤¤¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤¢¤ë¡£ ipi_spec_dst ¤Ï¥Ñ¥±¥Ã¥È¤Î¥í¡¼¥«¥ë¥¢¥É¥ì¥¹¤Ç¤¢¤ë¡£ ipi_addr ¤Ï¥Ñ¥±¥Ã¥È¥Ø¥Ã¥À¤Ë¤¢¤ë°¸À襢¥É¥ì¥¹¤Ç¤¢¤ë¡£ IP_PKTINFO ¤¬ sendmsg(2) ¤ËÅϤµ¤ì¤Æ¡¢¤«¤Ä ipi_spec_dst ¤¬ 0 °Ê³°¤Î¾ì¹ç¡¢ ipi_spec_dst ¤Ï¥ë¡¼¥Æ¥£¥ó¥°¥Æ¡¼¥Ö¥ë¤ò¸¡º÷¤¹¤ëºÝ¤Ë¥í¡¼¥«¥ë¤ÊÁ÷¿®¸µ¥¢¥É¥ì¥¹¤È¤·¤Æ»ÈÍѤµ¤ì¡¢ IP source route ¥ª¥×¥·¥ç¥ó¤òÀßÄꤹ¤ë¤Î¤Ë¤â»ÈÍѤµ¤ì¤ë¡£ ipi_ifindex ¤¬ 0 °Ê³°¤Î¾ì¹ç¡¢¤³¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ë¤è¤Ã¤Æ»ØÄꤵ¤ì¤ë¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î ¥×¥é¥¤¥Þ¥ê¥í¡¼¥«¥ë¥¢¥É¥ì¥¹¤Ç ipi_spec_dst ¤ò¾å½ñ¤­¤·¡¢¥ë¡¼¥Æ¥£¥ó¥°¥Æ¡¼¥Ö¥ë¤ò¸¡º÷¤¹¤ë¡£
IP_RECVTOS
Í­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È¡¢ IP_TOS Êä½õ¥á¥Ã¥»¡¼¥¸¤¬ÅþÃå¥Ñ¥±¥Ã¥È¤È¤È¤â¤ËÅϤµ¤ì¤ë¡£ ¤³¤ì¤Ë¤Ï¥Ñ¥±¥Ã¥È¥Ø¥Ã¥À¤Î Service/Precedence ¥Õ¥£¡¼¥ë¥É¤Î¥¿¥¤¥×¤ò»ØÄꤹ¤ë¥Ð¥¤¥È¥Ç¡¼¥¿¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£ ¥Ö¡¼¥ëÀ°¿ôÃͤΥե饰¤ò¤È¤ë¡£
IP_RECVTTL
¤³¤Î¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¤È¡¢ IP_TTL ¥³¥ó¥È¥í¡¼¥ë¥á¥Ã¥»¡¼¥¸¤¬¼õ¿®¥Ñ¥±¥Ã¥È¤Î time-to-live ¥Õ¥£¡¼¥ë¥É¤Î¥Ð¥¤¥È¥Ç¡¼¥¿¤È¤È¤â¤ËÅϤµ¤ì¤ë¡£ SOCK_STREAM ¥½¥±¥Ã¥È¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
IP_RECVOPTS
ÅþÃ夷¤¿Á´¤Æ¤Î IP ¥ª¥×¥·¥ç¥ó¤ò IP_OPTION ¥³¥ó¥È¥í¡¼¥ë¥á¥Ã¥»¡¼¥¸¤ËÆþ¤ì¤Æ¥æ¡¼¥¶¡¼¤ËÅϤ¹¡£ ¥ë¡¼¥Æ¥£¥ó¥°¥Ø¥Ã¥À¤È¤½¤Î¾¤Î¥ª¥×¥·¥ç¥ó¤È¤Ï¡¢ ¥í¡¼¥«¥ë¥Û¥¹¥È¤ËÂФ·¤Æ¤Ï¤¢¤é¤«¤¸¤áµ­Æþ¤µ¤ì¤Æ¤¤¤ë¡£ SOCK_STREAM ¥½¥±¥Ã¥È¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
IP_RETOPTS
IP_RECVOPTS ¤ÈÅù²Á¤À¤¬¡¢Ì¤½èÍý¤ÎÀ¸¤Î¥ª¥×¥·¥ç¥ó¤ò¡¢ ¤³¤Î hop ¤Ç¤Ïµ­Æþ¤µ¤ì¤Ê¤¤ timestamp ¥ì¥³¡¼¥É¤È route ¥ì¥³¡¼¥É¤È¤È¤â¤ËÊÖ¤¹¡£
IP_TOS
¤³¤Î¥½¥±¥Ã¥È¤«¤éÁ÷¿®¤µ¤ì¤ë¤¹¤Ù¤Æ¤Î IP ¥Ñ¥±¥Ã¥È¤ËŬÍѤµ¤ì¤ë Type-Of-Service (TOS) ¥Õ¥£¡¼¥ë¥É¤òÀßÄꡦ¼èÆÀ¤¹¤ë¡£ ¤³¤ì¤Ï¥Í¥Ã¥È¥ï¡¼¥¯¾å¤Ç¤Î¥Ñ¥±¥Ã¥È¤ÎÍ¥ÀèÅÙ¤ò·è¤á¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£ TOS ¤Ï¥Ð¥¤¥È¥Ç¡¼¥¿¤Ç¤¢¤ë¡£É¸½à¤Î TOS ¥Õ¥é¥°¤¬¤¤¤¯¤Ä¤«ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£ IPTOS_LOWDELAY ¤Ï¥¤¥ó¥¿¥é¥¯¥Æ¥£¥Ö¤Ê¥È¥é¥Õ¥£¥Ã¥¯¤ÎÃÙ±ä¤òºÇ¾®¤Ë¤¹¤ë¡£ IPTOS_THROUGHPUT ¤Ï¥¹¥ë¡¼¥×¥Ã¥È¤òºÇÂç¤Ë¤¹¤ë¡£ IPTOS_RELIABILITY ¤Ï¿®ÍêÀ­¤òºÇ¹â¤Ë¤¹¤ë¡£ IPTOS_MINCOST ¤ÏžÁ÷®ÅÙ¤¬ÃÙ¤¯¤Æ¤â¤«¤Þ¤ï¤Ê¤¤¤È¤­¡¢¡Ö¥Ç¡¼¥¿¤òµÍ¤á¹þ¤à¡×¤Î¤ËÍѤ¤¤é¤ì¤ë¡£ ¤³¤ì¤é¤Î¤¦¤Á¡¢ 1 ¤Ä¤Þ¤Ç¤À¤±¤òÀßÄê¤Ç¤­¤ë¡£ ¾¤Î¥Ó¥Ã¥È¤Ï̵¸ú¤Ç¡¢¥¯¥ê¥¢¤µ¤ì¤ë¡£ Linux ¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï IPTOS_LOWDELAY ¥Ç¡¼¥¿¥°¥é¥à¤òºÇ½é¤ËÁ÷¿®¤¹¤ë¡£ ¤·¤«¤·¡¢Àµ³Î¤Ê¿¶¤ëÉñ¤¤¤Ï¥­¥å¡¼½èÍý¤ÎÀßÄê¤Ë°Í¸¤¹¤ë¡£ ¹â¤¤Í¥ÀèÅ٤ˤ¹¤ë¤Ë¤Ï¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¡¼¸¢¸Â (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¡¦ ¥ì¥Ù¥ë 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 {

    u_int32_t ee_errno;   /* error number */

    u_int8_t  ee_origin;  /* where the error originated */

    u_int8_t  ee_type;    /* type */

    u_int8_t  ee_code;    /* code */

    u_int8_t  ee_pad;

    u_int32_t ee_info;    /* additional information */

    u_int32_t ee_data;    /* other data */

    /* More data may follow */

};



struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *);

ee_errno ¤Ë¤Ï¥­¥å¡¼¤ËÆþ¤Ã¤Æ¤¤¤ë¥¨¥é¡¼¤Î errno Èֹ椬Æþ¤ë¡£ ee_origin ¤Ë¤Ï¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì½ê¤ò¼¨¤¹¥³¡¼¥É¤¬Æþ¤ë¡£ ¤½¤Î¾¤Î¥Õ¥£¡¼¥ë¥É¤Ï¥×¥í¥È¥³¥ë°Í¸¤Ç¤¢¤ë¡£ SO_EE_OFFENDER ¥Þ¥¯¥í¤ÏÍ¿¤¨¤é¤ì¤¿Êä½õ¥á¥Ã¥»¡¼¥¸¤Ø¤Î¥Ý¥¤¥ó¥¿¤«¤é ¥¨¥é¡¼¤ÎȯÀ¸¤·¤¿¥Í¥Ã¥È¥ï¡¼¥¯¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¢¥É¥ì¥¹¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£ ¥¢¥É¥ì¥¹¤¬ÉÔÌÀ¤Ê¾ì¹ç¡¢ sockaddr ¹½Â¤ÂΤΠsa_family ¥Õ¥£¡¼¥ë¥É¤Ï AF_UNSPEC ¤È¤Ê¤ê¡¢¤½¤Î¾¤Î¥Õ¥£¡¼¥ë¥ÉÃͤÏÉÔÄê¤Ç¤¢¤ë¡£
IP ¤Ï°Ê²¼¤Î¤è¤¦¤Ê sock_extended_err ¹½Â¤ÂΤòÍѤ¤¤ë: ee_origin ¤Ï¡¢ ¥¨¥é¡¼¤¬ ICMP ¥Ñ¥±¥Ã¥È¤È¤·¤Æ¼õ¿®¤µ¤ì¤¿¾ì¹ç¤Ë¤Ï SO_EE_ORIGIN_ICMP ¤Ë¥»¥Ã¥È¤µ¤ì¡¢¥í¡¼¥«¥ë¤Çµ¯¤³¤Ã¤¿¾ì¹ç¤Ë¤Ï SO_EE_ORIGIN_LOCAL ¤Ë¥»¥Ã¥È¤µ¤ì¤ë¡£ ÉÔÌÀ¤ÊÃͤÏ̵»ë¤µ¤ì¤ë¡£ ee_type ¤È ee_code ¤Ï ICMP ¥Ø¥Ã¥À¤Î type ¥Õ¥£¡¼¥ë¥É¤È code ¥Õ¥£¡¼¥ë¥É¤ÎÃͤ˥»¥Ã¥È¤µ¤ì¤ë¡£ ee_info ¤Ë¤Ï EMSGSIZE ¥¨¥é¡¼¤ËÂФ¹¤ë discover ¤µ¤ì¤¿ MTU ¤¬Æþ¤ë¡£ ¥á¥Ã¥»¡¼¥¸¤Ë¤Ï¥¨¥é¡¼¤ò°ú¤­µ¯¤³¤·¤¿¥Î¡¼¥É¤Î sockaddr_in ¹½Â¤ÂΤâ´Þ¤Þ¤ì¤ë¡£ ¤³¤ì¤Ë¤Ï SO_EE_OFFENDER ¥Þ¥¯¥í¤ò»È¤Ã¤Æ¥¢¥¯¥»¥¹¤Ç¤­¤ë¡£ ¥½¡¼¥¹¤¬ÉÔÌÀ¤Î¾ì¹ç¡¢ SO_EE_OFFENDER ¥¢¥É¥ì¥¹¤Î sin_family ¥Õ¥£¡¼¥ë¥É¤Ï AF_UNSPEC ¤È¤Ê¤ë¡£ ¥¨¥é¡¼¤¬¥Í¥Ã¥È¥ï¡¼¥¯¤Çµ¯¤­¤¿¾ì¹ç¤Ë¤Ï¡¢ ¥½¥±¥Ã¥È¤ÇÍ­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤¿¤¹¤Ù¤Æ¤Î IP ¥ª¥×¥·¥ç¥ó (IP_OPTIONS, IP_TTL ¤Ê¤É) ¤È¥¨¥é¡¼¥Ñ¥±¥Ã¥È¤Ë´Þ¤Þ¤ì¤Æ¤¤¤¿¤¹¤Ù¤Æ¤Î IP ¥ª¥×¥·¥ç¥ó¤È¤¬¡¢ À©¸æ¥á¥Ã¥»¡¼¥¸¤È¤·¤ÆÅϤµ¤ì¤ë¡£ ¥¨¥é¡¼¤òµ¯¤³¤·¤¿¥Ñ¥±¥Ã¥È¤Î¥Ú¥¤¥í¡¼¥É (payload) ¤Ï ÉáÄ̤Υڥ¤¥í¡¼¥É¤È¤·¤ÆÊÖ¤µ¤ì¤ë¡£ TCP ¤Ë¤Ï¥¨¥é¡¼¥­¥å¡¼¤¬¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤Û¤·¤¤¡£ MSG_ERRQUEUE ¤Ï SOCK_STREAM ¥½¥±¥Ã¥È¤ËÂФ·¤Æ¤Ï»È¤¨¤Ê¤¤¡£ TCP ¤Ç¤Ï IP_RECVERR ¤À¤±¤¬Í­¸ú¤À¤¬¡¢¥½¥±¥Ã¥È´Ø¿ô¤«¤éÊÖ¤µ¤ì¤ë¥¨¥é¡¼¤Ï SO_ERROR ¤À¤±¤Ë¤Ê¤ë¡£
raw ¥½¥±¥Ã¥È¤ËÂФ·¤Æ IP_RECVERR ¤ò»ØÄꤹ¤ë¤È¡¢¼õ¿®¤·¤¿¤¹¤Ù¤Æ¤Î ICMP ¥¨¥é¡¼¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë ÅϤ¹¤è¤¦¤Ë¤Ê¤ë¡£»ØÄꤷ¤Ê¤¤¤È¡¢ ÀܳºÑ¤ß¤Î¥½¥±¥Ã¥È¤ËÂФ¹¤ë¥¨¥é¡¼¤À¤±¤òÊó¹ð¤¹¤ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥Ö¡¼¥ëÃͤΥե饰¤òÀßÄꡦ¼èÆÀ¤¹¤ë¡£ IP_RECVERR ¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¥ª¥Õ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
IP_MTU_DISCOVER
¥½¥±¥Ã¥È¤Î Path MTU Discovery ¤ÎÀßÄê¤ò¥»¥Ã¥È¡¦¼èÆÀ¤¹¤ë¡£ Í­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È¡¢ Linux ¤Ï¤³¤Î¥½¥±¥Ã¥È¤ËÂФ·¤Æ RFC 1191 ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë Path MTU Discovery ¤ò¹Ô¤¦¡£ ȯ¿®¥Ç¡¼¥¿¥°¥é¥à¤Ë¤Ï¡¢Á´¤Æ¡Ö¥Õ¥é¥°¥á¥ó¥ÈÉÔµö²Ä¡×¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤ë¡£ ¥·¥¹¥Æ¥àÁ´ÂΤËÂФ¹¤ë¥Ç¥Õ¥©¥ë¥È¤Ï¡¢ SOCK_STREAM ¥½¥±¥Ã¥È¤ËÂФ·¤Æ¤Ï ip_no_pmtu_disc sysctl ¤ò¹Ô¤¦¤³¤È¤Ë¤è¤Ã¤ÆÀ©¸æ²Äǽ¡¢ ¤½¤Î¾¤Ë¤Ä¤¤¤Æ¤Ï̵¸ú¤È¤Ê¤Ã¤Æ¤¤¤ë¡£ SOCK_STREAM ¤Ç¤Ê¤¤¥½¥±¥Ã¥È¤ËÂФ·¤Æ¤Ï¡¢ ¥æ¡¼¥¶¡¼¤¬¥Ç¡¼¥¿¤ò MTU ¤Î¥µ¥¤¥º¤Î²ô¤Ë¥Ñ¥±¥Ã¥È²½¤·¤¿¤ê¡¢ ɬÍפʾì¹ç¤Ë¤ÏºÆÁ÷¤·¤¿¤ê¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¤³¤Î¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¤È¡¢ ¥«¡¼¥Í¥ë¤Ï´ûÃΤΠpath MTU ¤è¤êÂ礭¤Ê¥Ñ¥±¥Ã¥È¤òµñÈݤ¹¤ë (EMSGSIZE ¤È¤Ê¤ë)¡£
Path MTU discovery ¥Õ¥é¥° °ÕÌ£
IP_PMTUDISC_WANT ¥ë¡¼¥È¤´¤È¤ÎÀßÄê¤òÍѤ¤¤ë¡£
IP_PMTUDISC_DONT Path MTU Discovery ¤ò¹Ô¤ï¤Ê¤¤¡£
IP_PMTUDISC_DO ¾ï¤Ë Path MTU Discovery ¤ò¹Ô¤¦¡£
IP_PMTUDISC_PROBE DF¥Ó¥Ã¥È¤ò¥»¥Ã¥È¤¹¤ë¤¬¡¢Path MTU ¤ò̵»ë¤¹¤ë¡£

path MTU discovery ¤¬Í­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È¡¢¥«¡¼¥Í¥ë¤Ï°¸Àè¥Û¥¹¥È¤´¤È¤Ë ¼«Æ°Åª¤Ë path MTU ¤ò½èÍý¤¹¤ë¡£ÆÃÄê¤ÎÁê¼ê¤Ë connect(2) ¤ÇÀܳ¤·¤¿¾ì¹ç¤Ë¤Ï¡¢ IP_MTU ¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ì¤Ð¡¢´ûÃΤΠpath MTU ¤Î¼èÆÀ¤ËÊØÍø¤Ç¤¢¤ë (¤¿¤È¤¨¤Ð EMSGSIZE ¥¨¥é¡¼¤¬µ¯¤­¤¿¸å¤Ê¤É)¡£¤³¤ì¤Ï»þ´Ö¤È¤È¤â¤ËÊѲ½¤¹¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ °¸À褬¤¿¤¯¤µ¤ó¤¢¤ë¥³¥Í¥¯¥·¥ç¥ó¥ì¥¹¤Ê¥½¥±¥Ã¥È¤Ç¤Ï¡¢ Í¿¤¨¤é¤ì¤¿°¸Àè¤ËÂФ¹¤ë¿·¤·¤¤ MTU ¤Ë¤â¡¢ ¥¨¥é¡¼¥­¥å¡¼¤òÍѤ¤¤Æ¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë (IP_RECVERR ¤ò¸«¤è)¡£ MTU ¹¹¿·¤¬ÅþÃ夹¤ë¤´¤È¤Ë¡¢¿·¤¿¤Ê¥¨¥é¡¼¤¬¥­¥å¡¼¥¤¥ó¥°¤µ¤ì¤ë¡£

MTU discovery ¤Î¿Ê¹ÔÃæ¤Ë¤Ï¡¢¥Ç¡¼¥¿¥°¥é¥à¥½¥±¥Ã¥È¤«¤é¤Î½é´ü¥Ñ¥±¥Ã¥È¤Ï ÅþÃ夷¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¡£ UDP ¤òÍѤ¤¤ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢ ¤³¤Î¤³¤È¤òµ¤¤Ë¤«¤±¤Æ¤ª¤­¡¢ ¥Ñ¥±¥Ã¥È¤ÎºÆÁ÷¥¢¥ë¥´¥ê¥º¥à¤Ë¤³¤Îʬ¤ò½ü³°¤µ¤»¤ë¤Ù¤­¤Ç¤¢¤ë¡£

Àܳ¤·¤Æ¤¤¤Ê¤¤¥½¥±¥Ã¥È¤ËÂФ·¤Æ path MTU discovery ¥×¥í¥»¥¹¤òΩ¤Á¾å¤²¤ë¤Ë¤Ï¡¢ Â礭¤Ê¥Ç¡¼¥¿¥°¥é¥à¥µ¥¤¥º (ºÇÂç 64K ¥Ø¥Ã¥À¥Ð¥¤¥ÈĹ) ¤«¤é¤Ï¤¸¤á¤Æ¡¢ path MTU ¤¬¹¹¿·¤µ¤ì¤ë¤Þ¤Ç¥µ¥¤¥º¤ò½Ì¤á¤Æ¤¤¤¯¤³¤È¤â²Äǽ¤Ç¤¢¤ë¡£

path MTU ¤ÎÃͤò¤Þ¤º¸«ÀѤâ¤Ã¤Æ¤ß¤ë¤Ë¤Ï¡¢°¸À襢¥É¥ì¥¹¤Ë connect(2) ¤ò»È¤Ã¤Æ¥Ç¡¼¥¿¥°¥é¥à¥½¥±¥Ã¥È¤òÀܳ¤·¡¢ getsockopt(2) ¤ò IP_MTU ¥ª¥×¥·¥ç¥ó¤È¤È¤â¤Ë¸Æ¤Ó¡¢ MTU ¤ò¼èÆÀ¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£

IP_PMTUDISC_PROBE ¤òÀßÄꤹ¤ë¤³¤È¤Ç¡¢ SOCK_DGRAM ¤ä SOCK_RAW ¤Î¥½¥±¥Ã¥È¤Ç RFC 4821 ¤Î MTU õº÷¤ò¼ÂÁõ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£ ¤Þ¤¿¡¢¤³¤Îµ¡Ç½¤Ï¡¢ tracepath(8) ¤Î¤è¤¦¤Ê¿ÇÃǥġ¼¥ë¤ÇÆäËÍ­ÍѤǤ¢¤ë¡£¤³¤ì¤é¤Î¥Ä¡¼¥ë¤Ç¤Ï¡¢ ´Ñ¬¤µ¤ì¤¿ Path MTU ¤è¤ê¤âÂ礭¤Êõº÷¥Ñ¥±¥Ã¥È¤ò°Õ¿ÞŪ¤Ë Á÷¿®¤·¤è¤¦¤È¤¹¤ë¡£

IP_MTU
¥½¥±¥Ã¥È¤Î¡¢´ûÃΤΠpath 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
¥Þ¥ë¥Á¥­¥ã¥¹¥È¥°¥ë¡¼¥×¤Ë»²²Ã¤¹¤ë¡£ °ú¤­¿ô¤Ï ip_mreqn ¹½Â¤ÂΤǤ¢¤ë¡£

struct ip_mreqn {

    struct in_addr imr_multiaddr; /* IP multicast group

                                     address */

    struct in_addr imr_address;   /* IP address of local

                                     interface */

    int            imr_ifindex;   /* interface index */

};

imr_multiaddr ¤Ë¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬»²²Ã¤Þ¤¿¤ÏűÂष¤¿¤¤ ¥Þ¥ë¥Á¥­¥ã¥¹¥È¥°¥ë¡¼¥×¤Î¥¢¥É¥ì¥¹¤¬Æþ¤ë¡£ ¤³¤ì¤ÏÍ­¸ú¤Ê¥Þ¥ë¥Á¥­¥ã¥¹¥È¥¢¥É¥ì¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ imr_address ¤Ï¥·¥¹¥Æ¥à¤¬¥Þ¥ë¥Á¥­¥ã¥¹¥È¥°¥ë¡¼¥×¤Ë»²²Ã¤¹¤ëºÝ¤ËÍѤ¤¤ë ¥í¡¼¥«¥ë¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î¥¢¥É¥ì¥¹¤Ç¤¢¤ë¡£ ¤³¤ì¤¬ INADDR_ANY ¤Ç¤¢¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢Å¬Àڤʥ¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤¬¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤ÆÁªÂò¤µ¤ì¤ë¡£ imr_ifindex ¤Ï imr_multiaddr ¥°¥ë¡¼¥×¤Ë»²²Ã/űÂह¤ë¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î interface index ¤Ç¤¢¤ë¡£ ¤É¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ç¤â¤è¤¤¾ì¹ç¤Ï 0 ¤Ë¤¹¤ë¡£

¸ß´¹À­¤Î¤¿¤á¡¢¸Å¤¤ ip_mreq ¹½Â¤ÂΤâ¤Þ¤À¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¡£ ip_mreqn ¤È¤Î°ã¤¤¤Ï¡¢ imr_ifindex ¥Õ¥£¡¼¥ë¥É¤ò´Þ¤Þ¤Ê¤¤¤³¤È¤À¤±¤Ç¤¢¤ë¡£ setsockopt(2) ¤Ç¤Î¤ß»È¤¨¤ë¡£
IP_DROP_MEMBERSHIP
¥Þ¥ë¥Á¥­¥ã¥¹¥È¥°¥ë¡¼¥×¤«¤éÈ´¤±¤ë¡£°ú¤­¿ô¤Ï IP_ADD_MEMBERSHIP ¤ÈƱÍÍ¤Ë ip_mreqn ¤Þ¤¿¤Ï ip_mreq ¹½Â¤ÂΤǤ¢¤ë¡£
IP_MULTICAST_IF
¥í¡¼¥«¥ë¥Ç¥Ð¥¤¥¹¤ò¥Þ¥ë¥Á¥­¥ã¥¹¥È¥½¥±¥Ã¥È¤È¤·¤ÆÀßÄꤹ¤ë¡£°ú¤­¿ô¤Ï IP_ADD_MEMBERSHIP ¤ÈƱÍÍ¤Ë ip_mreqn ¤Þ¤¿¤Ï ip_mreq ¹½Â¤ÂΤǤ¢¤ë¡£
ÉÔÀµ¤Ê¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤¬ÅϤµ¤ì¤ë¤È¡¢ ENOPROTOOPT ¤¬ÊÖ¤µ¤ì¤ë¡£

sysctl

IP ¥×¥í¥È¥³¥ë¤Ç¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¥°¥í¡¼¥Ð¥ë¥ª¥×¥·¥ç¥ó¤ò sysctl ¤òÄ̤·¤ÆÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤³¤ì¤é¤Î sysctl ¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤Ë¤Ï¡¢ /proc/sys/net/ipv4/* ¥Õ¥¡¥¤¥ë¤òÆɤ߽ñ¤­¤¹¤ëÊýË¡¤È¡¢¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ËÂФ·¤Æ sysctl(2) ¤òÍѤ¤¤ëÊýË¡¤¬¤¢¤ë¡£ Boolean ¤È½ñ¤«¤ì¤¿ÊÑ¿ô¤ÏÀ°¿ôÃͤò¤È¤ê¡¢ 0 °Ê³°¤ÎÃÍ ("true") ¤ÏÂбþ¤¹¤ë¥ª¥×¥·¥ç¥ó¤¬Í­¸ú¡¢ 0 ÃÍ ("false") ¤Ï̵¸ú¡¢¤Ç¤¢¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
ip_always_defrag (Boolean)
[2.2.13 ¤Ç¿·µ¬Åо졣°ÊÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢¤³¤Îµ¡Ç½¤Ï ¥³¥ó¥Ñ¥¤¥ë»þ¤Ë CONFIG_IP_ALWAYS_DEFRAG ¥ª¥×¥·¥ç¥ó¤Ë¤è¤Ã¤ÆÀ©¸æ¤µ¤ì¤Æ¤¤¤¿; ¤³¤Î¥Õ¥¡¥¤¥ë¤Ï 2.4.x °Ê¹ß¤Ç¤Ï¸ºß¤·¤Ê¤¤]

¤³¤Î¥Ö¡¼¥ëÃͤΥե饰¤¬Í­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë (0 °Ê³°¤Ë¤Ê¤Ã¤Æ¤¤¤ë) ¤È¡¢ ÅþÃ夷¤¿¥Õ¥é¥°¥á¥ó¥È (IP ¥Ñ¥±¥Ã¥È¤Î°ìÉô¤Ç¡¢ ȯ¿®¸µ¤Èȯ¿®Àè¤Î´Ö¤Î¤É¤³¤«¤Î¥Û¥¹¥È¤Ç¡¢¤½¤Î¥Ñ¥±¥Ã¥È¤¬ Â礭¤¹¤®¤ë¤ÈȽÃǤµ¤ì¡¢Ê¬³ä¤µ¤ì¤¿¾ì¹ç¤ËÀ¸¤¸¤ë) ¤Ï¡¢¤¿¤È¤¨¥Õ¥©¥ï¡¼¥É¤µ¤ì¤ë¾ì¹ç¤Ç¤¢¤Ã¤Æ¤â ½èÍýÁ°¤ËºÆ¹½ÃÛ (¥Ç¥Õ¥é¥°¥á¥ó¥È) ¤µ¤ì¤ë¡£

¥Õ¥¡¥¤¥¢¥¦¥©¡¼¥ë¤¬¥í¡¼¥«¥ë¦¤Î¥Í¥Ã¥È¥ï¡¼¥¯¤ËÍ£°ì¤Î¥ê¥ó¥¯¤ò»ý¤Ã¤Æ¤¤¤ë ¾ì¹ç¤ä¡¢Æ©²á¥×¥í¥¯¥·¤Î¾ì¹ç¤Ë¸Â¤Ã¤ÆÍ­¸ú¤Ë¤¹¤Ù¤­¤Ç¤¢¤ë¡£ Ä̾ï¤Î¥ë¡¼¥¿¡¼¤ä¥Û¥¹¥È¤Ç¤ÏÀäÂФËÍ­¸ú¤Ë¤·¤Ê¤¤¤è¤¦¤Ë¡£ ¤µ¤â¤Ê¤¤¤È¥Õ¥é¥°¥á¥ó¥È¤¬Ê̤Υê¥ó¥¯¤ò·Ðͳ¤·¤ÆÅÁ¤ï¤ë¾ì¹ç¤Ë¡¢ ÄÌ¿®¤Î¥Õ¥é¥°¥á¥ó¥È²½¤¬¤Ç¤­¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¡£ ¤Þ¤¿ºÆ¹½ÃÛ½èÍý¤Ï¥á¥â¥ê¤È CPU »þ´Ö¤Î¥³¥¹¥È¤¬Èó¾ï¤ËÂ礭¤¤¡£

¤³¤ì¤Ï¥Þ¥¹¥«¥ì¡¼¥É¤äÆ©²á¥×¥í¥¯¥·¤¬ÀßÄꤵ¤ì¤ë¤È¡¢ ÉԻ׵ĤʻÅÁȤߤˤè¤Ã¤Æ¼«Æ°Åª¤ËÍ­¸ú¤Ë¤Ê¤ë¡£

ip_autoconfig
¤Þ¤Àµ­½Ò¤·¤Æ¤¤¤Ê¤¤¡£
ip_default_ttl (integer; default: 64)
Á÷½Ð¤µ¤ì¤ë¥Ñ¥±¥Ã¥È¤Î time-to-live ÃͤΥǥե©¥ë¥È¤ò¥»¥Ã¥È¤¹¤ë¡£ ¤³¤ì¤Ï IP_TTL ¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤ì¤Ð¡¢¥Ñ¥±¥Ã¥È¤´¤È¤ËÊѤ¨¤ë¤³¤È¤â¤Ç¤­¤ë¡£
ip_dynaddr (Boolean; default: disabled)
ưŪ¥½¥±¥Ã¥È¥¢¥É¥ì¥¹¤È¡¢¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¥¢¥É¥ì¥¹¤¬Êѹ¹¤µ¤ì¤¿ºÝ¤Î ¥Þ¥¹¥«¥ì¡¼¥É¥¨¥ó¥È¥ê¤ÎºÆ½ñ¤­¹þ¤ß¤òÍ­¸ú¤Ë¤¹¤ë¡£ ¥À¥¤¥¢¥ë¥¢¥Ã¥×¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ç¡¢ IP ¥¢¥É¥ì¥¹¤¬Êѹ¹¤µ¤ì¤ë¾ì¹ç¤ËÊØÍø¤Ç¤¢¤ë¡£
ip_forward (Boolean; default: disabled)
IP forwarding ¤òÍ­¸ú¤Ë¤¹¤ë¤«¤É¤¦¤«¤Î¥Ö¡¼¥ëÃͥե饰¡£ IP forwarding ¤¹¤ë¤«¤É¤¦¤«¤Ï¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤´¤È¤Ë¤âÀßÄê¤Ç¤­¤ë¡£
ip_local_port_range
¥½¥±¥Ã¥È¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥Ç¥Õ¥©¥ë¥È¤Î¥í¡¼¥«¥ë¥Ý¡¼¥È¤ÎÈϰϤòÄê¤á¤ë Æó¤Ä¤ÎÀ°¿ô¤òÍ¿¤¨¤ë¡£³ä¤êÅö¤Æ¤Ï 1 ÈÖÌܤÎÈֹ椫¤é»Ï¤Þ¤ê¡¢ 2 ÈÖÌܤÎÈÖ¹æ¤Ç½ª¤ï¤ë¡£ ¤³¤ì¤é¤Ï¥Þ¥¹¥«¥ì¡¼¥É¤ÇÍѤ¤¤é¤ì¤Æ¤¤¤ë¥Ý¡¼¥È¤È½Å¤Ê¤Ã¤Æ¤Ï¤Ê¤é¤Ê¤¤ (¤½¤Î¾ì¹ç¤â¼è¤ê°·¤ï¤ì¤ë¤¬)¡£ ¥Õ¥¡¥¤¥¢¥¦¥©¡¼¥ë¤Î¥Ñ¥±¥Ã¥È¥Õ¥£¥ë¥¿¡¼¤¬¡ÖÍøÍÑÃæ¤Î¥í¡¼¥«¥ë¥Ý¡¼¥È¡× ¤Ë¤Ä¤¤¤Æ²¿¤é¤«¤Î²¾Äê¤ò¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ ÈÖ¹æ¤ò¾¡¼ê¤Ë·è¤á¤Æ¤·¤Þ¤¦¤ÈÌäÂ꤬µ¯¤­¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ 1 ÈÖÌܤÎÈÖ¹æ¤Ï¾¯¤Ê¤¯¤È¤â 1024 ¤è¤êÂ礭¤¯¤¹¤Ù¤­¤Ç¤¢¤ë¡£ Îɤ¯»È¤ï¤ì¤ë¥Ý¡¼¥È¤È¤Î¾×ÆͤòÈò¤±¤¿¤ê¡¢¥Õ¥¡¥¤¥¢¥¦¥©¡¼¥ë¤ÎÌäÂê¤ò ²óÈò¤·¤¿¤±¤ì¤Ð¡¢ 4096 ¤è¤ê¤âÂ礭¤¯¤¹¤ë¤Û¤¦¤¬Îɤ¤¤À¤í¤¦¡£
ip_no_pmtu_disc (Boolean; default: disabled)
Í­¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È¡¢¥Ç¥Õ¥©¥ë¥È¤Ç TCP ¥½¥±¥Ã¥È¤ËÂФ¹¤ë Path MTU Discoverty ¤ò¹Ô¤ï¤Ê¤¤¡£ Path MTU Discovery ¤Ï¡¢ Àµ¤·¤¯ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤ (ICMP ¥Ñ¥±¥Ã¥È¤òÁ´¤Æ¥É¥í¥Ã¥×¤¹¤ë) ¥Õ¥¡¥¤¥¢¥¦¥©¡¼¥ë¤ä¡¢ (point-to-point ¥ê¥ó¥¯¤ÇÁÐÊý¤Î MTU ¤¬°ìÃפ·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ê¤É) Àµ¤·¤¯ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤¬·ÐÏ©¾å¤Ë¸ºß¤¹¤ë¤È¼ºÇÔ¤·¤Æ¤·¤Þ¤¦¡£ Path MTU Discovery ¤ò¥°¥í¡¼¥Ð¥ë¤Ë̵¸ú¤Ë¤¹¤ë¤è¤ê¤Ï¡¢ ²õ¤ì¤Æ¤¤¤ë¥ë¡¼¥¿¤òľ¤¹¤Û¤¦¤¬Îɤ¤¡£ Path MTU Discovery ¤ò̵¸ú¤Ë¤¹¤ë¤È¥Í¥Ã¥È¥ï¡¼¥¯¤Î¥³¥¹¥È¤¬ Â礭¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¤«¤é¤Ç¤¢¤ë¡£
ip_nonlocal_bind (Boolean; default: disabled)
¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ì¤Ð¡¢¥×¥í¥»¥¹¤¬¼«Ê¬°Ê³°¤Î IP ¥¢¥É¥ì¥¹¤ò bind(2) ¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¡£¤³¤ì¤Ï¤«¤Ê¤êÊØÍø¤À¤¬¡¢¤¦¤Þ¤¯Æ°¤«¤Ê¤¤¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤â¤¢¤ë¡£
ip6frag_time (integer; default 30)
IPv6 ¥Õ¥é¥°¥á¥ó¥È¤ò¥á¥â¥ê¤ËÊÝ»ý¤·¤Æ¤ª¤¯»þ´Ö (ÉÃñ°Ì)¡£
ip6frag_secret_interval (integer; default 600)
IPv6 ¥Õ¥é¥°¥á¥ó¥È¤Î hash secret ¤ÎÀ¸À®´Ö³Ö (hash secret ¤Î¼÷Ì¿) (ÉÃñ°Ì)¡£
ipfrag_high_thresh (integer), ipfrag_low_thresh (integer)
¥­¥å¡¼¥¤¥ó¥°¤µ¤ì¤Æ¤¤¤ë IP ¥Õ¥é¥°¥á¥ó¥È¤ÎÎ̤¬ ipfrag_high_thresh ¤Ë㤹¤ë¤È¡¢¥­¥å¡¼¤ÎÆâÍÆ¤Ï ipfrag_low_thresh ¤Ë¤Þ¤ÇÀÚ¤ê¼Î¤Æ¤é¤ì¤ë¡£¤½¤ì¤¾¤ì¤ÎÂ礭¤µ¤ò ¥Ð¥¤¥Èñ°Ì¤Çɽ¤¹À°¿ôÃͤ¬Æþ¤Ã¤Æ¤¤¤ë¡£
neigh/*
arp(7) ¤ò¸«¤è¡£

ioctl

socket(7) ¤Ëµ­½Ò¤µ¤ì¤Æ¤¤¤ë ioctl ¤Ï¡¢ ¤¹¤Ù¤Æ ip ¤Ë¤âŬÍѤµ¤ì¤ë¡£

¥¸¥§¥Í¥ê¥Ã¥¯¥Ç¥Ð¥¤¥¹¤Î¥Ñ¥é¥á¡¼¥¿¤òÀßÄꤹ¤ë ioctl ¤Ë¤Ä¤¤¤Æ¤Ï netdevice(7) ¤Ëµ­½Ò¤µ¤ì¤Æ¤¤¤ë¡£

¥¨¥é¡¼

ENOTCONN
Àܳ¤µ¤ì¤Æ¤¤¤Ê¤¤¥½¥±¥Ã¥È¤ËÂФ·¤Æ¡¢ Àܳ¾õÂ֤Ǥ·¤«ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤Áàºî¤ò¹Ô¤ª¤¦¤È¤·¤¿¡£
EINVAL
ÉÔÀµ¤Ê°ú¤­¿ô¤¬ÅϤµ¤ì¤¿¡£Á÷¿®Áàºî¤Ë¤ª¤¤¤Æ¡¢ blackhole ¥ë¡¼¥È¤ËÁ÷¿®¤·¤è¤¦¤È¤¹¤ë¤È¤³¤Î¥¨¥é¡¼¤¬µ¯¤³¤ë¤³¤È¤¬¤¢¤ë¡£
EMSGSIZE
¥Ç¡¼¥¿¥°¥é¥à¤¬ path MTU ¤è¤ê¤âÂ礭¤¯¡¢¥Õ¥é¥°¥á¥ó¥È²½¤â¤Ç¤­¤Ê¤¤¡£
EACCES
ɬÍפʸ¢¸Â¤Î¤Ê¤¤¥æ¡¼¥¶¡¼¤¬Áàºî¤ò¼Â¹Ô¤·¤è¤¦¤È¤·¤¿¡£ °Ê²¼¤Î¤è¤¦¤Ê¾ì¹ç¤¬¹Í¤¨¤é¤ì¤ë: SO_BROADCAST ¥Õ¥é¥°¤òÀßÄꤷ¤Æ¤¤¤Ê¤¤¾õÂÖ¤Ç¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¥¢¥É¥ì¥¹¤Ë ¥Ñ¥±¥Ã¥È¤òÁ÷¤í¤¦¤È¤·¤¿¡£ prohibit ¤Ê¥ë¡¼¥È¤òÄ̤·¤Æ¥Ñ¥±¥Ã¥È¤òÁ÷¤í¤¦¤È¤·¤¿¡£ ¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¡¼¸¢¸Â (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
¥«¡¼¥Í¥ë¥µ¥Ö¥·¥¹¥Æ¥à¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¡£
ENOBUFS, ENOMEM
¶õ¤­¥á¥â¥ê¤¬Â­¤ê¤Ê¤¤¡£ ¤³¤Î¥¨¥é¡¼¤Ï¡¢¥á¥â¥ê¥¢¥í¥±¡¼¥·¥ç¥ó¤¬¥½¥±¥Ã¥È¥Ð¥Ã¥Õ¥¡¤Î Â礭¤µ¤Ë¤è¤Ã¤ÆÀ©¸Â¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤ë¤Î¤¬Ä̾ï¤Ç¤¢¤ë¤¬¡¢ 100% ¤½¤¦¤À¤È¤¤¤¦¤ï¤±¤Ç¤Ï¤Ê¤¤¡£

¾¤Î¥¨¥é¡¼¤¬¾åÁؤΥץí¥È¥³¥ë¤Ë¤è¤Ã¤ÆÀ¸¤¸¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ tcp(7), raw(7), udp(7), socket(7) ¤Ê¤É¤ò»²¾È¤Î¤³¤È¡£

¥Ð¡¼¥¸¥ç¥ó

IP_MTU, IP_MTU_DISCOVER, IP_PKTINFO, IP_RECVERR, IP_ROUTER_ALERT ¤Ï Linux 2.2 ¤Ç¿·¤·¤¯Æ³Æþ¤µ¤ì¤¿¥ª¥×¥·¥ç¥ó¤Ç¤¢¤ë¡£ ¤³¤ì¤Ï Linux ¸ÇÍ­¤Ç¤¢¤ê¡¢°Ü¿¢À­¤ò¹Íθ¤·¤¿¥×¥í¥°¥é¥à¤Ç¤Ï ÍѤ¤¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£

IP_PMTUDISC_PROBE ¤Ï Linux 2.6.22 ¤ÇÅо줷¤¿¡£

struct ip_mreqn ¤Ï Linux 2.2 ¤ÇÅо줷¤¿¡£ Linux 2.0 ¤Ï ip_mreq ¤·¤«¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¡£

sysctl ·²¤Ï Linux 2.2 ¤ÇƳÆþ¤µ¤ì¤¿¡£

Ãí°Õ

SO_BROADCAST ¥ª¥×¥·¥ç¥ó¤ÎÍøÍѤˤϡ¢¤¯¤ì¤°¤ì¤âÃí°Õ¤¹¤ë¤³¤È¡£ ¤³¤ì¤Ï Linux ¤Ç¤ÏÆø¢Áàºî¤Ç¤Ï¤Ê¤¤¡£ ÉÔÃí°Õ¤Ê¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¤ò¹Ô¤¦¤È¡¢¥Í¥Ã¥È¥ï¡¼¥¯¤Ï´Êñ¤Ë²áÉé²Ù¾õÂ֤ˤʤ롣 ¿·¤·¤¤¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥È¥³¥ë¤Ë¤Ï¡¢¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¤Ç¤Ï¤Ê¤¯ ¥Þ¥ë¥Á¥­¥ã¥¹¥È¥°¥ë¡¼¥×¤òÍѤ¤¤ë¤Û¤¦¤¬¤è¤¤¡£ ¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¤Ï¿ä¾©¤µ¤ì¤Ê¤¤¡£

¾¤Î BSD ¤Î¥½¥±¥Ã¥È¼ÂÁõ¤Ç¤Ï¡¢ IP_RCVDSTADDR ¤È IP_RECVIF ¤È¤¤¤Ã¤¿¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤ª¤ê¡¢ °¸À襢¥É¥ì¥¹¤ä¼õ¿®¥Ç¡¼¥¿¥°¥é¥à¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤¬¼èÆÀ¤Ç¤­¤ë¤è¤¦¤Ë ¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤â¤¢¤ë¡£ Linux ¤ÇƱ¤¸¤³¤È¤ò¤ä¤é¤»¤ë¤Ë¤Ï¡¢¤è¤ê°ìÈÌŪ¤Ê IP_PKTINFO ¤¬»È¤¨¤ë¡£

¤¤¤¯¤Ä¤«¤Î BSD ¤Î¥½¥±¥Ã¥È¼ÂÁõ¤Ç¤Ï IP_RECVTTL ¥ª¥×¥·¥ç¥ó¤âÄ󶡤µ¤ì¤Æ¤¤¤ë¤¬¡¢¥¿¥¤¥× IP_RECVTTL ¤ÎÊä½õ¥á¥Ã¥»¡¼¥¸¤Ï¼õ¿®¥Ñ¥±¥Ã¥È¤È¤È¤â¤ËÅϤµ¤ì¤ë¡£ ¤³¤ì¤Ï Linux ¤Ç»È¤ï¤ì¤Æ¤¤¤ë IP_TTL ¥ª¥×¥·¥ç¥ó¤È¤Ï°Û¤Ê¤ëÆ°ºî¤Ç¤¢¤ë¡£

SOL_IP ¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¥ì¥Ù¥ë¤Ï°Ü¿¢À­¤¬¤Ê¤¤¡£ BSD ¥Ù¡¼¥¹¤Î¥×¥í¥È¥³¥ë¥¹¥¿¥Ã¥¯¤Ç¤Ï IPPROTO_IP ¥ì¥Ù¥ë¤¬»ÈÍѤµ¤ì¤Æ¤¤¤ë¡£

°Ü¿¢À­

Linux 2.0 ¤È¤Î¸ß´¹À­¤Î¤¿¤á¤Ë¡¢ obsolete ¤Ê socket(PF_INET, SOCK_PACKET, protocol) ¤È¤¤¤¦½ñ¼°¤Ç¤â packet(7) ¤ò¥ª¡¼¥×¥ó¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤¬¡¢¤³¤ì¤Ï¤ª´«¤á¤Ç¤­¤Ê¤¤¡£º£¸å¤Ï socket(PF_PACKET, SOCK_RAW, protocol) ¤òÂå¤ï¤ê¤ËÍѤ¤¤ë¤Ù¤­¤Ç¤¢¤ë¡£¼ç¤Ê°ã¤¤¤Ï¡¢¥¸¥§¥Í¥ê¥Ã¥¯¤Ê¥ê¥ó¥¯ÁØÍѤΠsockaddr_ll ¥¢¥É¥ì¥¹¹½Â¤ÂΤ¬¡¢¸Å¤¤ sockaddr_pkt ¤ËÊѤï¤Ã¤ÆÍѤ¤¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤³¤È¤Ç¤¢¤ë¡£

¥Ð¥°

¥¨¥é¡¼¤ÎÃͤ¬Á´¤¯¼óÈø°ì´Ó¤·¤Æ¤¤¤Ê¤¤¡£

IP ¸ÇÍ­¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤¿¤á¤Î ioctl ¤È ARP ¥Æ¡¼¥Ö¥ë¤Î¤³¤È¤¬µ­½Ò¤µ¤ì¤Æ¤¤¤Ê¤¤¡£

glibc ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ë¤è¤Ã¤Æ¤Ï in_pktinfo ¤ÎÄêµÁ¤ò˺¤ì¤Æ¤¤¤ë¤â¤Î¤¬¤¢¤ë¡£ ¸½»þÅÀ¤Ç¤Î¤È¤ê¤¢¤¨¤º¤ÎÂкö¤È¤·¤Æ¤Ï¡¢¤³¤Î man ¥Ú¡¼¥¸¤Ë¤¢¤ëÄêµÁ¤ò¥×¥í¥°¥é¥àÃæ¤Ë ¥³¥Ô¡¼¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£

recvmsg(2) ¤Ç msg_name ¤Ë MSG_ERRQUEUE ¤ò»ØÄꤷ¤Æ¡¢¼õ¿®¥Ñ¥±¥Ã¥È¤ËÆþ¤Ã¤Æ¤¤¤¿°¸À襢¥É¥ì¥¹¤ò¼èÆÀ¤¹¤ëÊýË¡¤Ï 2.2 ¥«¡¼¥Í¥ë¤Î°ìÉô¤Ç¤¦¤Þ¤¯Æ°¤«¤Ê¤¤¡£

´ØÏ¢¹àÌÜ

recvmsg(2), sendmsg(2), byteorder(3), ipfw(4), capabilities(7), netlink(7), raw(7), socket(7), tcp(7), udp(7)

RFC 791: ¥ª¥ê¥¸¥Ê¥ë¤Î IP ¤Î»ÅÍÍ
RFC 1122: IPv4 ¥Û¥¹¥È¤ÎɬÍ×¾ò·ï
RFC 1812: IPv4 ¥ë¡¼¥¿¤ÎɬÍ×¾ò·ï