Você está na página 1de 33

TCP (Transmission Control

Protocol)
Janelas deslizantes (Go-back-N)
Para conseguir confiabilidade, emissor aguarda o
ACK de cada pacote enviado
S ento envia o prximo pacote
Rede permanece ociosa durante este tempo
Janelas deslizantes: tornam a transmisso de
pacotes mais eficiente (vrios pacotes antes do
ACK)
Mais complexa que a confirmao positiva vista
anteriormente

Redes de Computadores I Prof. Mateus Raeder

TCP - Janela Deslizante


1

...

Janela inicial (tamanho 3)

O protocolo cria uma janela de tamanho fixo


Pode transmitir todos os pacotes que se encontram
nesta janela antes de receber uma confirmao
Um pacote dito no-confirmado se foi enviado e
nenhum ACK retornou
Mximo de confirmaes: tamanho da janela

Redes de Computadores I Prof. Mateus Raeder

TCP - Janela Deslizante


1

...

Janela desliza

Quando o remetente recebe um ACK para o


primeiro pacote da janela
Desliza a janela
Envia o prximo pacote
A janela continua deslizando de acordo com a
chegada das confirmaes

Redes de Computadores I Prof. Mateus Raeder

TCP - Janela Deslizante


ACK 1 recebido:
1

...

...

Janela desliza
ACK 3 recebido:
1

Janela desliza
Indica que at o 3 (inclusive)
J chegaram todos corretamente

No enviados
Enviados
Confirmados
Redes de Computadores I Prof. Mateus Raeder

TCP - Janela Deslizante


ACK 4 recebido:
1

...

...

Janela desliza
ACK 7 recebido:
1

Janela desliza
No enviados
Enviados
Confirmados
Redes de Computadores I Prof. Mateus Raeder

TCP - Janela Deslizante


Remetente

Receptor

Envia PCT 0
Envia PCT 1
Envia PCT 2
(espera)

Recebe PCT 0
Envia ACK 0
Recebe PCT 2
(descarta)

Recebe ACK 0
Envia PCT 3
Timeout PCT 1
Envia PCT 1
Envia PCT 2
Envia PCT 3
.
.
.

Recebe PCT 3
(descarta)
Recebe PCT 1
Envia ACK 1
Recebe PCT 2
Envia ACK 2
Recebe PCT 3
Envia ACK 3

Redes de Computadores I Prof. Mateus Raeder

TCP - Janela Deslizante


Com um mecanismo bem ajustado de janela
Rede fica com mais pacotes trafegando
Trfego mais eficiente na rede do que uma tcnica
de confirmao simples, baseada somente em
ACKs

Mecanismo de janela continua oferecendo


transferncia confivel
Garante a ordem da entrega das mensagens

Redes de Computadores I Prof. Mateus Raeder

TCP Janela varivel


TCP permite que o tamanho da janela varie com o tempo
Cada confirmao de recebimento contm uma informao
sobre quantos pacotes o receptor est preparado para aceitar
Assim, o remetente atualiza o tamanho da sua janela de acordo
com a capacidade informada pelo receptor
Aumento da capacidade do receptor, aumento da janela
Diminuio da capacidade do receptor, diminuio da janela

Fornece melhor controle de fluxo e transferncia confivel


Controle de fluxo essencial para redes e hosts heterogneos
Cada um com sua velocidade e capacidade
Melhor utilizao da rede

Redes de Computadores I Prof. Mateus Raeder

Pacote TCP
A unidade de transferncia entre dois hosts com TCP chamada
de segmento ou pacote
Pacotes so trocados para estabelecer conexes
Piggybacking (carona): permite envio de controle junto dos dados
Em uma mensagem, pode ser enviado um ACK anterior
Ameniza o overhead

Cada pacote TCP dividido em duas partes


Cabealho
Dados

Redes de Computadores I Prof. Mateus Raeder

Pacote TCP
0

31

16

Porta Origem

Porta Destino
Nmero de sequncia
Nmero ACK

Tamanho
cabealho

No
usado

U A P R S F
R C S S Y I
G K H T N N

Checksum

Tamanho da janela
Ponteiro de urgncia

Opes (0 ou mais palavras de 32 bits)


Dados

Redes de Computadores I Prof. Mateus Raeder

Pacote TCP
Portas destino e origem
Nmero de sequncia: do pacote do remetente
Nmero ACK: nmero de confirmao que identifica
o prximo nmero de sequncia esperado pelo outro
host (receptor)
Tamanho do cabealho: especifica o tamanho do
cabealho do pacote TCP. Tamanho mnimo de 5
palavras de 32 bits
No usado: reservados para uso futuro

Redes de Computadores I Prof. Mateus Raeder

