File: raw.7

package info (click to toggle)
manpages-pt 20040726-8
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 2,988 kB
  • sloc: sh: 45; makefile: 16
file content (262 lines) | stat: -rw-r--r-- 7,739 bytes parent folder | download | duplicates (6)
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
.\" -*- nroff -*-
.\" No modifique a primeira linha! Ela informa ao man que o tbl
.\"  necessrio. O copyright (C) desta pgina de man  de
.\" Andi Kleen <ak@muc.de>. Garante-se permisso para distribuir
.\" cpias - modificadas ou no - desta pgina conqanto este
.\" cabealho seja mantido, e, se houverem modificaes
.\" substanciais, o autor e a data da modificao devem ser
.\" acrescentados ao cabealho.
.\" Favor enviar relatos de bugs, correes e sugestes para <ak@muc.de>
.\" $Id: raw.7,v 1.1 2000/10/20 13:05:11 ricardo Exp $
.TH RAW  7 "2/10/1998" "Pgina de Manual do Linux" "Manual do Programador Linux" 
.SH NOME
raw, SOCK_RAW \- Sockets IPv4 raw
.SH SINOPSE
.B #include <sys/socket.h>
.br
.B #include <netinet/in.h>
.br
.BI "raw_socket = socket(PF_INET, SOCK_RAW, int " protocol ); 

.SH DESCRIO
Sockets raw (no processados) permitem a implementao de novos protocolos sob o IPv4.
Um socket raw recebe ou envia o datagrama bruto, sem incluir cabealhos de link.

A camada IPv4 gera um cabealho IP ao enviar um pacote a menos que se ative a opo
.B IP_HDRINCL
do socket.
Quando ela est habilitada, o pacote deve conter um cabealho IP. Um
pacote IP que seja recebido ter sempre o cabealho IP.

Apenas processos com user id efetivo de 0 ou com capacidade
.B CAP_NET_RAW 
podem abrir sockets raw.

Todos os pacotes ou erros relacionados ao nmero de 
.I protocolo
especificado
para o socket raw so passados para este socket. Para uma
lista dos protocolos permitidos consulte o RFC 1700 e
.BR getprotobyname (3).

Um protocolo
.B IPPROTO_RAW
implica que o
.B IP_HDRINCL
est habilitado e recebe todos os protocolos IP. transmitir no  permitido.

.TS
tab(:) allbox;
c s
l l.
Cabealhos IP so midificados quando enviados pelo IP_HDRINCL
IP Checksum:Sempre preenchido.
Source Address:Preenchido quando zero.
Packet Id:Preenchido quando zero.
Total Length:Sempre preenchido.
.TE
.PP

Se for especificado
.B IP_HDRINCL
e o cabealho IP tiver um endereo de destino diferente
de zero, este endereo  usado para rotear o pacote. Quando for especificado
,B MSG_DONTROUTE
o endereo de destino deve apontar para uma interface local, caso contrrio
 feita uma consulta  tabela de roteamento, mas as rotas com gateways
so ignoradas.

Se no for especificado
.B IP_HDRINCL
as opes do cabealho IP podem ser ajustadas nos socker raw com
.BR setsockopt (2);
Ver
.BR ip (7)
para mais informaes.

No linux 2.2, todos as opes e campos de cabealho IP podem ser configuradas usando
as opes para sockets IP. Isto significa que os sockets raw normalmente s so necessrios para protocolos novos
ou protocolos sem interface de usurio como o ICMP.

Um pacote recebido  passado para quaisquer sockets
raw que tenham sido atrelados ao seu protocolo antes de ser passado
para outros handlers deste protocolo (ex. mdulos de protocolo do kernel).

.SH FORMATO DO ENDEREO

Sockets raw usam a estrutura de endereo padro
.B sockaddr_in
definida em
.BR ip (7).

O campo
.B sin_port
pode ser usado para especificar o nmero do protocolo IP, mas
 ignorado pelo linux 2.2 e deve ser sempre ajustado
para zero. (ver PROBLEMAS)
O campo
.B sin_port
contm o nmero do protocolo de pacotes recebidos.
Ver a lista de protocolos IP vlidos em
.B <netinet/in.h>
.

.SH OPES DE SOCKET
As opes de sockets raw podem ser ajustadas com
.BR setsockopt (2)
ou lidas com
.BR getsockopt (2)
passando-se o flag designador de famlia
.I SOL_RAW
.

.TP
.B ICMP_FILTER
Habilita um filtro especial para sockets raw ligados ao protocolo
.B IPPROTO_ICMP 
Cada bit deste campo designa um tipo de mensagem ICMP a ser excluda.
O default  no filtrar nenhuma mensagem ICMP.

.PP
Alm disso, todas as opes de socket
.B SOL_IP
.BR ip (7)
vlidas para sockets de datagrama so suportadas.

