File: ip.7

package info (click to toggle)
manpages-pt 20011020-2
  • links: PTS
  • area: main
  • in suites: woody
  • size: 3,052 kB
  • ctags: 5
  • sloc: makefile: 49
file content (845 lines) | stat: -rw-r--r-- 25,713 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
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
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
.\" -*- nroff -*-
.\" Don't change the line above. it tells man that tbl is needed.
.\" 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.
.\" $Id: ip.7,v 1.1 2000/10/20 13:05:11 ricardo Exp $
.TH IP  7 "11 de maio de 1999" "Linux Man Page" "Manual do Programador Linux" 
.SH NOME
ip \- Implementao do protocolo IPv4 em Linux
.SH SINOPSE
.B #include <sys/socket.h>
.br
.B #include <net/netinet.h> 
.sp
.IB tcp_socket " = socket(PF_INET, SOCK_STREAM, 0);"
.br 
.IB raw_socket " = socket(PF_INET, SOCK_RAW, " protocol ");"
.br
.IB udp_socket " = socket(PF_INET, SOCK_DGRAM, " protocol ");"
.SH DESCRIO 
Linux implementa o Protocolo Internet (IP), verso 4, 
descrito nas RFC791 e RFC1122. 
.B ip 
contm uma implementao de multicasting de nvel 2, 
conforme a RFC1112.  Ele tambm contm um roteador IP 
que inclui um filtro de pacotes.
.\" XXX: algum verificou se 2.1 realmente  compatvel com 1812?
.PP
A interface do programador  compatvel com sockets BSD.
Para maiores informaes sobre sockets, veja 
.BR socket (7). 
.PP
Um socket IP  criado ao se chamar a funo
.BR socket (2) 
no formato 
.BR "socket(PF_INET, socket_type, protocol)" .
Tipos vlidos de sockets so 
.B SOCK_STREAM 
para abrir um socket 
.BR tcp (7) 
, 
.B SOCK_DGRAM
para abrir um socket
.BR udp (7)
, ou
.B SOCK_RAW
para abrir um socket 
.BR raw (7)
para acessar o protocolo IP protocol diretamente. 
.I protocol 
 o protocolo IP no header IP a ser recebido ou enviado. Os nicos valores
vlidos para
.I protocol
so
.B 0
e
.B IPPROTO_TCP
para sockets TCP, e
.B 0
e
.B IPPROTO_UDP 
para sockets UDP. Para 
.B SOCK_RAW 
Voc deve especificar
um protocolo IP IANA vlido, definido nos
nmeros atribudos na
RFC1700.
.PP
.\" XXX ip corrente faz um autobind em listen, mas no estou certo se isso deveria ser
.\" documentado.
Quando um processo quer receber novos pacotes ou conexes de entrada, ele deveria
ligar um socket a um endereo local de interface, usando 
.BR bind (2).
Somente um socket IP pode ser ligado a qualquer par (endereo, porta) local dado.
Quando 
.B INADDR_ANY 
 especificado na chamada 'bind' , o socket ser ligado a 
.I todas
as interfaces locais. Quando 
.BR listen (2)
ou
.BR connect (2)
so chamados sobre um socket no ligado, o socket  automaticalmente ligado a uma  
porta livre aleatria, com o endereo local setado em
.BR INADDR_ANY .

Um endereo de socket TCP local que tenha sido ligado  indisponvel por
algum tempo depois do fechamento, a menos que o flag
.B SO_REUSEADDR
tenha sido setado. Deve-se tomar cuidado quando se usa este flag, pois ele
torna o TCP menos reliable.  

.SH FORMATO DE ENDEREO
Um endereo de socket IP  definido como uma combinao de um endereo de interface 
IP e um nmero de porta. O protocolo IP bsico no suporta nmero de portas, elas so
implementadas por protocolos de nvel mais alto, como 
.BR udp (7)
e
.BR tcp (7).
Em sockets diretos,
.B sin_port
 setado para o protocolo IP.