Pacote TCP
Bits de controle (identificam a finalidade do
segmento)
URG: o campo Ponteiro Urgente vlido
ACK: o campo Nmero ACK vlido
PSH: fora a entrega da mensagem (push empurrar)
Receptor no armazena a mensagem at encher o buffer

RST: reiniciar a conexo


Caso tenha ficado confusa devido falhas no host, por exemplo
Rejeitar uma conexo ou um segmento invlido

SYN: sincroniza nmeros de sequncia (estabelece


conexo)
FIN: remetente no tem dados

Redes de Computadores I Prof. Mateus Raeder

Pacote TCP
Tamanho da janela: especifica o tamanho da janela
(em bytes) que ser usada na conexo
Tcnica de piggybacking
Bits todos em 0:
Interrompe a transmisso por um tempo
Para receber novamente, basta enviar o Tamanho da Janela
diferente de 0

Redes de Computadores I Prof. Mateus Raeder

Pacote TCP
Checksum: similar ao clculo do UDP, com o pseudo
cabealho
Ponteiro urgente: identifica que o receptor deve
receber os dados o mais rpido possvel
No bufferiza
No depende da sua posio no fluxo de dados
Por exemplo, abortar conexo antes de chegar ao fim
Informao deve ser recebida antes do processamento dos
dados
Seguir com bit URG ativado

Redes de Computadores I Prof. Mateus Raeder

Opes TCP
Options: pode conter 0 ou mais opes
Cada opo comea com um campo de 1 octeto que indica
o tipo da opo
Em seguida, 1 octeto que indica o tamanho da opo

Opo de Tamanho Mximo de Segmento (Maximum


Segment Size MSS)
Combina entre as extremidades o tamanho mximo do
segmento a ser transferido
Permite que receptor diga o tamanho mximo, permitindo
comunicao entre mquinas e redes heterogneas de
maneira mais eficiente

Redes de Computadores I Prof. Mateus Raeder

Opes TCP
Opo de Tamanho Mximo de Segmento (Maximum
Segment Size MSS) cont...
Se no esto na mesma rede fsica, podem tentar descobrir
a MTU (capacidade da rede) mnima ao longo do caminho
Escolha de MSS crtica
Muito pequeno: pode causar overhead e sobrecarga na rede
Muito grandes: podem obrigar roteadores a fragmentar o
pacote diversas vezes, diminuindo o desempenho da rede

Qual o tamanho de segmento ideal?


O maior possvel sem exigir fragmentao alguma!!
Prtica muito difcil

Redes de Computadores I Prof. Mateus Raeder

Opes TCP
Opo de Janela mvel
A janela do cabealho IP tem 16 bits
Mximo do tamanho 64Kbytes

Para acomodar janelas maiores, a opo de Escala de Janela


apresenta campos que permitem informar o tamanho real da
nova janela

Opo de estampa de tempo


Ajuda o TCP a calcular o atraso na rede
Valor de tempo e um de estampa de tempo de resposta de
eco
Remetente: coloca a hora no estampa ao enviar um pacote
Receptor: copia o tempo para o campo resposta de eco e
manda confirmao

Remetente sabe o tempo total gasto


desde o envio do segmento

Redes de Computadores I Prof. Mateus Raeder

Opes TCP
Retransmisso Seletiva
Substituir o Go-back-N
No Go-back-N, quando o receptor recebe um defeituoso
seguido de vrios perfeitos, todos os perfeitos devero ser
retransmitidos

Na Retransmisso Seletiva, o receptor reconhece


individualmente todos os pacotes recebidos
corretamente
Armazena em um buffer conforme necessrio para entregar
em ordem camada superior

Redes de Computadores I Prof. Mateus Raeder

Opes TCP
Retransmisso Seletiva
O remetente dever retransmitir os pacotes que no
receberam confirmao (ACK)
Temporizador para cada pacote sem ACK

Janela existe no remetente


Com os nmeros de sequncia consecutivos
Limita quantidade de pacotes enviados sem reconhecimento

Redes de Computadores I Prof. Mateus Raeder

Opes TCP
Retransmisso Seletiva

Redes de Computadores I Prof. Mateus Raeder

TCP Abertura de conexo


As duas extremidades da conexo (diferentemente do
UDP) devem concordar em participar da transmisso
A aplicao em uma extremidade realizar a abertura
passiva:
Indica que aceitar uma conexo que ir chegar em uma
determinada porta

Na outra extremidade, a aplicao realiza a abertura


ativa
Indicar que deseja estabelecer uma conexo com
determinada porta em determinado host

Redes de Computadores I Prof. Mateus Raeder

TCP Controle da conexo


Trs fases
Estabelecimento da conexo
Transmisso de dados
Encerramento da conexo

