Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 21:04, 26 October 2007.

Configurar o tamanho da janela TCP

From Forum Nokia Wiki

Original: Set TCP Window Size

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

 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX