raw(7) Miscellaneous Information Manual raw(7) raw - IPv4 Linux #include #include raw_socket = socket(AF_INET, SOCK_RAW, int protocol); (raw) IPv4 . , (link level). IPv4 IP , IP_HDRINCL. , IP. IP. CAP_NET_RAW , . , protocol, , . IANA getprotobyname(3). IPPROTO_RAW IP_HDRINCL IP, . IP IPPROTO_RAW . +-------------------------------------------------------------------------------------------------------------------------------------------------------------+ | IP, IP_HDRINCL | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------+ | IP | | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------+ | | , | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------+ |ID | , | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------+ | | | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------+ IP_HDRINCL IP , . MSG_DONTROUTE, , , . IP_HDRINCL , IP setsockopt(2); ip(7). Linux 2.2 IP IP. , , , (, ICMP). (bound) , (, ). (sendto(2), recvfrom(2) similar) sockaddr_in, ip(7). sin_port IP, Linux 2.2 , 0 ( ). sin_port . setsockopt(2) getsockopt(2) IPPROTO_RAW. ICMP_FILTER , IPPROTO_ICMP. -- ICMP, . ICMP . , ip(7) IPPROTO_IP. , , , IP_RECVERR. EMSGSIZE EPROTO. IP_RECVERR . EACCES . EFAULT . EINVAL . EMSGSIZE , Path MTU Discovery ( IP_PMTU_DISCOVER), IPv4 , 64 . EOPNOTSUPP (, MSG_OOB). EPERM . 0, CAP_NET_RAW. EPROTO ICMP, . IP_RECVERR ICMP_FILTER Linux 2.2. Linux . Linux 2.0 SO_BSDCOMPAT BSD << >>. Linux 2.2 . , MTU (Maximum Transmission Unit) . , MTU IP- EMSGSIZE, . , . MTU IP_MTU_DISCOVER /proc/sys/net/ipv4/ip_no_pmtu_disc; ip(7). , MTU . . bind(2). , IP. , SO_BINDTODEVICE; socket(7). IPPROTO_RAW . IP, packet(7) ETH_P_IP. , , , IP. ICMP , IP_RECVERR ; ip(7). Linux IP, (, ICMP TCP). , . , BSD . Linux , ( , IP_HDRINCL). . , , , . IP sin_port; Linux 2.2. -- IP_HDRINCL. . IP_HDRINCL, MTU . Linux 2.2 IP sin_port -- , socket(2). . recvmsg(2), sendmsg(2), capabilities(7), ip(7), socket(7) RFC 1191 MTU. RFC 791 IP. aereiae , Azamat Hackimov , Dmitriy S. Seregin , Katrin Kutepova , Lockal , Yuri Kozlov , ; GNU 3 , . . , , . Linux man-pages 6.06 31 2023 . raw(7)