Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
[Actualités]
Les Technos #469 : Un jour sans fin
[Actualités]
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des perfor...
[Actualités]
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
[Actualités]
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 ser...
[Actualités]
Windows 10 version 22H2 : erreur de mise à jour et de désinstallation
[Actualités]
OpenAI prépare désormais son propre navigateur
[Actualités]
WhatsApp bat Telegram : les transcriptions des messages vocaux arrivent pour tou...
[Actualités]
Unreal et Unreal Tournament désormais gratuits sur Internet Archive
[Actualités]
Windows 10 : Microsoft affiche des publicités en plein écran pour les PC équi...
[Articles]
Dungeons 4 - Nintendo Switch Edition
[Articles]
The Bridge Curse 2 : The Extrication
[Articles]
Farmagia
[Articles]
I*CHU: Chibi Edition
[Articles]
Farming Simulator 25
[Articles]
Goblin Slayer -Another Adventurer- Nightmare Feast
[Articles]
Deel lance des programmes en marque blanche et pour les revendeurs pour plus de ...
[Articles]
ESET Research : WolfsBane, nouvelle porte dérobée de cyber-espionnage Linux cr...
[Articles]
Devoteam présente son nouveau plan stratégique « AMPLIFY » avec un fort acce...
[Articles]
LEGO Horizon Adventures
Actualités
Lettre d'information
Proposer une actualité
Archives
Actualités
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Derniers commentaires
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Derniers messages
Informatique
Fun
Divers
Logithèque
Blogs
Divers
A Propos
Annonceurs
Contact
Recherche
RSS
Editer un article
Titre
Mots Clés
Texte
[size=18] [b]Nom[/b] [/size] raw, SOCK_RAW - Sockets brutes (raw) IPv4 sous Linux. [size=18] [b]Résumé[/b] [/size] [b]#include
[/b] [b][/b] [b]#include
[/b] [b][/b] [b][i]raw_socket = socket(PF_INET, SOCK_RAW, int protocol ); [/i][/b] [size=18] [b]Description[/b] [/size] Les sockets brutes (raw) permettent d'implémenter des protocoles IPv4 dans l'espace utilisateur. Une socket raw reçoit ou envoie des datagrammes sans les en-têtes de la couche de liaison. La couche IPv4 génère des en-têtes IP lorsqu'elle envoie un paquet à moins que l'option [b]IP_HDRINCL[/b] soit activée sur la socket. Lorsqu'elle est activée, la socket doit contenir l'en-tête IP. Pour la réception, l'en-tête IP est toujours inclus dans le paquet. Seuls les processus avec un UID effectif nul ou une capacité [b]CAP_NET_RAW [/b] sont autorisés à ouvrir des sockets raw. Tous les paquets ou les erreurs correspondant au numéro de [i]protocole[/i] spécifié pour la socket raw sont transmis à cette socket. Pour voir une liste des protocoles autorisés, consulter les numéros assignés dans la RFC 1700 et [b]getprotobyname (3).[/b] Un protocole [b]IPPROTO_RAW[/b] implique l'activation de [b]IP_HDRINCL [/b] et autorise l'émission suivant n'importe quel protocole IP indiquée dans l'en-tête. La réception de tous les protocoles IP avec [b]IPPROTO_RAW[/b] n'est pas possible avec les sockets raw. .TS tab(:) allbox; c s l l. IP Champs d'en-tête modifiés en émission par IP_HDRINCL Checksum IP:Toujours rempli. Adresse source:Rempli si contient des zéros. ID Paquet:Rempli si contient des zéros. Longueur totale:Toujours rempli. .TE Si [b]IP_HDRINCL[/b] est spécifié et si l'en-tête IP à une adresse non-nulle, alors l'adresse destination de la socket est utilisée pour router le paquet. Quand [b]MSG_DONTROUTE[/b] est spécifié, 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. Si [b]IP_HDRINCL[/b] n'est pas spécifié, alors les options d'en-tête IP peuvent être fixées sur les sockets raw avec [b]setsockopt (2);[/b] voir [b]ip (7) [/b] pour plus d'informations. Dans Linux 2.2 tous les champs d'en-tête et les options peuvent être fixés en utilisant les options IP. Ceci signifie que les sockets raw ne servent en général que pour les nouveaux protocoles ou les protocoles sans interface utilisateur (comme ICMP). Lorsqu'un paquet est reçu, il est passé à toutes les sockets raw qui ont été attachées à son protocole avant d'être transmis aux gestionnaires des autres protocoles (par exemple les modules des protocoles du noyau). [size=18] [b]Format dadresse[/b] [/size] Les sockets raw utilisent la structure d'adresse [b]sockaddr_in [/b] standard, définie dans [b]ip (7).[/b] Le champ [b]sin_port[/b] peut être utilisé pour spécifier un numéro de protocole IP, mais il est ignoré pour l'émission dans Linux 2.2 et devrait être toujours mis à zéro (voir paragraphe BOGUES). Pour les paquets entrants [b]sin_port [/b] est rempli avec le protocole du paquet. Voir le fichier d'en-tête [b]
[/b] pour les protocoles IP valides. [size=18] [b]Options[/b] [/size] Les options des sockets raw peuvent être écrites avec [b]setsockopt (2)[/b] et lues avec [b]getsockopt (2)[/b] en passant l'attribut de famille [b]SOL_RAW .[/b] [b]ICMP_FILTER[/b] [table][row][col] [/col][col]Active un filtre spécial sur les sockets raw attachées au protocole [b]IPPROTO_ICMP .[/b] La valeur a un bit pour chaque type de message ICMP qui doit être rejeté. La valeur par défaut est de ne filtrer aucun messages ICMP. [/col][/row][/table] De plus, toutes les options [b]SOL_IP de[/b] [b]ip (7)[/b] valides pour les sockets datagrammes sont supportées. [size=18] [b]Notes[/b] [/size] Les sockets raw fragmentent un paquet lorsque sa longueur totale dépasse le MTU de l'interface (voir toutefois le paragraphe BOGUES). Une alternative plus rapide et préférable pour le réseau est d'implémenter la recherche du MTU des chemins comme décrit dans la section [b]IP_PMTU_DISCOVER [/b] de [b]ip (7).[/b] Une socket raw peut être attachée à une adresse locale spécifique en utilisant l'appel [b]bind (2).[/b] Si elle n'est pas attachée, tous les paquets du protocole IP spécifié sont reçus. De plus une socket raw peut être attachée à un périphérique réseau particulier avec [b]SO_BINDTODEVICE ;[/b] voir [b]socket (7).[/b] Une socket [b]IPPROTO_RAW[/b] ne fonctionne qu'en émission. Si vous désirez vraiment recevoir tous les paquets IP, utilisez une socket [b]packet (7)[/b] avec le protocole [b]ETH_P_IP .[/b] Notez que les sockets packet ne réassemblent pas les fragments IP contrairement aux sockets raw. Si vous voulez recevoir tous les paquets ICMP pour une socket datagramme, il est souvent préférable d'utiliser [b]IP_RECVERR[/b] sur cette socket particulière, voir [b]ip (7).[/b] Les sockets raw peuvent capturer tous les protocoles sous Linux, même les protocoles comme ICMP ou TCP qui ont un module dans le noyau. Dans ce cas, le paquet est passé simultanément au module du noyau et à la socket raw. Ce comportement n'est pas portable, de nombreuses autres implémentations des sockets BSD ont des limitations ici. 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 [b]IP_HDRINCL ).[/b] Ceci diffère de nombreuses autres implémentations des sockets raw. Les sockets raw sont en général peu portables et devrait être évitées dans les programmes conçus pour être adaptés sur d'autres systèmes L'émission sur les sockets raw devrait employer le protocole dans [b]sin_port ;[/b] ceci a été perdu dans Linux 2.2. Un remède est d'utiliser [b]IP_HDRINCL.[/b] [size=18] [b]Gestion derreur[/b] [/size] Les erreurs provenant du réseau ne sont transmise à l'utilisateur que lorsque la socket est connectée ou si le drapeau [b]IP_RECVERR[/b] est actif. Pour les sockets connectées, seules [b]EMSGSIZE [/b] et [b]EPROTO [/b] sont transmises, pour compatibilité. Avec [b]IP_RECVERR[/b] toutes les erreurs réseau sont sauvegardées dans la file d'erreurs. [size=18] [b]Erreurs[/b] [/size] [b]EMSGSIZE[/b] [table][row][col] [/col][col]Paquet trop grand. Soit la recherche du MTU des chemins est active (voir l'attribut [b]IP_PMTU_DISCOVER[/b] de socket) soit la taille du paquet dépasse le maximum autorisé par IPv4 (64 Ko).[/col][/row][/table] [b]EACCES[/b] [table][row][col] [/col][col]L'utilisateur essaye d'envoyer sur une adresse broadcast sans avoir le drapeau broadcast sur la socket.[/col][/row][/table] [b]EPROTO[/b] [table][row][col] [/col][col]Une erreur ICMP est arrivé, indiquant un problème de paramétrage.[/col][/row][/table] [b]EFAULT[/b] [table][row][col] [/col][col]Une adresse mémoire invalide a été fournie.[/col][/row][/table] [b]EOPNOTSUPP[/b] [table][row][col] [/col][col]Un attribut invalide a été transmis à un appel sur la socket (comme [b]MSG_OOB ).[/b][/col][/row][/table] [b]EINVAL[/b] [table][row][col] [/col][col]Argument invalide.[/col][/row][/table] [b]EPERM[/b] [table][row][col] [/col][col]L'utilisateur n'a pas la permission d'ouvrir des sockets raw. Seuls les processus avec un UID effectif nul ou la capacité [b]CAP_NET_RAW [/b] peuvent le faire. [/col][/row][/table] [size=18] [b]Versions[/b] [/size] [b]IP_RECVERR [/b] et [b]ICMP_FILTER [/b] sont nouveaux dans Linux 2.2. Ce sont des extensions Linux et ne doivent pas être employés dans des programmes portables. Linux 2.0 assurait une compatibilité bogue-à-bogue avec le code des sockets raw de BSD lorsque l'attribut SO_BSDCOMPAT était utilisé. Ceci a été supprimé dans 2.2. [size=18] [b]Bugs[/b] [/size] Les extensions de Proxy transparent ne sont pas décrites. Lorsque l'option [b]IP_HDRINCL[/b] est active, les datagrammes ne seront pas fragmentés et sont limités au MTU de l'interface. C'est une limitation de Linux 2.2. Utiliser en émission le protocole IP indiqué dans [b]sin_port[/b] a été supprimé dans Linux 2.2. On utilise toujours le protocole auquel la socket a été attachée avec [b]bind[/b](2) ou celui de l'appel [b]socket (2)[/b] initial. [size=18] [b]Auteurs[/b] [/size] Cette page de manuel a été écrite par Andi Kleen. [size=18] [b]Voir aussi[/b] [/size] [b]ip (7),[/b] [b]socket (7),[/b] [b]recvmsg (2),[/b] [b]sendmsg (2).[/b] [b]RFC1191 [/b] pour la recherche du MTU par chemin. [b]RFC791 [/b] et le fichier d'en-tête [b]
[/b] pour le protocole IP. [size=18] [b]Traduction[/b] [/size] Christophe Blaess, 2001-2003.
Fichier
Forum
-
Derniers messages
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Software
problème sur windows 10
Réseaux et Télécom
Administrateur Réseau - Cisco
Réseaux et Télécom
Problème wifi (POE)
Software
Postfix - Need help
Bavardages
Oh râge oh désespoir !
Programmation
Enregistrement client et envoi mail
Software
SÉCURITÉ MACBOOK
Hardware
conseil matos réseau?
Hardware
nVidia Shield Android TV
Actualités
-
Archives
Matériel
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
Les Technos
Les Technos #469 : Un jour sans fin
Jeux Vidéos
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des performances à revoir
Matériel
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
Tablettes
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 serait abandonnée
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2024
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?