.PP
.RS
.nf
.ta 3n 17n 29n
struct sockaddr_in {
	sa_family_t	sin_family;	/* famlia de endereo: AF_INET */
	u_int16_t	sin_port;	/* porta na ordem de byte da rede */
	struct in_addr  sin_addr;	/* endereo internet */
};

/* Endereo internet. */
struct in_addr {
	u_int32_t	s_addr;	/* endereo na ordem de byte da rede */
};
.ta
.fi
.RE
.PP
.I sin_family 
 sempre selecionado para 
.BR AF_INET . 
Este  requerido; em Linux 2.2, muitas funes de rede retornam 
.B EINVAL
quando esta configurao est faltando.
.I sin_port
contm a porta em ordem de byte da rede. Os nmeros de porta abaixo de 1024 so chamados de 
.IR "portas reservadas" .
Somente processos com id efetivo de usurio 0 ou a capabilidade 
.B CAP_NET_BIND_SERVICE 
podem fazer o 
.BR bind (2)  
nesses sockets. Note que o protocolo IPv4 direto, como tal, no possui nenhum conceito de
porta, elas somente so implementadas por protocolos superiores, como o
.BR tcp (7)
e o
.BR udp (7).
.PP
.I sin_addr 
 o endereo IP do host.
O membro 
.I addr
de 
.B struct in_addr
contm o endereo de interface do host na ordem de rede. 
.B in_addr 
s deveria ser acessada usando-se as funes de biblioteca
.BR inet_aton (3),
.BR inet_addr (3),
.BR inet_makeaddr (3)
, ou diretamente com o resolvedor de nomes (veja
.BR gethostbyname (3)).
Os endereos IPv4 so divididos em unicast, broadcast 
e multicast. Endereos de unicast especificam uma interface nica de um host,
endereos de broadcast especificam todos os hosts de uma rede, e endereos de
multicast endeream todos os hosts em um grupo de multicast. Datagramas dirigidos a endereos de broadcast
s podem ser enviados ou recebidos quando um sinalizador de socket
.B SO_BROADCAST
est selecionado.
Na implementao corrente, sockets orientados a conexo somente tm permisso 
para usar endereos de unicast.
.\" Leave a loophole for XTP @)

Note que o endereo e a porta so sempre armazenados na ordem da rede.
Em particular, isto significa que voc precisa chamar
.BR htons (3) 
sobre o nmero que  atribudo a uma porta. Todas as funes de manipulao de
endereo/porta na biblioteca padro funcionam na ordem da rede.

H vrios endereos especiais: 
.B INADDR_LOOPBACK
(127.0.0.1)
sempre se refere ao host local via dispositivo de loopback;
.B INADDR_ANY 
(0.0.0.0)
significa qualquer endereo para conexo;
.B INADDR_BROADCAST
(255.255.255.255)
significa qualquer host e tem o mesmo efeito, em uma conexo, que o  
.B INADDR_ANY
por razes histricas.

.SH OPES DE SOCKETS

O IP suporta algumas opes de socket especficos de protocolo, que podem ser selecionado com
.BR setsockopt (2)
e lidas com
.BR getsockopt (2).
O nvel de opo de socket para IP   
.B SOL_IP. 
Um sinalizador inteiro para booleano  zero quando  falso, e em caso contrrio  verdadeiro.

