1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547
|
'\" t
.\" Don't change the first line, it tells man that we need tbl.
.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
.\" and copyright (c) 1999 Matthew Wilcox.
.\" Permission is granted to distribute possibly modified copies
.\" of this page provided the header is included verbatim,
.\" and in case of nontrivial modification author and date
.\" of the modification is added to the header.
.\" $Id: socket.7,v 1.12 2000/09/15 13:15:26 ak Exp $
.\" Traduction Christophe Blaess <ccb@club-internet.fr>
.\" 11/06/2001 - LDP-man-pages-1.37
.TH SOCKET 7 "11 juin 2001" Linux "Manuel de l'administrateur Linux"
.SH NOM
socket - Interface Linux des sockets.
.SH SYNOPSIS
.B #include <sys/socket.h>
.br
.IB mysocket " = socket(int " socket_family ", int " socket_type ", int " protocol );
.SH DESCRIPTION
Cette page de manuel documente l'interface utilisateur de l'impl�mentation Linux des
sockets r�seau. Les sockets compatibles BSD repr�sentent
une interface uniforme entre
le processus utilisateur et les piles de protocoles r�seau dans le noyau.
Les modules des protocoles sont group�s en
.I "familles de protocoles"
comme
.BR PF_INET ", " PF_IPX ", " PF_PACKET
et en
.I "types de sockets"
comme
.B SOCK_STREAM
ou
.BR SOCK_DGRAM .
Voir
.BR socket (2)
pour plus de d�tail sur les familles et les types de sockets.
.SH "FONCTIONS DE LA COUCHE SOCKET"
Ces fonctions servent � un processus utilisateur pour envoyer ou recevoir des paquets
et pour faire d'autres op�rations sur les sockets. Pour plus de d�tails, voir
leur pages de manuel respectives.
.BR socket (2)
cr�e une socket,
.BR connect (2)
connecte une socket � une adresse de socket distante,
la fonction
.BR bind (2)
attache une socket � une adresse locale,
.BR listen (2)
indique � la socket que de nouvelles connexions doivent y �tre accept�es, et
.BR accept (2)
fournit une nouvelle socket avec la nouvelle connexion entrante.
.BR socketpair (2)
renvoie deux sockets anonymes connect�es (seulement impl�ment� pour quelques
familles locales comme
.BR PF_UNIX )
.PP
.BR send (2),
.BR sendto (2),
et
.BR sendmsg (2)
envoient des donn�es sur une socket, et
.BR recv (2),
.BR recvfrom (2),
.BR recvmsg (2)
re�oivent des donn�es depuis une socket.
.BR poll (2)
et
.BR select (2)
attendent que des donn�es arrivent ou que l'�mission soit possible.
De plus, les op�rations d'entr�es-sorties standards comme
.BR write (2),
.BR writev (2),
.BR sendfile (2),
.BR read (2),
et
.BR readv (2)
peuvent servir � �crire ou lire des donn�es.
.PP
.BR getsockname (2)
renvoie l'adresse locale d'une socket et
.BR getpeername (2)
renvoie l'adresse de la socket distante.
.BR getsockopt (2)
et
.BR setsockopt (2)
servent � fixer ou lire des options du niveau socket ou protocole.
.BR ioctl (2)
peut servir pour lirt ou �crire d'autres options.
.PP
.BR close (2)
sert � fermer une socket.
.BR shutdown (2)
ferme un sens de communication d'une socket full-duplex connect�e.
.PP
Le positionnement, ou l'utilisation de
.BR pread (2)
et
.BR pwrite (2)
avec un d�calage non-nul n'est pas possible sur les sockets
.PP
On peut faire des entr�es-sorties non-bloquante sur les sockets en fixant l'attribut
.B O_NONBLOCK
sur le descripteur de la socket avec
.BR fcntl (2).
Ensuite toutes les op�rations qui devraient normalement bloquer
se terminent imm�diatement avec l'erreur
.B EAGAIN
(l'op�ration devra �tre retent�e ult�rieurement).
.BR connect (2)
renverra
l'erreur
.BR EINPROGRESS .
L'utilisateur peur alors attendre divers �v�nement avec
.BR poll (2)
ou
.BR select (2).
.PP
.TS
tab(:) allbox;
c s s
l l l.
�venement E/S
�venemt:Poll:Occurrence
Lecture:POLLIN:T{
De nouvelles donn�es sont arriv�es.
T}
Lecture:POLLIN:T{
Une connexion est �tablie
(pour les sockets orient�es connexion)
T}
Lecture:POLLHUP:T{
D�connexion du correspondant.
T}
Lecture:POLLHUP:T{
Connexion rompue (seulement pour les protocoles orient�s connexion).
Si on �crit sur la socket, le signal
.B SIGPIPE
est aussi �mis.
T}
�criture:POLLOUT:T{
La socket a assez de place dans le
.br
buffer d'�mission pour
�crire de nouvelles donn�es.
T}
Lect/�crit.:T{
POLLIN
.br
POLLOUT
T}:T{
Un
.BR connect (2)
en attente est termin�.
T}
Lect/�crit.:POLLERR:Une erreur asynchrone s'est produite
Lect/�crit.:POLLHUP:T{
Le correspondant � clos un sens de communication
T}
Exception:POLLPRI:T{
Donn�es urgentes arriv�es, le signal
.B SIGURG
est alors envoy�.
T}
.\" XXX not true currently
.\" It is no I/O event when the connection
.\" is broken from the local end using
.\" .BR shutdown (2)
.\" or
.\" .BR close (2)
.\" .
.TE
.PP
Une alternative � l'utilisation de poll/select
est de laisser le noyau informer l'application � propos des
�v�nement par l'interm�diaire d'un signal
.BR SIGIO .
Pour cela l'attribut
.B FASYNC
doit �tre plac� sur le descripteur de la socket
via
.BR fcntl (2)
et un gestionnaire de signal pour
.B SIGIO
doit �tre install� avec
.BR sigaction (2).
Voir les remarques sur les
.I SIGNAUX
plus bas.
.SH "OPTIONS DES SOCKETS"
Ces options communes � toutes les sockets
peuvent �tre �crites en utilisant
.BR setsockopt (2)
et lues avec
.BR getsockopt (2)
avec le niveau socket positionn� sur
.BR SOL_SOCKET .
.TP
.B SO_KEEPALIVE
Valide l'�mission de messages p�riodiques gardant la socket ouverte pour les sockets
orient�es connexion. Il s'agit d'un attribut entier bool�en.
.TP
.B SO_OOBINLINE
Si cette option est activ�e, les donn�es hors-bande sont plac�es directement dans le
flux de donn�es re�ues. Sinon elles ne sont transmises que si l'attribut
.B MSG_OOB
est demand� durant la r�ception.
.\" don't document it because it can do too much harm.
.\".B SO_NO_CHECK
.TP
.BR SO_RCVLOWAT " et " SO_SNDLOWAT
Indiquent le nombre minimal d'octets dans le buffer pour que la couche socket
passe les donn�es au protocole
.RB ( SO_SNDLOWAT )
ou � l'utilisateur en r�ception
.RB ( SO_RCVLOWAT ).
Ces deux valeurs ne sont pas modifiables sous Linux et la taille de leur argument
est toujours fix�e
� un octet.
.B getsockopt
peut lire les valeurs, mais
.B setsockopt
renverra toujours
.BR ENOPROTOOPT .
.TP
.BR SO_RCVTIMEO " et " SO_SNDTIMEO
Indiquent le d�lai maximal d'�mission ou de r�ception avant de renvoyer une erreur.
Sous Linux ces valeurs sont fix�es dans les protocoles et ne peuvent �tre ni lues
ni modifi�es. Leurs fonctionnalit�s peuvent �tre �mul�es � l'aide de
.BR alarm (2)
ou
.BR setitimer (2).
.TP
.B SO_BSDCOMPAT
Valider une compatibilit� bogue-�-bogue avec BSD. Cela n'est pris en compte que par le
module du protocole UDP et sera supprim� dans le futur.
Dans ce mode, les erreurs ICMP re�ues pour une socket UDP ne seront pas transmises
aux programmes utilisateurs. Linux 2.0 donnait aussi une compatibilit� bogue-�-bogue
pour les sockets raw avec cette option,
mais cela a �t� �limin� dans Linux 2.2. Il vaut mieux corriger les programmes utilisateur
que de valider cet attribut.
.TP
.B SO_PASSCRED
Autorise ou interdit la r�ception des messages de contr�le
.BR SCM_CREDENTIALS .
Pour plus de d�tails, voir
.BR unix (7).
.TP
.B SO_PEERCRED
Renvoie les authentifications du processus connect� � l'autre extr�mit� de la socket.
N'est utile que pour les sockets
.BR PF_UNIX .
Voir
.BR unix (7).
L'argument est une structure
.BR ucred .
Seulement valide avec
.BR getsockopt .
.TP
.B SO_BINDTODEVICE
Attacher cette socket � un p�riph�rique donn�, tel \(lqeth0\(rq,
comme indiqu� dans le nom d'interface transmis. Si le nom est une cha�ne vide
ou si la longueur d'option est nulle, l'attachement de la socket au p�riph�rique
est supprim�. L'option transmise est une cha�ne termin�e par un caract�re nul,
contenant le nom de l'interface, la longueur maximale �tant
.BR IFNAMSIZ .
Si la socket est attach�e � une interface, seuls les paquets re�us sur cette
interface particuli�re sont trait�s par la socket. Remarquez que cela ne
fonctionne que pour certains types de sockets, en particulier les sockets
.BR AF_INET .
Ceci n'est pas support� pour les sockets packet (utilisez un
.BR bind (8)
normal dessus).
.TP
.B SO_DEBUG
Activer le d�bogage sur la socket. Seulement autoris� pour les processus avec la capacit�
.B CAP_NET_ADMIN
ou un UID effectif nul.
.TP
.B SO_REUSEADDR
Indique que les r�gles permettant la validation des adresses fournies dans un appel
.BR bind (2)
doivent autoriser la r�utilisation des adresses locales. Pour les sockets
.B PF_INET
cela signifie que la socket peut s'attacher � n'importe quelle adresse
sauf s'il y a une attente active dessus. Lorsque la socket en attente
est attach�e �
.B INADDR_ANY
avec un port sp�cifique, il n'est pas possible de s'attacher � nouveau
� ce port quelque soit l'adresse locale.
.TP
.B SO_TYPE
Obtenir le type de socket, sous forme d'entier (comme
.BR SOCK_STREAM ).
Ne peut qu'�tre
lu avec
.BR getsockopt .
.TP
.B SO_DONTROUTE
Ne pas �mettre par l'interm�diaire d'une passerelle, n'envoyer qu'aux h�tes directement
connect�s. Le m�me effet peut �tre obtenu avec l'attribut
.B MSG_DONTROUTE
durant une op�ration
.BR send (2)
sur la socket. Il s'agir d'un attribut entier bool�en.
.TP
.B SO_BROADCAST
Fixer ou lire l'attribut broadcast. Lorsqu'il est actif une socket datagramme
re�oit les paquets envoy�s � l'adresse broadcast et peut envoyer des paquets
� ue adresse broadcast. Cette option n'a aucun effet sur les sockets de type
.BR SOCK_STREAM.
.TP
.B SO_SNDBUF
Fixer ou lire la taille maximale en octets du buffer d'�mission. La valeur par d�faut
est fix�e par le sysctl
.B wmem_default
et la valeur maximale autoris�e est fix�e par le
sysctl
.BR wmem_max .
.TP
.B SO_RCVBUF
Fixer ou lire la taille maximale en octets du buffer de r�ception. La valeur par d�faut
est fix�e par le sysctl
.B rmem_default
et la valeur maximale autoris�e est fix�e par le
sysctl
.BR rmem_max .
.TP
.B SO_LINGER
Fixer ou lire l'option
.BR SO_LINGER .
L'argument est une
structure
.BR linger .
.PP
.RS
.nf
.ta 4n 10n 22n
struct linger {
int l_onoff; /* actif */
int l_linger; /* d�lai maximal */
};
.ta
.fi
.RE
.IP
Lorsque ce param�tre est actif, un appel
.BR close (2)
ou
.BR shutdown (2)
ne se terminera pas avant que tous les messages en attente pour la socket aient �t� correctement
�mise ou que le d�lai soit �coul�. Sinon, l'appel revient imm�diatement et la fermeture est
effectu�e � l'arri�re-plan.
Lorsque la socket est ferm�e lors d'un
.BR exit (3),
elle se vide toujours � l'arri�re-plan.
.TP
.B SO_PRIORITY
Fixe la priorit� d�finie par le protocole pour tous les paquets envoy�s sur la socket.
Linux utiliser cette valeur pour trier les files r�seau : les paquets avec une priorit�
�lev�s peuvent �tre trait�s d'abord, en fonction de la gestion des files sur
le p�riph�rique. Pour
.BR ip (7),
ceci fixe aussi le champ IP Type-Of-Service pour les paquets sortants.
.TP
.B SO_ERROR
Lire et effacer l'erreur en attente sur la socket. Uniquement valide pour
.BR getsockopt .
Renvoie un entier.
.SH SIGNAUX
Lorsqu'on �crit sur une socket orient�e connexion qui a �t� ferm�e
(localement ou � l'autre extr�mit�) le signal
.B SIGPIPE
est envoy� au processus �crivain, et
.B EPIPE
est renvoy�.
Le signal n'est pas envoy� lorsque l'appel d'�criture
contenait
l'attribut
.BR MSG_NOSIGNAL .
.PP
Lorsqu'on le demande avec l'option
.B FIOCSETOWN
de fcntl ou l'option
.B SIOCSPGRP
de ioctl, le signal
.B SIGIO
est envoy�e quand un �v�nement d'entr�e-sortie se produit. Il est possible d'utiliser
.BR poll (2)
ou
.BR select (2)
dans le gestionnaire de signal pour savoir sur quelle socket l'�v�nement s'est produit?
Une alternative (sous Linux 2.2) est de demander un signal temps-r�el avec le fnctl
.BR F_SETSIG .
Le gestionnaire du signal temps-r�el sera invoqu� avec le descripteur
de fichier dans le champ
.I si_fd
de
.IR siginfo_t .
Voir
.BR fcntl (2)
pour plus d'informations.
.PP
Dans certains cas (par exemple diff�rents processus acc�dant � la m�me socket),
la condition ayant d�clench� le
.B SIGIO
peut avoir diparu quand le processus r�agit au signal. Si cela se produit
le processus doit attendre � nouveau car Linux lui renverra le signal
ult�rieurement.
.\" .SH ANCILLARY MESSAGES
.SH SYSCTLS
Les sysctls r�seau des sockets de base sont accessibles avec les fichiers
.B /proc/sys/net/core/*
ou avec
l'interface
.BR sysctl (2).
.TP
.B rmem_default
contient la taille en octets par d�faut du buffer de r�ception.
.TP
.B rmem_max
contient la taille maximale en octets du buffer de r�ception qu'un utilisateur peut
r�clamer avec l'option
.B SO_RCVBUF
de la socket.
.TP
.B wmem_default
contient la taille en octets par d�faut du buffer d'�mission.
.TP
.B wmem_max
contient la taille maximale en octets du buffer d'�mission qu'un utilisateur peut
r�clamer avec l'option
.B SO_SNDBUF
de la socket.
.TP
.BR message_cost " et " message_burst
configurent le filtrage par jeton utilis� pour limiter la charge des
message d'avertissement dus aux �v�nements r�seau ext�rieurs.
.TP
.B netdev_max_backlog
Nombre maximal de packets dans la file d'entr�e globale.
.TP
.B optmem_max
Taille maximale par socket des donn�es de service et des donn�es de contr�le utilisateur
comme les iovecs.
.\" netdev_fastroute is not documented because it is experimental
.SH IOCTLS
Ces ioctls sont accessibles en utilisant
.BR ioctl (2):
.RS
.nf
.IB error " = ioctl(" ip_socket ", " ioctl_type ", " &value_result ");"
.fi
.RE
.TP
.B SIOCGSTAMP
Renvoie une structure
.B struct timeval
avec l'horodatage de r�ception du dernier paquet transmis � l'utilisateur. Ceci permet
des mesures pr�cises de circulation sur le r�seau. Voir
.BR setitimer (2)
pour le d�tail de la
.BR "struct timeval" .
.\"
.TP
.BR SIOCSPGRP
Fixer le processus ou le groupe de processus auquel envoyer les signaux
.B SIGIO
ou
.B SIGURG
lorsqu'une
op�ration d'entr�e-sortie
asynchrone s'est termin�e ou si des donn�es urgentes sont disponibles.
L'argument est un pointeur sur un
.BR pid_t .
Si l'argument est positif, on envoie le signal � ce processus. S'il est n�gatif
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-m�me ou son propre
groupe, � moins qu'il ait la capacit�
.B CAP_KILL
ou un UID effectif nul.
.TP
.B FIOASYNC
Changer l'attribut
.B O_ASYNC
pour activer ou d�sactiver le mode d'entr�e-sortie asynchrone sur la socket. Le mode
d'entr�es-sorties asynchrones signifie que le signal
.B SIGIO
ou le signal fix� avec
.B F_SETSIG
est envoy� quand un �v�nement d'entr�e-sortie se produit.
.IP
L'argument est un attribut bool�en entier.
.\"
.TP
.BR SIOCGPGRP
Lire le processus ou le groupe de processus auquel les signaux
.B SIGIO
ou
.B SIGURG
sont envoy�s,
ou z�ro
si aucun n'est configur�.
.PP
Fcntls valides:
.TP
.BR FIOCGETOWN
Comme l'ioctl SIOCGPGRP.
.TP
.BR FIOCSETOWN
Comme l'ioctl SIOCSPGRP.
.SH NOTES
Linux suppose que la moiti� du buffer d'�mission/r�ception 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 c�ble.
.SH BOGUES
Les options de socket
.B CONFIG_FILTER
.B SO_ATTACH_FILTER
et
.B SO_DETACH_FILTER
ne sont
pas document�es. Pour les utiliser il est conseill� d'utiliser la
biblioth�que libpcap.
.SH VERSIONS
.B SO_BINDTODEVICE
a �t� introduit dans Linux 2.0.30.
.B SO_PASSCRED
est une nouveaut� de Linux 2.2.
Les sysctls sont nouveaux dans Linux 2.2.
.SH AUTEURS
Cette page de manuel a �t� �crire par Andi Kleen.
.SH "VOIR AUSSI"
.BR socket (2),
.BR ip (7),
.BR setsockopt (2),
.BR getsockopt (2),
.BR packet (7),
.BR ddp (7)
.SH TRADUCTION
Christophe Blaess, 2001.
|