×
Namespaces

Variants
Actions

Configurar o tamanho da janela TCP

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Artigo
Tradução:
Originado de Set TCP Window Size
Por kyllercg
Última alteração feita por hamishwillee em 09 Dec 2011

Contents

O que é uma janela TCP?

Uma janela TCP (em Inglês) é a quantidade de dados (não confirmadas pelo recebedor) que um remetente pode enviar através de uma conexão, antes de receber uma confirmação de recebimento do destinatário.

O motivo principal para usar uma janela TCP é controle de congestionamento. A janela TCP diminui a velocidade de transmissão até um nível em que congestionamento e perda de dados não ocorrem.

Considerando a importância das janelas TCP, é preciso garantir que os pares negociem corretamente o tamanho da janela antes de criar a conexão. A principal razão para estabelecer o tamanho da janela é que apenas 16 bits são reservados para a janela no cabeçalho TCP, com um tamanho máximo de 64k.

Para resolver essa limitação, existe uma opção para alterar o tamanho da janela TCP. Se uma janela de tamanho maior que 64k for necessária, é preciso especificar esse valor no momento da abertura da conexão.


Configurando o tamanho da janela TCP

O seguinte trecho de código Open C mostra como determinar o tamanho da janela TCP no cliente e no servidor.

int window_size = 128 * 1024;	/* 128 kilobytes */
sock = socket(AF_INET, SOCK_STREAM, 0);
 
/* Ambas as chamadas de setsockopt() devem ser feitas antes de connect()/accept() */
setsockopt(sock, SOL_SOCKET, SO_SNDBUF,
(char *) &window_size, sizeof(window_size));
 
setsockopt(sock, SOL_SOCKET, SO_RCVBUF,
(char *) &window_size, sizeof(window_size));
 
#ifdef CLIENT_CODE
connect(sock, (struct sockaddr *) &address, sizeof(address));
#endif
 
#ifdef SERVER_CODE
listen(sock, 5);
 
accept(sock, NULL, NULL);
#endif

A função setsockopt() pode ser usada pela aplicação para controlar o comportamento dos sockets. O arquivo de cabeçalho requerido é o sys/socket.h. No código anterior, a chamada a setsockopt() deve ser realizada antes de connect() ou accept().


Referências

* A User's Guide to TCP Windows

* setsockopt Man Page


Links relacionados

* FN Discussion Forum Link

This page was last modified on 9 December 2011, at 04:25.
85 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×