.\" -*- coding: UTF-8 -*- '\" t .\" SPDX-License-Identifier: Linux-man-pages-1-para .\" .\" This man page is Copyright (C) 1999 Andi Kleen . .\" .\" $Id: raw.7,v 1.6 1999/06/05 10:32:08 freitag Exp $ .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH raw 7 "2 mai 2024" "Pages du manuel de Linux 6.8" .SH NOM raw – Sockets raw IPv4 sous Linux .SH SYNOPSIS .nf \fB#include \fP \fB#include \fP \fBraw_socket = socket(AF_INET, SOCK_RAW, int \fP\fIprotocole\fP\fB);\fP .fi .SH DESCRIPTION Les sockets raw (bruts, sans protocole) permettent d'implémenter de nouveaux protocoles IPv4 dans l'espace utilisateur. Un socket raw reçoit ou envoie des datagrammes bruts sans les en\-têtes de couche de liaison. .P La couche IPv4 génère des en\-têtes IP lorsqu'elle envoie un paquet, à moins que l'option \fBIP_HDRINCL\fP de socket ne soit activée sur le socket. Lorsqu'elle est activée, le socket doit contenir l'en\-tête IP. Pour la réception, l'en\-tête IP est toujours inclus dans le paquet. .P Dans le but de créer un socket raw, un processus doit avoir la capacité \fBCAP_NET_RAW\fP dans l’espace de noms utilisateur qui régit son espace de noms réseau. .P Tous les paquets ou les erreurs correspondant au numéro de \fIprotocole\fP indiqué pour le socket raw sont transmis à ce socket. Pour voir une liste des protocoles autorisés, consultez les numéros assignés dans .UR http://www.iana.org/assignments/protocol\-numbers/ .UE et \fBgetprotobyname\fP(3). .P Un protocole \fBIPPROTO_RAW\fP implique l'activation de \fBIP_HDRINCL\fP et autorise l'émission suivant n'importe quel protocole IP indiqué dans l'en\-tête. La réception de tous les protocoles IP avec \fBIPPROTO_RAW\fP n'est pas possible avec les sockets raw. .RS .TS tab(:) allbox; c s l l. Champs d'en\-tête IP modifiés en émission par \fBIP_HDRINCL\fP Somme de contrôle d’IP:Toujours rempli Adresse de socket:Rempli si composé de zéros ID de paquet:Rempli si composé de zéros Longueur totale:Toujours rempli .TE .RE .P Si \fBIP_HDRINCL\fP est indiqué et si l'en\-tête IP a une adresse de destination différente de zéro, alors l'adresse de destination du socket est utilisée pour router le paquet. Quand \fBMSG_DONTROUTE\fP est indiqué, l'adresse de destination devrait toujours viser une interface locale. Sinon, un examen de la table de routage a quand même lieu, mais les routes avec une passerelle sont ignorées. .P Si \fBIP_HDRINCL\fP n'est pas indiqué, les options d'en\-tête IP peuvent être définies sur les sockets raw avec \fBsetsockopt\fP(2) ; consultez \fBip\fP(7) pour plus d'informations. .P Depuis Linux 2.2 tous les champs d'en\-tête IP et les options peuvent être définis en utilisant les options IP de socket. Cela signifie que les sockets raw ne servent en général que pour les nouveaux protocoles ou les protocoles sans interface utilisateur (comme ICMP). .P Lorsqu'un paquet est reçu, il est passé à tous les sockets raw qui ont été attachés à son protocole avant d'être transmis aux gestionnaires des autres protocoles (par exemple les modules des protocoles du noyau). .SS "Formats d'adresse" .\" commit f59fc7f30b710d45aadf715460b3e60dbe9d3418 Pour envoyer et recevoir des datagrammes (\fBsendto\fP(2), \fBrecvfrom\fP(2) et similaires), les sockets raw utilisent la structure d'adresse \fIsockaddr_in\fP standard, définie dans \fBip\fP(7). Le champ \fIsin_port\fP pourrait être utilisé pour indiquer un numéro de protocole IP, mais il est ignoré pour l'émission dans Linux 2.2 et les versions suivantes et devrait être toujours mis à zéro (voir paragraphe BOGUES). Pour les paquets entrants \fIsin_port\fP est réglé à zéro. .SS "Options de socket" .\" Or SOL_RAW on Linux Les options des sockets raw peuvent être écrites avec \fBsetsockopt\fP(2) et lues avec \fBgetsockopt\fP(2) en passant l'attribut de famille \fBIPPROTO_RAW\fP. .TP \fBICMP_FILTER\fP Activer un filtre spécial sur les sockets raw liés au protocole \fBIPPROTO_ICMP\fP. La valeur a un bit défini pour chaque type de message ICMP qui doit être rejeté. La valeur par défaut est de ne filtrer aucun message ICMP. .P De plus, toutes les options \fBIPPROTO_IP\fP de \fBip\fP(7) valables pour les sockets datagrammes sont prises en charge. .SS "Traitement des erreurs" Les erreurs provenant du réseau ne sont transmises à l'utilisateur que lorsque le socket est connecté ou si le drapeau \fBIP_RECVERR\fP est actif. Pour les sockets connectés, seules \fBEMSGSIZE\fP et \fBEPROTO\fP sont transmises pour compatibilité. Avec \fBIP_RECVERR\fP, toutes les erreurs réseau sont sauvegardées dans la file d'erreurs. .SH ERREURS .TP \fBEACCES\fP L'utilisateur essaye d'envoyer sur une adresse broadcast sans avoir le drapeau broadcast sur le socket. .TP \fBEFAULT\fP Une adresse mémoire incorrecte a été fournie. .TP \fBEINVAL\fP Argument incorrect. .TP \fBEMSGSIZE\fP Paquet trop grand. Soit la recherche du MTU d’un chemin donné (Path MTU discovery — PMTUd)) est active (voir l'attribut \fBIP_MTU_DISCOVER\fP de socket), soit la taille du paquet dépasse le maximum autorisé par IPv4 (64\ Ko). .TP \fBEOPNOTSUPP\fP Un attribut incorrect a été transmis à un appel de socket (comme \fBMSG_OOB\fP). .TP \fBEPERM\fP L'utilisateur n'a pas la permission d'ouvrir des sockets raw. Seuls les processus avec un UID effectif égal à zéro ou ayant la capacité \fBCAP_NET_RAW\fP peuvent le faire. .TP \fBEPROTO\fP Une erreur ICMP est arrivée, indiquant un problème de paramétrage. .SH VERSIONS \fBIP_RECVERR\fP et \fBICMP_FILTER\fP sont nouveaux dans Linux 2.2. Ce sont des extensions Linux qui ne doivent pas être employées dans des programmes portables. .P Linux 2.0 assurait une compatibilité bogue\-à\-bogue avec le code des sockets raw de BSD lorsque l’option \fBSO_BSDCOMPAT\fP de socket était utilisée. Cela a été supprimé depuis Linux 2.2. .SH NOTES Par défaut, les sockets bruts utilisent la détection du MTU («\ Maximum Transmission Unit\ ») pour le chemin. Cela signifie que le noyau garde en mémoire le MTU vers une adresse IP cible spécifique et renvoie \fBEMSGSIZE\fP lorsqu'un paquet raw dépasse cette taille. Dans ce cas, l'application doit diminuer la taille du paquet. La détection du MTU d’un chemin peut aussi être désactivée en utilisant l'option de socket \fBIP_MTU_DISCOVER\fP ou le fichier \fI/proc/sys/net/ipv4/ip_no_pmtu_disc\fP, consultez \fBip\fP(7) pour plus de détails. Lorsque cette option est désactivée, les sockets raw fragmenteront les paquets sortants qui dépassent le MTU de l'interface. C’est cependant découragé, pour des raisons de performance et de fiabilité. .P Un socket raw peut être attaché à une adresse locale spécifique en utilisant l'appel \fBbind\fP(2). S’il n'est pas attaché, tous les paquets du protocole IP indiqué sont reçus. De plus, un socket raw peut être attaché à un périphérique réseau particulier avec \fBSO_BINDTODEVICE\fP\ ; consultez \fBsocket\fP(7). .P Un socket \fBIPPROTO_RAW\fP ne fonctionne qu'en émission. Si vous désirez vraiment recevoir tous les paquets IP, utilisez un socket \fBpacket\fP(7) avec le protocole \fBETH_P_IP\fP. Notez que les sockets packet ne réassemblent pas les fragments IP contrairement aux sockets raw. .P Si vous voulez recevoir tous les paquets ICMP pour un socket datagram, il est souvent préférable d'utiliser \fBIP_RECVERR\fP sur ce socket particulier, consultez \fBip\fP(7). .P Les sockets raw peuvent exploiter tous les protocoles IP sous Linux, même les protocoles comme ICMP ou TCP qui ont un module de protocole dans le noyau. Dans ce cas, les paquets sont passés à la fois au module du noyau et au(x) socket(s) raw. Ce comportement n'est pas portable, de nombreuses autres implémentations des sockets BSD ont leurs propres limites à ce sujet. .P Linux ne modifie jamais les en\-têtes fournis par l'utilisateur (sauf pour remplir les champs ne contenant que des zéros comme cela est décrit pour \fBIP_HDRINCL\fP). Ça diffère de nombreuses autres implémentations des sockets raw. .P Les sockets raw sont en général peu portables et devraient être évités dans les programmes destinés à être portables. .P L'émission sur les sockets raw devrait employer le protocole IP dans \fIsin_port\fP ; cette possibilité a été perdue dans Linux 2.2. Une solution est d'utiliser \fBIP_HDRINCL\fP. .SH BOGUES Les extensions de mandataire transparent ne sont pas décrites. .P Lorsque l'option \fBIP_HDRINCL\fP est active, les datagrammes ne seront pas fragmentés et sont limités au MTU de l'interface. .P .\" .SH AUTHORS .\" This man page was written by Andi Kleen. Utiliser le protocole IP indiqué dans \fIsin_port\fP en émission a été supprimé dans Linux 2.2. Le protocole auquel le socket a été lié ou celui indiqué dans l'appel \fBsocket\fP(2) initial est toujours utilisé. .SH "VOIR AUSSI" \fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBcapabilities\fP(7), \fBip\fP(7), \fBsocket\fP(7) .P \fBRFC\ 1191\fP pour la recherche du MTU de chemin. \fBRFC\ 791\fP et le fichier d'en\-tête \fI\fP pour le protocole IP. .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et Jean-Paul Guillonneau . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .