TCP - multiplexação/demultiplexação

Documentos relacionados
Protocolos com paralelismo (pipelining) Pipelining: aumento da utilização

TCP - estabelecimento de conexão

TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581

Redes de computadores e a Internet. Capítulo3. Camada de transporte

REDES DE COMPUTADORES Camada de Transporte. Alexandre Augusto Giron

Redes de Computadores. Camada de Transporte

Redes de Computadores

Capítulo 3 Camada de transporte

2 Controle de Congestionamento do TCP

Camada de transporte. Serviços

Camada de Transporte. Protocolos TCP e UDP

Qualidade em Servicos de Rede Prof. Eduardo Maronas Monks Roteiro de Laboratorio Camada de Transporte Parte II

TCP - controle de fluxo

Redes de Computadores

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

TCP - controle de fluxo

Redes de computadores e a Internet. Capítulo 3. Camada de transporte

Controle de Congestionamento em TCP Parte 2. Prof. Dr. S. Motoyama

TCP: Visão geral RFCs: 793, 1122, 1323, 2018, TCP: nos. de seq. e ACKs. TCP: estrutura do segmento. TCP: Tempo de Resposta (RTT) e Temporização

Redes de Computadores e a Internet

Redes de Computadores. Camada de Transporte de Dados: protocolos TCP e UDP Prof. MSc Hugo Vieira L. Souza

TCP / IP. Marcos Monteiro, MBA, ITIL V3, Perito computacional Forense. contato@marcosmonteiro.com.

Redes de Computadores

Camada de transporte. Camada de transporte

Camada Transporte Parte 2. Prof. Dr. S. Motoyama

Camada Transporte. 2 Camada de Transporte

Exercícios de Revisão Redes de Computadores Edgard Jamhour. Segundo Bimestre

PTC Aula Princípios da transferência de dados confiável 3.5 Transporte orientado para conexão: TCP

PROJETO DE REDES

TCP Round Trip Time e temporização

6 de Julho de Exercício 23 Para que servem portas na camada de transporte?

Redes de Computadores_Marcelo Furtado Pratica 2- Qualidade de serviços

Camada de Transporte, protocolos TCP e UDP

Teleprocessamento e Redes

Jones Bunilha Radtke. Tarefas:

Redes de Computadores

Redes de Computadores

REDES DE COMPUTADORES

Capítulo 3: Camada de Transporte. Multiplexação/desmultiplexação. Serviços e protocolos de transporte. Antônio Abelém abelem@ufpa.

Teleprocessamento e Redes (MAB-510) Gabarito da Segunda Lista de Exercícios 01/2010

Capítulo 7 CAMADA DE TRANSPORTE

Camada de Transporte. Prof. Leonardo Barreto Campos

Transporte. Sua função é: Promover uma transferência de dados confiável e econômica entre máquina de origem e máquina de destino.

PEL/FEN Redes de Computadores 2015/1 Primeira Lista de Exercícios Prof. Marcelo Gonçalves Rubinstein

Redes de Computadores

CCNA 2 Conceitos Básicos de Roteadores e Roteamento

Redes de Computadores

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Controle de Congestionamento

Curso de Redes de Computadores 2010

Cap. 3 O nível de transporte

Redes de Computadores. Trabalho de Laboratório Nº7

Protocolos TCP e UDP. Protocolo TCP. Protocolo TCP. A necessidade de uma comunicação segura: Transmission Control Protocol

PTC Aula Transporte orientado para conexão: TCP. (Kurose, p ) (Peterson, p e ) 23/05/2017

Programação TCP/IP. Protocolos TCP e UDP

A Camada de Transporte

Tecnologia de Redes de Computadores

Tecnologia de Redes. Protocolo TCP

Introdução à Redes de Computadores

Arquitetura TCP/IP. Parte XI Transporte orientado a conexão (TCP) Fabrízzio Alphonsus A. M. N. Soares

1. PRINCIPAIS PROTOCOLOS TCP/IP

Redes de Computadores e Aplicações. Aula 43 - Camada de Transporte TCP (Transmission Control Protocol)

A CAMADA DE TRANSPORTE

Capítulo 11 - Camada de Transporte TCP/IP e de Aplicação. Associação dos Instrutores NetAcademy - Julho de Página

Arquitetura de Redes de Computadores

UNIVERSIDADE. Sistemas Distribuídos

P L A N O D E D I S C I P L I N A

Redes de Computadores II. Módulo 1 Introdução e a camada de enlace

Capítulo 7 CAMADA DE TRANSPORTE

Aula 6 Modelo de Divisão em Camadas TCP/IP

REDES CONVERGENTES PROFESSOR: MARCOS A. A. GONDIM

Redes de Computadores

Nível de Enlace. Nível de Enlace. Serviços. Serviços. Serviços. Serviços. Serviços oferecidos os nível de rede


TCP FACK (Forward Acknowledment)

Redes de Computadores. Protocolos de comunicação: TCP, UDP

Capítulo 3: Camada de Transporte

Aulas 22 & 23. Controle de Fluxo e de Congestionamento. Eytan Modiano MIT

