Nível Transporte Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.

Slides:



Advertisements
Apresentações semelhantes
TCP: Visão geral RFCs: 793, 1122, 1323, 2018, 2581 ponto a ponto:
Advertisements

Missão da camada de enlace Serviços oferecidos TCP UDP
Família tcp/ip Prof: Diovani Milhorim
Comunicação entre processos distribuídos
Bruno Rafael de Oliveira Rodrigues
Redes I Os Protocolos Prof. Dr. Amine BERQIA
URL: Redes Prof. Edgard Jamhour URL:
TCP Serviço de Transporte Confiável
Protocolos e Divisão em Camadas
Prof. Marcelo Diniz Fonte:
Paulo Roberto Freire Cunha
FEUPDEECRedes de Computadores, 4º Ano de EEC, ramo de ACI Sockets Abril, 98Isidro Vila Verde 1 Formato das estruturas de dados Estrutura.
Obtenção de IP TCP UDP.
Universidade do Vale do Rio dos Sinos - São Leopoldo -
REVISÃO MÓDULO 3(Camada de Transporte)
TCP (Transmission Control Protocol)
Sistemas Operacionais I
Software de Rede Willamys Araújo.
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Modelo de referência OSI
Interconexão e Transporte em Redes
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – CIn/UFPE Davi Duarte Denyson José Eduardo Souza Ivan França Rafael Lima.
URI - Santo Ângelo - DECC
URI - Santo Ângelo - DECC
Redes Aula 7 Professor: Marcelo Maia.
Camada de Transporte OSI
Aula 64 – TEC 11ºF Redes de computadores Prof. António dos Anjos.
Chamada Remota de Procedimentos
Camada de Transporte prof. Eduardo.
Nível Transporte Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.
Comunicação entre Processos - Sockets. Conceitos Básicos Sockets são uma forma de IPC ( InterProcess Communication ) fornecida pela 4.3 BSD que fornecem.
Transmission Control Protocol TCP
Comunicação de dados Protocolos básicos de enlace de dados.
Protocolos de Janela Deslizante
Infra-Estrutura de Comunicação (IF678) Aula Prática CIn/UFPE Rafael Lucena Roberta Mota Rubens Lopes Rodolfo Santos João Pedro Cordeiro.
Escola Secundaria Sebastião da Gama Trabalho realizado por: André Santos 12ºL nº:2 Prof: Carlos Pereira.
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Módulo 3 Implantação do IPv6.
REDES DE COMPUTADORES Camada de Transporte Professor: M.Sc. Carlos Oberdan Rolim.
MODELO DE REFERÊNCIA TCP/IP
Transmissão de Dados O Modelo de Referência TCP/IP
Escola Politécnica da USP abril de 2013 PTC 2550 – Redes de Comunicação De Dados e P1 Transporte Multimídia PTC 2550 – Redes de Comunicação De Dados e.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Hugo Simões Original por: Flávio.
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Arquitectura tcp. Camada tcp Ao contrário do protocolo UDP, o TCP representa um grande incremento de qualidade relativamente ao protocolo IP que lhe serve.
1) A camada de transporte provê comunicação lógica entre hosts.
Administração e Projeto de Redes
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP CIn/UFPE Bruno Gentilini Eduardo Souza Amora Albuquerque Anália.
Paulo Roberto Freire Cunha
Redes de computadores: Camada de Transporte Prof. Dr. Amine BERQIA
Arquitetura TCP/IP Aplicação Transporte Rede Enlace Física.
Camada de Aplicação Prof. Horácio. Objetivo Apresentar os detalhes específicos dos tipos de aplicação; Apresentar o modelo cliente-servidor; Apresentar.
TCP/IP Fabiano Mayer Fernanda F. de Oliveira João Boechat Neto
Escola Politécnica da USP abril de 2013 PTC 2550 – Redes de Comunicação De Dados e P1 Transporte Multimídia PTC 2550 – Redes de Comunicação De Dados e.
Rede de Computadores MAT164 – Redes de Computadores I Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação.
Administração e Projeto de Redes Material de apoio Camada de Transporte Cap.4 10/02/2010.
Redes de computadores e a Internet
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Professor: Paulo Gonçalves CIn/UFPE.
Nível Transporte 1 Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.
Protocolos de Comunicação e Passagem de Mensagens
Arquitetura em Camadas
Redes de Computadores Prof. Msc. Moisés Pereira Bastos.
Redes de Computadores Protocolos de Transporte
Prof. Ivair Teixeira Redes de Computadores.
Capítulo 2 Redes de computadores e a Internet Camada de aplicação Prof. Gustavo Wagner.
Escola de Ciência e Tecnologia Arquitetura TCP/IP Arquitetura TCP/IP Protocolos TCP, UDP e ICMP Etienne César R. de Oliveira
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Soquetes (1) SOCKET Uma interface local, criada por aplicações, ponto final de comunicação no qual os processos de aplicação podem tanto enviar quanto.
Transcrição da apresentação:

