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
| Name | Type | Dir | Description |
|---|---|---|---|
| domain | int | - | |
| type | int | - | |
| protocol | int | - |
Historique des versions
| XNU tag | macOS | # |
|---|---|---|
| xnu-1456.1.26 | macOS 10.6 Snow Leopard | 97 |
| xnu-1699.24.8 | macOS 10.7 Lion | 97 |
| xnu-2050.18.24 | macOS 10.8 Mountain Lion | 97 |
| xnu-2422.115.4 | macOS 10.9 Mavericks | 97 |
| xnu-2782.40.9 | macOS 10.10 Yosemite | 97 |
| xnu-3247.1.106 | macOS 10.11 El Capitan | 97 |
| xnu-3789.1.32 | macOS 10.12 Sierra | 97 |
| xnu-4570.1.46 | macOS 10.13 High Sierra | 97 |
| xnu-4903.221.2 | macOS 10.14 Mojave | 97 |
| xnu-6153.11.26 | macOS 10.15 Catalina | 97 |
| xnu-7195.50.7.100.1 | macOS 11.0 Big Sur | 97 |
| xnu-8019.41.5 | macOS 12.0 Monterey | 97 |
| xnu-8792.41.9 | macOS 13.0 Ventura | 97 |
| xnu-10002.1.13 | macOS 14.0 Sonoma | 97 |
| xnu-11215.1.10 | macOS 15.0 Sequoia | 97 |
| xnu-11417.101.15 | macOS 15.4 Sequoia | 97 |
| xnu-12377.1.9 | macOS 26.0 Tahoe | 97 |
| 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é.