.SH NOTAS
Sockets raw fragmentam um pacote cujo tamanho total exceda o MTU da interface
(veja, no entanto, a seo PROBLEMAS).
Uma alternativa mais rpida e em sintonia com a rede  implementar a pesquisa
do MTU do caminho na seo 
.B IP_PMTU_DISCOVER
do
.BR ip (7).

Um socket raw pode ser ligado a um endereo local especfico usando a chamada
.BR bind (2)
Caso contrrio, todos os pacotes com o protocolo IP especificado so recebidos.
Alm disso, um socket RAW pode ser associado a um dispositivo de rede especfico usando
.B SO_BINDTODEVICE;
Ver
.BR socket (7).

Um socket
.B IPPROTO_RAW
 transmissor apenas.
Se voc realmente quiser receber todos os pacotes IP use um socket
.BR packet (7)
com o protocolo
.B ETH_P_IP
. Observe que sockets packet no remontam fragmentos IP, ao contrrio dos sockets raw.

Se voc quiser receber todos os pacotes ICMP de um socket de datagrama,  muitas
vezes melhor usar
.B IP_RECVERR
neste socket. Ver
.BR ip (7).

Os sockets raw podem ler todos os protocolos IP no linux, mesmo protocolos
como ICMP ou TCP, que tm um mdulo de protocolo no kernel. Neste caso, os
pacotes so passados tanto para o mdulo do kernel e para o(s) socket(s) raw.
No se deve contar com isso em programas portveis, porque muitas implementaes
de sockets em BSD tm limitaes aqui.

O linux nunca modifica cabealhos enviados pelo usurio, exceto para preencher
alguns campos zerados conforme descrito em
.BR IP_HDRINCL.
Muitas implementaes de sockets raw no se comportam assim.

Os sockets RAW geralmente so pouco portveis, devendo ser evitados em programas
que se deseje portar.

Os sockets raw enviados lem o protocolo de
.B sin_port;
Esta capacidade foi perdida no linux 2.2. A soluo  usar
.B IP_HDRINCL.

.SH MANUSEIO DE ERROS
Erros originrios da rede s so passados para o usurio quando o socket
est conectado ou o flag
.B IP_RECVERR
est habilitado. Sockets conectados recebem apenas 
.B EMSGSIZE   
e
.B EPROTO 
para manter a compatibilidade. Com
.B IP_RECVERR
todos os erros de rede so enviados para a fila de erros.
.SH ERROS
.TP
.B EMSGSIZE 
O pacote  grande demais. Ou a pesquisa de MTU do caminho est habilitada (com o sinalizador
.B IP_PMTU_DISCOVER
) ou o tamanho do pacote excede o mximo de 64KB permitido
pelo IPv4.
.TP
.B EACCES
O usurio tentou transmitir para um endereo de broadcast sem que o socket
tivesse um flag de broadcast.
.TP
.B EPROTO
Um mensagem ICMP chegou reportando um erro de parmetros.
.TP
.B EFAULT
Foi fornecido um endereo de memria invlido.
.TP
.B EOPNOTSUPP
Um flag invlido foi passado para uma chamada de socket (como
.BR MSG_OOB ).
.TP
.B EINVAL
Argumetno invlido.
.TP
.B EPERM
O usurio no tem permisso para abrir sockets raw. Apenas processos
com user if efetivo de 0 ou o atributo
.B CAP_NET_RAW 
podem fazer isto.

.SH VERSES
.B IP_RECVERR 
e
.B ICMP_FILTER 
surgiram no linux 2.2. So extenses linux e no devem ser usadas em
programas portveis.

O linux 2.0 criou alguma compatibilidade 'bug a bug' com o BSD no cdigo dos
sockets raw, que  habilitada com o flag SO_BSDCOMPAT. Isto foi retirado do 2.2.

.SH PROBLEMAS
Extenses transparentes de proxy no esto includas.

Quando a opo
.B IP_HDRINCL
est habilitada os datagramas no sero fragmentados, e ficam limitados  interface
MTU. Isto  uma limitao do linux 2.2.

O ajuste do protocolo IP para envio no campo
.B sin_port
foi perdido no linux 2.2. O protocolo que foi atrelado a este socket ou que
foi especificado na chamada inicial 
.BR socket (2)
 usado sempre.

.SH AUTORES
Esta pgina foi escrita por Andi Kleen. 

.SH "VEJA TAMBM"
.BR ip (7),
.BR socket (7),
.BR recvmsg (2),
.BR sendmsg (2).
.PP
.B RFC1191 
para pesquisa do MTU do caminho.

.B RFC791 
e o arquivo
.B <linux/ip.h>
para o protocolo IP.
.SH TRADUZIDO POR LDP-BR em 21/08/2000.
\&\fR\&\f(CWPaulo Csar Mendes <drps@ism.com.br> (traduo)\fR
\&\fR\&\f(CWAndr L. Fassone Canova <lonelywolf@blv.com.br> (reviso)\fR