Nível Transporte Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna camadas superiores imunes à tecnologia e imperfeições da sub-rede. Questões típicas: Como controlar várias sessões transferindo dados? É possível várias conexões de transporte em uma de rede? E uma conexão de transporte com várias conexões de rede? Como retomar uma sessão interrompida? Que ação tomar em caso de congestionamento? Nível Transporte

Porque distingui-lo do N3? O nível 3 está presente nos roteadores. E se o roteador travar? E se o nível 3 perder pacotes? É possível que o nível 4 solicite nova conexão de rede com a entidade remota. Pergunta ao remoto onde parou e retoma do ponto interrompido. A questão é a qualidade de serviço. As aplicações utilizam um conjunto padrão de primitivas que funcionam em várias redes. Nível Transporte

Camadas de Rede, Transporte, Aplicação Nível Transporte

Tipos de Serviço Similar ao nível de rede, oferece 2 tipos de serviço: Orientado a conexão: Estabelece conexão, transfere dados, libera conexão. Sem conexão: Envia pacotes independentes. Segmento é o termo empregado para designar as mensagens trocadas entre entidades de transporte. Nível Transporte

Endereço de Transporte É preciso que uma aplicação em uma máquina faça referência à aplicação com a qual deseja se comunicar em outra máquina. No TCP/IP o endereço de transporte é a porta, e o endereço de rede é o endereço IP. Como um processo sabe que porta está associada a que serviço? Os endereços estáveis já são conhecidos. IANA – Internet Assigned Numbers Authority controla recursos dos protocolos. Vide /etc/services ou http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml Nível Transporte

IANA – Internet Assigned Numbers Authority O texto abaixo foi adaptado de www.iana.org “ The port numbers are divided into three ranges: System Ports (Well Known): from 0 through 1023. User Ports (Registered ): from 1024 through 49151 Dynamic and/or Private Ports: from 49152 through 65535. The difference uses of these ranges is described in RFC6335 The System Ports are assigned by the IETF process for standards-track protocols (and on most systems can only be used by system (or root) processes ). The User Ports are assigned by IANA using the “Expert Review” process . Dynamic Ports are not assigned. ” Nível Transporte

Exemplo de serviços Trecho do arquivo /etc/services: ftp 21/tcp telnet 23/tcp smtp 25/tcp mail time 37/tcp timserver time 37/udp timserver rlp 39/udp resource # resource location nameserver 42/tcp name # IEN 116 whois 43/tcp nicname domain 53/tcp nameserver # name-domain server domain 53/udp nameserver No Windows, vide netstat -a Nível Transporte

