Redes de Computadores Camada de Transporte Protocolo TCP

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

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

Redes de Computadores

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

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

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

Camada de Transporte. Protocolos TCP e UDP

SSC0641 Redes de Computadores

Redes de computadores. Protocolo TCP

Camada de Transporte

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

TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581

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

TCP Round Trip Time e temporização

TCP - controle de fluxo

Capítulo 3 Camada de Transporte

TCP - controle de fluxo

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

Redes de Computadores

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

Arquitetura de Redes de Computadores

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

TCP - multiplexação/demultiplexação

Camada de Transporte. Redes Industriais Rone Ilídio UFSJ CAP

PTC Aula Princípios do controle de congestionamento 3.7 Controle de congestionamento no TCP

PTC Aula A camada de transporte. (Kurose, p ) 15/03/2017

Redes de Computadores

Camada de transporte. Serviços

Causas/custos do congestionamento: cenário 1

Redes de Computadores

Camada de Transporte Protocolos TCP e UDP

3Camada de transporte

PROTOCOLOS DE COMUNICAÇÃO

Capítulo 3 Camada de transporte

Nível de Transporte Portas, Protocolos UDP e TCP

Capítulo 3 Camada de transporte

Universidade Federal de Minas Gerais Departamento de Ciência da Computação

Redes de Computadores

Redes de Computadores

Arquitetura de Redes TCP/IP. Camada de Transporte

Jéfer Benedett Dörr

Redes de Computadores Aula 5

: TMS M

Redes de Computadores I

Redes de Computadores RES 12502

Capítulo 3. Camada de transporte

Redes de Computadores

Camada de Transporte. Protocolos TCP e UDP

TCP - estabelecimento de conexão

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

Redes de Computadores

Capítulo 3 Camada de transporte

Redes de Computadores II. Camada de Transporte Visão Geral de Sockets

GA-027 Redes de Computadores

Jéfer Benedett Dörr

SSC0641 Redes de Computadores

Capítulo 3: Camada de Transporte. Multiplexação/desmultiplexação. Multiplexação/desmultiplexação. Multiplexação/desmultiplexação: exemplos

Redes de Computadores e a Internet

Redes de computadores e a Internet

Redes de Computadores

Fragmentos das máquinas de estados finitos do RDT 2.2 (fonte: Kurose)

Funções da Camada de

Capítulo 3 Camada de transporte

Funções da. Os principais serviços oferecidos pela camada de transporte são: Controle de conexão, Fragmentação, Endereçamento e Confiabilidade.

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

Redes de Computadores. Prof. André Y. Kusumoto

Aplicações de Redes de Computadores

Camada de transporte. serviços providos a camadas superiores. qualidade de serviço. parâmetros-alvo (opções a negociar)

Protocolos de Interligação de Redes Locais e a Distância Protocolos de Transporte. Thiago Leite

AULA 3 - REDES. Prof. Pedro Braconnot Velloso

Camada de Transporte Parte II Gerson Porciúncula 5 semestre

Redes de Computadores

Redes de Computadores

Capítulo 3: Camada de Transporte

TCP 1 TCP. Manuel P. Ricardo

TRANSPORTE. Prof. Me. Hélio Esperidião

Redes de Computadores. Ricardo José Cabeça de Souza

Capítulo 6. A camada de transporte

Capítulo 3: Camada de Transporte

Protocolos de Interligação de Redes Locais e a Distância Camada de Transporte

Cap. 03 Camada de Transporte

Redes de Computadores. Camada de Transporte4. A necessidade por um serviço o de transporte confiável

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

Redes de Computadores

Redes de Computadores I Internet - Conceitos

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIADO RIO GRANDE DO NORTE IFRN

Capítulo 3: Camada de Transporte

Redes de Computadores. Camada de Transporte

Redes de Computadores

Capítulo 3: Camada de Transporte

Redes de Computadores e Telecomunicações - Camada de Transporte

Capítulo 3: Camada de Transporte

Camada Transporte. 2 Camada de Transporte

TCP. Bibliografia FEUP/MRSC/AMSR MPR. » Aula preparada com base nos seguintes documentos

Redes de Computadores

Camada de transporte. Serviços fornecidos pela camada de transporte Multiplexagem/desmultiplexagem Camada de transporte não-orientada à sessão

SSC0641 Redes de Computadores

Capítulo 3 Camada de transporte

Serviços de Comunicações Capítulo 3

Capítulo 3. Camada de transporte. Pearson. Todos os direitos reservados.1

Transcrição:

Redes de Computadores Camada de Transporte Protocolo TCP Capítulo 3 Kurose & Ross (Especial p/ Curso Telecom 2008) Prof: José Marcos Silva Nogueira Universidade Federal de Minas Gerais Departamento de Ciência da Computação Belo Horizonte 2008 TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 ponto-a-ponto: um transmissor, um receptor confiável, seqüêncial byte stream: não há contornos de mensagens pipelined: (transmissão de vários pacotes em confirmação) Controle de congestão e de fluxo definem tamanho da janela buffers de transmissão e de recepção dados full-duplex: transmissão bi-direcional na mesma conexão MSS: maximum segment size orientado à conexão: handshaking (troca de mensagens de controle) inicia o estado do transmissor e do receptor antes da troca de dados controle de fluxo: transmissor não esgota a capacidade do receptor socket port aplicação envia dados TCP buffe de txr segment aplicação lê dados TCP buffer de rx socket port

