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
|