Seth Woolley's Man Viewer

Manual for socket - man 7 socket

([section] manual, -k keyword, -K [section] search, -f whatis)
man plain no title

SOCKET(7)              Manuel de l'administrateur Linux              SOCKET(7)



NOM
       socket(2,7,n) - Interface Linux des sockets.

SYNOPSIS
       #include <sys/socket.h>
       mysocket = socket(2,7,n)(int socket_family, int socket_type, int protocol);


DESCRIPTION
       Cette  page de manuel documente l'interface utilisateur de l'implmen-
       tation  Linux  des  sockets  rseau.  Les  sockets   compatibles   BSD
       reprsentent  une interface uniforme entre le processus utilisateur et
       les piles de protocoles rseau dans le noyau.  Les modules des  proto-
       coles  sont  groups  en familles de protocoles comme PF_INET, PF_IPX,
       PF_PACKET et en types de sockets comme SOCK_STREAM ou SOCK_DGRAM.  Voir
       socket(2,7,n)(2)  pour plus de dtails sur les familles et les types de sock-
       ets.


FONCTIONS DE LA COUCHE SOCKET
       Ces fonctions servent    un  processus  utilisateur  pour  envoyer  ou
       recevoir  des  paquets et pour faire d'autres oprations sur les sock-
       ets. Pour plus de dtails, voir leur pages de manuel respectives.

       socket(2,7,n)(2) cre une socket(2,7,n),  connect(2)  connecte  une  socket(2,7,n)     une
       adresse  de  socket(2,7,n) distante, la fonction bind(2,n,1 builtins)(2) attache une socket(2,7,n) 
       une adresse locale(3,5,7), listen(1,2,7)(2) indique   la  socket(2,7,n)  que  de  nouvelles
       connexions  doivent  y  tre accept(2,8)es, et accept(2,8)(2) fournit une nou-
       velle socket(2,7,n) avec la nouvelle connexion entrante.   socketpair(2)  ren-
       voie  deux  sockets  anonymes  connectes (seulement implment pour
       quelques familles locales comme PF_UNIX)

       send(2,n)(2), sendto(2), et sendmsg(2) envoient des donnes sur une socket(2,7,n),
       et  recv(2), recvfrom(2), recvmsg(2) reoivent des donnes depuis une
       socket.  poll(2) et select(2,7,2 select_tut)(2) attendent que des  donnes  arrivent  ou
       que  l'mission  soit  possible.  De plus, les oprations d'entres-
       sorties standards comme write(1,2)(2), writev(2), sendfile(1,2)(2),  read(2,n,1 builtins)(2),  et
       readv(2) peuvent servir   crire ou lire des donnes.

       getsockname(2)  renvoie l'adresse locale(3,5,7) d'une socket(2,7,n) et getpeername(1,2)(2)
       renvoie l'adresse de la socket(2,7,n)  distante.   getsockopt(2)  et  setsock-
       opt(2)  servent   fixer ou lire des options du niveau socket(2,7,n) ou proto-
       cole.  ioctl(2) peut servir pour lire ou crire d'autres options.

       close(2,7,n)(2) sert   fermer une socket.  shutdown(2,8)(2) ferme un sens de  com-
       munication d'une socket(2,7,n) full-duplex connecte.

       Le  positionnement,  ou  l'utilisation de pread(2) et pwrite(2) avec un
       dcalage non-nul n'est pas possible sur les sockets

       On peut faire des entres-sorties non-bloquante  sur  les  sockets  en
       fixant  l'attribut  O_NONBLOCK  sur  le  descripteur  de la socket(2,7,n) avec
       fcntl(2).  Ensuite toutes les  oprations  qui  devraient  normalement
       bloquer  se terminent immdiatement avec l'erreur EAGAIN (l'opration
       devra tre retente ultrieurement).  connect(2)  renverra  l'erreur
       EINPROGRESS.   L'utilisateur  peut  alors  attendre divers vnements
       avec poll(2) ou select(2,7,2 select_tut)(2).


       +-------------------------------------------------------------+
       |                       vnement E/S                        |
       +------------+---------+--------------------------------------+
       |vnemt    | Poll    | Occurrence                           |
       +------------+---------+--------------------------------------+
       |Lecture     | POLLIN  | De    nouvelles    donnes     sont |
       |            |         | arrives.                           |
       +------------+---------+--------------------------------------+
       |Lecture     | POLLIN  | Une connexion est tablie (pour les |
       |            |         | sockets orientes connexion)        |
       +------------+---------+--------------------------------------+
       |Lecture     | POLLHUP | Dconnexion du correspondant.       |
       +------------+---------+--------------------------------------+
       |Lecture     | POLLHUP | Connexion rompue (seulement pour les |
       |            |         | protocoles orients connexion).  Si |
       |            |         | on crit sur la socket(2,7,n),  le  signal(2,7) |
       |            |         | SIGPIPE est aussi mis.             |
       +------------+---------+--------------------------------------+
       |criture    | POLLOUT | La socket(2,7,n) a assez de place dans le   |
       |            |         | buffer  d'mission  pour crire de |
       |            |         | nouvelles donnes.                  |
       +------------+---------+--------------------------------------+
       |Lect/crit. | POLLIN  | Un connect(2) en  attente  est  ter- |
       |            | POLLOUT | min.                               |
       +------------+---------+--------------------------------------+
       |Lect/crit. | POLLERR | Une erreur asynchrone s'est produite |
       +------------+---------+--------------------------------------+
       |Lect/crit. | POLLHUP | Le  correspondant   clos un sens de |
       |            |         | communication                        |
       +------------+---------+--------------------------------------+
       |Exception   | POLLPRI | Donnes urgentes arrives, le sig- |
       |            |         | nal SIGURG est alors envoy.        |
       +------------+---------+--------------------------------------+

       Une alternative   l'utilisation de poll/select(2,7,2 select_tut) est de laisser le noyau
       informer l'application   propos des vnements par  l'intermdiaire
       d'un  signal(2,7)  SIGIO.  Pour cela l'attribut FASYNC doit tre plac sur
       le descripteur de la socket(2,7,n) via fcntl(2) et un gestionnaire  de  signal(2,7)
       pour  SIGIO doit tre install avec sigaction(2).  Voir les remarques
       sur les SIGNAUX plus bas.

