Redes de
Computadores I
Prof. Mateus Raeder
Universidade do Vale do Rio dos Sinos
- São Leopoldo -
Camada de Transporte
• É responsável pela transmissão lógica dos
dados
– A camada de enlace é responsável pela
transmissão física
• Dois tipos de transmissão:
– Orientado a conexão
• TCP – Transmission Control Protocol
– Não orientado a conexão
• UDP – User Datagram Protocol
Redes de Computadores I – Prof. Mateus Raeder
Camada de Transporte
• O transporte dos dados pode ser tratado na
camada de enlace
– Entretanto, o transporte trabalha com a pior
hipótese (enlace não controlar o transporte)
– Isto, então, é tratado logicamente na Camada
de Transporte
• Na camada de Rede (abaixo do
Transporte), sabe-se apenas o host destino
– Sem distinções entre qual aplicação receberá
Redes de Computadores I – Prof. Mateus Raeder
Camada de Transporte
• TCP e UDP acrescentam um mecanismo
que escolhe diferentes “locais de entrega”
em um host
– Porta
• Vários aplicativos enviam e recebem
mensagens individualmente
• Necessário, pois os Sistemas Operacionais
geralmente são multitarefa
– Várias tarefas ao mesmo tempo
Redes de Computadores I – Prof. Mateus Raeder
Camada de Transporte
• Portas identificam os diferentes processos
sendo executados
– São definidas como um número inteiro positivo
– Processos que utilizam a rede utilizam
determinada porta para comunicação
• Um processo transmissor precisa conhecer
não somente o endereço IP do destino, mas
também a porta a ser utilizada
– Identifica host e aplicação
Redes de Computadores I – Prof. Mateus Raeder
Camada de Transporte
• Além da identificação do destino, a porta
de origem deve ser enviada também
– Assim, o processo receptor pode responder a
mensagem ao processo origem
Origem
Destino
198.12.3.11:27789
200.19.10.1:16784
198.12.3.11:27789
200.19.10.1:16784
Identifica a conexão, permitindo
Várias conexões entre Origem e Destino
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
• Protocolo do nível de transporte
• Entrega de mensagens sem conexão
– Não confiável
• O UDP também permite a distinção entre os
vários processos (aplicativos) nos hosts
• Uma mensagem UDP carrega dados, porta
de destino e porta de origem
• Mensagens UDP são Datagramas
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
• Aplicações que utilizam UDP são totalmente
responsáveis por lidar com confiabilidade
–
–
–
–
–
Perda de mensagens
Duplicação de mensagens
Retardo de mensagens
Erros de transmissão
Erros de conexão
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
0
31
16
Porta Origem
Porta Destino
Tamanho
Checksum
Dados
• Datagrama UDP possui 2 partes
– Cabeçalho
– Dados
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
0
31
16
Porta Origem
Porta Destino
Tamanho
Checksum
Dados
• Portas Origem e Destino
– Número de 16 bts, utilizado para entregar os
datagramas entre os programas
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
0
31
16
Porta Origem
Porta Destino
Tamanho
Checksum
Dados
• Tamanho
– Tamanho total incluindo cabeçalho e dados
– Contagem de octetos (valor mínimo é 8)
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
0
31
16
Porta Origem
Porta Destino
Tamanho
Checksum
Dados
• Checksum
– Soma de verificação
– Verifica se o Datagrama UDP está correto
VERIFICA mas não RECUPERA erros
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
• Checksum
– Campo opcional
• Preenchido com zeros no caso de não ser usado
• Mínimo overhead possível
– Unicamente para verificar se os dados
chegaram intactos e possam ser usados
– Para realizar o Checksum, o UDP utiliza mais
informações do que existem no seu cabeçalho
– Adiciona-se um pseudocabeçalho ao
datagrama
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
• Checksum
– O pseudocabeçalho é criado com o IP origem e
destino e o campo protocolo
• De onde vem estas informações?
– Do datagrama IP, e não do UDP
– O Tamanho é o único campo extraído do UDP
0
31
16
IP Origem
IP Destino
00000000 (zeros)
Protocol
Tamanho
Pseudoheader
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
• Checksum
– Acrescenta um octeto de zeros para preencher,
fazendo-o um múltiplo de 16 bits
– A soma de verificação é calculada com todo o
objeto
– IMPORTANTE: pseudoheader não percorre a rede
0
31
16
IP Origem
IP Destino
00000000 (zeros)
Protocol
Tamanho
Pseudoheader
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
• Checksum
– Remetente
• O remetente calcula a soma dos valores contidos nos
campos
• Realiza complemento de 1 no resultado
• Coloca no campo checksum da mensagem
– Destino
• Cria o pseudocabeçalho
• Realiza o mesmo cálculo do remetente
• Soma o resultado ao checksum
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
• Checksum
– Se o resultado for 0, não houve erros na
mensagem
– Checksum é opcional
• Coloca-se 0 quando não deseja
– E se o checksum no remetente resultar em 0?
• Neste caso, todos os bits do checksum são marcados
em 1
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
0
31
16
Porta Origem
Porta Destino
Tamanho
Checksum
Dados
• Dados
– Dados do usuário
– O que será entregue para a Camada de Aplicação
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
• Encapsulamento
Cabeçalho
Ethernet
Cabeçalho
UDP
Dados
Cabeçalho
IP
Cabeçalho
UDP
Dados
Cabeçalho
IP
Cabeçalho
UDP
Dados
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
• Multiplexação e demultiplexação
– Multiplexar: dados que saem da Camada de
Aplicação e passam para a Camada de Transporte
• Acrescentar informações
– Demultiplexar: dados que saem da Camada de
Transporte e passam para a Camada de Aplicação
• Retirar informações
– Baseados nas portas definidas na comunicação
• No destino, UDP aceita as mensagens da Camada de
Rede e desmultiplexa com base na porta destino do UDP
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
• Multiplexação e demultiplexação
– UDP recebe um datagrama
– Verifica se a porta de destino combina com
alguma das que podem ser utilizadas
– Caso não haja, envia uma mensagem de erro ICMP
de porta inalcançável (port unreacheable),
descartando o datagrama
– Se encontra a combinação informada, enfileira na
porta da aplicação
• Fila cheia: mensagem descartada
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
• Multiplexação e demultiplexação
Porta X
Porta Y
Porta Z
Porta W
UDP: realiza a
demultiplexação de
acordo com a porta
Camada de Rede
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
• UDP não realiza diversas ações
–
–
–
–
Controle de fluxo
Controle de erros
Retransmissão de mensagens incorretas
Sequenciamento de mensagens
• Fornece apenas a principal tarefa dos
protocolos de transporte
– Entrega dos dados na Camada de Aplicação
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
• Trata-se de um protocolo simples
– Implementação
– Utilização
• Aplicações de tempo real (como Voz sobre IP
(VoIP), por exemplo) necessitam desta
simplicidade
• Deve ser utilizado em aplicações que não
requerem segurança nos dados
– Velocidade e simplicidade
Redes de Computadores I – Prof. Mateus Raeder
UDP (User Datagram Protocol)
• Desvantagens
– Não confirma a entrega dos dados
– Não ordena os dados enviados
– Os erros devem ser tratados na aplicação
• Vantagens
– Facilidade de implementação e utilização
– Menos overhead na rede
• Sem mensagens de controle
Redes de Computadores I – Prof. Mateus Raeder
TCP (Transmission Control Protocol)
• O protocolo TCP implementa a funcionalidade
não implementada no UDP
– Orientação a conexão
– Trata-se, então, de uma implementação mais
complexa
• O protocolo TCP tem o objetivo de sanar os
erros de envio das camadas mais baixas
– Todas entregando pacotes de forma não confiável
Redes de Computadores I – Prof. Mateus Raeder
TCP (Transmission Control Protocol)
• As aplicações inúmeras vezes necessitam
enviar grandes volumes de dados entre si
• Sistemas não confiáveis e não orientados a
conexão
– Trazem tarefas nem sempre desejáveis aos
programadores, pois eles são os que precisam
controlar os erros que vão ocorrer
• O TCP realiza estes controles para os
aplicativos
Redes de Computadores I – Prof. Mateus Raeder
TCP (Transmission Control Protocol)
• Quatro características
– Orientação de streams
• Dados são considerados streams (fluxo) de bits
• O receptor recebe a mesma sequência de bytes que o
remetente enviou
– Circuito virtual:
• Como uma chamada telefônica (chamada/aceita)
• A comunicação deve ser autorizada
• Durante transferência, protocolos continuam se
comunicando para eventuais erros
Redes de Computadores I – Prof. Mateus Raeder
TCP (Transmission Control Protocol)
• Quatro características
– Transmissão bufferizada:
• Programas enviam streams de dados através do circuito
virtual
• Repassam diversos octetos para o protocolo
• Cada aplicativo pode enviar a quantidade de dados que
achar necessário
• O protocolo, então, entrega estes octetos na mesma
ordem que recebeu
• O protocolo pode, então, dividir o stream de dados em
quantas partes ele desejar
Redes de Computadores I – Prof. Mateus Raeder
TCP (Transmission Control Protocol)
• Quatro características
– Transmissão bufferizada (cont.):
• Quanto mais dados houver no datagrama, mais eficaz e
com menos tráfego na rede será a comunicação
• Se a aplicação gerar blocos muito extensos, o protocolo
pode dividir em pequenas partes para transmissão
– Conexão full duplex
• Permitem transferência de dados nas duas direções
– De A  B e de B  A
Redes de Computadores I – Prof. Mateus Raeder
TCP (Transmission Control Protocol)
• O TCP garante os fluxos de uma máquina para
a outra sem duplicação e sem perda de
dados
• Utiliza-se a técnica conhecida como
Confirmação Positiva com Retransmissão
– Positive Acknowledgement with Retransmition
• Esta técnica requer que um destinatário envia
uma mensagem de confirmação (ACK)
Redes de Computadores I – Prof. Mateus Raeder
TCP (Transmission Control Protocol)
• O remetente mantém registro de cada
pacote enviado
– aguarda confirmação para enviar o próximo
pacote
• Quando envia um pacote, dispara um timer
– Retransmite o pacote quando o timer expira sem
um ACK retornado
Redes de Computadores I – Prof. Mateus Raeder
TCP (Transmission Control Protocol)
• Envio sem problemas na transmissão
Origem
Envio do pacote 1
Destino
Recebe pacote 1
Envio do ACK 1
Recebe ACK 1
Envio do pacote 2
Recebe pacote 2
Envio do ACK 2
Recebe ACK 2
Redes de Computadores I – Prof. Mateus Raeder
TCP (Transmission Control Protocol)
• Envio com problemas na transmissão
Origem
Destino
Envio do pacote 1
Início timer
Fim do timer
Retransmite pacote 1
Recebe pacote 1
Envio do ACK 1
Recebe ACK 1
Redes de Computadores I – Prof. Mateus Raeder
TCP (Transmission Control Protocol)
• Janelas deslizantes (Go-back-N)
– Para conseguir confiabilidade, emissor aguarda o
ACK de cada pacote enviado
– Só então envia o próximo pacote
– Rede permanece ociosa durante este tempo
– Janelas deslizantes: tornam a transmissão de
pacotes mais eficiente (vários pacotes antes do
ACK)
– Mais complexa que a confirmação positiva vista
anteriormente
Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela Deslizante
1
2
3
4
5
6
7
8
9
...
N
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 confirmação
– Um pacote é dito não-confirmado se foi enviado e
nenhum ACK retornou
– Máximo de confirmações: tamanho da janela
Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela Deslizante
1
2
3
4
5
6
7
8
9
...
N
Janela desliza
• Quando o remetente recebe um ACK para o
primeiro pacote da janela
– Desliza a janela
– Envia o próximo pacote
– A janela continua deslizando de acordo com a
chegada das confirmações
Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela Deslizante
ACK 1 recebido:
1
2
3
4
5
6
7
8
9
...
N
4
5
6
7
8
9
...
N
Janela desliza
ACK 3 recebido:
1
2
3
Janela desliza
Indica que até o 3 (inclusive)
Já chegaram todos corretamente
Não enviados
Enviados
Confirmados
Redes de Computadores I – Prof. Mateus Raeder
TCP - Janela Deslizante
ACK 4 recebido:
1
2
3
4
5
6
7
8
9
...
N
7
8
9
...
N
Janela desliza
ACK 7 recebido:
1
2
3
4
5
6
Janela desliza
Não 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
– Tráfego mais eficiente na rede do que uma técnica
de confirmação simples, baseada somente em ACKs
• Mecanismo de janela continua oferecendo
transferência confiável
• Garante a ordem da entrega das mensagens
Redes de Computadores I – Prof. Mateus Raeder
TCP – Janela variável
• TCP permite que o tamanho da janela varie com o tempo
• Cada confirmação de recebimento contém uma informação
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
– Diminuição da capacidade do receptor, diminuição da janela
• Fornece melhor controle de fluxo e transferência confiável
• Controle de fluxo é essencial para redes e hosts heterogêneos
– Cada um com sua velocidade e capacidade
– Melhor utilização da rede
Redes de Computadores I – Prof. Mateus Raeder
Pacote TCP
• A unidade de transferência entre dois hosts com TCP é chamada
de segmento ou pacote
• Pacotes são trocados para estabelecer conexões
– 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
– Cabeçalho
– Dados
Redes de Computadores I – Prof. Mateus Raeder
Pacote TCP
0
31
16
Porta Origem
Porta Destino
Número de sequência
Número ACK
Tamanho
cabeçalho
Não
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 urgência
Opções (0 ou mais palavras de 32 bits)
Dados
Redes de Computadores I – Prof. Mateus Raeder
Pacote TCP
• Portas destino e origem
• Número de sequência: do pacote do remetente
• Número ACK: número de confirmação que identifica
o próximo número de sequência esperado pelo outro
host (receptor)
• Tamanho do cabeçalho: especifica o tamanho do
cabeçalho do pacote TCP. Tamanho mínimo é de 5
palavras de 32 bits
• Não 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 é válido
– ACK: o campo Número ACK é válido
– PSH: força a entrega da mensagem (push – empurrar)
• Receptor não armazena a mensagem até encher o buffer
– RST: reiniciar a conexão
• Caso tenha ficado confusa devido falhas no host, por exemplo
• Rejeitar uma conexão ou um segmento inválido
– SYN: sincroniza números de sequência (estabelece conexão)
– FIN: remetente não 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 conexão
– Técnica de piggybacking
– Bits todos em 0:
• Interrompe a transmissão 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 cálculo do UDP, com o pseudo
cabeçalho
• Ponteiro urgente: identifica que o receptor deve
receber os dados o mais rápido possível
– Não bufferiza
– Não depende da sua posição no fluxo de dados
– Por exemplo, abortar conexão antes de chegar ao fim
• Informação deve ser recebida antes do processamento dos
dados
• Seguirá com bit URG ativado
Redes de Computadores I – Prof. Mateus Raeder
Opções TCP
• Options: pode conter 0 ou mais opções
– Cada opção começa com um campo de 1 octeto que
indica o tipo da opção
– Em seguida, 1 octeto que indica o tamanho da opção
• Opção de Tamanho Máximo de Segmento (Maximum
Segment Size – MSS)
– Combina entre as extremidades o tamanho máximo do
segmento a ser transferido
– Permite que receptor diga o tamanho máximo, permitindo
comunicação entre máquinas e redes heterogêneas de
maneira mais eficiente
Redes de Computadores I – Prof. Mateus Raeder
Opções TCP
• Opção de Tamanho Máximo de Segmento (Maximum
Segment Size – MSS) cont...
– Se não estão na mesma rede física, podem tentar descobrir a
MTU (“capacidade da rede”) mínima ao longo do caminho
– Escolha de MSS é crítica
• 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 possível sem exigir fragmentação alguma!!
• Prática é muito difícil
Redes de Computadores I – Prof. Mateus Raeder
Opções TCP
• Opção de Janela móvel
– A janela do cabeçalho IP tem 16 bits
• Máximo do tamanho é 64Kbytes
– Para acomodar janelas maiores, a opção de Escala de Janela
apresenta campos que permitem informar o tamanho real da
nova janela
• Opção 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 confirmação
Remetente sabe o tempo total gasto
desde o envio do segmento
Redes de Computadores I – Prof. Mateus Raeder
Opções TCP
• Retransmissão Seletiva
– Substituir o Go-back-N
– No Go-back-N, quando o receptor recebe um defeituoso
seguido de vários perfeitos, todos os perfeitos deverão ser
retransmitidos
• Na Retransmissão Seletiva, o receptor reconhece
individualmente todos os pacotes recebidos
corretamente
– Armazena em um buffer conforme necessário para entregar
em ordem à camada superior
Redes de Computadores I – Prof. Mateus Raeder
Opções TCP
• Retransmissão Seletiva
– O remetente deverá retransmitir os pacotes que não
receberam confirmação (ACK)
• Temporizador para cada pacote sem ACK
– Janela existe no remetente
• Com os números de sequência consecutivos
• Limita quantidade de pacotes enviados sem reconhecimento
Redes de Computadores I – Prof. Mateus Raeder
Opções TCP
• Retransmissão Seletiva
Redes de Computadores I – Prof. Mateus Raeder
TCP – Abertura de conexão
• As duas extremidades da conexão (diferentemente do
UDP) devem concordar em participar da transmissão
• A aplicação em uma extremidade realizará a abertura
passiva:
– Indica que aceitará uma conexão que irá chegar em uma
determinada porta
• Na outra extremidade, a aplicação realiza a abertura
ativa
– Indicará que deseja estabelecer uma conexão com
determinada porta em determinado host
Redes de Computadores I – Prof. Mateus Raeder
TCP – Controle da conexão
• Três fases
– Estabelecimento da conexão
– Transmissão de dados
– Encerramento da conexão
• Flags
–
–
–
–
SYN: indica solicitação de conexão
FIN: indica finalização da conexão
RST: indica o reset da conexão
ACK: indica um reconhecimento de recebimento de pacote
Redes de Computadores I – Prof. Mateus Raeder
TCP – Estabelecimento da conexão
• Handshaking de 3 vias
– Primeiro handshake: bit SYN marcado
– Segundo handshake: SYN e ACK marcados
– Terceiro handshake: somente uma confirmação
Origem A
Destino B
SYN
SYN + ACK
ACK
Redes de Computadores I – Prof. Mateus Raeder
TCP – Números de sequência iniciais
• Handshaking realiza 2 funções importantes:
– Garante dois lados prontos para transmitir
– Permite que os lados saibam os números de sequência inicial
• Máquinas escolhem números de sequência iniciais
aleatoriamente
• As extremidades devem conhecer os números de
sequência umas das outras
– A envia SYN junto com seu número de sequência (x) para B
– B recebe o SYN, guarda o número de sequência do fluxo de
A, e responde com seu número de sequência (y), dizendo que
espera o número de sequência x+1 agora de A
- A guarda o número de sequência de B
e confirma dizendo que espera por y+1
Redes de Computadores I – Prof. Mateus Raeder
TCP – Números de sequência iniciais
Redes de Computadores I – Prof. Mateus Raeder
TCP – Fechando uma conexão
• O término da conexão deve ser realizado de maneira
controlada
– Conexões são full duplex, e vão nos dois sentidos
independentemente
• Quando um aplicativo TCP não possui mais dados
para enviar, fecha a conexão em uma direção
– Somente a sua “metade”
• Quando um lado recebe um pedido de
encerramento, deve avisar a aplicação
– Entretanto, a aplicação poderá continuar enviando dados
pela sua “metade” de conexão
Redes de Computadores I – Prof. Mateus Raeder
TCP – Fechando uma conexão
Host A
Host B
FIN + ACK
ACK
Dados
ACK dos dados
FIN + ACK
ACK
Redes de Computadores I – Prof. Mateus Raeder
TCP – Fechando uma conexão
• A conexão estará encerrada quando os dois sentidos
da conexão estiverem desativados
• São necessários, de modo geral, 4 segmentos TCP
para encerrar uma conexão
– 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 – Reinício da conexão
• Algumas vezes condições anormais forçam a
interrupção da conexão
– Um lado inicia o término com o bit RST setado
– O outro lado responde imediatamente com outro segmento
de reset, abortando a conexão
– O TCP informa ao programa aplicativo que houve um aborto
Redes de Computadores I – Prof. Mateus Raeder
TCP – Política de transmissão
• 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
– Porém, até que alguma aplicação retire do buffer, o buffer
possui 2000 bytes restantes
– Esta informação (2000 bytes) vai para a janela do remetente
• O remetente envia mais 2000 bytes, e são confirmados
– Receptor anunciará janela 0, pois não 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 – Política de transmissão
• Existem 2 exceções para estes casos:
– Setar os Dados Urgentes, para que o usuário remoto elimine o
processo executado na máquina remota, liberando o buffer
– O remetente pode enviar um segmento de 1 byte para fazer
com que o receptor anuncie novamente o próximo byte
enviado e o tamanho da janela
Redes de Computadores I – Prof. Mateus Raeder
TCP – Política de transmissão
Redes de Computadores I – Prof. Mateus Raeder
TCP – Síndrome da janela boba
• Um problema que pode diminuir muito o
desempenho do TCP
• Dados repassados para o remetente são muito
grandes, mas uma aplicação consome os dados
um byte por vez
• Buffer do lado receptor fica cheio, e o remetente
sabe disso (janela é 0)
• A aplicação então 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 – Síndrome da janela boba
• Qual a solução?
– Evitar que o receptor envie uma atualização de janela
para 1 byte
– Ele é forçado a aguardar até que haja espaço
considerável para anunciar sua janela
• Mas, qual é o espaço considerável?
– Difícil de prever
– É definido que o receptor não pode enviar uma
atualização de janela até que ele possa lidar com o
tamanho máximo do segmento (MSS) anunciado no
começo da conexão, ou até metade da capacidade do
seu buffer (o que for menor)
Redes de Computadores I – Prof. Mateus Raeder
Download

Prof. Mateus Raeder