.TP
.B IP_OPTIONS
Seta ou obtm as opes de IP a serem enviadas com cada pacote deste socket. 
Os argumentos so um ponteiro para um buffer de memria que
contm as opes, e o comprimento da opo.
A chamada 
.BR setsockopt (2)
seta as opes de IP associadas com o socket.
O mximo tamanho de opo para IPv4  40 bytes. Consulte RFC791 para ver as 
opes permitidas. Quando o pacote inicial de requisio de conexo para um socket
.B SOCK_STREAM
contm opes de IP, as opes de IP sero setadas automaticamente para as 
opes do pacote inicial, com os headers de roteamento revertido.
Pacotes entrantes no tm permisso de mudar opes depois que a conexo  
estabelecida.
O processamento de todas as opes entrantes de roteamento da fonte  
desabilitada por default, e pode ser habilitada pelo uso do sysctl
.B accept_source_route
. Outras opes, como timestamps, ainda so manipuladas.
Para sockets de datagramas, as opes de IP s podem ser setadas pelo usurio local.
Chamando-se
.BR getsockopt (2)
com
.I IP_OPTIONS
pe-se as opes de IP correntes, usadas para envio, no buffer fornecido.

.TP
.B IP_PKTINFO
Passa uma mensagem ancilar
.I IP_PKTINFO
que contm uma estrutura 
.B pktinfo 
, que fornece algumas informaes sobre o pacote entrante. Isto s
funciona para sockets orientados a datagramas.
.IP
.RS
.ta 4n 19n 33n
.nf
struct in_pktinfo
{
	unsigned int	ipi_ifindex; 	/* ndice da interface  */
	struct in_addr	ipi_spec_dst;	/* endereo de destino do roteamento */
	struct in_addr	ipi_addr;	/* endereo do Destino do Header */
};
.fi
.RE
.IP
.\" XXX elaborate on that.
.B ipi_ifindex
 o nico ndice da interface onde o pacote foi recebido.
.\" XXX is that correct?
.B ipi_spec_dst
 o endereo de destino da entrada da tabela de roteamento e
.B ipi_addr
 o endereo de destino no cabealho do pacote.
Se
.I IP_PKTINFO 
 passado para
.BR sendmsg (2)
ento o pacote de sada ser enviado sobre a interface
especificada em
.B ipi_ifindex
, com o endereo de destino setado em
.B ipi_spec_dst.

.TP
.B IP_RECVTOS
Se habilitado, a mensagem ancilar 
.I IP_TOS 
 passada com pacotes entrantes. Ele contm um byte que especifica o campo
"Tipo de Servio/Precedncia" do cabealho do pacote. Espera um flag
booleano inteiro. 

.TP
.B IP_RECVTTL
Quando este flag  setado, passa uma
mensagem de controle
.I IP_RECVTTL 
com o campo "time to live" do pacote recebido como um byte. 
No  suportado para sockets
.B SOCK_STREAM
.

.TP
.B IP_RECVOPTS
Passa todas as opes de IP entrantes para o usurio em uma mensagem de controle
.I IP_OPTIONS. 
O header de roteamento e outras opes j so preenchidas para o host
local.
No  suportado para sockets
.I SOCK_STREAM
.
.TP
.B IP_RETOPTS
Idntico a 
.I IP_RECVOPTS
, mas retorna opes diretas no processadas, com opes de timestamp e
registro de rota no preenchidos para este hop.

.TP
.B IP_TOS
Seleciona ou recebe o campo Tipo-de-Servio (Tipo-Of-Service - TOS), que  enviado com todos os pacotes IP
originados deste socket. Ele  usado para priorizar pacotes na rede.
TOS  um byte. H alguns padres de flags TOS definidos:
.B IPTOS_LOWDELAY 
para minimizar delays para trfego interativo,
.B IPTOS_THROUGHPUT
para otimizar o fluxo,
.B IPTOS_RELIABILITY
para otimizar a reliability,
.B IPTOS_MINCOST
deveria ser usado como "dado preenchedor" onde transmisses lentas no causam problemas.
No mximo um desses valores de TOS podem ser especificados. Outros bits so
invlidos e sero zerados.
Linux envia datagramas 
.B IPTOS_LOWDELAY 
primeiro por default,
mas o comportamento exato depende da disciplina de fila configurada. 
.\" XXX elaborate on this 
Alguns nveis de alta prioridade podem requerer um id efetivo de usurio 0 ou
a capabilidade
.B CAP_NET_ADMIN.
A prioridade tambm pode ser setada de maneira independente de protocolo, pela opo de socket (
.B SOL_SOCKET, SO_PRIORITY
) (veja
.BR socket (7)
). 

