Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Configurar o tamanho da janela TCP

From 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.
227 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.

×