Soquetes (1) SOCKET Uma interface local, criada por aplicações, ponto final de comunicação no qual os processos de aplicação podem tanto enviar quanto receber mensagens de e para outro processo de aplicação (local ou remoto) Socket API (Application Programming Interface) Introduzida no BSD 4.1 - UNIX de Berkeley, 1981 Hoje há para Linux e Windows (winsock)  Explicitamente criados, usados e liberados pelas aplicações  Paradigma cliente-servidor  Dois tipos de serviço de transporte via socket API: Datagrama não confiável Confiável, orientado a cadeias de bytes Nível Transporte

Soquetes (2) Serviço TCP: transferência confiável de bytes de um processo para outro Nível Transporte

As primitivas de Soquetes para TCP Retorna descritor de soquete (s) Serv: Vincula IP+Porta a s Serv: Cliente: Qualquer: 10 Nível Transporte

Pseudo-código socket( ) socket( ) S E R V I D O C L I E N T bind ( ) Cria descritor de soquete socket( ) socket( ) S E R V I D O Atribui endereço de protocolo a soquete C L I E N T bind ( ) Solicita estabelecimento de conexão Indica que receberá conexões e o máximo listen ( ) accept ( ) Aguarda conexões connect( ) (read) recv ( ) send ( ) (write) send ( ) recv ( ) close ( ) Fecha soquete, termina conexão close ( ) Nível Transporte

Informações complementares (1) Little Endian versus Big Endian: maneiras de armazenar um número na memória. Little Endian: armazena os bytes de menor ordem em primeiro. Comum na arquitetura Intel. Ex: 0x12345678 seria armazenado como (0x78 0x56 0x34 0x12) Big Endian: 0x12345678 seria armazenado como (0x12 0x34 0x56 0x78). Comum nas arquiteturas RISC. É o formato da rede. Função para padronizar a transmissão: Htons: host to network – unsigned short int to Bigendian. Htonl: host to network – unsigned long int to Bigendian. 12 Nível Transporte

Informações complementares (2) É montada uma estrutura de dados com o endereço a ser associado ao soquete: channel.sin_addr.s_addr=htonl(INADDR_ANY) INADDR_ANY: “This allowed your program to work without knowing the IP address of the machine it was running on, or, in the case of a machine with multiple network interfaces, it allowed your server to receive packets destined to any of the interfaces”. Define de que versão virá a família de endereços: channel.sin_family = AF_INET AF_INET: Address Family for Internet Sockets is IPv4 13 Nível Transporte

Código do Cliente (1) Solicita arquivo do servidor. Chamada client <url> <file> >f Nível Transporte

Código do Cliente (2) 15 Nível Transporte

Código do Cliente (3) 16 Nível Transporte

Código do Servidor (1) 17 Nível Transporte

Código do Servidor (2) 18 Nível Transporte

Código do Servidor (3) 19 Nível Transporte

Programação de sockets em JAVA Exemplo de aplicação cliente-servidor: 1) Cliente lê linha da entrada-padrão do sistema (inFromUser stream), envia para o servidor via socket (outToServer stream) 2) Servidor lê linha do socket 3) Servidor converte linha para letras maiúsculas e envia de volta ao cliente 4) Cliente lê a linha modificada através do soquete (inFromServer stream)

Pseudo-código para JAVA (TCP)

Cliente Java (1) import java.io.*; import java.net.*; Classes para cadeia de entrada e saída import java.io.*; import java.net.*; class TCPClient { public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence; BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); Socket clientSocket = new Socket("hostname", 6789); DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); Classes para suporte de rede Cria stream de entrada Cria socket cliente, (IP,Porta) conecta ao servidor Cria stream de saída ligado ao socket Nível Transporte

Cliente Java (2) BufferedReader inFromServer = new BufferedReader(new Cria stream de entrada ligado ao socket BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = inFromUser.readLine(); outToServer.writeBytes(sentence + '\n'); modifiedSentence = inFromServer.readLine(); System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); } Envia linha para o servidor Lê linha do servidor Nível Transporte

