Skip to content
Syscall BSD#97

svc · unix #97

socket

Crée un nouveau point de terminaison de communication et renvoie un descripteur de fichier le référençant.

Prototype

int socket(int domain, int type, int protocol);

Retour: int

Arguments

NameTypeDirDescription
domainint-
typeint-
protocolint-

Historique des versions

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard97
xnu-1699.24.8macOS 10.7 Lion97
xnu-2050.18.24macOS 10.8 Mountain Lion97
xnu-2422.115.4macOS 10.9 Mavericks97
xnu-2782.40.9macOS 10.10 Yosemite97
xnu-3247.1.106macOS 10.11 El Capitan97
xnu-3789.1.32macOS 10.12 Sierra97
xnu-4570.1.46macOS 10.13 High Sierra97
xnu-4903.221.2macOS 10.14 Mojave97
xnu-6153.11.26macOS 10.15 Catalina97
xnu-7195.50.7.100.1macOS 11.0 Big Sur97
xnu-8019.41.5macOS 12.0 Monterey97
xnu-8792.41.9macOS 13.0 Ventura97
xnu-10002.1.13macOS 14.0 Sonoma97
xnu-11215.1.10macOS 15.0 Sequoia97
xnu-11417.101.15macOS 15.4 Sequoia97
xnu-12377.1.9macOS 26.0 Tahoe97
xnu-10002.41.9—97
xnu-10002.61.3—97
xnu-10002.81.5—97
xnu-10063.101.15—97
xnu-10063.121.3—97
xnu-10063.141.1—97
xnu-11215.41.3—97
xnu-11215.61.5—97
xnu-11215.81.4—97
xnu-11417.121.6—97
xnu-11417.140.69—97
xnu-12377.101.15—97
xnu-12377.41.6—97
xnu-12377.61.12—97
xnu-12377.81.4—97
xnu-1486.2.11—97
xnu-1504.15.3—97
xnu-1504.3.12—97
xnu-1504.7.4—97
xnu-1504.9.17—97
xnu-1504.9.26—97
xnu-1504.9.37—97
xnu-1699.22.73—97
xnu-1699.22.81—97
xnu-1699.24.23—97
xnu-1699.26.8—97
xnu-1699.32.7—97
xnu-2050.22.13—97
xnu-2050.24.15—97
xnu-2050.48.11—97
xnu-2050.7.9—97
xnu-2050.9.2—97
xnu-2422.1.72—97
xnu-2422.100.13—97
xnu-2422.110.17—97
xnu-2422.90.20—97
xnu-2782.1.97—97
xnu-2782.10.72—97
xnu-2782.20.48—97
xnu-2782.30.5—97
xnu-3247.10.11—97
xnu-3248.20.55—97
xnu-3248.30.4—97
xnu-3248.40.184—97
xnu-3248.50.21—97
xnu-3248.60.10—97
xnu-3789.21.4—97
xnu-3789.31.2—97
xnu-3789.41.3—97
xnu-3789.51.2—97
xnu-3789.60.24—97
xnu-3789.70.16—97
xnu-4570.20.62—97
xnu-4570.31.3—97
xnu-4570.41.2—97
xnu-4570.51.1—97
xnu-4570.61.1—97
xnu-4570.71.2—97
xnu-4903.231.4—97
xnu-4903.241.1—97
xnu-4903.270.47—97
xnu-6153.101.6—97
xnu-6153.121.1—97
xnu-6153.141.1—97
xnu-6153.41.3—97
xnu-6153.61.1—97
xnu-6153.81.5—97
xnu-7195.101.1—97
xnu-7195.121.3—97
xnu-7195.141.2—97
xnu-7195.60.75—97
xnu-7195.81.3—97
xnu-8019.61.5—97
xnu-8019.80.24—97
xnu-8020.101.4—97
xnu-8020.121.3—97
xnu-8020.140.41—97
xnu-8792.61.2—97
xnu-8792.81.2—97
xnu-8796.101.5—97
xnu-8796.121.2—97
xnu-8796.141.3—97

Exemples

Create a TCP socket

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

int fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (fd < 0) perror("socket");

Notes

macOS implémente les sockets BSD dans bsd/kern/uipc_socket.c d'xnu au-dessus de descripteurs de fichiers adossés à Mach. Le noyau achemine le triplet (domaine, type, protocole) via les pr_usrreqs du protosw correspondant, puis attache la socket résultante à un fileproc afin qu'elle puisse participer à select/kqueue/poll. Depuis Big Sur, l'espace utilisateur TCP/UDP pour de nombreux flux est intermédié par le framework Network Extension et le chemin de données Skywalk, mais le point d'entrée socket() historique reste l'allocateur universel. Les applications sandboxées peuvent recevoir ENOTSUP pour AF_INET/AF_INET6 lorsque les entitlements réseau sont absents.

Détection

Endpoint Security ne dispose d'aucun événement dédié à la création de socket(). Pour observer le cycle de vie d'une socket, attachez un filtre de contenu NetworkExtension (NEFilterDataProvider) ou utilisez le parcoureur proc_info PROC_PIDFDSOCKETINFO contre /dev/fdesc. La sonde DTrace syscall::socket:entry est fiable sur Intel et sur Apple Silicon lorsque SIP est désactivé.

API associées

socketpairbindconnectconnectxsetsockoptshutdownnecp_open