socket(7) Miscellaneous Information Manual socket(7) socket - #include sockfd = socket(int socket_family, int socket_type, int protocol); . BSD . AF_INET AF_IPX AF_PACKET SOCK_STREAM SOCK_DGRAM. socket(2) . . . socket(2) connect(2) bind(2) listen(2) accept(2) . socketpair(2) ( AF_UNIX) send(2) sendto(2) sendmsg(2) recv(2) recvfrom(2) recvmsg(2) . poll(2) select(2) . / write(2) writev(2) sendfile(2) read(2) readv(2) . getsockname(2) getpeername(2) . getsockopt(2) setsockopt(2) . ioctl(2) . close(2) . shutdown(2) . (Seeking) pread(2) pwrite(2) . / O_NONBLOCK fcntl(2). () EAGAIN ( ) connect(2) EINPROGRESS. poll(2) select(2). +----------------------------------------------------------------------+ | / | +--------------------------------+------------------+------------------+ | | Poll | | +--------------------------------+------------------+------------------+ | | POLLIN | | | | | | | | | . | +--------------------------------+------------------+------------------+ | | POLLIN | | | | | | | | | | | | | | | | | ( | | | | | | | | ) | +--------------------------------+------------------+------------------+ | | POLLHUP | | | | | | | | | | | | | | | | | | | | | | | | | . | +--------------------------------+------------------+------------------+ | | POLLHUP | | | | | | | | | ( | | | | | | | | | | | | ). | | | | | | | | | | | | | | | | | | | | | | | | | | | | SIGPIPE. | +--------------------------------+------------------+------------------+ | | POLLOUT | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | . | +--------------------------------+------------------+------------------+ |/ | POLLIN | POLLOUT | | | | | | | | | connect(2) | | | | . | +--------------------------------+------------------+------------------+ |/ | POLLERR | | | | | | | | | | | | | . | +--------------------------------+------------------+------------------+ |/ | POLLHUP | | | | | | | | | | | | | | | | | . | +--------------------------------+------------------+------------------+ | | POLLPRI | | | | | | | | | . | | | | | | | | | | | | SIGURG. | +--------------------------------+------------------+------------------+ poll(2) select(2) SIGIO. O_ASYNC fcntl(2) SIGIO sigaction(2). . . "" ( sa_family_t) . ( connect(2) bind(2) accept(2) getsockname(2) getpeername(2)) . struct sockaddr. (casting) "" . struct sockaddr_storage. . ( IPv6). : sa_family_t ss_family; sockaddr_storage ( IPv4 IPv6). setsockopt(2) getsockopt(2) SOL_SOCKET . optval int. SO_ACCEPTCONN listen(2) . 0 1 . . SO_ATTACH_FILTER ( 2.2) SO_ATTACH_BPF ( 3.19) BPF (SO_ATTACH_FILTER) BPF (SO_ATTACH_BPF) . . . . SO_ATTACH_FILTER sock_fprog : struct sock_fprog { unsigned short len; struct sock_filter *filter; }; SO_ATTACH_BPF bpf(2) BPF_PROG_TYPE_SOCKET_FILTER. . . BPF Documentation/networking/filter.rst SO_ATTACH_REUSEPORT_CBPF SO_ATTACH_REUSEPORT_EBPF SO_REUSEPORT BPF (SO_ATTACH_REUSEPORT_CBPF) BPF (SO_ATTACH_REUSEPORT_EBPF) reuseport ( SO_REUSEPORT ). BPF 0 N-1 ( N ). BPF SO_REUSEPORT . ( bind(2) UDP listen(2) TCP). BPF : BPF_PROG_TYPE_SOCKET_FILTER BPF 0 N-1 BPF . BPF_PROG_TYPE_SK_REUSEPORT ( 4.19) (SK_PASS SK_DROP) bpf_sk_select_reuseport . reuseport BPF. reuseport ( close(2)) . BPF . SO_ATTACH_REUSEPORT_CBPF SO_ATTACH_FILTER SO_ATTACH_REUSEPORT_EBPF SO_ATTACH_BPF. UDP 4.5 TCP 4.6. SO_BINDTODEVICE "eth0" . . IFNAMSIZ. . AF_INET. ( bind(2) ). 3.8 getsockopt(2). 3.8 . optlen IFNAMSIZ . optlen. SO_BROADCAST (broadcast). . . SO_BSDCOMPAT BSD. UDP 2.0 2.2. ICMP UDP . : 2.4 2.6 (printk()) . 2.0 BSD ( ) 2.2. SO_DEBUG . CAP_NET_ADMIN 0. SO_DETACH_FILTER ( 2.2) SO_DETACH_BPF ( 3.19) BPF SO_ATTACH_FILTER SO_ATTACH_BPF. . SO_DOMAIN ( 2.6.32) AF_INET6. socket(2) . . SO_ERROR . . . SO_DONTROUTE . MSG_DONTROUTE send(2) . . SO_INCOMING_CPU ( 3.19 4.4) . . int cpu = 1; setsockopt(fd, SOL_SOCKET, SO_INCOMING_CPU, &cpu, sizeof(cpu)); ( ) (RX) . NUMA . SO_INCOMING_NAPI_ID ( 4.12) NAPI ID (RX) . (worker threads) (RX queue) . (NIC) . . SO_KEEPALIVE (keep-alive) . . SO_LINGER SO_LINGER . linger. struct linger { int l_onoff; /* */ int l_linger; /* */ }; close(2) shutdown(2) . . exit(2) . SO_LOCK_FILTER . SO_ATTACH_FILTER SO_ATTACH_BPF SO_ATTACH_REUSEPORT_CBPF SO_ATTACH_REUSEPORT_EBPF. (raw socket) ( CAP_NET_RAW) SO_LOCK_FILTER UNIX. SO_LOCK_FILTER SO_LOCK_FILTER EPERM. SO_MARK ( 2.6.25) (mark) ( MARK netfilter ). netfilter . CAP_NET_ADMIN CAP_NET_RAW ( 5.17). SO_OOBINLINE (out-of-band) . MSG_OOB . SO_PASSCRED SCM_CREDENTIALS. unix(7). SO_PASSSEC SCM_SECURITY. unix(7). SO_PEEK_OFF ( 3.4) unix(7) " " (peek offset) recv(2) MSG_PEEK. ( -1 ) : recv(2) MSG_PEEK . . " " . recv(2) ( ) MSG_PEEK " " . MSG_PEEK " " . (datagram) " " MSG_TRUNC. SO_PEEK_OFF. : aabbccddeeff recv(2) : int ov = 4; // 4 setsockopt(fd, SOL_SOCKET, SO_PEEK_OFF, &ov, sizeof(ov)); recv(fd, buf, 2, MSG_PEEK); // "cc" 6 recv(fd, buf, 2, MSG_PEEK); // "dd" 8 recv(fd, buf, 2, 0); // "aa" 6 recv(fd, buf, 2, MSG_PEEK); // "ee" 8 SO_PEERCRED (credentials) . unix(7). SO_PEERSEC(2const) SO_PRIORITY . : (queueing discipline) . 0 6 CAP_NET_ADMIN. SO_PROTOCOL ( 2.6.32) IPPROTO_SCTP. socket(2) . . SO_RCVBUF . ( ) setsockopt(2) getsockopt(2). /proc/sys/net/core/rmem_default /proc/sys/net/core/rmem_max. () 256. SO_RCVBUFFORCE ( 2.6.14) (CAP_NET_ADMIN) SO_RCVBUF rmem_max. SO_RCVLOWAT SO_SNDLOWAT (SO_SNDLOWAT) (SO_RCVLOWAT). 1. SO_SNDLOWAT ( setsockopt(2) ENOPROTOOPT). SO_RCVLOWAT 2.4. 2.6.28 select(2) poll(2) epoll(7) SO_RCVLOWAT . (block) SO_RCVLOWAT. 2.6.28 select(2) poll(2) epoll(7) SO_RCVLOWAT. SO_RCVTIMEO SO_SNDTIMEO . struct timeval. -1 errno EAGAIN EWOULDBLOCK EINPROGRESS ( connect(2)) (nonblocking). () . / ( accept(2) connect(2) read(2) recvmsg(2) send(2) sendmsg(2)) select(2) poll(2) epoll_wait(2) . SO_REUSEADDR bind(2) . AF_INET (bind) . INADDR_ANY . . SO_REUSEPORT ( 3.9) AF_INET AF_INET6 . ( ) bind(2) . (UID). TCP UDP. TCP accept(2) . accept(2) accept(2) . UDP ( ) . SO_RXQ_OVFL ( 2.6.33) (cmsg) 32 (skbs) . SO_SELECT_ERR_QUEUE ( 3.10) exceptfds select(2). poll(2) POLLPRI POLLERR. : readfds writefds select(2). exceptfds ( readfds) . 4.16 . . SO_SNDBUF . ( ) setsockopt(2) getsockopt(2). /proc/sys/net/core/wmem_default /proc/sys/net/core/wmem_max. () 2048. SO_SNDBUFFORCE ( 2.6.14) (CAP_NET_ADMIN) SO_SNDBUF wmem_max. SO_TIMESTAMP SO_TIMESTAMP. SOL_SOCKET SCM_TIMESTAMP cmsg_type. cmsg_data struct timeval . cmsg(3) . SO_TIMESTAMPNS ( 2.6.22) SO_TIMESTAMPNS. SOL_SOCKET SCM_TIMESTAMPNS cmsg_type. cmsg_data struct timespec . CLOCK_REALTIME. cmsg(3) . SO_TIMESTAMP SO_TIMESTAMPNS: . SO_TYPE ( SOCK_STREAM). . SO_BUSY_POLL ( 3.11) (busy poll) . CAP_NET_ADMIN. /proc/sys/net/core/busy_read. /proc/sys/net/core/busy_poll select(2) poll(2) SO_BUSY_POLL . . (latency) . ( ) SIGPIPE EPIPE. MSG_NOSIGNAL. FIOSETOWN fcntl(2) SIOCSPGRP ioctl(2) SIGIO /. poll(2) select(2) . ( 2.2) F_SETSIG fcntl(2) si_fd siginfo_t . fcntl(2) . ( ) SIGIO . . /proc /proc/sys/net/core/. rmem_default . rmem_max SO_RCVBUF. wmem_default . wmem_max SO_SNDBUF. message_cost message_burst (token bucket filter) . netdev_max_backlog . optmem_max iovecs . Ioctls ioctl(2): error = ioctl(ip_socket, ioctl_type, &value_result); SIOCGSTAMP struct timeval . (round trip time) . setitimer(2) struct timeval. ioctl SO_TIMESTAMP SO_TIMESTAMPNS . SO_TIMESTAMP SO_TIMESTAMPNS ( ioctl(2) -1 errno ENOENT). SIOCSPGRP SIGIO SIGURG / . pid_t. F_SETOWN fcntl(2). FIOASYNC O_ASYNC / . / SIGIO F_SETSIG / . . ( fcntl(2) O_ASYNC.) SIOCGPGRP SIGIO SIGURG 0 . fcntl(2) : FIOGETOWN SIOCGPGRP ioctl(2) . FIOSETOWN SIOCSPGRP ioctl(2) . SO_BINDTODEVICE 2.0.30. SO_PASSCRED 2.2. /proc 2.2. SO_RCVTIMEO SO_SNDTIMEO 2.3.41. . / (kernel) /proc . SO_REUSEADDR bind(2) . ( FreeBSD) SO_REUSEADDR. . wireshark(1), bpf(2), connect(2), getsockopt(2), setsockopt(2), socket(2), pcap(3), address_families(7), capabilities(7), ddp(7), ip(7), ipv6(7), packet(7), tcp(7), udp(7), unix(7), tcpdump(8) 3 . . : . 6.18 8 2026 socket(7)