Servidor Java (1) import java.io.*; import java.net.*; class TCPServer { public static void main(String argv[]) throws Exception { String clientSentence; String capitalizedSentence; ServerSocket welcomeSocket = new ServerSocket(6789); while(true) { Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); Cria socket de aceitação na porta 6789 Espera, no socket de aceitação, contato do cliente Cria stream de entrada ligado ao socket

Servidor Java (2) DataOutputStream outToClient = Cria stream de saída ligado ao socket DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); clientSentence = inFromClient.readLine(); capitalizedSentence = clientSentence.toUpperCase() + '\n'; outToClient.writeBytes(capitalizedSentence); } Lê linha do socket Escreve linha para o socket Fim do while loop, retorne e espere por outra conexão do cliente Nível Transporte

Pseudo-código para JAVA (UDP)

Cliente Java UDP (1) import java.io.*; import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientSocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("hostname"); byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); Cria stream de entrada Cria socket cliente Translada nome do hospedeiro para endereço IP usando DNS

Cliente Java UDP (2) DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876); clientSocket.send(sendPacket); DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close(); } Cria datagrama com dados a enviar, tamanho, endereço IP porta Envia datagrama para servidor Lê datagrama do servidor

Servidor Java UDP (1) import java.io.*; import java.net.*; class UDPServer { public static void main(String args[]) throws Exception { DatagramSocket serverSocket = new DatagramSocket(9876); byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); Cria socket datagrama na porta 9876 Cria espaço para datagramas recebidos Recebe datagrama

Servidor Java UDP (2) String sentence = new String(receivePacket.getData()); InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); serverSocket.send(sendPacket); } Obtém endereço IP e número da porta do transmissor Cria datagrama para enviar ao cliente Escreve o datagrama para dentro do socket Termina o while loop, retorna e espera por outro datagrama

Portmapper Como pedir conexão a um software que não usa portas conhecidas? Através de processo portmapper: Aplicação solicita conexão em porta conhecida associada ao portmapper (normalmente porta 111) que retorna a porta associada ao serviço desejado. Usuário encerra conexão com portmapper e estabelece com o novo endereço fornecido. Se a aplicação tem alta demanda é melhor que fique diretamente aguardando conexões. Quando da criação do serviço a aplicação se comunica com o portmapper para se registrar. Portmapper equivale a telefonista de auxílio a lista. Nível Transporte

Servidor de Processos (1) É preciso ter um processo aguardando conexões para cada serviço prestado? Sim e Não. Aplicações que não são tão utilizadas podem ser ativadas por demanda: um servidor de processos aguarda solicitações e ativa o processo que possa atendê-la. No UNIX, este processo é o inetd (ou xinetd). Se a aplicação tem alta demanda é melhor que fique diretamente aguardando conexões. 32 Nível Transporte 32

Servidor de Processos (2) Como um processo do usuário no host 1 estabelece uma conexão com o processo servidor de correio no host 2. Nível Transporte

Estabelecendo conexão no N4 (1) Que tal: CR para pedir e ACK para aceitar? Problema: a rede pode perder, atrasar, corromper ou duplicar pacotes (retransmissões). Os casos comuns devem ser implementados para obter um bom desempenho, mas o protocolo deve lidar com os casos incomuns também. Handshake de 3 vias em cenário normal Nível Transporte

Estabelecendo conexão no N4 (2) Seq=x Antigo CR aparece duplicado Seq=z, Ack=x CR e ACK duplicados Seq=x Seq=z, Ack=x Host 1 percebe que é duplicata: Segundo ACK x Seq=x, Ack=z Host 2 percebe que é duplicata: ACK z novamente 35 Nível Transporte 35

Problema dos dois Exércitos Nível Transporte

Encerrando conexão no N4 (1) Encerramento abrupto com perda de dados Caso normal com Handshake de 3 vias 37 Nível Transporte 37

Encerrando conexão no N4 (2) ACK final perdido Resposta e DR seguintes perdidos Resposta perdida 38 Nível Transporte 38

