File: raw.7

package info (click to toggle)
manpages-fr 0.9.3-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 7,052 kB
  • ctags: 4
  • sloc: makefile: 58; sh: 8
file content (265 lines) | stat: -rw-r--r-- 8,272 bytes parent folder | download
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
'\" 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>.
.\" 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.
.\" Please send bug reports, corrections and suggestions for improvements to 
.\" <ak@muc.de>
.\" $Id: raw.7,v 1.6 1999/06/05 10:32:08 freitag Exp $
.\" Traduction Christophe Blaess <ccb@club-internet.fr>
.\" 07/06/2001 - LDP-man-pages 1.37
.TH RAW  7 "7 juin 2001" "Linux" "Manuel du programmeur Linux"
.SH NOM
raw, SOCK_RAW \- Sockets brutes (raw) IPv4 sous Linux.
.SH SYNOPSIS
.B #include <sys/socket.h>
.br
.B #include <netinet/in.h>
.br
.BI "raw_socket = socket(PF_INET, SOCK_RAW, int " protocol ); 

.SH DESCRIPTION
Les sockets brutes (raw) permettent d'impl�menter des protocoles IPv4 dans l'espace
utilisateur. Une socket raw re�oit ou envoie des datagrames sans les ent�tes
de la couche de liaison.

La couche IPv4 g�n�re des ent�tes IP lorsqu'elle envoie un paquet � moins que l'option
.B IP_HDRINCL
soit activ�e sur la socket.
Lorsqu'elle est activ�e, la socket doit contenir l'ent�te IP.
Pour la r�ception, l'ent�te IP est toujours inclus dans le paquet.

Seuls les processus avec un UID effectif nul ou une capacit�
.B CAP_NET_RAW 
sont autoris�s � ouvrir des sockets raw.

Tous les paquets ou les erreurs correspondant au num�ro de
.I protocole
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
.BR getprotobyname (3).

Un protocole
.B IPPROTO_RAW
implique l'activation de
.B IP_HDRINCL 
et re�oit tous les protocoles IP. L'�mission n'est pas autoris�e.

.TS
tab(:) allbox;
c s
l l.
IP Champs d'ent�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
.PP

Si
.B IP_HDRINCL
est sp�cifi� et si l'ent�te IP � une adresse non-nulle, alors l'adresse 
destination de la socket est utilis�e pour router le paquet. Quand
.B MSG_DONTROUTE
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
n'est pas sp�cifi�, alors les options d'ent�te IP peuvent �tre fix�es sur les
sockets raw avec
.BR setsockopt (2);
voir
.BR ip (7) 
pour plus d'informations.

Dans Linux 2.2 tous les champs d'ent�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).

.SH "FORMAT D'ADRESSE"

Les sockets raw utilisent la structure d'adresse
.B sockaddr_in 
standard, d�finie dans
.BR ip (7).

Le champ
.B sin_port
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 
est rempli avec le protocole du paquet.
Voir le fichier d'ent�te
.B <netinet/in.h>
pour les protocoles IP valides.

.SH "OPTIONS DES SOCKETS"
Les options des sockets raw peuvent �tre �crites avec
.BR setsockopt (2)
et lues avec
.BR getsockopt (2)
en passant l'attribut de
famille
.IR SOL_RAW .

.TP
.B ICMP_FILTER
Active un filtre sp�cial sur les sockets raw attach�es au protocole
.BR IPPROTO_ICMP .
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.

.PP
De plus, toutes les options
.BR SOL_IP " de"
.BR ip (7)
valides pour les sockets datagrammes sont support�es.

.SH NOTES
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 
de
.BR ip (7).

Une socket raw peut �tre attach�e � une adresse locale sp�cifique en utilisant l'appel
.BR bind (2).
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
.BR SO_BINDTODEVICE " ;"
voir
.BR socket (7).

Une socket
.B IPPROTO_RAW
ne fonctionne qu'en �mission.
Si vous d�sirez vraiment recevoir tous les paquets IP, utilisez une socket
.BR packet (7)
avec le protocole
.BR ETH_P_IP .
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
sur cette socket particuli�re, voir
.BR ip (7).

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 ent�tes fournis par l'utilisateur (sauf pour remplir les
champs ne contenant que des z�ros comme cela est d�crit pour
.BR IP_HDRINCL ).
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
.BR sin_port " ;"
ceci a �t� perdu dans Linux 2.2. Un rem�de est d'utiliser
.B IP_HDRINCL.

.SH "GESTION D'ERREUR"
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
est actif. Pour les sockets connect�es, seules
.B EMSGSIZE   
et
.B EPROTO 
sont transmises, pour compatibilit�. Avec
.B IP_RECVERR
toutes les erreurs r�seau sont sauvegard�es dans la file d'erreurs.

.SH ERREURS
.TP
.B EMSGSIZE
Paquet trop grand. Soit la recherche du MTU des chemins est active (voir l'attribut
.B IP_PMTU_DISCOVER
de socket) soit la taille du paquet d�passe le maximum autoris� par IPv4
(64 Ko).
.TP
.B EACCES
L'utilisateur essaye d'envoyer sur une adresse broadcast sans avoir le
drapeau broadcast sur la socket.
.TP
.B EPROTO
Une erreur ICMP est arriv�, indiquant un probl�me de param�trage.
.TP
.B EFAULT
Une adresse m�moire invalide a �t� fournie.
.TP
.B EOPNOTSUPP
Un attribut invalide a �t� transmis � un appel sur la socket (comme
.BR MSG_OOB ).
.TP
.B EINVAL
Argument invalide.
.TP
.B EPERM
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 
peuvent le faire.

.SH VERSIONS
.B IP_RECVERR 
et
.B ICMP_FILTER 
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.

.SH BOGUES
Les extensions de Proxy transparent ne sont pas d�crites.

Lorsque l'option
.B IP_HDRINCL
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
a �t� supprim� dans Linux 2.2. On utilise toujours le protocole auquel la socket a �t� attach�e
avec \fBbind\fP(2) ou celui de l'appel 
.BR socket (2)
initial.

.SH AUTEURS
Cette page de manuel a �t� �crite par Andi Kleen. 

.SH "VOIR AUSSI"
.BR ip (7),
.BR socket (7),
.BR recvmsg (2),
.BR sendmsg (2).
.PP
.B RFC1191 
pour la recherche du MTU par chemin.

.B RFC791 
et le fichier d'ent�te
.B <linux/ip.h>
pour le protocole IP.
.SH TRADUCTION
Christophe Blaess, 2001.