Capítulo 3: Camada de Transporte Metas do capítulo: Sumário do Capítulo: compreender os serviços da camada de transporte princípios atrás dos serviços da camada de transporte: multiplexação/ desmultiplexação controle de fluxo controle de congestionamento multiplexação/desmultiplexação transporte sem conexão: UDP transporte orientado a conexão: TCP transferência confiável controle de fluxo gerenciamento de conexões principles de controle de congestionamento controle de congestionamento em TCP 3: Camada de Transporte 3b-1 Serviços e protocolos de transporte provê comunicação lógica entre processos de aplicação executando em hospedeiros diferentes protocolos de transporte executam em sistemas terminais serviços das camadas de transporte X rede: camada de rede : dados transferidos entre sistemas camada de transporte: dados transferidos entre processos aplicação transporte rede enlace física rede enlace física rede enlace física rede enlace física rede enlace física rede enlace física aplicação transporte rede enlace física depende de, estende serviços da camada de rede 3: Camada de Transporte 3b-2 Protocolos da camada de transporte Serviços de transporte na Internet: entrega confiável, ordenada, ponto a ponto (TCP) congestionamento controle de fluxo estabelecimento de conexão (setup) entrega não confiável, (“melhor esforço”), não ordenada, ponto a ponto ou multiponto: UDP serviços não disponíveis: tempo-real garantias de banda multiponto confiável aplicação transporte rede enlace física rede enlace física rede enlace física rede enlace física rede enlace física rede enlace física aplicação transporte rede enlace física 3: Camada de Transporte 3b-3 Multiplexação/desmultiplexação Lembrança: segmento unidade de dados trocada entre entidades da camada de transporte = TPDU: transport protocol data unit dados da camada de aplicação cabeçalho de segmento P1 M aplicação segmento Ht M transporte Hn segmento rede Desmultiplexação: entrega de segmentos recebidos para os processos da camada de apl corretos P3 receptor M M aplicação transporte rede P4 M P2 aplicação transporte rede 3: Camada de Transporte 3b-4 Multiplexação/desmultiplexação Multiplexação: juntar dados de múltiplos processos de apl, envelopando dados com cabeçalho (usado depois para desmultiplexação) multiplexação/desmultiplexação: baseadas em números de porta e endereços IP de remetente e receptor números de porta de remetente/receptor em cada segmento lembrete: número de porta bem conhecido para aplicações específicas 32 bits porta remetente porta receptor outros campos do cabeçalho dados da aplicação (mensagem) formato de segmento TCP/UDP 3: Camada de Transporte 3b-5 Multiplexação/desmultiplexação: exemplos estação A porta orig.: x porta dest: 23 servidor B porta orig:23 porta dest: x IP orig : C IP dest: B porta orig: y porta dest: 80 uso de portas: apl. simples de telnet cliente WWW estação A Web client host C IP orig: A IP dest: B porta orig: x porta dest: 80 IP orig: C IP dest: B porta orig: x porta dest: 80 servidor WWW B uso de portas : servidor WWW 3: Camada de Transporte 3b-6 UDP: User Datagram Protocol [RFC 768] Protocolo de transporte da Internet mínimo, “sem frescura”, Serviço “melhor esforço”, segmentos UDP podem ser: perdidos entregues à aplicação fora de ordem do remesso sem conexão: não há “setup” UDP entre remetente, receptor tratamento independente de cada segmento UDP Por quê existe um UDP? elimina estabelecimento de conexão (o que pode causar retardo) simples: não se mantém “estado” da conexão no remetente/receptor pequeno cabeçalho de segmento sem controle de congestionamento: UDP pode transmitir o mais rápido possível 3: Camada de Transporte 3b-7 Mais sobre UDP Comprimento em bytes do segmento UDP, incluindo muito utilizado para apls. de cabeçalho meios contínuos (voz, vídeo) tolerantes de perdas sensíveis à taxa de transmissão outros usos de UDP (por 32 bits porta origem porta dest. comprimento checksum quê?): DNS (nomes) SNMP (gerenciamento) transferência confiável com UDP: incluir confiabilidade na camada de aplicação recuperação de erro específica à apl.! Dados de aplicação (mensagem) UDP segment format 3: Camada de Transporte 3b-8 Checksum UDP Meta: detecta “erro” (e.g., bits invertidos) no segmento transmitido Remetente: trata conteúdo do segmento como sequência de inteiros de 16-bits campo checksum zerado checksum: soma (adição usando complemento de 1) do conteúdo do segmento remetente coloca complemento do valor da soma no campo checksum de UDP Receiver: computa checksum do segmento recebido verifica se checksum computado é zero: NÃO - erro detectado SIM - nenhum erro detectado. Mas ainda pode ter erros? Veja depois …. 3: Camada de Transporte 3b-9 TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 ponto a ponto: 1 remetente, 1 receptor transmissão full duplex: fluxo de dados bidirecional na mesma fluxo de bytes, ordenados, conexão confiável: MSS: tamanho máximo de não estruturado em msgs segmento dutado: orientado a conexão: tam. da janela ajustado por handshaking (troca de controle de fluxo e msgs de controle) inicia congestionamento do TCP estado de remetente, socket door buffers de envio e recepção application writes data application reads data TCP send buffer TCP receive buffer segment socket door receptor antes de trocar dados fluxo controlado: receptor não será afogado 3: Camada de Transporte 3b-10 TCP: estrutura do segmento 32 bits URG: dados urgentes (pouco usados) ACK: no. ACK válido PSH: envia dados já (pouco usado) RST, SYN, FIN: gestão de conexão (comandos de estabelecimento, liberação) checksum Internet (como UDP) no. porta origem no. porta dest número de seqüência número de reconhecimento tam. sem UA P R S F cab. uso checksum janela receptor ptr dados urg. Opções (tam. variável) contagem de dados por bytes (não segmentos!) no. bytes rcpt quer aceitar dados da aplicação (tam. variável) 3: Camada de Transporte 3b-11 TCP: números de Seq. e ACKs Nos. de seq.: “número”dentro do fluxo de bytes do primeiro byte de dados do segmento ACKs: no. de seq do próx. byte esperado do outro lado ACK cumulativo P: como receptor trata segmentos fora da ordem? R: espec do TCP omissa - deixado ao implementador Estação A Usuário tecla ‘C’ Estação B B reconhece chegada de ‘C’, ecoa ‘C’ de volta A reconhece chegada do ‘C’ ecoado cenário simples de telnet tempo 3: Camada de Transporte 3b-13 TCP geração de ACKs [RFCs 1122, 2581] Evento Ação do receptor TCP chegada de segmento em ordem sem lacunas, anteriores já reconhecidos ACK retardado. Espera até 500ms p/ próx. segmento. Se não chegar segmento, envia ACK chegada de segmento em ordem sem lacunas, um ACK retardado pendente envia imediatamente um único ACK cumulativo chegada de segmento fora de ordem, com no. de seq. maior que esperado -> lacuna envia ACK duplicado, indicando no. de seq.do próximo byte esperado chegada de segmento que preenche a lacuna parcial ou completamente ACK imediato se segmento no início da lacuna 3: Camada de Transporte 3b-14 TCP em ação: Tráfego http Cliente Servidor Estabelecimento da Conexão (3 Way Hand-shake) TCP Syn TCP TCP Ack, Syn Ack HTTP request TCP HTTP response Transmissão dos Dados com Manutenção da Conexão TCP Ack HTTP response TCP Controle de fluxo através da técnica do Janelamento !!! Ack HTTP response TCP Encerramento da Conexão TCP Ack Fyn Fyn TCP 3: Camada de Transporte 3b-15 Cliente TCP em ação: Tráfego http (cont) Servidor PO: 2031, PD: 80, Seq: 100, Ack: 0, Janela: 3 Syn PO: 2031, PD: 80, Seq: 101, Ack: 26, Janela: 3 PO:80, PD: 2031, Seq: 25, Ack: 101, Janela: 3 Ack, Syn Ack PO: 2031, PD: 80, Seq: 102, Ack: 26, Janela: 3 PO:80, PD: 2031, Seq: 26, Ack: 103, Janela: 3 PO:80, PD: 2031, Seq: 27, Ack: 103, Janela: 3 PO:80, PD: 2031, Seq: 28, Ack: 103, Janela: 3 PO:80, PD: 2031, Seq: 29, Ack: 103, Janela: 3 PO: 2031, PD: 80, Seq: 103, Ack: 30, Janela: 3 PO: 2031, PD: 80, Seq: 104, Ack: 33, Janela: 3 Ack PO:80, PD: 2031, Seq: 30, Ack: 104, Janela: 3 PO:80, PD: 2031, Seq: 31, Ack: 104, Janela: 3 PO:80, PD: 2031, Seq: 32, Ack: 104, Janela: 3 Ack PO:80, PD: 2031, Seq: 33, Ack: 105, Janela: 3 PO:80, PD: 2031, Seq: 34, Ack: 105, Janela: 3 PO:80, PD: 2031, Seq: 35, Ack: 105, Janela: 3 PO: 2031, PD: 80, Seq: 105, Ack: 36, Janela: 3 Ack PO:80, PD: 2031, Seq: 36, Ack: 106, Janela: 3 PO: 2031, PD: 80, Seq: 106, Ack: 37, Janela: 3 Fyn Fyn 3: Camada de Transporte 3b-16 TCP: cenários de retransmissão Host A tempo X perda cenário do ACK perdido Host B Temp. p/ Seq=100 Temp.p/ Seq=92 temporização Estação A Estação B tempo temporização prematura, ACKs cumulativos 3: Camada de Transporte 3b-17 TCP: Controle de Fluxo controle de fluxo remetente não esgotaria buffers do receptor por transmitir muito, ou muito rápidamente RcvBuffer = tamanho do Buffer de recepção RcvWindow = espaço vazio no Buffer receptor: explicitamente avisa o remetente da quantidade de espaço livre disponível (muda dinamicamente) campo RcvWindow no segmento TCP remetente: mantém a quantidade de dados transmitidos, porém ainda não reconhecidos, menor que o valor mais recente de RcvWindow buffering pelo receptor 3: Camada de Transporte 3b-18 TCP: Gerenciamento de Conexões Lembrete: Remetente, Inicialização em 3 tempos: receptor TCP estabelecem Passo 1: sistema cliente envia “conexão” antes de trocar segmento de controle SYN do TCP segmentos de dados ao servidor inicializam variáveis TCP: especifica no. inicial de seq nos. de seq. buffers, info s/ controle Passo 2: sistema servidor recebe de fluxo (p.ex. RcvWindow) SYN, responde com segmento de cliente: iniciador de conexão controle SYNACK Socket clientSocket = new Socket("hostname","port number"); servidor: contactado por cliente Socket connectionSocket = welcomeSocket.accept(); reconhece SYN recebido aloca buffers especifica no. inicial de seq. servidor-> receptor 3: Camada de Transporte 3b-19 TCP: Gerenciamento de Conexões (cont.) Encerrando uma conexão: cliente servidor fechar cliente fecha soquete: clientSocket.close(); Passo 1: sistema cliente envia fechar Passo 2: servidor recebe FIN, responde com ACK. Encerra a conexão, enviando FIN. espera temporizada segmento de controle FIN ao servidor fechada 3: Camada de Transporte 3b-20 TCP: Gerenciamento de Conexões (cont.) Passo 3: cliente recebe FIN, responde com ACK. Entre em “espera temporizada” responderá com ACK a FINs recebidos Step 4: servidor, recebe ACK. Conexão encerrada. Note: com pequena modificação, consegue tratar de FINs simultâneos. servidor fechando fechando espera temporizada cliente fechada fechada 3: Camada de Transporte 3b-21 Princípios de Controle de Congestionamento Congestionamento: informalmente: “muitas fontes enviando muitos dados muito rapidamente para a rede poder tratar” differente de controle de fluxo! manifestações: perda de pacotes (esgotamento de buffers em roteadores) longos atrasos (enfileiramento nos buffers dos roteadores) um dos 10 problemas mais importantes em redes! 3: Camada de Transporte 3b-22 Capítulo 3: Sumário Princípios atrás dos serviços da camada de transporte: multiplexação/ desmultiplexação transferência confiável de dados controle de fluxo Próximo capítulo: saímos da “borda” da rede (camadas de aplicação e transporte) entramos no “núcleo”da rede instanciação e implementação na Internet UDP TCP 3: Camada de Transporte 3b-23