.TP  
.B IP_TTL
Seta ou recupera o campo "time to live" corrente, que  enviado em todos os
pacotes originados neste socket.

.TP
.B IP_HDRINCL
Se habilitado,
o usurio fornece um header ip na frente dos dados. Somente 
vlido para sockets
.B SOCK_RAW. 
Veja
.BR raw (7)
para mais informao. Quando este flag  habilitado, os valores setados por
.IR IP_OPTIONS ,
.I IP_TTL
e
.I IP_TOS
so ignorados.

.TP
.B IP_RECVERR
Habilita a passagem estendida e confivel de mensagens de erro.
Quando habilitado sobre um socket de datagrama,
todos os erros gerados sero enfileirados em uma fila de erros por-socket. Quando o usurio
recebe um erro de uma operao de socket, os erros
podem ser recebidos chamando-se
.BR recvmsg (2) 
com o sinalizador 
.B MSG_ERRQUEUE 
selecionado. A estrutura 
.B sock_extended_err 
descrevendo o erro ser analisada em uma mensagem ancilar,
com o tipo
.I IP_RECVERR 
e o nvel 
.BR SOL_IP . 
Isto  til para manipulao confivel de erros ou sockets desconectados.
A parte dos dados recebidos a partir da fila de erros
contm o pacote de erro.
.IP
IP usa a estrutura 
.B sock_extended_err
como segue:
.I ee_origin 
 setado em 
.B SO_EE_ORIGIN_ICMP 
para erros recebidos como um pacote ICMP, ou
.B SO_EE_ORIGIN_LOCAL 
para erros gerados localmente. 
.I ee_type 
e 
.I ee_code 
so setados para os campos "tipo" e "cdigo" do header ICMP.
.I ee_info
contm o MTU descoberto para  
.B EMSGSIZE 
erros. 
.I ee_data 
no  usado atualmente. Quando o erro originou-se na rede, todas as opes de IP 
.RI ( IP_OPTIONS ", " IP_TTL ", "
etc.) habilitadas no socket e contidas no pacote de erro 
so passadas como mensagens de controle. O "payload" do pacote que
causou o erro  retornado como dado normal.
.IP
.\" XXX: is it a good idea to document that? It is a dubious feature.
Em sockets 
.B SOCK_STREAM 
,
.I IP_RECVERR 
tem semnticas ligeiramente diferentes. Em vez de
gravar os erros para o prximo timeout, ele passa todos os erros entrantes
imediatamente para o
usurio. Isto pode ser til para conexes TCP muito curtas, que 
precisam de uma manipulao de erros rpida. Use esta opo com cuidado: ela torna o TCP no confivel,
ao no permitir que ele se recupere propriamente de deslocamento de roteamento, e outras
condies e quebras normais da especificao do protocolo.
Note que TCP no tem fila de erro; 
.B MSG_ERRQUEUE
 ilegal em sockets 
.B SOCK_STREAM
. 
Portanto todos os erros so retornados pelo retorno de funo do socket ou 
.B SO_ERROR
apenas. 
.IP
Para sockets diretos,
.I IP_RECVERR 
habilita a passagem para o aplicativo de todos os erros ICMP recebidos, caso contrrio os
erros sero relatados apenas nos sockets conectados.
.IP
Ele seta ou recupera um flag booleano inteiro. 
.I IP_RECVERR
 desligado, por padro. 

.TP
.B IP_PMTU_DISCOVER
Seta ou recupera a configurao do Path MTU Discovery
para um socket. Quando habilitado, o Linux realiza o Path MTU Discovery
neste socket como  definido na RFC1191. 
O sinalizador de no fragmentao  selecionado em todos os datagramas de sada.
O padro geral do sistema  controlado pelo sysctl 
.B ip_no_pmtu_disc 
para sockets 
.B SOCK_STREAM 
, e desabilitado para todos os outros. Para sockets que no so
.B SOCK_STREAM 
,  responsabilidade do usurio empacotar os dados em blocos grandes,
de tamanho igual ao MTU e fazer a retransmisso, se necessrio.
O kernel rejeitar pacotes que sejam maiores que o MTU da rota conhecida, se 
este flag  setada (com 
.B EMSGSIZE
). 