OPTIONS DES SOCKETS
       Ces options communes   toutes les sockets peuvent  tre  crites  en
       utilisant  setsockopt(2)  et  lues  avec  getsockopt(2)  avec le niveau
       socket(2,7,n) positionn sur SOL_SOCKET.

       SO_KEEPALIVE
              Valide l'mission de messages priodiques  gardant  la  socket(2,7,n)
              ouverte  pour  les  sockets orientes connexion. Il s'agit d'un
              attribut entier boolen.

       SO_OOBINLINE
              Si cette option  est  active,  les  donnes  hors-bande  sont
              places  directement  dans  le  flux de donnes reues. Sinon
              elles ne sont transmises que si l'attribut MSG_OOB est  demand
              durant la rception.

       SO_RCVLOWAT et SO_SNDLOWAT
              Indiquent  le nombre minimal d'octets dans le buffer pour que la
              couche socket(2,7,n) passe les donnes au protocole  (SO_SNDLOWAT)  ou
                 l'utilisateur en rception (SO_RCVLOWAT).  Ces deux valeurs
              ne sont pas modifiables sous Linux et la taille de leur argument
              est  toujours  fixe     un  octet.   getsockopt peut lire les
              valeurs, mais setsockopt renverra toujours ENOPROTOOPT.

       SO_RCVTIMEO et SO_SNDTIMEO
              Indiquent le dlai maximal d'mission ou de  rception  avant
              de  renvoyer  une  erreur.   Sous Linux ces valeurs sont fixes
              dans les protocoles et ne peuvent tre ni lues  ni  modifies.
              Leurs  fonctionnalits  peuvent  tre  mules    l'aide(1,5) de
              alarm(1,2)(2) ou setitimer(2).

       SO_BSDCOMPAT
              Valider une compatibilit bogue- -bogue avec BSD.  Cela  n'est
              pris  en  compte que par le module du protocole UDP et sera sup-
              prim dans le futur.  Dans ce mode, les  erreurs  ICMP  reues
              pour  une  socket(2,7,n)  UDP  ne  seront pas transmises aux programmes
              utilisateurs.  Linux  2.0  donnait  aussi   une   compatibilit
              bogue- -bogue pour les sockets raw(3x,7,8,3x cbreak) avec cette option, mais cela
              a t limin dans Linux 2.2. Il  vaut  mieux  corriger  les
              programmes utilisateur que de valider cet attribut.

       SO_PASSCRED
              Autorise  ou  interdit  la  rception des messages de contrle
              SCM_CREDENTIALS.  Pour plus de dtails, voir unix(7).

       SO_PEERCRED
              Renvoie les authentifications du processus connect    l'autre
              extrmit  de  la  socket.   N'est  utile que pour les sockets
              PF_UNIX.  Voir unix(7).  L'argument  est  une  structure  ucred.
              Seulement valide avec getsockopt.

       SO_BINDTODEVICE
              Attacher  cette  socket(2,7,n)   un priphrique donn, tel "eth0",
              comme indiqu dans le nom d'interface transmis. Si le  nom  est
              une   chane  vide  ou  si  la  longueur  d'option  est  nulle,
              l'attachement de la  socket(2,7,n)  au  priphrique  est  supprim.
              L'option  transmise  est une chane termine par un caractre
              nul, contenant le  nom  de  l'interface,  la  longueur  maximale
              tant  IFNAMSIZ.   Si la socket(2,7,n) est attache   une interface,
              seuls les paquets reus sur cette interface particulire  sont
              traits  par  la  socket.  Remarquez que cela ne fonctionne que
              pour certains types  de  sockets,  en  particulier  les  sockets
              AF_INET.   Ceci  n'est  pas  support  pour  les sockets packet
              (utilisez un bind(2,n,1 builtins)(8) normal dessus).

       SO_DEBUG
              Activer le dbogage sur la socket. Seulement autoris pour les
              processus  avec  la  capacit  CAP_NET_ADMIN ou un UID effectif
              nul.

       SO_REUSEADDR
              Indique que les rgles permettant la  validation  des  adresses
              fournies  dans un appel bind(2,n,1 builtins)(2) doivent autoriser la rutilisa-
              tion des adresses locales. Pour les sockets PF_INET cela  signi-
              fie  que  la  socket(2,7,n) peut s'attacher   n'importe quelle adresse
              sauf s'il y a une attente active dessus. Lorsque  la  socket(2,7,n)  en
              attente est attache   INADDR_ANY avec un port spcifique, il
              n'est pas possible de s'attacher   nouveau   ce  port  quelque
              soit l'adresse locale.

       SO_TYPE
              Obtenir   le   type   de  socket(2,7,n),  sous  forme  d'entier  (comme
              SOCK_STREAM).  Ne peut qu'tre lu avec getsockopt.

       SO_ACCEPTCONN
              Renvoie une valeur indiquant si la  socket(2,7,n)  a  t  dclare
              comme acceptant les connexions   l'aide(1,5) de listen(1,2,7)().  La valeur
              0 indique que la socket(2,7,n) n'est pas en attente de connexions ;  la
              valeur  1  indique  que  la socket(2,7,n) accepte les connexions.  Peut
              eulement tre lu avec getsockopt.

       SO_DONTROUTE
              Ne pas mettre par l'intermdiaire d'une passerelle, n'envoyer
              qu'aux  htes directement connects. Le mme effet peut tre
              obtenu  avec  l'attribut  MSG_DONTROUTE  durant  une  opration
              send(2,n)(2)  sur la socket. Il s'agir d'un attribut entier boolen.

       SO_BROADCAST
              Fixer ou lire l'attribut  broadcast.  Lorsqu'il  est  actif  une
              socket(2,7,n)  datagramme  reoit  les  paquets  envoys   l'adresse
              broadcast et peut envoyer des paquets   une adresse  broadcast.
              Cette   option   n'a   aucun  effet  sur  les  sockets  de  type
              SOCK_STREAM.

       SO_SNDBUF
              Fixer ou lire la taille maximale en octets  du  buffer  d'mis-
              sion.   La   valeur   par  dfaut  est  fixe  par  le  sysctl(2,5,8)
              wmem_default et la valeur maximale autorise est fixe par  le
              sysctl(2,5,8) wmem_max.

       SO_RCVBUF
              Fixer  ou lire la taille maximale en octets du buffer de rcep-
              tion.  La  valeur  par  dfaut  est  fixe   par   le   sysctl(2,5,8)
              rmem_default  et la valeur maximale autorise est fixe par le
              sysctl(2,5,8) rmem_max.

       SO_LINGER
              Fixer ou lire l'option SO_LINGER.  L'argument est une  structure
              linger.

              struct linger {
                  int   l_onoff;    /* actif */
                  int   l_linger;   /* dlai maximal */
              };

              Lorsque  ce  paramtre  est  actif,  un appel close(2,7,n)(2) ou shut-
              down(2) ne se terminera pas  avant  que  tous  les  messages  en
              attente pour la socket(2,7,n) aient t correctement mise ou que le
              dlai soit coul. Sinon, l'appel revient  immdiatement  et
              la  fermeture  est  effectue     l'arrire-plan.  Lorsque la
              socket(2,7,n) est ferme lors d'un exit(3,n,1 builtins)(3), elle se vide  toujours  
              l'arrire-plan.

       SO_PRIORITY
              Fixe  la  priorit  dfinie  par  le  protocole  pour tous les
              paquets envoys sur la socket.   Linux  utiliser  cette  valeur
              pour  trier  les  files rseau : les paquets avec une priorit
              levs peuvent tre traits d'abord, en fonction de la  ges-
              tion  des  files  sur  le  priphrique. Pour ip(7,8)(7), ceci fixe
              aussi le champ IP Type-Of-Service pour les paquets sortants.

       SO_ERROR
              Lire et effacer l'erreur en attente sur  la  socket.  Uniquement
              valide pour getsockopt.  Renvoie un entier.