Estrutura do Segmento TCP URG: dados urgentes (pouco usado) ACK: campo de ACK éválido PSH: produz envio de dados (pouco usado) RST, SYN, FIN: estabelec. de conexão (comandos de criação e término) Internet checksum (como no UDP) porta origem 32 bits porta destino número de seqüência número de reconhecimento tam. não UA P janela de recep. cabec. usado R S F checksum dados urgentes Opções (tamanho variável) dados de aplicação (tamanho variável) contagem por bytes de dados (não segmentos!) número de bytes receptor está pronto para aceitar Números de Seqüência e ACKs do TCP Números de seqüência: númerodoprimeiro byte no segmento de dados ACKs: número do próximo byte esperado do outro lado ACK cumulativo Q: como o receptor trata segmentos fora de ordem A especificação do TCP não define, fica a critério do implementador Usuário digita C host confirma recepção do C ecoado Host A Host B Seq=42, ACK=79, data = C Seq=79, ACK=43, data = C Seq=43, ACK=80 cenário telnet simples host confirma recepção de C, e ecoa o C de volta tempo

TCP: transferência de dados confiável evento: dados recebidos da aplicação acima cria, envia segmento transmissor simplificado, assumindo que não há controle de fluxo nem de congestionamento espera wait por for evento evento: temporização esgotada para segmento com seq = y retransmite segmento evento: ACK recebido, com número de ACK = y processamento do ACK TCP: transferência confiável Transmissor TCP simplificado 00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number 02 03 loop (forever) { 04 switch(event) 05 event: dados recebidos da aplicação acima 06 cria segmento TCP com número de seqüência nextseqnum 07 inicia temporizador para segmento nextseqnum 08 passa segmento ao IP 09 nextseqnum = nextseqnum + length(data) 10 event: esgotamento de temp. para segmento com seq = y 11 retransmite segmento com seq = y 12 calcule nova temporização para o segmento y 13 reinicia temporizador para número de seqüência y 14 event: ACK recebido, com valor y no campo de ACK 15 if (y > sendbase) { /* ACK cumulativo de todos os dados até y */ 16 cancela todas as temporizações para segmentos com seq < y 17 sendbase = y 18 } 19 else { /* um ACK duplicata para um segmento já reconhecido */ 20 incrementa numero de duplicatas de ACKs recebidas para y 21 if (numero de duplicatas de ACKS recebidas para y == 3) { 22 /* TCP fast retransmit */ 23 reenvia segmento com número de seqüência y 24 reinicia temporização para segmento y 25 } 26 } /* end of loop forever */

Geração de ACK [RFC 1122, RFC 2581] Event0 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 seqüência chegou maior: gap detectado chegada de segmento que parcial ou completamente preenche o gap Ação do TCP Receptor ACK retardado. Espera até 500ms pelo próximo segmento. Se não chegar, envia ACK imediatamente envia um ACK cumulativo envia ACK duplicado, indicando número de seqüência do próximo byte esperado reconhece imediatamente se o segmento começa na borda inferior do gap TCP: cenários de retransmissão Host A Host B Host A Host B Seq=92, 8 bytes data Seq=92, 8 bytes data temporização X loss ACK=100 Seq=92, 8 bytes data Seq=100 temp. Seq=92 temp. Seq=100, 20 bytes data ACK=100 ACK=120 Seq=92, 8 bytes data ACK=100 ACK=120 tempo cenário com perda do ACK tempo temporização prematura, ACKs cumulativos

TCP: Controle de Fluxo controle de fluxo transmissor não deve esgotar os buffers de recepção enviando dados rápido demais RcvBuffer = tamanho do Buffer de recepção do TCP RcvWindow = total de espaço livre no buffer receptor: explicitamente informa o transmissor da área livre no buffer (dinamicamente mudando) campo RcvWindow no segmento TCP transmissor: mantém a quantidade de dados transmitidos mas não reconhecidos menor que o último RcvWindow recebido armazenamento de recepção Controle de fluxo Tamanho máximo do segmento para o exemplo: 1000 bytes

TCP Round Trip Time e Temporização Q: Como escolher o valor da temporização do TCP? maior que o RTT nota: RTT varia muito curto: temporização prematura retransmissões desnecessárias muito longo: a reação à perda de segmento fica lenta

TCP Round Trip Time e Temporização Q: Como estimar o RTT? SampleRTT: tempo medido da transmissão de um segmento até a respectiva confirmação ignora retransmissões e segmentos reconhecidos de forma cumulativa SampleRTT varia de forma rápida, é desejável um amortecedor para a estimativa do RTT usar várias medidas recentes, não apenas o último SampleRTT obtido TCP Round Trip Time e Temporização Definindo a temporização EstimatedRTT = (1-x)*EstimatedRTT + x*samplertt Média móvel com peso exponencial influência de uma dada amostra decresce de forma exponencial valor típico de x: 0.1

TCP Round Trip Time e Temporização Definindo a temporização Uma opção: Temporização=2 * EstimatedRTT Outra opção: EstimatedRTT mais uma margem de segurança Grandes variações no EstimatedRTT -> maior margem de segurança Temporização = EstimatedRTT + 4*Desvios Desvios = (1-x)*Desvio + x * SampleRTT-EstimatedRTT TCP Estabelecimento de Conexão TCP transmissor estabelece conexão com o receptor antes de trocar segmentos de dados inicializar variáveis: números de seqüência buffers, controle de fluxo (ex. RcvWindow) Em termos de programação cliente: iniciador da conexão Socket clientsocket = new number"); Socket("hostname","port servidor: chamado pelo cliente Socket connectionsocket = welcomesocket.accept();

TCP Gerenciamento de Conexões Estabelecimento de Conexão Three way handshake: Passo 1: sistema final cliente envia TCP SYN ao servidor especifica número de seqüência inicial Passo 2: sistema final servidor que recebe o SYN, responde com segmento SYNACK reconhece o SYN recebido aloca buffers especifica o número de seqüência inicial do servidor Passo 3: o sistema final cliente reconhece o SYN + ACK TCP Gerenciamento de Conexões Estabelecimento de Conexão Active participant (client) SYN, SequenceNum = x Passive participant (server) SYN + ACK, SequenceNum = y, Acknowledgment = x + 1 ACK, Acknowledgment = y + 1

TCP Gerenciamento de Conexões Término de Conexão Fechando uma conexão: cliente fecha o socket: clientsocket.close(); Passo 1: o cliente envia o segmento TCP FIN ao servidor close cliente FIN ACK FIN servidor close Passo 2: servidor recebe FIN, responde com ACK. Fecha a conexão, envia FIN. espera temp. ACK closed TCP Gerenciamento de Conexões Término de Conexão cliente servidor Passo 3: cliente recebe FIN, responde com ACK. closing FIN Entra espera temporizada - vai responder com ACK a FINs recebidos ACK FIN closing Passo 4: servidor, recebe ACK. Conexão fechada. espera temp. closed ACK closed

Término de conexão 3-way handshake TCP Gerenciamento de Conexão Máquina de Estados do Cliente

TCP Controle de Conexão Máquina de Estados do Servidor TCP Controle de Conexão Estados do Servidor Estados do Cliente

Gerência de conexão Retransmissão adaptativa

Princípios de Controle de Congestionamento Congestionamento: Informalmente: muitas fontes enviando dados acima da capacidade da rede tratá-los Diferente de controle de fluxo! Sintomas: perda de pacotes (saturação de buffer nos roteadores) atrasos grandes (filas nos buffers dos roteadores) Um dos 10 problemas mais importantes na Internet! Causas e custos do congestionamento: Cenário 1 Dois transmissores, dois receptores Um roteador, buffers infinitos Não há retransmissão

Causas e custos do congestionamento: Cenário 1 Dois transmissores, dois receptores Um roteador, buffers infinitos Não há retransmissão Gráficos de vazão por conexão Grandes atrasos quando congestionado Máxima vazão obtenível Causa e custos do congestionamento: Cenário 2 Um roteador, buffers finitos Transmissor reenvia pacotes perdidos

Causas/custos do congestionamento: cenário 2 Sempre vale : λ = λ (tráfego bom) in out Perfeita retransmissão somente quando há perdas: λ > λ in out Retransmissão de pacotes atrasados (não perdidos) torna λ maior (que o caso in perfeito ) para o mesmo λ out Custos do congestionamento: Mais trabalho (retransmissões) para um dado tráfego bom Retransmissões desnecessárias: enlace transporta várias cópias do mesmo pacote Causas/custos do congestionamento: cenário 3 quatro transmissores caminhos com múltiplos saltos temporizações/retransmissões Q: o que acontece quando e aumentam? λ in λ in

Causas/custos do congestionamento: cenário 3 Outro custo do congestionamento: quando pacote é descartado, qualquer capacidade de transmissão que tenha sido anteriormente usada para aquele pacote é desperdiçada! Abordagens do problema de controle de congestionamento Existem duas abordagens gerais para o problema de controle de congestionamento: Controle de congestionamento fim-a-fim: não usa realimentação explícita da rede congestionamento é inferido a partir das perdas e dos atrasos observados nos sistemas finais abordagem usada pelo TCP Controle de congestionamento assistido pela rede: roteadores enviam informações para os sistemas finais bit único indicando o congestionamento (SNA, DECbit, TCP/IP ECN, ATM) taxa explícita do transmissor poderia ser enviada

Capítulo 3: Resumo princípios por trás dos serviços da camada de transporte: multiplexação/demultiplexação transferência de dados confiável controle de fluxo controle de congestionamento instanciação e implementação na UDP TCP A seguir: saímos da borda da rede (camadas de aplicação e de transporte) vamos para o núcleo da rede