.TS
tab(:);
c l
l l.
Flags do Path MTU Discovery:Significado
IP_PMTUDISC_WANT:Usa configuraes por-rota.
IP_PMTUDISC_DONT:Nunca executa Path MTU Discovery.
IP_PMTUDISC_DO:Sempre executa Path MTU Discovery. 
.TE   


Quando o PMTU discovery est habilitado, o kernel automaticamente
guarda as informaes do Path MTU por host de destino. 
Quando ele  conectado a um peer especfico com 
.BR connect (2)
, o PMTU conhecido atualmente pode ser recuperado convenientemente usando-se a opo de socket 
.B IP_MTU 
(por exemplo, depois da ocorrncia de um erro 
.B EMSGSIZE 
). Isso pode mudar com o tempo. 
Para sockets sem conexo com muitos destinos,
o novo also MTU para um dado destino tambm pode ser acessado usando-se a
fila de erros (veja 
.BR IP_RECVERR ).
Um novo erro ser enfileirado em toda atualizao de MTU de entrada.

Enquanto o MTU Discovery est em progresso, os pacotes iniciais de sockets
de datagramas podem ser perdidos. Aplicativos usando UDP devem ser alertados sobre isso, e no
levar isso em conta pera a estratgia de retransmisso de pacotes.

Para bootstrap o processo de path MTU discovery em sockets no conectados,  possvel iniciar
com um tamanho de datagrama grande (de at 64K-headers bytes de comprimento) 
e deix-lo encolher pelas atualizaes do MTU da rota.
.\" XXX this is an ugly hack

Para conseguir uma estimativa inicial do PMTU, conecte um socket de 
datagrama a um endereo de destino usando
.BR connect (2)
e recupere o MTU chamando
.BR getsockopt (2)
com a opo
.B IP_MTU
.     

.TP
.B IP_MTU
Recupera o PMTU atual do socket corrente.
Somente vlido quando o socket est conectado. Retorna um inteiro. Somente vlido
como um  
.BR getsockopt (2). 
.\"
.TP
.B IP_ROUTER_ALERT
Passa todos os pacotes "a serem encaminhados" com a opo
"Alerta de Roteador IP"
selecionada
para este socket. Somente vlido para sockets diretos. Isto  til, por enquanto, para daemons RSVP do espao do
usurio. Os pacotes mandados no so encaminhados pelo kernel, 
responsabilidade do usurio envi-los novamente. A ligao do socket  ignorada,
tais pacotes so apenas filtrados pelo protocolo.
Espera um sinalizador inteiro. 
.\"
.TP
.B IP_MULTICAST_TTL
Seta ou l o valor de "time-to-live" de pacotes de multicast de
sada para este socket.  muito importante para pacotes multicast que seja
setado o menor TTL possvel. 
O padro  1, o que significa que pacotes multicast no saem da rede local 
a menos que o programa do usurio o requeira explicitamente. O argumento 
um inteiro.
.\"
.TP
.B IP_MULTICAST_LOOP
Seta ou l um argumento booleano inteiro se pacotes de multicast enviados
deveriam ser retornados por meio de "loop back" para os sockets locais.
.\"
.TP
.B IP_ADD_MEMBERSHIP
Integra a um grupo de multicast. O argumento  uma estrutura 
.B struct ip_mreqn
.
.PP
.RS
.nf
.ta 4n 19n 34n
struct ip_mreqn
{
	struct in_addr	imr_multiaddr;	/* endereo IP de grupo de multicast */
	struct in_addr	imr_address;	/* endereo IP da interface local */
	int	imr_ifindex;	/* ndice da interface */
};
.fi
.RE
.IP
.I imr_multiaddr
contm o endereo do grupo de multicast com que a aplicao quer se ligar ou deixar.
Deve ser um endereo de multicast vlido. 
.I imr_address
 o endereo da interface local com o qual o sistema deveria se unir ao grupo de multicast;