Redes TCP/IP. Prof. M.Sc. Alexandre Fraga de Araújo. INSTITUTO FEDERAL DO ESPÍRITO SANTO Campus Cachoeiro de Itapemirim

ELEMENTOS DE PROTOCOLOS DE TRANSPORTE. Fabricio Sousa

Transcrição:

TCP Protocolo de controle de transmissão (Transmission Control Protocol) Definido em diversas RFCs (793, 1122, 1323, 2018 e 2581) Diversos flavors (tipos) Serviços Multiplexação/demultiplexação Detecção de erros Transferência de dados confiável Controle de fluxo Orientado a conexão Controle de congestionamento

TCP - multiplexação/demultiplexação Socket TCP é identificado por Endereço IP de fonte Número de porta de fonte Endereço IP de destino Número de porta de destino

Multiplexação/demultiplexação no TCP (fonte: Kurose) P1 P4 P5 P6 P2 P1P3 SP: 5775 DP: 80 S-IP: B D-IP:C SP: 9157 SP: 9157 cliente IP: A DP: 80 S-IP: A D-IP:C servidor IP: C DP: 80 S-IP: B D-IP:C cliente IP:B

TCP - detecção de erros Análoga ao UDP Pseudocabeçalho do TCP (fonte: Tanenbaum)

TCP - envio de dados Uso de buffers alocados no estabelecimento de conexão TCP deve enviar dados no buffer segundo a sua conveniência Dados gerados e recebidos pela aplicação são vistos como uma sequência de octetos e não como uma sequência de pacotes

TCP - envio de dados Buffers do TCP (fonte: Kurose)

TCP - envio de dados Tamanho máximo do segmento (Maximum Segment Size - MSS) Quantidade máxima de dados da camada de aplicação no segmento Máximo de 64kB menos os cabeçalhos TCP e IP TCP faz a divisão em partes do fluxo de dados do usuário Normalmente estabelecido em função da unidade máxima de transmissão (Maximum Transmission Unit MTU) do hospedeiro fonte local RFC 1191 descobre a MTU do caminho da fonte ao destino Valores comuns de MSS: 1460, 536 e 512 octetos

TCP - envio de dados Aplicações interativas normalmente transmitem segmentos menores Ex.: Telnet

TCP - formato do segmento Formato do segmento TCP (fonte: Kurose)

TCP - formato do segmento Porta de origem (16 bits) Porta de destino (16 bits) Número de sequência (32 bits) Usado na implementação do serviço confiável Número do primeiro octeto do segmento (parte de dados) Segmento com flags SYN, ACK ou FIN isolados conta um octeto Inicialmente é escolhido aleatoriamente Para minimizar a possibilidade de ser reutilizado em uma nova conexão com mesmos números de porta e endereços IPs

TCP - formato do segmento Número de reconhecimento (32 bits) Usado na implementação do serviço confiável Número de sequência do próximo octeto que está aguardando do outro hospedeiro Reconhecimentos cumulativos Tratamento de segmentos fora de ordem depende da implementação Mais comum é guardar o segmento

TCP - formato do segmento Exemplo de Seq e ACK para o Telnet (fonte: Kurose)

TCP - formato do segmento Comprimento do cabeçalho (4 bits) Comprimento em palavras de 32 bits Variável em função do campo opções Flags (6 bits) URG - segmento contém dados urgentes Marcado pela camada aplicação do remetente Ex.: Usado por Telnet quando o usuário digita uma tecla de interrupção ACK - segmento contém ou não ACK PSH - destinatário deve passar os dados para a camada aplicação imediatamente RST - usado no estabelecimento de conexão SYN - usado no estabelecimento de conexão FIN - usado no fechamento de conexão

TCP - formato do segmento Janela de recepção (16 bits) Usada no controle de fluxo Número de octetos que o receptor está pronto para aceitar Soma de verificação (16 bits) Ponteiro para dados urgentes (16 bits) Usado com URG Indica o fim dos dados urgentes Aplicação determina o início

TCP - formato do segmento Opções Negociação de MSS Fator de aumento de escala da janela de recepção para redes de alta velocidade Window scale (RFC 1323): deslocamento da janela de recepção (Window size) até 14 bits para a esquerda Outras Dados

TCP - temporização TCP usa temporização para recuperar segmentos perdidos Gerenciamento de temporizadores por conexão Utiliza uma estimativa do tempo de ida e volta (Round Trip Time - RTT) SampleRTT RTT para um determinado segmento Muitas implementações medem para um segmento por vez (por RTT) Não calculado para retransmissões Pode ter valores atípicos em função de variações de congestionamento e carga

TCP - temporização EstimatedRTT Média móvel exponencial ponderada dos SampleRTT Peso de um SampleRTT diminui exponencialmente EstimatedRTT = (1-α)*EstimatedRTT + α*samplertt α = 0,125 (RFC 2988)

TCP - temporização Amostras de RTTs e RTTs estimados (fonte: Kurose)

