File: tcp.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 (323 lines) | stat: -rw-r--r-- 10,845 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
.\" -*- nroff -*-
.\" 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: tcp.7,v 1.1 2000/10/20 13:05:12 ricardo Exp $
.TH TCP  7 "25/04/1999" "Linux Man Page" "Manual do Programador Linux" 
.SH NOME
tcp \- protocolo TCP.
.SH SINOPSE
.B #include <sys/socket.h>
.br
.B #include <netinet/in.h>
.br
.B tcp_socket = socket(PF_INET, SOCK_STREAM, 0); 
.SH DESCRIO
Esta  uma implementao do protocolo TCP
definida nas RFC793, RFC1122 
e RFC2001, com as extenses NewReno e SACK.  
Ela fornece uma conexo confivel, orientada a fluxo e full
duplex entre dois sockets sobre
.BR ip (7).
O TCP garante que os dados chegam em ordem e retransmite pacotes
perdidos. Ele gera e verifica um checksum por pacote para pegar
erros de transmisso. O TCP no preserva divisas de registros.

Um socket TCP fresco no tem endereo remoto ou local, e no est completamente especificado.
Para criar uma conexo TCP de sada, use
.BR connect (2)
para estabelecer uma conexo para outro socket TCP.
Para receber novas conexes de entrada, faa um 
.BR bind (2) 
no primeiro socket para um endereo e uma porta locais, e ento chame 
.BR listen (2)
para pr o socket no estado de escuta. Depois que um novo
socket para cada conexo de entrada pode ser aceito,
usando-se
.BR accept (2).
Um socket que teve um
.B accept
ou um
.B connect
chamado com sucesso  especificado completamente e pode transmitir dados.
Os dados no podem ser transmitidos em sockets de escuta ou que ainda no foram conectados.

O Linux 2.2 suporta as extenses TCP de alta performance da RFC1323.
Isto inclui janelas TCP grandes para suportar links com grande latncia ou
largura de banda.
Para fazer uso delas, os tamanhos dos buffers de envio e recepo devem ser
incrementados. Eles podem ser setados globalmente com os sysctls
.B net.core.wmem_default
e
.B net.core.rmem_default
, ou em sockets individuais atravs do uso das opes de socket 
.B SO_SNDBUF 
e 
.B SO_RCVBUF. 
Os tamanhos mximos para buffers de sockets so limitados pelos sysctls globais
.B net.core.rmem_max
e
.B net.core.wmem_max. 
Veja
.BR socket (7)
para mais informaes. 
.PP 
O TCP suporta dados urgentes. Dados urgentes so usados para sinalizar ao receptor
que alguma mensagem importante  parte do fluxo de dados e que deve
ser processado o mais breve possvel.
Para enviar dados urgentes, especifique a opo 
.B MSG_OOB
para  
.BR send (2).
Quando dados urgentes so recebidos, o kernel envia um sinal
.B SIGURG
para o
processo de leitura, ou para o processo ou grupo de processos que
foi setado para o socket, usando os ioctls
.B FIOCSPGRP
ou 
.B FIOCSETOWN. 
Quando a opo de socket
.B SO_OOBINLINE
 habilitada, dados urgentes so postos no fluxo normal de dados (e podem
ser testados pelo ioctl
.B SIOCATMARK
),
caso contrrio eles podem ser somente recebidos quando a flag 
.B MSG_OOB
 setada para