se for igual a 
.B INADDR_ANY
, uma interface apropriada  escolhida pelo sistema.
.I imr_ifindex
 um ndice da interface que vai agregar/abandonar o grupo
.I imr_multiaddr 
, ou 0 para indicar qualquer interface. 
.IP
Por questo de contabilidade, a antiga estrutura 
.B ip_mreq 
ainda  suportada. Ela difere de 
.B ip_mreqn 
somente pela no incluso
do campo 
.I imr_ifindex. 
Somente vlido como um 
.BR setsockopt (2).
.\"
.TP
.B IP_DROP_MEMBERSHIP
Abandona um grupo de multicast. O argumento  uma estrutura
.B ip_mreqn 
ou 
.B ip_mreq 
, similar a
.IR IP_ADD_MEMBERSHIP . 
.\"
.TP
.B IP_MULTICAST_IF
Seta o dispositivo local para um socket multicast. O argumento  uma estrutura
.B ip_mreqn 
ou 
.B ip_mreq 
, similar a 
.IR IP_ADD_MEMBERSHIP.
.IP
Quando  passada uma opo invlida de socket,
.B ENOPROTOOPT
 retornado. 
.SH SYSCTLS
O protocolo IP
suporta que a interface sysctl configure algumas opes globais. 
Os sysctls podem ser acessados pela leitura ou escrita dos arquivos
.B /proc/sys/net/ipv4/* 
, ou usando a interface
.BR sysctl (2)
.
.\"
.TP
.B ip_default_ttl 
Seta o valor default do "time-to-live" para pacotes de sada. Isso pode ser alterado para
cada socket, com a opo
.I IP_TTL
.
.\"
.TP
.B ip_forward
Habilita "IP forwarding" com um flag booleano. "IP forwarding" tambm pode
ser configurado em uma base por interface. 
.\"
.TP
.B ip_dynaddr
Habilita endereo dinmico de socket e reescrita mascarada de entrada em mudana de endereo
de interface. Isto  til para interface de dialup com endereos IP variveis.
0 significa sem reescrita, 1 ativa a reescrita, e 2 habilita o modo verbose.
.\"
.TP
.B ip_autoconfig
No documentado.
.\"
.TP
.B ip_local_port_range
Contm dois inteiros que definem a faixa padro de portas locais alocados
para sockets. A alocao comea com o primeiro nmero e termina no segundo.
Note que eles no deveriam conflitar com as portas usadas pelo mascaramento (apesar de que
o caso  manipulado). Escolhas arbitrrias tambm podem causar problemas com alguns
filtros de pacotes de firewall que assumem informaes sobre as portas locais em uso.
O primeiro nmero deve ser pelo menos maior que 1024, o melhor  que seja maior que 4096 para
evitar conflitos com portas mais conhecidas, e minimizar problemas com o firewall.
.\"
.TP
.B ip_no_pmtu_disc
Se habilitado, no realiza Path MTU Discovery para sockets TCP, por padro. Path
MTU discovery pode falhar se firewalls mal-configurados (que perdem todos os pacotes TCP)
ou interfaces mal-configuradas (por exemplo, um link ponto-a-ponto onde ambos os extremos 
no concordam com o MTU) esto na rota.  melhor corrigir os roteadores
problemticos na rota do que desligar o Path MTU Discovery globalmente, porque 
a no execuo deste ltimo incorre em grandes custos para a rede.
.\"
.TP
.B ipfrag_high_thresh, ipfrag_low_thresh 
Se a quantidade de fragmentos IP enfileirados atinge 
.B ipfrag_high_thresh ,
a fila
 "podada" para  
.B ipfrag_low_thresh . 
Contm um inteiro com o nmero de
bytes.
.TP
.B ip_always_defrag
[Novo com Kernel 2.2.13; em verses anteriores do kernel, a feature era 
controlada em tempo de compilao pela opo
.B CONFIG_IP_ALWAYS_DEFRAG 
]

Quando esse flag booleano  habilitado (diferente de 0) fragmentos de entrada 
(partes de pacotes IP
que surgiram quando algum host, entre a origem e o 
destino, decidiram que os pacotes eram grandes demais e os cortaram em
pedaos) sero remontados (desfragmentados) antes de serem processados, mesmo 
se eles sero encaminhados.

Somente habilite se estiver rodando um firewall que  o link exclusivo
para sua rede, ou um proxy transparente; nunca acione isso para um
roteador normal ou um host. Caso contrrio, uma comunicao
fragmentada pode ser perturbada quando os fragmentos viajam sobre links
diferentes. A desfragmentao tambm consome muita memria e tempo da CPU.

Isto  "automagicamente" acionado quando o mascaramento ou o proxy
transparente so configurados.
.TP
.B neigh/*
Veja 
.BR arp (7). 
.\" XXX Document the conf/*/* sysctls 
.\" XXX Document the route/* sysctls
.\" XXX document them all
.SH IOCTLS
Todos os ioctls descritos em 
.BR socket (7) 
se aplicam a ip.
.PP 
Os ioctls que configuram firewalling so documentados em
.BR ipfw (7)
do pacote 
.B ipchains
.
.PP
Os ioctls que configuram parmetros genricos do dispositivo so descritos em  
.BR netdevice (7).  
.\" XXX Add a chapter about multicasting
.SH NOTAS
Tome cuidado com a opo 
.B SO_BROADCAST
\- ela no  privilegiada em Linux.  fcil sobrecarregar a rede com
broadcasts descuidados. Para novos protocolos de aplicativos,
 melhor usar um grupo de multicast em vez de broadcast. Broadcast
 desencorajado.   
.PP
Algumas outras implementaes de sockets BSD provm as opes de socket 
.I IP_RCVDSTADDR 
e 
.I IP_RECVIF 
para conseguir o endereo de destino e a interface dos datagramas recebidos. 
O Linux tem o
.I IP_PKTINFO
, mais geral para a mesma tarefa. 
.PP
.SH ERROS
.\" XXX document all errors. We should really fix the kernels to give more uniform
.\"     error returns (ENOMEM vs ENOBUFS, EPERM vs EACCES etc.)  
.TP
.B ENOTCONN
A operao s  definida em sockets conectados socket, mas o socket no  
conectado.
.TP
.B EINVAL
Um argumento invlido foi passado. 
Para operaes de envio, isso pode ser causado pelo envio a uma rota
.I blackhole
.
.TP
.B EMSGSIZE 
O datagrama  maior que um MTU na rota e no pode ser fragmentado.
.TP
.B EACCES
O usurio tentou executar uma operao sem as permisses necessrias. 
Isso inclui:
Envio de pacote a um endereo de broadcast sem ter o sinalizador
.B SO_BROADCAST
seleciona.
Envio de um pacote atravs da rota 
.I prohibit
.
Modificao de configurao de firewall sem 
.B CAP_NET_ADMIN
ou id de usurio efetivo 0.
Ligao em uma porta reservada sem 
.B CAP_NET_BIND_SERVICE
ou id de usurio efetivo 0.