Controle de Congestionamento (a) Goodput x carga (b) Atraso correspondente Encontrar uma boa alocação de banda que ofereça bom desempenho, evite congestionamento, seja justa entre entidades concorrentes. 39 Nível Transporte

Imparcialidade max-min (Fairness) A alocação é imparcial max-min se a largura de banda dada a um fluxo não puder ser aumentada sem diminuir a largura de banda dada a outro fluxo. Rede com 4 fluxos: A,B,C,D. Cada enlace tem capacidade =. B recebe 1/3 entre R4 e R5 e continua com 1/3 entre R2 e R3 (1/2 não resolveria o gargalo). Para dar mais para B, deveria reduzir C ou D (ou ambos). Problema: Necessário conhecimento global da rede. 40 Nível Transporte

Convergência Conexões vem e vão: convergir para o ponto de operação ideal e acompanhar ao longo do tempo. Ex: No início o Fluxo 1 tem toda largura de banda. Em t=1 divide a banda na metade com Fluxo 2. Em t=4 o Fluxo 3 precisa apenas de 0,2 e os fluxos 1 e 2 ficam com 0,4 cada. Quando o Fluxo 2 termina, o Fluxo 1 abocanha 0,8. 41 Nível Transporte

Regulando a velocidade do fluxo (a) O limite é o receptor de pequena capacidade; (b) O limite é a rede interna. 42 Nível Transporte

Feedback Diferentes protocolos de controle de congestionamento podem dar retorno sobre as condições de forma explícita ou implícita – precisa ou imprecisa: TCP 43 Nível Transporte

Ajuste de banda 44 Aumento e diminuição additivos - ângulo de 45º Aumento e diminuição multiplicativos – apontam para a origem A lei de controle AIMD – Additive Increase Multiplicative Decrease - Converge para ponto Ótimo. 44 Nível Transporte

Problemas da rede sem fio Na Teoria: protocolos de transporte são independentes das tecnologias de rede e enlace. Na prática: problemas com redes sem fio. TCP usa perda de pacote como sinal de congestionamento, mas redes sem Fio perdem pacotes por erro não congestionamento… Pior ainda se os nós se movem e a qualidade do enlace varia. Cada nível faz o que pode: Enlace tenta retransmitir sem sinalizar nível superior; transporte aplica controle de congestionamento. Há muita pesquisa para desenvolver um Transporte para redes sem fio e como comunicar informações entre os níveis (abordagens cross-layer). 45 Nível Transporte

Protocolo de Controle da Internet User Data Protocol - UDP Permite envio de dados sem estabelecimento prévio de conexão, sem técnica de verificação que o dado atingiu a outra ponta. Muito utilizado em aplicações que tem como modelo – um pedido, uma resposta – não necessitando do overhead do estabelecimento de conexão. A própria resposta é o reconhecimento do pedido. Se a resposta não chegar, simplesmente pergunta novamente. Exemplo de aplicação que usa UDP: DNS 46 Nível Transporte

Comprimento UDP: inclui cabeçalho e dados. Segmento UDP O segmento UDP consiste de um cabeçalho de 8 bytes, seguido pela carga útil. O simples cabeçalho UDP contém 8 bytes: Comprimento UDP: inclui cabeçalho e dados. Checksum: opcional. 47 Nível Transporte

Pseudo-cabeçalho O TCP e o UDP calculam o checksum incluindo cabeçalho e dados e um pseudocabeçalho que inclui dados do nível Rede, para garantir a integridade dos dados e das informações de rede, uma vez que o IP só calcula o checksum do cabeçalho IP, não incluindo dados. Pseudo-cabeçalho não é transmitido nem contado. Porta Destino Porta Origem Tamanho Checksum Dados 16 31 Endereço IP Destino Endereço IP Origem Zero Protocolo Pseudo-Header Datagrama UDP Header UDP