TCP - temporização DevRTT Variação do RTT (RFC 2988) DevRTT = (1-β)*DevRTT + β* SampleRTT-EstimatedRTT Tipicamente β = 0,25 Estouro de temporizador TimeoutInterval = EstimatedRTT + 4*DevRTT RTT estimado mais uma margem de segurança Quanto maior a variação nos valores de SampleRTT, maior a margem

TCP - transferência confiável Sobre o serviço de melhor esforço do IP (Internet Protocol) Usa reconhecimentos positivos, temporizadores, números de sequência e paralelismo Pode usar um NACK implícito (retransmissão rápida) Pode usar um único temporizador de retransmissão (RFC 2988) Paralelismo relacionado ao controle de fluxo e ao controle de congestionamento Duas fases são apresentadas com aumento da complexidade Recuperação de perdas de segmentos Retransmissão rápida

TCP - transferência confiável Inicialmente o protocolo só trata da recuperação das perdas de segmentos Ignora os ACKs duplicados Ignora controle de fluxo e de congestionamento Eventos Dados recebidos da aplicação Temporizador único associado com o mais antigo segmento não reconhecido Estouro do temporizador Retransmite o segmento e reinicia o temporizador Recebimento de ACK y SendBase número de sequência do mais antigo octeto não reconhecido y > SendBase reconhece um ou mais octetos

Remetente TCP simplificado (fonte: Kurose) NextSeqNum = InitialSeqNum SendBase = InitialSeqNum loop (forever) { switch(event) event: dado recebido da aplicação acima cria segmento TCP com n o de sequência NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(data) event: tempo de confirmação do temporizador retransmit not-yet-acknowledged segment with smallest sequence number start timer event: ACK recebido, com valor do campo de ACK do y if (y > SendBase) { SendBase = y if (there are currently not-yet-acknowledged segments) start timer } } /* end of loop forever */

Retransmissão devido a um ACK perdido (fonte: Kurose)

Segmento 100 não retransmitido (fonte: Kurose)

Reconhecimento cumulativo evita a retransmissão do primeiro segmento (fonte: Kurose)

TCP - transferência confiável Retransmissão Tempo de expiração é dobrado em relação ao tempo anterior Forma simples de controle de congestionamento

TCP - transferência confiável Segunda fase Retransmissão rápida Associada a ACKs duplicados

Geração de ACKs do TCP RFCs 1122 e 2581 (fonte: Kurose) Evento no receptor Segmento chega em ordem, não há lacunas, segmentos anteriores já aceitos Segmento chega em ordem, não há lacunas, um ACK atrasado pendente Segmento chega fora de ordem, número de sequência chegou maior: gap detectado Chegada de segmento que parcial ou completamente preenche o gap Ação do receptor TCP ACK retardado. Espera até 500 ms pelo próximo segmento. Se não chegar, envia ACK Imediatamente envia um ACK cumulativo Envia ACK duplicado, indicando número de sequência do próximo byte esperado Reconhece imediatamente se o segmento começa na borda inferior do gap

TCP - transferência confiável Retransmissão rápida (cont.) RFC 2581 Três ACKs duplicados retransmite o segmento que falta Modificação no remetente TCP simplificado

Mudança no remetente TCP (fonte: Kurose) event: ACK received, with ACK field value of y if (y > SendBase) { SendBase = y if (there are currently not-yet-acknowledged segments) start timer } else { increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) { resend segment with sequence number y }

Retransmissão rápida (fonte: Kurose) Hosp. A Hosp. B ACKs duplicados três vezes seq # x1 seq # x2 seq # x3 seq # x4 seq # x5 X ACK x1 ACK x1 ACK x1 ACK x1 timeout tempo

TCP - transferência confiável Parecido com o Go-Back-N, porém Geralmente armazena segmentos fora de ordem Evita algumas retransmissões dependendo do estouro dos temporizadores Ver exemplo do Kurose na pag. 188

TCP - transferência confiável Reconhecimento seletivo RFC 2018 Destinatário pode reconhecer seletivamente segmentos fora de ordem Parecido com o protocolo Seletive Repeat

TCP - controle de fluxo Elimina a possibilidade de o remetente saturar o destinatário Apresentação supõe que segmentos fora de ordem são descartados Baseado em janelas Remetente mantém uma variável chamada janela de recepção (RcvWindow)

TCP - controle de fluxo Janela e buffer de recepção (fonte: Kurose)

TCP - controle de fluxo Destinatário mantém as variáveis LastByteRead LastByteRcvd LastByteRcvd LastByteRead RcvBuffer Para não saturar o buffer RcvWindow = RcvBuffer [LastByteRcvd LastByteRead]

TCP - controle de fluxo Remetente mantém as variáveis LastByteSent LastByteAcked Remetente precisa ter uma ideia do buffer do destinatário Destinatário envia quanto há de espaço no buffer colocando RcvWindow no campo janela de recepção de cada segmento LastByteSent LastByteAcked RcvWindow Para não saturar o buffer do destinatário

TCP - controle de fluxo Problema quando RcvWindow = 0 e o destinatário não tem nada a enviar Solução Remetente deve enviar segmento de um octeto de dados quando a janela for zero