Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Origem: Wikipédia
(Redirecionado de TCP)
Protocolos Internet
Camada Aplicação HTTP, SMTP, FTP, SSH, IRC, SNMP ...
Camada Transporte TCP, UDP, SCTP, RTP, DCCP ...
Camada Rede IPv4, IPv6, ARP, ICMP ...
Camada Ligação de dados Ethernet, 802.11 WiFi, Token ring, FDDI, PPP, ...
Camada Física RS-232, EIA-422, RS-449, EIA-485...
editar...
O TCP (acrónimo para o inglês Transmission Control Protocol) é um dos protocolos sob
os quais assenta o núcleo da Internet nos dias de hoje. A versatilidade e robustez deste
protocolo tornou-o adequado para redes globais, já que este verifica se os dados são
enviados de forma correta, na sequência apropriada e sem erros, pela rede.
Características técnicas
Bits 0 - 10 -
+ 4-9 16 - 31
3 15
32 Número de sequência
Reservado Janela
96 Offset
s
Flags
Window
12 Ponteiro de
Checksum
8 urgência
16
Opções (opcional)
0
19
Opções (cont.) Padding (até 32)
2
22
Dados
4
+ 10 11 12 13 14 15
9 UrgPt AC Pus RS SY FI
6 r K h T N N
• Controlo de fluxo - O TCP usa o campo janela ou window para controlar o fluxo.
O receptor, à medida que recebe os dados, envia ACK, que pode especificar o
tamanho do buffer no campo (janela) do segmento TCP, em que determina a
quantidade de bytes que o lado trasmissor do ACK pode receber. O transmissor
pode transmitir segmentos com um número de bytes que deverá estar confirmado
com tamanho da janela permitido.
[editar]
Descrição do funcionamento
Fig. 1 - Neste exemplo considera-se o backlog preenchido para forçar o timeout no cliente
para que o pacote SYN seja reenviado. No entanto, o primeiro pacote podia ter-se perdido
devido a erros na rede.
O protocolo TCP especifica três fases durante uma conexão: estabelecimento da ligação,
transferência e término de ligação. O estabelecimento da ligação é feito em três passos,
enquanto que o término é feito em quatro. Durante a inicialização são inicializados alguns
parâmetros, como o Sequence Number (número de sequência) para garantir a entrega
ordenada e robustez durante a transferência.
[editar]
Estabelecimento da ligação
Tipicamente, numa ligação TCP existe aquele designado de servidor (que abre um socket
e espera passivamente por ligações), num extremo, e o cliente no outro. O cliente inicia a
ligação enviando um pacote TCP com a flag SYN activa e espera-se que o servidor aceite
a ligação enviando um pacote SYN+ACK. Se, durante um determinado espaço de tempo,
esse pacote não for recebido ocorre um timeout e o pacote SYN é reenviado. O
estabelecimento da ligação é concluído por parte do cliente, confirmando a aceitação do
servidor respondendo-lhe com um pacote ACK.
Durante estas trocas, são trocados números de sequência iniciais (ISN) entre os
interlocutores que irão servir para identificar os dados ao longo do fluxo, bem como servir
de contador de bytes transmitidos durante a fase de transferência de dados (sessão).
No final desta fase, o servidor inscreve o cliente como uma ligação estabelecida numa
tabela própria que contém um limite de conexões, o backlog. No caso do backlog ficar
preenchido a ligação é rejeitada ignorando (silenciosamente) todos os subsequentes
pacotes SYN.
[editar]
Durante a fase de transferência o TCP está equipado com vários mecanismos que
asseguram a fiabilidade e robustez: números de sequência que garantem a entrega
ordenada, código detector de erros (checksum) para detecção de falhas em segmentos
específicos, confirmação de recepção e temporizadores que permitem o ajuste e contorno
de eventuais atrasos e perdas de segmentos.
Esta técnica (checksum), embora muito inferior a outros métodos detectores, como o
CRC, é parcialmente compensada com a aplicação do CRC ou outros testes de
integridade melhores ao nível da camada 2, logo abaixo do TCP, como no caso do PPP e
Ethernet. Contudo, isto não torna este campo redundante: com efeito, estudos de tráfego
revelam que a introdução de erro é bastante frequente entre hops protegidos por CRC e
que este campo detecta a maioria desses erros.
[editar]
Adequação de parâmetros
Neste simples exemplo só está a ser considerada a janela do servidor. O cliente tem a
percepção do estado da janela do servidor a cada ACK recebido.
O cabeçalho TCP possui um parâmetro que permite indicar o espaço livre atual do
receptor (emissor quando envia a indicação): a janela (ou window). Assim, o emissor fica
a saber que só poderá ter em trânsito aquela quantidade de informação até esperar pela
confirmação (ACK) de um dos pacotes - que por sua vez trará, com certeza, um
atualização da janela. Curiosamente, a pilha TCP no Windows foi concebida para se auto-
ajustar na maioria dos ambientes e, nas versões actuais, o valor padrão é superior em
comparação com versões mais antigas.
Porém, devido ao tamanho do campo, que não pode ser expandido, os limites aparentes
da janela variam entre 2 e 65535, o que é bastante pouco em redes de alto débito e
hardware de alta performance. Para contornar essa limitação é usado uma Opção especial
que permite obter múltiplos do valor da janela, chamado de escala da janela, ou TCP
window scale; este valor indica quantas vezes o valor da janela, de 16 bit, deve ser
operado por deslocamento de bits (para a esquerda) para obter os múltiplos, podendo
variar entre 0 e 14. Assim, torna-se possível obter janelas de 1 gigabyte. O parâmetro de
escala é definido unicamente durante o estabelecimento da ligação.
[editar]
Término da ligação
Término de conexão.
Pode ocorrer, no entanto, que um dos lados não encerre a sessão. Chama-se a este tipo de
evento de conexão semi-aberta. O lado que não encerrou a sessão poderá continuar a
enviar informação pela conexão, mas o outro lado não.
[editar]
Portas ou serviços
[editar]
O TCP, tal como o UDP, usa o IP para a entrega dos datagramas à rede, e os pontos de
acesso à aplicação são identificados por portas acessadas por multiplexing, tal como
acontece com o UDP, o que permite múltiplas ligações em cada host. As portas podem
ser associadas com uma aplicação (Processo).
O IP trata o pacote TCP como dados e não interpreta qualquer conteúdo da mensagem do
TCP, sendo que os dados TCP viajam pela rede em datagramas IP. Os routers que
interligam as redes apenas verificam o cabeçalho IP, quando fazem o envio dos
datagramas. O TCP no destino interpreta as mensagem do protocolo TCP.