RPC Remote Procedure Call – imita uma chamada de função, porém em máquinas diferentes. Possível para situações não idempotentes (chamadas que não tem problema serem repetidas, como uma consulta DNS – se efeito colateral como incrementar um timer usar TCP). Nível Transporte

RTP Real-Time Transport Protocol – várias aplicações de multimídia precisavam de um protocolo de transporte em tempo real. Considerado protocolo de transporte implementado na camada de aplicação. Numera pacotes para a apl decidir o que faz com os pacotes e perdas, mas não retransmite (não dá tempo). Nível Transporte

Protocolo de Controle da Internet Transmission Control Protocol - TCP Protocolo confiável de transporte da Internet, orientado a conexão. Projetado para prover um fluxo de bytes fim-afim confiável entre processos sobre uma inter-rede não confiável. O nível 3 da Internet, IP, não garante que os pacotes sejam entregues apropriadamente. O TCP controla temporizações e retransmite pacotes quando necessário. As conexões são full-duplex e ponto-a-ponto. Nível Transporte

O segmento TCP O cabeçalho de um segmento TCP: Nível Transporte

O cabeçalho TCP - 1 Número de confirmação: próximo byte esperado. Comprimento cabec: número de palavras de 32 bits no cabeçalho. (pode variar devido a opções). Flags: ECE (ECN-Echo): Receptor sinaliza congestionamento ao transmissor : reduza velocidade (recebeu pacote com ECN no IP); CWR: (Congestion Window Reduced) Transmissor sinaliza que reduziu janela (receptor pode parar de enviar ECE); URG: Quando a aplicação é interrompida (ex CTRL-C), insere-se informação de controle da aplicação nos dados e liga-se o URG. No destino, interrompe-se a aplicação para entregar os dados urgentes. ACK: Se ligado, o número de reconhecimento é válido. PSH: Se ligado indica para entregar dados imediatamente (não buferizar, o que poderia ser feito por eficiência); Nível Transporte

O cabeçalho TCP - 2 54 Flags: RST: Se ligado indica para reiniciar a conexão: há problemas; SYN: Se ligado indica solicitação de conexão.. FIN: Se ligado, indica fim da conexão. Tam Janela: Quantos bytes podem ser enviados. O receptor controla o fluxo de bytes do transmissor alterando este campo. Janela zero significa “pare de mandar até que receba valor não zero”. Checksum: Para confiabilidade extrema. Urgent Pointer: Deslocamento em bytes a partir do número de sequência onde estão os dados urgentes. Options: Permite adicionar facilidades extras como negociar tamanho máximo do segmento TCP. 54 Nível Transporte

Estabelecimento de conexão TCP (a) Caso comum no estabelecimento de uma conexão TCP. (b) Estabelecendo conexões TCP simultâneas nas mesmas portas: é possível perceber que se trata da mesma conexão. Nível Transporte

Máquina de Estados finitos - TCP Etapas necessárias para estabelecimento e encerramento de conexões. Em cada estado, quando ocorre um evento válido, é possível executar uma ação. Os 2 sentidos têm que concordar com o fim:FIN e ACK para cada sentido Nível Transporte

Máquina de Estados finitos - TCP Linha contínua mais escura: caminho normal do cliente; Linha tracejada mais escura: caminho normal do servidor; Linhas finas: eventos incomuns. Cada transição é rotulada pelo evento que a produziu e ação resultante separada por barra 57 Nível Transporte

Janela Deslizante do TCP O mecanismo de janela utiliza duas informações: Número de confirmação: próximo número de seqüência que o remoto espera receber. Tamanho da janela: Número de bytes que o remoto pode aceitar. Tam Janela=6000 Segmento corrente Dados recebidos 1 1001 2001 3001 4001 5001 6001 7001 Número de sequência inicial=1 Número de sequência=4001 Número de confirrmação=2001 Nível Transporte

