Aula 3 - Redes de Computadores - Transporte

  • 1,306 views
Uploaded on

 

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,306
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Tecnologia em Redes de ComputadoresIntrodução a Redes de Computadores – INF015 – Parte 3: Nível de Transporte Professor: André Peres andre.peres@poa.ifrs.edu.br Instituto Federal do Rio Grande do Sul - IFRS Porto Alegre
  • 2. Introdução● Nível de Transporte – Multiplexação entre aplicações (portas) – Aspectos de controle de comunicação – Gerenciar comunicação fim-a-fimA BA AT T T TR RE EF F
  • 3. Transporte● Aplicação → Transporte – Protocolos de transporte: ● TCP ● UDP – A comunicação entre um processo (software no nível de aplicação) e o Nível de Transporte se dá através de uma porta de comunicação – Existem 65535 portas TCP e 65535 portas UDP
  • 4. Transporte● Aplicação → Transporte – Uma aplicação deve escolher entre os dois protocolos, e especificar uma porta a ser utilizada – Um software cliente deve endereçar a porta do servidor – O servidor deve responder à porta do cliente – Desta forma são identificados os processos na camada de aplicação
  • 5. Transporte● Tipos de serviço: – Com conexão: ● Existe o estabelecimento de uma conexão com aceite do servidor – Sem conexão ● Melhor esforço → envia os pacotes, sem saber se a outra ponta aceita ou não
  • 6. Transporte● Protocolos: – UDP – User Datagram Protocol ● Definido no RFC 768 ● Sem conexão ● Sem garantia de chegada dos pacotes ● Sem garantia da ordem de chegada ● Sem garantia de controle de fluxo de dados ● Pacotes com erros são simplesmente descartados no destino
  • 7. Transporte● Protocolos: – UDP - cabeçalho: 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 bits Source Port Destination Port UDP Header UDP Length UDP Checksum
  • 8. Transporte● Protocolos: – TCP – Transport Control Protocol ● Definido no RFC 793 ● Orientado à conexão ● Garante chegada dos pacotes – Retransmissão em caso de perda ou erro – Sempre aguarda confirmação de chegada (ACK) – Gerencia um time-out para recebimento de pacotes (RTT) – Pacotes duplicados são descartados ● Garante ordem de chegada dos pacotes ● Controle de fluxo
  • 9. Transporte● Protocolos: – TCP – Cabeçalho
  • 10. Transporte● Estabelecimento de conexões: – TCP ● three-way-handshake SYN SYN/ACK ACK cliente servidor Comunicação bidirecional
  • 11. Transporte● Estabelecimento de comunicação – Software de aplicação → lado do servidor: ● Faz chamada ao SO “socket” – Protocolo de transporte (TCP ou UDP) – Especifica porta a ser utilizada ● Faz chamada ao SO “bind” – Realiza a reserva/ligação com a porta especificada ● Faz chamada ao SO “listen” – “abre” a porta e aguarda pacotes – TCP → aguarda início de conexões – UDP → aguarda dados
  • 12. Transporte● Estabelecimento de comunicação – Software de aplicação → lado do cliente: ● Faz chamada ao SO “socket” – Protocolo de transporte (TCP ou UDP) – A porta é escolhida pelo SO (porta zero) ● TCP → Faz chamada ao SO “connect” – Especifica IP e porta destinos – O servidor responde com chamada “accept” – Chamadas send/receive (cliente e servidor) ● UDP → Não realiza “connect” apenas envia dados – Chamadas send/receive (cliente e servidor)
  • 13. Transporte● Finalização de comunicação – UDP – sem ação necessária – TCP – processo de finalização de conexão ● Ambas as partes devem “concordar” com o final da conexão ● Processo pode ser iniciado por cliente ou servidor FIN FIN/ACK A FIN B FIN/ACK
  • 14. Transporte● Conexão TCP (visão geral) SYN SYN/ACK ACK Comunicação cliente bidirecional servidor FIN FIN/ACK FIN FIN/ACK
  • 15. Transporte● Portas – 16 bits = 65536 combinações – Portas “baixas” (registradas) = 0 → 1024 ● Utilizadas pelos servidores ● www.IANA.org – Portas “altas” (livres) = 1025 → 65535 ● Utilizadas pelos clientes
  • 16. Transporte● Sockets → interface de comunicação entre cliente e servidor Aplicação
  • 17. Transporte● Sockets → interface de comunicação entre cliente e servidor Aplicação 80 Transporte TCP Servidor faz chamadas ... Socket, bind, listen Na porta 80, TCP
  • 18. Transporte● Sockets → interface de comunicação entre cliente e servidor Aplicação1500 80 Transporte TCP TCP Cliente faz chamadas Socket, bind, connect ... Especificando IP e ... Porta destinos -------------------- SO escolhe porta alta Para cliente
  • 19. Transporte● Sockets → interface de comunicação entre cliente e servidor Aplicação1500 80 Transporte TCP TCP ... ... Demais camadas
  • 20. Transporte● Sockets → servidor atende mais de um cliente simultaneamente (mesma porta) 200.2.2.2 1500 80 200.1.1.1 Quando servidor aceita uma Conexão, cria um processo Filho (fork) para atender O cliente
  • 21. Transporte● Sockets → servidor atende mais de um cliente simultaneamente (mesma porta) 200.2.2.2 1500 (200.1.1.1:1500 - 200.2.2.2:80) 80 200.1.1.1 (200.2.2.2:80 - 200.1.1.1:1500) Para identificar o cliente SOCKET PAIR (ipo:po - ipd:pd)
  • 22. Transporte● Sockets → servidor atende mais de um cliente simultaneamente (mesma porta) 200.2.2.2 1500 (200.1.1.1:1500 - 200.2.2.2:80) 80 200.1.1.1 (200.2.2.2:80 - 200.1.1.1:1500) 1500 (200.2.2.2:80 - 200.3.3.3:1500) (200.3.3.3:1500 - 200.2.2.2:80) 200.3.3.3 Cliente diferente com IP Diferente = socket pair Diferente !
  • 23. Transporte● Sockets → servidor atende mais de um cliente simultaneamente (mesma porta) 200.2.2.2 1500 (200.1.1.1:1500 - 200.2.2.2:80) 80 1501 (200.1.1.1:1501 - 200.2.2.2:80) (200.2.2.2:80 - 200.1.1.1:1500) 200.1.1.1 1500 (200.2.2.2:80 - 200.3.3.3:1500) (200.3.3.3:1500 - 200.2.2.2:80) Um cliente com 2 browsers 200.3.3.3 = portas diferentes ! (200.2.2.2:80 - 200.1.1.1:1501) = socket pair diferentes !
  • 24. Transporte● Sockets – O processo principal (pai) fica sempre em “listen” – Apenas os processos filho atendem os clientes – O TCP se encarrega de entregar para o processo correto – Isto vale para todas as conexões TCP – Comando “netstat” para verificar conexões
  • 25. Transporte● Sockets – Ex processos filhos (apache) websrv:~# ps fax | grep apache  3014 ?        Ss     0:00 /usr/sbin/apache 29432 ?        S      0:01  _ /usr/sbin/apache 29448 ?        S      0:02  _ /usr/sbin/apache 29449 ?        S      0:04  _ /usr/sbin/apache 29517 ?        S      0:01  _ /usr/sbin/apache 29545 ?        S      0:01  _ /usr/sbin/apache 29697 ?        S      0:01  _ /usr/sbin/apache 29905 ?        S      0:01  _ /usr/sbin/apache 30008 ?        S      0:00  _ /usr/sbin/apache 30116 ?        S      0:00  _ /usr/sbin/apache 30131 ?        S      0:00  _ /usr/sbin/apache 30153 ?        S      0:00  _ /usr/sbin/apache 30157 ?        S      0:00  _ /usr/sbin/apache 30163 ?        S      0:00  _ /usr/sbin/apache
  • 26. Transporte● Sockets – Ex conexões/socket pair (netstat) websrv:~# netstat ­latunp | grep 80 tcp 0 0     0.0.0.0:80   0.0.0.0:*  OUÇA       3014/apache          tcp 0 8761  10.1.1.4:80  89.155.96.185:52665   ESPERA_FIN1­               tcp 0 0     10.1.1.4:80  187.116.153.18:1994   ESPERA_FIN2   tcp 0 0     10.1.1.4:80  187.116.153.18:1992   ESPERA_FIN2­  tcp 0 0     10.1.1.4:80  187.116.153.18:1998   ESPERA_FIN2­  tcp 0 0     10.1.1.4:80  187.116.153.18:1996   ESPERA_FIN2­      tcp 0 0     10.1.1.4:80  10.2.6.39:1456        ESTABELECIDA30157/apache    tcp 0 22928 10.1.1.4:80  201.49.225.246:48480  ESPERA_FIN1­     tcp 0 0     10.1.1.4:80  187.10.25.78:1408     ESTABELECIDA30008/apache    tcp 0 13140 10.1.1.4:80  187.26.72.217:2715    ESTABELECIDA30153/apache    tcp 0 0     10.1.1.4:80  189.88.113.181:1595   ESPERA_FIN2­         tcp 0 0     10.1.1.4:80  216.129.119.43:32945  TIME_WAIT  ­ tcp 0 0     10.1.1.4:80  216.129.119.43:54335  TIME_WAIT  ­    
  • 27. Transporte● TCP - Controle de erros, fluxo e sequência – Necessidade de ordenar os pacotes ● Controlar pacotes fora de ordem ● Controlar pacotes duplicados (descartar) – Necessidade de verificar capacidade de recebimento de pacotes (cliente e servidor) – Necessidade de identificar erros ● Perda de pacotes ● Pacotes com bits trocados ● Confirmação de entrega (acknowledgement = ACK)
  • 28. Transporte● TCP - Controle de erros, fluxo e sequência – Antes de mais nada, saber quanto tempo demora para um pacote ir até o destino e uma resposta chegar – RTT – Round Trip Time ● Definido durante o estabelecimento da conexão ● Pode ser atualizado durante a comunicação – Identifica situações de congestionamento
  • 29. Transporte● Definição do RTT SYN RTT SYN/ACK RTT ACK cliente servidor
  • 30. Transporte● TCP - Controle de erros, fluxo e sequência – TIME-WAIT ● Tempo de espera por uma resposta ● Baseado no RTT ● Caso a resposta não chegue → RESET ● Antes do cálculo de RTT o TIME-WAIT é grande – Geralmente entre 1 e 4 minutos – RESET ● Finalização abrupta de uma conexão (sem FIN) ● Impede que um processo fique aguardando indefinidamente ● Ao receber um RESET (flag RST) a outra ponta encerra a conexão imediatamente
  • 31. Transporte● TCP - Controle de erros, fluxo e sequência – Numeração de pacotes ● Campo no cabeçalho TCP (sequence number) ● Utilizado para confirmação de chegada (ACK) – ACK ● Campo no cabeçalho TCP (acknowledgement number) ● Informa o pacote que se está esperando! ● Com isso, não é necessário confirmar cada pacote ● Ex: acknowledgement number = 10 – Significa que os pacotes 0,1,2,3,4,5,6,7,8,9 foram recebidos sem problemas (se está aguardando pacote 10)
  • 32. Transporte 0 SYN, SN=0, ACK=0 SYN/ACK, SN=0, ACK=1 0 1 ACK, SN=1, ACK=1 (GET http … )SN=2, ACK=1 2 (html) SN=1, ACK=3 1 (html) SN=2, ACK=3 2 (html) SN=3, ACK=3 3 (... )SN=3, ACK=4 3 ....cliente servidor
  • 33. Transporte● Tamanhos: ● O TCP é o responsável por receber um conjunto de dados da camada de aplicação e organizar em pacotes – A aplicação não sabe em quantos pacotes os dados serão organizados ● O TCP tem o limite do tamanho aceito pelo IP IPv4: ● Tam máximo = 65535 bytes incluindo cabeçalho IP ● Tam mínimo = 64 bytes
  • 34. Transporte● Tamanhos: ● No enlace o tamanho máximo de um quadro é definido pelo tipo de enlace – MTU = Maximum Transmission Unit ● Ethernet = 1500 bytes ● Frame-relay = 16000 bytes ● Wi-fi = 3000 bytes ● … … … ● Se o datagrama entregue pelo IP for maior que o MTU, o enlace deve fragmentar – PROBLEMA !!!
  • 35. Transporte● Tamanhos ● Se o datagrama entregue pelo IP for maior que o MTU, o enlace deve fragmentar – Existe um campo no cabeçalho IPv4 chamado DF (Dont Fragment) – Se estiver habilitado, fica impedida a fragmentação em qualquer enlace entre origem ↔ destino – Se houver necessidade de fragmentação com DF habilitado, o enlace que deveria fragmentar devolve: “destination unreachable, fragmentation needed, but DF bit set”
  • 36. Transporte● Tamanhos ● O TCP deve então identificar o menor MTU entre origem ↔ destino e armazenar este valor ● MSS (Maximum Segment Size) – Objetivo: evitar fragmentação – Pode ser enviado durante o estabelecimento da conexão (opcional) para compatibilizar cliente/servidor – Por padrão é calculado a partir do MTU – header IP – EX: em redes ethernet, o MSS = 1500 – 40 = 1460 bytes ● Obs: O UDP não controla MSS !
  • 37. Transporte● Controle de Fluxo – Regulado entre os pares pelo tamanho da janela ● Campo window size – especifica quantidade de bytes que o TCP pode receber – Algoritmo sliding window ● Funciona tanto no cliente, quanto no servidor!
  • 38. Transporte● Algoritmo sliding window – Imaginando que cada pacote possui 1000 bytes A .... B WS=3000 1 2 3 4 5 6 7 8 9 1 1 2 1 2 3 1 2 3 ACK 4 1 2 3 WS=2000 1 2 3 4 5 6 7 8 9 4 1 2 3 4 5 1 2 3 4 5 ACK 6 WS=4000
  • 39. Transporte ● Algoritmo sliding window – Imaginando que cada pacote possui 1000 bytes A .... B WS=3000 1 2 3 4 5 6 7 8 9 1 1 Após enviar o número Máximo de bytes, 2 1 2interrompe a transmissão 3 1 2 3 (Aguarda ACK) ACK 4 1 2 3 WS=2000 1 2 3 4 5 6 7 8 9 4 1 2 3 4 5 1 2 3 4 5 ACK 6 WS=4000
  • 40. Transporte● Algoritmo sliding window – Imaginando que cada pacote possui 1000 bytes A .... B WS=3000 1 2 3 4 5 6 7 8 9 1 1 Ao receber o ACK 2 1 2 A janela “desliza”! 3 1 2 3 ACK 4 1 2 3 WS=2000 1 2 3 4 5 6 7 8 9 4 1 2 3 4 5 1 2 3 4 5 ACK 6 WS=4000
  • 41. Transporte● Algoritmo sliding window – Imaginando que cada pacote possui 1000 bytes Envia o ACK após A .... B Liberar espaço em WS=3000 buffer 1 2 3 4 5 6 7 8 9 1 1 2 1 2 3 1 2 3 ACK 4 1 2 3 WS=2000 1 2 3 4 5 6 7 8 9 4 1 2 3 4 5 1 2 3 4 5 ACK 6 WS=4000
  • 42. Transporte ● Algoritmo sliding window – Imaginando que cada pacote possui 1000 bytes A .... B 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 81 2 3 4 5 6 7 8 9 ACK 9 1 2 3 4 5 6 7 8 WS=2000 9 1 2 3 4 5 6 7 8 9 ACK 101 2 3 4 5 6 7 8 9 ... 1 2 3 4 5 6 7 8 9 WS=4000
  • 43. Transporte ● Algoritmo sliding window – Imaginando que cada pacote possui 1000 bytes A .... B 1 2 3 4 5 6 7 8 9 1 2 3 4 5 Pode enviar um ACK 6 1 2 3 4 5 6 Antes de usar todo O buffer !!!! 7 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 81 2 3 4 5 6 7 8 9 ACK 9 1 2 3 4 5 6 7 8 WS=2000 9 1 2 3 4 5 6 7 8 9 ACK 101 2 3 4 5 6 7 8 9 ... 1 2 3 4 5 6 7 8 9 WS=4000
  • 44. Transporte● Não esquecer: – No exemplo, apenas foi retratado o fluxo de A para B, porém o fluxo pode ser A ↔ B – Tanto A, quanto B possem janelas de tamanhos provavelmente diferentes – O ACK number, vai junto com um pacote que pode conter dados piggybacking
  • 45. Transporte● Ao juntarmos o controle de fluxo com o controle de erros... – Durante o envio, um pacote não é recebido ou é recebido com erro – Existem dois algoritmos para tratamento de erros: ● Retransmissão integral ● Retransmissão seletiva
  • 46. Transporte● Retransmissão Integral (Go-Back-N) – Quando um pacote não é reconhecido, retransmite todos os pacotes a partir dele
  • 47. Transporte● Retransmissão Integral (Go-Back-N) A .... B WS=8000 1 2 3 4 5 6 7 8 9 1 1 2 1 2 3 4 1 2 4 5 1 2 4 5 6 1 2 4 5 6 ACK=3 1 2 4 5 6 1 2 3 4 5 6 7 8 9 WS= 8000 3 1 2 3 4 5 6 4 1 2 3 4 4 5 6 5 1 2 3 4 5 5 6
  • 48. Transporte● Retransmissão Integral (Go-Back-N) A .... B WS=8000 1 2 3 4 5 6 7 8 9 1 1 Retransmite a partir 2 1 2 Do quadro que não 3 Foi reconhecido 4 1 2 4 5 1 2 4 5 6 1 2 4 5 6 ACK=3 1 2 4 5 6 1 2 3 4 5 6 7 8 9 WS= 8000 3 1 2 3 4 5 6 4 1 2 3 4 4 5 6 5 1 2 3 4 5 5 6
  • 49. Transporte● Retransmissão Integral (Go-Back-N) A .... B WS=8000 1 2 3 4 5 6 7 8 9 Pacotes duplicados 1 1 São descartados 2 1 2 3 4 1 2 4 5 1 2 4 5 6 1 2 4 5 6 ACK=3 1 2 4 5 6 1 2 3 4 5 6 7 8 9 WS= 8000 3 1 2 3 4 5 6 4 1 2 3 4 4 5 6 5 1 2 3 4 5 5 6
  • 50. Transporte● Retransmissão Seletiva – Para cada pacote existe um temporizador de reconhecimento (TIME-OUT) – Situação 1 - se recebe um ACK por um pacote já transmitido, retransmite apenas o pacote esperado – Situação 2 - se não recebe o reconhecimento dentro deste período, retransmite apenas o pacote não reconhecido
  • 51. Transporte ● Retransmissão Seletiva (situação 1) A .... B WS=8000 1 2 3 4 5 6 7 8 9 1 1TIME-OUTs 2 1 2 3 4 1 2 4 5 1 2 4 5 6 1 2 4 5 6 ACK=3 1 2 4 5 6 1 2 3 4 5 6 7 8 9 WS= 8000 3 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4
  • 52. Transporte ● Retransmissão Seletiva (situação 2) A .... B WS=8000 1 2 3 4 5 6 7 8 9 1 1TIME-OUTs 2 1 2 ACK = 3 1 2 3 4 5 6 7 8 9 1 2 WS=8000 1 3 2 4 1 2 4 5 1 2 4 5 6 1 2 4 5 6 3 3 1 2 3 4 5 6 4 4 1 2 3 4 4 5 6 5 ACK = 7/WS=8000 6 1 2 3 4 5 6 7 8 9 7 1 2 3 4 5 6 7 ...
  • 53. Transporte● Controle de Congestionamento: – O TCP faz controle de congestionamento, contribuindo para o desempenho da rede – Algoritmo de slow start ● Além do window size da outra ponta (remoto), cada estação mantém um congestion window ● Ao iniciar uma comunicação TCP o congestion window possui o tamanho do MSS (maximum segment size)
  • 54. Transporte● Controle de Congestionamento: – Algoritmo de slow start ● O TCP respeita o menor valor entre o congestion window e o window size remoto ● Se o pacote enviado for reconhecido sem TIME-OUT, o congestion window é duplicado – Crescimento exponencial ● A cada TIME-OUT, TCP assume congestionamento e diminui o congestion window http://www.tcpipguide.com/free/t_TCPConnectionEstabl ishmentSequenceNumberSynchroniz-2.htm