.TP
.B EADDRINUSE
Tentativa de ligar a um endereo j em uso.
.TP
.BR ENOMEM " and " ENOBUFS
No h memria disponvel suficiente. 
.TP
.BR ENOPROTOOPT " and " EOPNOTSUPP
Uma opo de socket invlida foi passada.
.TP
.B EPERM
Usurio no tem permisso para configurar alta prioridade, mudar configurao, 
ou enviar sinais para o processo ou grupo requerido.
.TP
.B EADDRNOTAVAIL
Uma interface no existente foi requerida, ou o endereo de origem requerido 
no era local.
.TP
.B EAGAIN
A operao sobre um socket no-bloquevel teria sido bloqueada.
.TP
.B ESOCKTNOSUPPORT
O socket no est configurado, ou um tipo desconhecido de socket foi requerido.
.TP
.B EISCONN
.BR connect (2)
foi chamado em um socket j conectado.
.TP
.B EALREADY
Uma operao de conexo sobre um socket no-bloquevel j est em progresso.
.TP
.B ECONNABORTED
Uma conexo foi fechada durante um
.BR accept (2). 
.TP
.B EPIPE
A conexo foi inesperadamente fechada ou derrubada pelo outra extremidade.
.TP
.B ENOENT
.B SIOCGSTAMP 
foi chamado em um socket onde nenhum pacote chegou.
.TP
.B EHOSTUNREACH
Nenhuma entrada vlida da tabela de roteamento combina com o endereo de 
destino. Este erro pode ser causado por uma mensagem ICMP de um roteador
remoto para a tabela de roteamento local.
.TP
.B ENODEV 
Dispositivo de rede no disponvel ou no capaz de enviar IP.
.TP
.B ENOPKG 
Um subsistema do kernel no foi configurado.
.TP
.B ENOBUFS, ENOMEM
No h memria livre suficiente.  
Isso frequentemente quer dizer que a alocao de memria  limitada pelos 
limites do buffer de socket, e no pela memria do sistema, mas isso no  100% consistente.
.PP
Outros erros podem ser gerados pelos protocolos de overlay; veja
.BR tcp (7),
.BR raw (7),
.BR udp (7)
e
.BR socket (7).
.SH VERSES
.IR IP_PKTINFO , 
.IR IP_MTU , 
.IR IP_PMTU_DISCOVER , 
.IR IP_PKTINFO , 
.IR IP_RECVERR
e
.IR IP_ROUTER_ALERT
so novas opes no Linux 2.2.  
.PP
.B struct ip_mreqn 
 novo no Linux 2.2.  Linux 2.0 somente suporta 
.BR ip_mreq .
.PP
Os sysctls foram introduzidos com o Linux 2.2. 
.SH COMPATIBILIDADE
Por questes de compatibilidade com o Linux 2.0, a sintaxe obsoleta 
.BI "socket(PF_INET, SOCK_RAW, "protocol ")"
ainda  suportada para abrir um socket 
.BR packet (7) 
. Isot  obsoleto e deveria ser substitudo por 
.BI "socket(PF_PACKET, SOCK_RAW, "protocol ")"
.  A diferena principal  a
nova estrutura de endereo 
.B sockaddr_ll 
para informao genrica da camada de link, em vez do antigo 
.B sockaddr_pkt.
.SH PROBLEMAS
H muitos valores de erro inconsistentes. 
.PP
Os ioctls que configuram opes de interface especficos do IP e tabelas ARP
no esto descritos.
.SH AUTORES
Esta man page foi escrita por Andi Kleen. 
.SH "VEJA TAMBM" 
.BR sendmsg (2),
.BR recvmsg (2),
.BR socket (7),
.BR netlink (7),
.BR tcp (7),
.BR udp (7),
.BR raw (7),
.BR ipfw (7).
.PP
RFC791 para a especificao IP original.
.br
RFC1122 para os requisitos do host IPv4.
.br
RFC1812 para os requisitos do roteador IPv4.
\"  LocalWords:  XXX autobind INADDR REUSEADDR
.SH TRADUZIDO POR LDP-BR em 21/08/2000.
\&\fR\&\f(CWRubens de Jesus Nogueira <darkseid99@usa.net> (traduo)\fR
\&\fR\&\f(CWAndr L. Fassone Canova <lonelywolf@blv.com.br> (reviso)\fR