Gerenciamento de Janelas no TCP Nível Transporte

Vários Timers do TCP Timer de Retransmissão: determinar tempo de ida e volta para o destino não é fácil e erros comprometem a eficiência. Utiliza-se algoritmos dinâmicos que ajustam o intervalo de timeout com base na contínua avaliação do desempenho. Timer de persistência: Rx envia confirmação com tamanho da janela = 0 (para o Tx). Se uma nova mensagem com tam. Jan # 0 se perde, ambos ficam aguardando. Ao estourar este timer, o Tx envia teste ao Rx que responde com o tamanho da janela atual. Se ainda zero, ativa timer novamente. Timer Keepalive: se conexão inativa por um tempo, um lado pergunta o estado do outro. Timer no encerramento de conexão: para garantir que após fechar conexão, todos os pacotes foram entregues. Nível Transporte

Temporizador de Retransmissão Como escolher o valor do Retransmission Timer do TCP? Deve ser maior que o RTT– Round-Trip Time – Tempo de Viagem de Ida e Volta ( que varia...) Densidade de probabilidade dos tempos de chegada de ACK Atraso esperado em s, na camada de enlace tem pequena variância => poderia se definir a temporização como T; 61 Nível Transporte

Temporizador de Retransmissão Densidade de probabilidade dos tempos de chegada de ACK (b) Atraso esperado em ms, na camada de transporte, grande variância –temporização definida como T1 ou T2? Se escolher T1, pode ser muito curto: temporização prematura implica em Retransmissões desnecessárias; Se escolher T2, pode ser muito longo: a reação à perda de segmento fica lenta; Como estimar o RTT? 62 Nível Transporte

SRTT = * SRTT + (1-)* SampleR Estimando RTT SampleR: tempo medido da transmissão de um segmento até a respectiva confirmação; varia de forma rápida, é desejável um amortecedor para a estimativa do SampleR; usar várias medidas recentes, para gerar o SRTT (Smoothed Round-Trip Time) SRTT = * SRTT + (1-)* SampleR : fator de suavização que determina o peso dado ao antigo valor. Valor típico:  = 0,875 (Recomendado em RFC). 63 Nível Transporte

Exemplo de estimativa de RTT 64 Nível Transporte

Definindo temporização Tendo SRTT, quanto deve ser a temporização? SRTT mais “margem de segurança” – considerar o quanto a estimativa varia; grandes variações no SRTT => maior margem de segurança  Estimar quanto o SampleR se desvia do SRTT: DevRTT = (1-)*DevRTT + *|SampleR-SRTT| (typically,  = 0.25) Ajustar o intervalo de temporização - intervalo utilizado na maioria das implementações: TimeoutInterval = SRTT + 4*DevRTT 65

Evitando Congestionamento Cada transmissor mantém duas janelas: Janela fornecida pelo receptor; Janela de Congestionamento. O número de bytes que pode ser transmitido é o valor mínimo entre as duas janelas. Em 1986 aconteceu o primeiro colapso de congestionamento. Observou-se , naquele contexto, que perda de pacote era um sinal de congestionamento (se fosse erro, a camada de enlace já teria retransmitido) Clock ACK: tempo usado pelo TCP para nivelar o tráfego entre os enlaces que deve atravessar: os pacotes de ACK chegam em ritmo ditado pelo enlace mais lento do caminho. Nível Transporte

Partida lenta de uma Jan. cong. inicial de um segmento No início da conexão, Jan. cong = tam do segmento na conexão. Cada segmento confirmado antes do estouro da temporização, permite o envio de mais dois. Partida lenta de uma Jan. cong. inicial de um segmento Nível Transporte