Flags

SYN: indica solicitao de conexo


FIN: indica finalizao da conexo
RST: indica o reset da conexo
ACK: indica um reconhecimento de recebimento de pacote

Redes de Computadores I Prof. Mateus Raeder

TCP Estabelecimento da conexo


Handshaking de 3 vias
Primeiro handshake: bit SYN marcado
Segundo handshake: SYN e ACK marcados
Terceiro handshake: somente uma confirmao
Origem A

Destino B
SYN

SYN + ACK

ACK

Redes de Computadores I Prof. Mateus Raeder

TCP Nmeros de sequncia


iniciais
Handshaking realiza 2 funes importantes:
Garante dois lados prontos para transmitir
Permite que os lados saibam os nmeros de sequncia
inicial

Mquinas escolhem nmeros de sequncia iniciais


aleatoriamente
As extremidades devem conhecer os nmeros de
sequncia umas das outras
A envia SYN junto com seu nmero de sequncia (x) para B
B recebe o SYN, guarda o nmero de sequncia do fluxo de
A, e responde com seu nmero de sequncia (y), dizendo
que espera o nmero de sequncia x+1 agora de A
- A guarda o nmero de sequncia de B
e confirma dizendo que espera por
y+1
Redes de Computadores I Prof. Mateus Raeder

TCP Nmeros de sequncia


iniciais

Redes de Computadores I Prof. Mateus Raeder

TCP Fechando uma conexo


O trmino da conexo deve ser realizado de maneira
controlada
Conexes so full duplex, e vo nos dois sentidos
independentemente

Quando um aplicativo TCP no possui mais dados


para enviar, fecha a conexo em uma direo
Somente a sua metade

Quando um lado recebe um pedido de


encerramento, deve avisar a aplicao
Entretanto, a aplicao poder continuar enviando dados
pela sua metade de conexo

Redes de Computadores I Prof. Mateus Raeder

TCP Fechando uma conexo


Host A

Host B
FIN
ACK

Dados
ACK dos dados

FIN

ACK

Redes de Computadores I Prof. Mateus Raeder

TCP Fechando uma conexo


A conexo estar encerrada quando os dois sentidos
da conexo estiverem desativados
So necessrios, de modo geral, 4 segmentos TCP
para encerrar uma conexo
FIN e ACK em um sentido e FIN e ACK no outro sentido

Pode ocorrer com apenas 3 segmentos?


Sim!! O primeiro ACK e o segundo FIN podem ser enviados
pelo mesmo segmento (de carona)
Somente 3 segmentos

Redes de Computadores I Prof. Mateus Raeder

TCP Reincio da conexo


Algumas vezes condies anormais foram a
interrupo da conexo
Um lado inicia o trmino com o bit RST setado
O outro lado responde imediatamente com outro segmento
de reset, abortando a conexo
O TCP informa ao programa aplicativo que houve um aborto

Redes de Computadores I Prof. Mateus Raeder

TCP Poltica de transmisso


Vamos supor que o receptor tem um buffer de 5000
bytes
Se o remetente enviar um segmento de 3000 bytes,
o receptor confirmar o recebimento
Porm, at que alguma aplicao retire do buffer, o buffer
possui 2000 bytes restantes
Esta informao (2000 bytes) vai para a janela do remetente

O remetente envia mais 2000 bytes, e so


confirmados
Receptor anunciar janela 0, pois no cabem mais dados
(buffer cheio)
Assim, o remetente deve parar de enviar mensagens at
uma
janela maior ser anunciada
Redes de Computadores I Prof. Mateus Raeder

TCP Poltica de transmisso

Redes de Computadores I Prof. Mateus Raeder

TCP Sndrome da janela boba


Um problema que pode diminuir muito o
desempenho do TCP
Dados repassados para o remetente so muito
grandes, mas uma aplicao consome os dados
um byte por vez
Buffer do lado receptor fica cheio, e o remetente
sabe disso (janela 0)
A aplicao ento l 1 caractere do fluxo TCP
O que acontece?
Receptor fica bem faceiro e envia a janela de tamanho 1

Redes de Computadores I Prof. Mateus Raeder

TCP Sndrome da janela boba


Qual a soluo?
Evitar que o receptor envie uma atualizao de janela
para 1 byte
Ele forado a aguardar at que haja espao
considervel para anunciar sua janela

Mas, qual o espao considervel?


Difcil de prever
definido que o receptor no pode enviar uma
atualizao de janela at que ele possa lidar com o
tamanho mximo do segmento (MSS) anunciado no
comeo da conexo, ou at metade da capacidade do
seu buffer (o que for menor)

Redes de Computadores I Prof. Mateus Raeder

Você também pode gostar