SIGNAUX
       Lorsqu'on crit sur une socket(2,7,n) oriente connexion qui a t ferme
       (localement ou   l'autre extrmit) le signal(2,7) SIGPIPE est envoy au
       processus  crivain,  et  EPIPE  est  renvoy.   Le  signal(2,7) n'est pas
       envoy lorsque l'appel d'criture contenait l'attribut  MSG_NOSIGNAL.

       Lorsqu'on le demande avec l'option FIOSETOWN de fcntl ou l'option SIOC-
       SPGRP de ioctl, le signal(2,7)  SIGIO  est  envoye  quand  un  vnement
       d'entre-sortie  se  produit.  Il  est  possible d'utiliser poll(2) ou
       select(2,7,2 select_tut)(2) dans le gestionnaire de signal(2,7) pour savoir sur quelle  socket(2,7,n)
       l'vnement  s'est  produit?  Une alternative (sous Linux 2.2) est de
       demander un signal(2,7) temps-rel avec le fnctl F_SETSIG.  Le gestionnaire
       du signal(2,7) temps-rel sera invoqu avec le descripteur de fichier dans
       le champ si_fd de siginfo_t.  Voir fcntl(2) pour plus d'informations.

       Dans certains cas (par exemple diffrents processus  accdant     la
       mme  socket(2,7,n)), la condition ayant dclench le SIGIO peut avoir dis-
       paru quand le processus ragit au signal. Si cela se produit  le  pro-
       cessus  doit  attendre     nouveau  car  Linux  lui renverra le signal(2,7)
       ultrieurement.

SYSCTLS
       Les sysctls rseau des sockets  de  base  sont  accessibles  avec  les
       fichiers /proc(5,n)/sys/net/core/* ou avec l'interface sysctl(2,5,8)(2).

       rmem_default
              contient  la  taille  en octets par dfaut du buffer de rcep-
              tion.

       rmem_max
              contient la taille maximale en octets du  buffer  de  rception
              qu'un  utilisateur  peut rclamer avec l'option SO_RCVBUF de la
              socket.

       wmem_default
              contient la taille en octets par dfaut du buffer  d'mission.

       wmem_max
              contient  la  taille  maximale  en  octets du buffer d'mission
              qu'un utilisateur peut rclamer avec l'option SO_SNDBUF  de  la
              socket.

       message_cost et message_burst
              configurent  le  filtrage  par  jeton  utilis  pour limiter la
              charge des message d'avertissement dus aux vnements  rseau
              extrieurs.

       netdev_max_backlog
              Nombre maximal de paquets dans la file(1,n) d'entre globale.

       optmem_max
              Taille  maximale  par  socket(2,7,n)  des  donnes  de  service et des
              donnes de contrle utilisateur comme les iovecs.

IOCTLS
       Ces ioctls sont accessibles en utilisant ioctl(2):

              error(8,n) = ioctl(ip_socket, ioctl_type, &value_result);


       SIOCGSTAMP
              Renvoie  une  structure  struct  timeval  avec  l'horodatage  de
              rception  du  dernier  paquet  transmis   l'utilisateur. Ceci
              permet des mesures prcises de circulation sur le rseau. Voir
              setitimer(2) pour le dtail de la struct timeval.

       SIOCSPGRP
              Fixer  le processus ou le groupe de processus auquel envoyer les
              signaux SIGIO ou SIGURG lorsqu'une  opration  d'entre-sortie
              asynchrone  s'est  termine  ou  si  des donnes urgentes sont
              disponibles.  L'argument est  un  pointeur  sur  un  pid_t.   Si
              l'argument  est  positif,  on  envoie le signal(2,7)   ce processus.
              S'il est ngatif  on  l'envoie  au  groupe  de  processus  dont
              l'identifiant correspond   la valeur absolue de l'argument.  Un
              processus ne peut demande que l'mission vers lui-mme ou  son
              propre  groupe,     moins qu'il ait la capacit CAP_KILL ou un
              UID effectif nul.

       FIOASYNC
              Changer l'attribut O_ASYNC pour activer ou dsactiver  le  mode
              d'entre-sortie  asynchrone  sur la socket. Le mode d'entres-
              sorties asynchrones signifie que le signal(2,7) SIGIO  ou  le  signal(2,7)
              fix  avec F_SETSIG est envoy quand un vnement d'entre-
              sortie se produit.

              L'argument est un attribut boolen entier.

       SIOCGPGRP
              Lire le processus ou le groupe de processus auquel  les  signaux
              SIGIO  ou  SIGURG  sont  envoys,  ou zro si aucun n'est con-
              figur.

       Fcntls valides:

       FIOGETOWN
              Comme l'ioctl SIOCGPGRP.

       FIOSETOWN
              Comme l'ioctl SIOCSPGRP.

NOTES
       Linux suppose que  la  moiti  du  buffer  d'mission/rception  est
       utilis  pour les structures internes du noyau. Ainsi les sysctls sont
       deux fois plus grand que ce que l'on peut observer directement  sur  le
       cble.

BOGUES
       Les  options de socket(2,7,n) CONFIG_FILTER SO_ATTACH_FILTER et SO_DETACH_FIL-
       TER ne sont pas documentes.  Pour  les  utiliser  il  est  conseill
       d'utiliser la bibliothque libpcap.

VERSIONS
       SO_BINDTODEVICE  a  t introduit dans Linux 2.0.30.  SO_PASSCRED est
       une nouveaut de Linux 2.2.  Les sysctls sont nouveaux dans Linux 2.2.

AUTEURS
       Cette page de manuel a t crire par Andi Kleen.

VOIR AUSSI
       socket(2,7,n)(2), ip(7,8)(7), setsockopt(2), getsockopt(2), packet(7), ddp(7)

TRADUCTION
       Christophe Blaess, 2001-2003.



LDP                             25 juillet 2003                      SOCKET(7)

References for this manual (incoming links)