TCP Tahoe No início da conexão, Jan.cong = tam do segmento. Se confirmado antes de timeout, duplica janela de congestionamento. Quando o crescimento atinge um Limiar, passa a ser linear e não mais exponencial. (Limiar inicial=64KB). Continua crescendo até ocorrer um timeout, ou atingir a janela do receptor. Quando há um timeout: Limiar = metade da jan. cong. atual, e jan.cong. volta a ter o tamanho de um segmento. Começa o processo de crescimento exponencial novamente para determinar o que a rede é capaz de gerenciar. 68 Nível Transporte

Exemplo do TCP Tahoe Tamanho máximo do segmento = 1024 bytes. Limiar inicial = 64KB, houve timeout, limiar caiu para 32KB. Transmissão 13 teve timeout, quando a Jan. Cong. estava com 40KB. Limiar passa a ser de 20KB, Jan. Cong=1 segmento. Nível Transporte

Recuperação rápida Antes de haver timeout, se houver 3 confirmações duplicadas, o TCP assume que o pacote em questão se perdeu mesmo, não está apenas atrasado (Heurística baseada em experiência). Ex: enviei pacote 1,2,3,4,5,6,7,8. Recebi ACK 1,2,3,4,4,4: provavelmente os pacotes 5,6 e 7 foram recebidos e o 4 se perdeu. Neste caso uma otimização seria reenviar o 4 ainda que não estourou a temporização => Retransmissão rápida. TCP Tahoe implementa esta heurística e neste caso retoma a transmissão a partir do novo limite de partida lenta. 70 Nível Transporte

Exemplo do TCP Reno 71 Curva Dente de Serra. Implementação utilizada por 20 anos. Hoje há inúmeras variações e propostas de melhorias. Aumento aditivo (1 segmento a mais), diminuição multiplicativa (metade) - AIMD 71 Nível Transporte

Obtendo melhor Desempenho Bons projetos de sistemas (Projeto de redes + software + sistema operacional) não podem ser substituidos por ajustes de configuração. Regras práticas: Regra 1: Medir o desempenho da rede: Medir por tempo suficiente com amostragens grandes o suficiente; Cuidado com a interpretação: está sendo usado cache? Qual efeito da buferização? Cuidado com eventos imprevistos (transmissão de vídeo, início de backup, etc...) Nível Transporte

Regras práticas Regra 2: Projeto de Host para redes Rápidas: as NICs funcionam na velocidade do enlace, aplicação pode freiar o desempenho: SO e protocolos são gargalos Reduzir número de pacotes, reduz overhead; Minimizar movimentação de dados: cópias devem ser evitadas (t memória x t CPU) Minimizar mudanças de contexto (executando em modo usuário, chega pacote, muda para modo kernel – agrupe segmentos pequenos); Prevenir congestionamento é melhor que remediar; Evitar timeouts Nível Transporte

Capacidade do canal (1) - Kurose Exemplo: enlace de 1 Gbps, 15 ms de atraso de propagação, pacotes de 1 KB: L (tamanho do pacote em bits) Transmissão 8 kb/pkt = = = 8 ms R (taxa de transmissão, bps) 10**9 b/s Utilização do remetente = Obs: Ignorando o tempo de transmissão do ACK (pacote pequeno). 74 Nível Transporte

Capacidade do canal (2) - Kurose Exemplo: enlace de 1 Gbps, 15 ms de atraso de propagação, pacotes de 1 KB: Utilização do remetente = 75 Nível Transporte

Regras práticas 76 Regra 3: Buscar processamento rápido de segmentos: Minimizar processamento de casos normais: processamento de erros é secundário; realizar testes para detectar normalidade: O caminho mais rápido está na linha grossa. 76 Nível Transporte

DTN - Delay Tolerant Network Rede baseada em arquitetura de comutação de mensagens quando a conectividade é intermitente e não se garante comunicação fim a fim. Os dados são armazenados para posterior encaminhamento. Ex: Aviões fora do alcance da base, dispositivos móveis, acesso a satélite de baixa órbita, redes espaciais… Mensagens = bundles, armazenados até por horas. 77 Nível Transporte