.BR sendmsg (2). 
.SH FORMATOS DE ENDEREO
O TCP  montado acima do IP (veja
.BR ip (7)).
Os formatos de endereo definidos por 
.BR ip (7)
se aplicam ao TCP. O TCP suporta
apenas comunicao ponto-a-ponto; broadcasting e multicasting no so suportados.
.SH SYSCTLS
Estes sysctls podem ser acessados pelos arquivos
.B /proc/sys/net/ipv4/* 
ou com a interface 
.BR sysctl (2). 
Alm disso, muitos sysctls IP tambm se aplicam ao TCP; veja 
.BR ip (7). 
.TP
.B tcp_window_scaling
Habilita escalamento de janela TCP da RFC1323.
.TP
.B tcp_sack
Habilita o Reconhecimento Seletivo TCP da RFC2018.
.TP
.B tcp_timestamps
Habilita timestamps TCP da RFC1323.
.TP
.B tcp_fin_timeout
Quantidade de segundos a se esperar pelo pacote final FIN antes de o socket ser
encerrado foradamente. Esta  estritamente uma violao da especificao TCP,
mas  requerida para prevenir ataques de negao de servio.
.TP
.B tcp_keepalive_probes
O mximo de provas de keep-alive do TCP a ser enviado antes de
desistir. Os keep-alives so enviados apenas quando a opo de socket
.B SO_KEEPALIVE 
estiver habilitada.
.TP
.B tcp_keepalive_time
O nmero de segundos sem que nenhum dado seja transmitido, antes que um keep-alive
seja transmitido em uma conexo. O padro  de 10800 segundos (3 horas).
.TP
.B tcp_max_ka_probes
Quantas provas de keep-alive so enviada por execuo de temporizador
lento. Para prevenir rajadas, este valor no deve ser muito alto.
.TP
.B tcp_stdurg
Habilita a interpretao estrita da RFC793 para o campo urgent-pointer do
TCP. O padro  usar a interpretao compatvel com BSD, apontando para o
primeiro byte depois do dado urgente. A interpretao da RFC793  para se
apontar para o ltimo byte do dado urgente. Habilitar essa opo pode
levar a problemas de interoperabilidade.
.TP
.B tcp_syncookies
Habilita syncookies do TCP. O kernel precisa ser compilado com
.BR CONFIG_SYN_COOKIES .
Os syncookies protegem um socket contra sobrecarga quando muitas conexes
tentam chegar. Mquinas clientes podem no ser mais capazes de detectar
uma mquina sobrecarregada com um timeout curto quando os syncookies so habilitados.

.TP
.B tcp_max_syn_backlog
Comprimento da fila de backlog por socket. Como no Linux 2.2, o backlog especificado
em 
.BR listen (2)
somente especifica o comprimento da fila de backlog de sockets j estabelecidos.
A fila mxima de sockets ainda no estabelecidos (no estado
.B SYN_RECV
)
por socket de escuta  setado por este sysctl. Quando mais conexes pedem chegada,
o Linux comea a perder pacotes. Quando syncookies so habilitados, os pacotes ainda so
respondidos e este valor  efetivamente ignorado. 
.TP
.B tcp_retries1
Define quantas vezes uma resposta a uma requisio de conexo TCP 
retransmitida antes de desistir.
.TP
.B tcp_retries2
Define quantas vezes um pacote TCP  retranmitido no estado estabelecido
antes de desistir.
.TP
.B tcp_syn_retries
Define quantas vezes tenta enviar um pacote SYN inicial para um host
remoto antes de desistir e retornar um erro. Deve ser menor que 255. Este
 somente o timeout para conexes de sada; para conexes de entrada, o
nmero de retransmisses  definido por
.BR tcp_retries1 .
.TP
.B tcp_retrans_collapse
Tenta enviar pacotes de tamanho mximo durante a retransmisso. Isto 
usado para contornar falhas de TCP em algumas pilhas.
.\" tcp_rfc1337 is not documented because it is too obscure and broken.
.SH OPES DE SOCKET
Para setar ou obter uma opo de socket do TCP, chame
.BR getsockopt (2)
para ler ou
.BR setsockopt (2)
para escrever a opo com o argumento da famlia de socket setado em
.BR SOL_TCP .
Alm disso,
muitas opes de socket
.B SOL_IP 
so vlidas em sockets TCP. Para mais informaes, veja
.BR ip (7).
.TP
.B TCP_NODELAY
Desliga o algoritmo Nagle. Isto significa que os pacotes sempre so enviados to breve
quanto possvel, e no so introduzidos atrasos desnecessrios, ao cutso de se ter mais
pacotes na rede. Espera um flag booleano inteiro.
.TP
.B TCP_MAXSEG 
Seta ou recebe o tamanho mximo de segmento para pacotes TCP de sada. Se
esta opo  setada antes do estabelecimento da conexo, ela tambm muda o
valor de MSS anunciado para a outra extremidade no pacote inicial. Valores
maiores que o MTU da interface so ignorados e no tm efeito.
.TP
.B TCP_CORK
Se habilitado, no envia quadros parciais.
Todos os quadros parciais enfileirados so enviados quando a opo  apagada novamente.
Isto  til para cabealhos precedentes
antes da chamada de 
.BR sendfile (2),
ou para otimizao do fluxo de sada. Esta opo no pode ser combinada com 
.BR TCP_NODELAY .
.SH IOCTLS
Estes ioctls podem ser acessadas usando-se
.BR ioctl (2).
A sintaxe correta :
.PP
.RS
.nf
.BI int " value";
.IB error " = ioctl(" tcp_socket ", " ioctl_type ", &" value ");"
.fi
.RE
.TP
.B FIONREAD
Retorna a quantidade de dados no lidos enfileirados no buffer de
recepo. O argumento  um ponteiro para um inteiro.
.TP
.B SIOCATMARK
Retorna verdadeiro quando todos os dados urgentes j foram recebidos pelo
programa do usurio.
Isto  usado junto com
.BR SO_OOBINLINE .
O argumento  um ponteiro para um inteiro para o resultado do teste.
.TP
.B TIOCOUTQ
Retorna, no ponteiro de valor inteiro passado, a quantidade de dados no
enviados que est na fila de envio do socket. 
.SH MANIPULAO DE ERROS
Quando ocorre um erro de rede, o TCP tenta reenviar o pacote. Se ele no 
bem-sucedido depois de algum tempo,  reportado 
.B ETIMEDOUT 
ou o ltimo erro recebido
nesta conexo.
.PP
Algumas aplicaes requerem uma notificao de erro mais rpida.
Isto pode ser habilitado com a opo de socket
.B IP_RECVERR 
de nvel
.B SOL_IP
. Quando esta
opo  habilitada, todos os erros de entrada so passados imediatamente para o programa do usurio.
Use esta opo com cuidado \- ela torna o TCP menos tolerante a mudanas de roteamento
e outras condies normais da rede.
.SH NOTAS
Quando ocorre erro na configurao da conexo de uma escrita em socket,
.B SIGPIPE
somente  levantado quando a opo de socket
.B SO_KEEPOPEN 
 configurada.
.PP
O TCP no tem dados reais para "out-of-band" (fora de banda); ele tem dados urgentes. Em Linux, isto significa
que se a outra extremidade envia dados out-of-band mais novos, os dados urgentes mais antigos
so inseridos como dados normais no fluxo (mesmo quando 
.B SO_OOBINLINE
no est setado). Isto difere de pilhas baseadas no BSD. 
.PP
O Linux usa a interpretao compatvel
com o BSD para o campo de ponteiro urgente, por padro. Isto viola a RFC1122, mas 
requerido para interoperabilidade com outras pilhas. Ele pode ser mudado pelo
sysctl
.B tcp_stdurg
.

.SH ERROS
.TP
.B EPIPE
A outra extremidade encerrou o socket inesperadamente, ou uma leitura  executada
em um socket desligado.
.TP
.B ETIMEDOUT
A outra extremidade no reconheceu os dados retransmitidos depois de algum tempo.
.TP
.B EAFNOTSUPPORT
Tipo de endereo de socket passado em 
.I sin_family 
no era
.BR AF_INET .
.PP
Qualquer erro definido pelo
.BR ip (7)
ou pela camada genrica do socket tambm pode ser retornada para o TCP.
.PP

.SH PROBLEMAS
Nem todos os erros so documentados. 
.PP
O IPv6 no  descrito. 
.PP
As opes de proxy transparente no so descritas.
.SH VERSES
Os sysctls so novos no Linux 2.2. 
.B IP_RECVERR 
 uma nova
implementao no Linux 2.2. 
.B TCP_CORK 
 novo no 2.2.
.SH "VEJA TAMBM"
.BR socket (7),
.BR socket (2),
.BR ip (7),
.BR sendmsg (2),
.BR recvmsg (2).
.br
RFC793 para a especificao TCP.
.br
RFC1122 para os requerimentos do TCP e uma descrio do algoritmo
Nagle.
.br
RFC2001 para alguns algoritmos do TCP.
.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