Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática1Redes de ComputadoresRedes de Computado...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática2 Camada de TransporteCamada Aplicação –...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática3 Camada de TransporteCamada TransporteO...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática4 Camada de TransporteServiços e Protoco...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática5 Camada de TransporteCamadas de Transpo...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática6 Camada de TransporteProtocolos da Cama...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática7 Camada de TransporteServiços da camada...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática8 Camada de TransporteMultiplexagem e De...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática9 Camada de TransporteComputador recebe ...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática10 Camada de TransporteCriar sockets com...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática11 Camada de TransporteDesmultiplexagem ...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática12 Camada de TransporteSocket TCP identi...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática13 Camada de TransporteClienteIP:BP1clie...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática14 Camada de TransporteClienteIP:BP1clie...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática15 Camada de TransporteMultiplexagem e D...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática16 Camada de TransporteProtocolo de tran...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática17 Camada de TransporteAplicação Interne...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática18 Camada de TransporteUtilizado para ap...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática19 Camada de TransporteSoma de Verificaç...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática20 Camada de Transporte1 1 1 0 0 1 1 0 0...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática21 Camada de TransportechecksumChecksum ...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática22 Camada de TransporteTransporte sem Li...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática23 Camada de TransporteImportante nas ca...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática24 Camada de TransporteladoemissorLadore...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática25 Camada de TransporteVamos desenvolver...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática26 Camada de TransporteCanal de transmis...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática27 Camada de TransporteA questão: como r...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática28 Camada de Transporterdt2.0:Especifica...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática29 Camada de TransporteWait forcall from...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática30 Camada de TransporteWait forcall from...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática31 Camada de TransporteTratamento de dup...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática32 Camada de Transportesndpkt = make_pkt...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática33 Camada de Transportesndpkt = make_pkt...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática34 Camada de Transporterdt2.1: discussão...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática35 Camada de Transporterdt2.2: Protocolo...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática36 Camada de Transporteaguardachamada 0d...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática37 Camada de Transporterdt3.0: canais co...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática38 Camada de Transporterdt3.0: emissorsn...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática39 Camada de Transporterdt3.0: em acçãoA...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática40 Camada de Transporterdt3.0: em acção
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática41 Camada de Transporterdt3.0: Funcionam...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática42 Camada de TransporteDesempenho do rdt...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática43 Camada de TransporteProtocolos de jan...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática44 Camada de TransporteProtocolos de jan...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática45 Camada de TransporteVoltar atrás: Go-...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática46 Camada de TransporteGBN: Máquina de e...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática47 Camada de TransporteReceptor simples:...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática48 Camada de TransporteGBN em acção
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática49 Camada de TransporteReceptor reconhec...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática50 Camada de Transporte(a) Visão dos núm...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática51 Camada de Transporte1. Dados para env...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática52 Camada de TransporteRepetição Selecti...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática53 Camada de TransporteRepetição Selecti...
Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática54 Camada de TransportePrincípios da tra...
Upcoming SlideShare
Loading in …5
×

3 1 transporte 2010

233 views
121 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
233
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

3 1 transporte 2010

  1. 1. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática1Redes de ComputadoresRedes de ComputadoresCamada Transporte
  2. 2. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática2 Camada de TransporteCamada Aplicação – RevisãoPrincípios e caracteristicas dos protocolos dacamada de aplicaçãoA Web e o HTTP (Hypertext Transfer Protocol)Transferência de Ficheiros (File Transfer)– File Transfer Protocol (FTP)Correio Electrónico– SMTP: Simple Mail Transfer Protocol, POP3, IMAPServiço de nomes da Internet– DNS: Domain Name System protocolPartilha de Ficheiros Peer-to-Peer (P2P)Princípios e caracteristicas dos protocolos dacamada de aplicaçãoA Web e o HTTP (Hypertext Transfer Protocol)Transferência de Ficheiros (File Transfer)– File Transfer Protocol (FTP)Correio Electrónico– SMTP: Simple Mail Transfer Protocol, POP3, IMAPServiço de nomes da Internet– DNS: Domain Name System protocolPartilha de Ficheiros Peer-to-Peer (P2P)aplicaçãotransporteredelógicafísica
  3. 3. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática3 Camada de TransporteCamada TransporteObjectivos:Aprender sobre os protocolos da camada de transporte da Internet, e principios destes.Objectivos:Aprender sobre os protocolos da camada de transporte da Internet, e principios destes.Serviços da camada de transporteMultiplexagem e desmultiplexagemTransporte não orientado à ligação: UDPPrincípios da transferência fiável de dadosTransporte orientado à ligação: TCP– transferência fiável de dados– controlo do fluxo– Gestão de ligaçõesPrincipios do controlo do congestionamento– Controlo de congestionamento do TCPSegue Capitulo 3 do livro de J.F Kurose e K.W. Rossaplicaçãotransporteredelógicafísica
  4. 4. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática4 Camada de TransporteServiços e Protocolos de TransporteOs protocolos da camada detransporte executam-se nossistemas terminais e fornecem umserviço de comunicação ao nívellógico entre as aplicações– lado emissor: quebra asmensagens da aplicação emsegmentos, repassa-os para acamada de rede– lado receptor: remonta asmensagens a partir dossegmentos, repassa-as para acamada de aplicaçãoProtocolos de transporte: TCP, UDPaplicaçãotransporteredeligaçãofísicaredeligaçãofísicaaplicaçãotransporteredeligaçãofísicaredeligaçãofísicaredeligaçãofísicaredeligaçãofísicaredeligaçãofísicatransportelógico“end2end”
  5. 5. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática5 Camada de TransporteCamadas de Transporte vs Redecamada de rede– Transferência de dadosentre sistemas terminais– Não reconhecem, nemactuam, sobre informaçãoadicionada pela camadade transportecamada de transporte– comunicação lógica entreprocessos– depende de, e estende,os serviços da camada deredeAnalogia doméstica:12 crianças enviam cartas a12 criançasprocessos = criançasmensagens da aplicação =cartas nos envelopesSistemas terminais = casasprotocolo de transporte =Ana e Joaquimprotocolo da camada derede = serviço postalAnalogia doméstica:12 crianças enviam cartas a12 criançasprocessos = criançasmensagens da aplicação =cartas nos envelopesSistemas terminais = casasprotocolo de transporte =Ana e Joaquimprotocolo da camada derede = serviço postalAs entidades da camada de transporte trocam entre si segmentos ou TPDU’s (“Transport Protocol Data Unit”)processoTCPouUDPsocketIP
  6. 6. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática6 Camada de TransporteProtocolos da Camada deTransporte – InternetComunicação fiável; com garantia de entrega na ordem de extremo aextremo “unicast” (TCP)– controlo de congestão– controlo de fluxo– estabelecimento e gestão de ligações (“setup”)Protocolo leve; entrega não fiável; sem garantia de controlo de fluxo,controlo da congestão, ou entrega na ordem; de um extremo para umou mais extremos (“unicast” ou “multicast”): UDP– Entrega de dados entre processos– Detecção de errosServiços da camada de Rede– IP: serviço de entrega não fiável entre sistemas terminais: “melhor esforço”Serviços não disponíveis:– garantias de atraso máximo– garantias de largura de banda mínima
  7. 7. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática7 Camada de TransporteServiços da camada de transporte –RevisãoServiços da camada de transporteMultiplexagem e desmultiplexagemTransporte não orientado à ligação: UDPPrincípios da transferência fiável de dadosTransporte orientado à ligação: TCP– transferência fiável de dados– controlo do fluxo– Gestão de ligaçõesPrincipios do controlo docongestionamento– Controlo de congestionamento do TCPServiços e Protocolosde TransporteCamadas deTransporte vs RedeProtocolos daCamada deTransporte – InternetServiços e Protocolosde TransporteCamadas deTransporte vs RedeProtocolos daCamada deTransporte – Internet
  8. 8. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática8 Camada de TransporteMultiplexagem e DesmultiplexagemEntrega dos segmentosrecebidos ao socket correctoDesmultiplexagem-receptorreúne dados de muitos sockets ecoloca o cabeçalho (usado depoispara a desmultiplexagem)Multiplexagem-emissormensagemsegmentodatagrama HtHn MHt MMEncapsulamento
  9. 9. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática9 Camada de TransporteComputador recebe os datagramas IP– cada datagrama possui osendereços IP da origem e dodestino– cada datagrama transporta 1segmento da camada de transportese sem fragmentação IP– cada segmento possui números dasportas origem e destino (lembrar:números de portas bem conhecidaspara aplicações específicas)O sistema terminal usa os endereços IPe os números das portas paradireccionar o segmento ao socketapropriadoComo funciona a Desmultiplexagemporto emissor porto receptor32 bitsdados daaplicação(mensagem)outros camposdo cabeçalhoformato do segmento TCP/UDPNúmeros ds portos: 16 bits (0 – 65535)0 – 1023 restritos para uso por aplicações conhecidas• e.g. HTTP no porto 80, FTP no 21 (www.iana.org)
  10. 10. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática10 Camada de TransporteCriar sockets com números de portoDatagramSocket mySocket1 = newDatagramSocket();DatagramSocket mySocket2 = newDatagramSocket(9157);socket UDP identificado pelo par– endereço IP destino– número do porto destinoAtribuição de números de portos:– Lado cliente aplicação: deixa acamada de transporte atribuir onúmero porto de forma transparente– Laso servidor da aplic. Atribui umnúmero de porto especificoQuando o receptor recebesegmento UDP:– verifica número do porto dedestino no segmento– encaminha o segmento UDP parao socket com aquele número deportoDatagramas IP com diferentesendereços IP origem e/ounúmeros de porta origem podemser encaminhados para o mesmosocketDesmultiplexagem sem Ligação
  11. 11. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática11 Camada de TransporteDesmultiplexagem sem Ligação (cont.)DatagramSocket serverSocket = new DatagramSocket(6428);ClienteIP:BP2clienteIP: AP1P1P3servidorIP: CSP: 6428DP: 9157SP: 9157DP: 6428SP: 6428DP: 5775SP: 5775DP: 6428SP (source port) fornece “endereço de retorno”SP (source port) fornece “endereço de retorno”Multiplexagem Desmultiplexagem
  12. 12. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática12 Camada de TransporteSocket TCP identificado pelaquádrupla:– endereço IP origem– número da porta origem– endereço IP destino– número da porta destinoreceptor usa todos os quatrovalores para direccionar osegmento para o socketapropriadoServidor pode dar suporte amuitos sockets TCPsimultâneos– cada socket é identificado pelasua própria quádruplaServidores Web têm socketsdiferentes para cada ligaçãocliente– HTTP não persistente terásockets diferentes para cadapedidoDesmultiplexagem com Ligação
  13. 13. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática13 Camada de TransporteClienteIP:BP1clienteIP: AP1P2P4servidorIP: CSP: 9157DP: 80SP: 9157DP: 80P5 P6 P3D-IP:CS-IP: AD-IP:CS-IP: BSP: 5775DP: 80D-IP:CS-IP: BDesmultiplexagem com Ligação(cont.)Desmultiplexagem
  14. 14. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática14 Camada de TransporteClienteIP:BP1clienteIP: AP1P2servidorIP: CSP: 9157DP: 80SP: 9157DP: 80P3D-IP:CS-IP: AD-IP:CS-IP: BSP: 5775DP: 80D-IP:CS-IP: BDesmultiplexagem com Ligação– Servidor Web com ThreadsP4Desmultiplexagem
  15. 15. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática15 Camada de TransporteMultiplexagem e Desmultiplexagem– RevisãoServiços da camada de transporteMultiplexagem e desmultiplexagemTransporte não orientado à ligação: UDPPrincípios da transferência fiável de dadosTransporte orientado à ligação: TCP– transferência fiável de dados– controlo do fluxo– Gestão de ligaçõesPrincipios do controlo docongestionamento– Controlo de congestionamento do TCPComo funciona aDesmultiplexagemDesmultiplexagemsem LigaçãoDesmultiplexagemcom Ligação– Servidor Webcom ThreadsComo funciona aDesmultiplexagemDesmultiplexagemsem LigaçãoDesmultiplexagemcom Ligação– Servidor Webcom Threads
  16. 16. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática16 Camada de TransporteProtocolo de transporte mínimo(adiciona pouco ao IP)– Serviço de (Des)Multiplexagem– Simples detecção de errosServiço “melhor esforço”,segmentos UDP podem ser:– perdidos– entregues à aplicação fora deordemSem ligação– não há “setup” UDP entreemissor, receptor– cada segmento UDP é tratadoindependentemente dos outroselimina estabelecimento deligação– o que pode causar atrasosimples: não se mantém “estado”da ligação ao nível da camadade transporte– nem no emissor, nem noreceptorcabeçalho de segmento reduzidoemissor pode transmitir aqualquer ritmo, tão rápido quantodesejado (e possível)– não há controlo de congestãoUDP: User Datagram ProtocolVantagens do UDP[RFC 768]Protocolo de transporte da Internet
  17. 17. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática17 Camada de TransporteAplicação Internetcorreio electrónicoacesso em terminal remotoWebtransferência de ficheirosstreaming multimediaservidor de ficheiros remotoTelefone sobre InternetGestão de redesProtocolo de encaminhamentoTradução de nomesProtocolo dacamada de aplicaçãoSMTPtelnetHTTPFTPHTTP(ex. YouTube), RTPNFSProprietários (Skype)SNMPRIPDNSProtocolo detransporte usadoTCPTCPTCPTCPtipicamente UDPtipicamente UDPtipicamente UDPtipicamente UDPtipicamente UDPtipicamente UDPAplicações Internet: protocolos deaplicação e de transporte – Recapitular
  18. 18. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática18 Camada de TransporteUtilizado para aplicações multimédia– tolerantes a perdas– sensíveis à taxa de transmissãoOutras aplicações:– DNS (nomes)– SNMP (gestão de redes)Uma aplicação pode incluirmecanismos de transferência dedados fiável, mesmo usando UDPao nível de transporte– acrescentar fiabilidade na camadade aplicação– recuperação de erro específica àaplicaçãoporto origem porto dest.32 bitsDados deaplicação(mensagem)Formato do segmento UDPcomprimento checksumComprimento em bytesdo segmento UDP,incluindo cabeçalhosoma deverificação(checksum)Caracteristicas e Formato dasMensagens UDP
  19. 19. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática19 Camada de TransporteSoma de Verificação (checksum) UDPEmissortrata conteúdo do segmento comosequencia de inteiros de n-bits (16 bits)campo checksum inicializado a zeroMétodo Soma-Modularemissor coloca complemento do valor dasoma no campo checksumsoma (adição usando complemento de 1) doconteúdo do segmento (RFC[1071] paradetalhes sobre algoritmo eficiente de calculo)Método Parity byte or parity wordchecksum: exclusive-or do conteúdo dosegmentoReceptorcalcula checksum do segmentorecebido anexado com o valorde checksum enviado– cálculo usando exclusive-or ousoma-modular conformealgoritmo usado pelo emissorverifica se novo checksumcalculado é palavra com n– 0s (Método Parity byte or parityword)– 1s (Método Soma-Modular)NÃO - erro detectadoSIM - nenhum erro detectadoReceptorcalcula checksum do segmentorecebido anexado com o valorde checksum enviado– cálculo usando exclusive-or ousoma-modular conformealgoritmo usado pelo emissorverifica se novo checksumcalculado é palavra com n– 0s (Método Parity byte or parityword)– 1s (Método Soma-Modular)NÃO - erro detectadoSIM - nenhum erro detectadoObjectivo: detectar “erros” (ex.: bits trocados) no segmento transmitidoErros devido por exemplo a ruído nas ligações fisicas ou na memória do router, ...
  20. 20. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática20 Camada de Transporte1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1soma de verificação(checksum)Checksum Internet – ErrosMétodo Parity byte or parity word1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 0 1 0 1 0 1 0 1 0 1 0 1 0 11 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 11 0 1 1 1 0 1 1 1 0 1 1 1 1 0 00 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1Método da soma-modularsoma de verificação(checksum)
  21. 21. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática21 Camada de TransportechecksumChecksum Internet – Errosmétodo parity-bytemétodo da soma-modularErros de transmissão que originem oflip de apenas 1 bit da mensagem, oude um número impar de bits, irão serdetectados checksum incorrectodois bits errados podem não serdetectados se bits estão na mesmaposição em duas palavras diferentesErros de transmissão que originem oflip de apenas 1 bit da mensagem, oude um número impar de bits, irão serdetectados checksum incorrectodois bits errados podem não serdetectados se bits estão na mesmaposição em duas palavras diferentes0010 11Para uma selecção aleatórea debits erradamente transmitidos, aprobabilidade de um erro de doisbits não ser detectado é1/n no método parity-bytemenor a 1/n no método dasoma-modularPara uma selecção aleatórea debits erradamente transmitidos, aprobabilidade de um erro de doisbits não ser detectado é1/n no método parity-bytemenor a 1/n no método dasoma-modular00001Flip de dois bits não detectadoFlip de dois bits detectado!1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 0 1 1 0 0 1 1 0 0 1 1 0 0 1 10 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
  22. 22. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática22 Camada de TransporteTransporte sem Ligação: UDP– RevisãoServiços da camada de transporteMultiplexagem e desmultiplexagemTransporte não orientado à ligação: UDPPrincípios da transferência fiável de dadosTransporte orientado à ligação: TCP– transferência fiável de dados– controlo do fluxo– Gestão de ligaçõesPrincipios do controlo docongestionamento– Controlo de congestionamento do TCPUDP: UserDatagram Protocol– Caracteristicas eFormato dasMensagens UDPSoma deVerificação(checksum) UDP– ChecksumInternet – ErrosUDP: UserDatagram Protocol– Caracteristicas eFormato dasMensagens UDPSoma deVerificação(checksum) UDP– ChecksumInternet – Erros
  23. 23. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática23 Camada de TransporteImportante nas camadas de transporte e ligação de dadosPrincípios de Transferência fiável de dados- Reliable Data Transfer (rdt)Camada deaplicaçãoCamada detransporteCamadade redeAs características do canal de comunicação não fiável que está por baixodeterminam a complexidade do protocolo de transferência de dados fiável– Com um canal fiável, nenhum bit está corrompido ou está perdido, e todos sãoentregues na ordem com que foram enviadosAs características do canal de comunicação não fiável que está por baixodeterminam a complexidade do protocolo de transferência de dados fiável– Com um canal fiável, nenhum bit está corrompido ou está perdido, e todos sãoentregues na ordem com que foram enviados
  24. 24. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática24 Camada de TransporteladoemissorLadoreceptorrdt_send(): chamado da camada de cima,(e.g. pela aplicação). Envia dados paraentrega à camada superior do receptorudt_send(): chamado pela entidade detransporte rdt, para transferir pacotes parao receptor através de um canal não fiávelrdt_rcv(): chamado quando ospacotes chegam ao canal no ladodo receptordeliver_data(): chamadopor rdt para entregar dados àcamada superiorTransferência de dados fiável:Implementação
  25. 25. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática25 Camada de TransporteVamos desenvolver incrementalmente os lados do emissor e receptor doprotocolo de transferência de dados fiável (rdt)Considerar apenas transferência de dados unidirecional– mas a informação de controlo flui em ambos os sentidosUsar máquinas de estados finitas (FSM) para especificar o emissor e o receptorestado1estado2evento que causa transição de estadoacções a executar na transição de estadoestado: quando seesperam eventos.Quando num estado, opróximo estado éunicamentedeterminado pelopróximo eventoeventosacçõesTransferência de dados fiável– MetodologiaEstadoinicialΛ- Nenhuma acção no evento, ou nenum evento ocorre quando acção é executada
  26. 26. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática26 Camada de TransporteCanal de transmissão que está por baixo é perfeitamente fiável– não há erros nos bits– não há perda de pacotesMáquinas de estados separadas para o emissor e o receptor– emissor envia dados para o canal– receptor lê os dados do canalCanal de transmissão que está por baixo é perfeitamente fiável– não há erros nos bits– não há perda de pacotesMáquinas de estados separadas para o emissor e o receptor– emissor envia dados para o canal– receptor lê os dados do canalrdt1.0: transferência de dados fiávelsobre canal fiávelEsperadados decimapacket = make_pkt(data)udt_send(packet)rdt_send(data) Esperadados debaixordt_rcv(packet)emissor receptorextract(packet, data)deliver_data(data)
  27. 27. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática27 Camada de TransporteA questão: como recuperar esses erros?– confirmações positivas (acknowledgements, ACKs)receptor informa, explicitamente, o emissor que recebeu um pacote sem erros– confirmações negativas (negative acknowledgements NAKs)receptor informa, explicitamente, o emissor que o pacote recebido tem erros– emissor retransmite o pacote quando recebe o NAKProtocolos rdt baseados na retransmissãoConhecidos como protocolos ARQ (Automatic Repeat reQuest)Novos mecanismos em rdt2.0 (para além de rdt1.0):– Detecção de erros– Resposta (feedback) do receptor:mensagens de controlo (ACK,NAK) receptor emissor– Retransmissão em caso de errosA questão: como recuperar esses erros?– confirmações positivas (acknowledgements, ACKs)receptor informa, explicitamente, o emissor que recebeu um pacote sem erros– confirmações negativas (negative acknowledgements NAKs)receptor informa, explicitamente, o emissor que o pacote recebido tem erros– emissor retransmite o pacote quando recebe o NAKProtocolos rdt baseados na retransmissãoConhecidos como protocolos ARQ (Automatic Repeat reQuest)Novos mecanismos em rdt2.0 (para além de rdt1.0):– Detecção de erros– Resposta (feedback) do receptor:mensagens de controlo (ACK,NAK) receptor emissor– Retransmissão em caso de errosrdt2.0: canal introduz erros nos bitsCanal que está por baixo pode trocar bits nos pacotes introduzindo erros - não perde pacotes
  28. 28. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática28 Camada de Transporterdt2.0:Especificação da Máquina de Estadosextract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)udt_send(NAK)rdt_rcv(rcvpkt) && corrupt(rcvpkt)Esperadados debaixoEmissor ReceptorEsperadados decimasndpkt = make_pkt(data, checksum)udt_send(sndpkt)rdt_rcv(rcvpkt) && isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt) && isNAK(rcvpkt)EsperaACK ouNAKrdt_send(data)Λpredicado
  29. 29. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática29 Camada de TransporteWait forcall fromabovesnkpkt = make_pkt(data, checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt) &&notcorrupt(rcvpkt)rdt_rcv(rcvpkt) && isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt) &&isNAK(rcvpkt)udt_send(NAK)rdt_rcv(rcvpkt) &&corrupt(rcvpkt)Wait forACK orNAK Wait forcall frombelowrdt_send(data)Λrdt2.0: Funcionamento sem ErrosEmissor Receptor
  30. 30. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática30 Camada de TransporteWait forcall fromabovesnkpkt = make_pkt(data, checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt) &&notcorrupt(rcvpkt)rdt_rcv(rcvpkt) && isACK(rcvpkt)udt_send(sndpkt)udt_send(NAK)rdt_rcv(rcvpkt) &&corrupt(rcvpkt)Wait forACK orNAK Wait forcall frombelowrdt_send(data)Λrdt2.0: Cenário de Errosrdt_rcv(rcvpkt) &&isNAK(rcvpkt)Emissor Receptor
  31. 31. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática31 Camada de TransporteTratamento de duplicadosemissor acrescenta número desequência a cada pacoteemissor retransmite o pacotecorrente se o ACK/NAK secorromperreceptor descarta (não os entregaà aplicação) pacotes duplicadosO que acontece se os ACKs ouos NAKs se corromperem?O emissor não sabe o que sepassou no receptor!A simples retransmissão podeoriginar pacotes duplicadosO que fazer?Emissor envia ACKs/NAKsreferentes aos ACK/NAK doreceptor?– E se se perder os ACK/NAKdo emissor?Retransmite-se!?parar e esperarStop and waitrdt2.0 – mau funcionamentoEmissor envia um pacote eespera pela resposta do receptor
  32. 32. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática32 Camada de Transportesndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)rdt_send(data)udt_send(sndpkt)rdt_rcv(rcvpkt) && ( corrupt(rcvpkt)|| isNAK(rcvpkt) )sndpkt = make_pkt(1, data, checksum)udt_send(sndpkt)rdt_send(data)rdt_rcv(rcvpkt)&& notcorrupt(rcvpkt)&& isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt) &&( corrupt(rcvpkt) ||isNAK(rcvpkt) )rdt_rcv(rcvpkt)&& notcorrupt(rcvpkt)&& isACK(rcvpkt)Esperadados 0de cimaesperaACK ouNAK 0Esperadados 1de cimaesperaACK ouNAK 1ΛΛrdt2.1: Emissor trataACK/NAKs corrompidos
  33. 33. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática33 Camada de Transportesndpkt = make_pkt(NAK, chksum)udt_send(sndpkt)rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt)rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt)extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt)extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)rdt_rcv(rcvpkt) && (corrupt(rcvpkt)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)rdt_rcv(rcvpkt) &&not corrupt(rcvpkt) &&has_seq1(rcvpkt)rdt_rcv(rcvpkt) &&(corrupt(rcvpkt)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)sndpkt = make_pkt(NAK, chksum)udt_send(sndpkt)Esperadados 0de baixoEsperadados 1de baixordt2.1: Receptor, trataACK/NAKs corrompidos
  34. 34. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática34 Camada de Transporterdt2.1: discussãoEmissor:Nº de sequência adicionado acada pacotebastam dois nºs de sequência(0,1)Tem de se verificar seACKs/NAKs recebidos estãocorrompidosduplicou o nº de estados– O estado tem de se “lembrar” seo pacote “corrente” tem o nº desequência 0 ou 1Receptor:Tem de verificar se recebeupacotes duplicados– o estado indica se seespera um pacote com onº de sequência 0 ou 1nota: receptor não temcomo saber se o últimoACK/NAK foi recebidocorrectamente pelo emissor
  35. 35. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática35 Camada de Transporterdt2.2: Protocolo sem NAKsA mesma funcionalidade do rdt2.1, mas usandoapenas ACKsao invés de NAK, receptor envia um ACK por cadapacote recebido sem erro– receptor tem de incluir explicitamente o nº desequência do pacote a ser confirmado, isto é, ACKedA recepção de dois ACKs seguidos para o mesmopacote no emissor resulta na mesma acção que umNAK: retransmissão do pacote seguinte ao últimopacote enviado sem erroA mesma funcionalidade do rdt2.1, mas usandoapenas ACKsao invés de NAK, receptor envia um ACK por cadapacote recebido sem erro– receptor tem de incluir explicitamente o nº desequência do pacote a ser confirmado, isto é, ACKedA recepção de dois ACKs seguidos para o mesmopacote no emissor resulta na mesma acção que umNAK: retransmissão do pacote seguinte ao últimopacote enviado sem erro
  36. 36. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática36 Camada de Transporteaguardachamada 0de cimasndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)rdt_send(data)udt_send(sndpkt)rdt_rcv(rcvpkt) &&( corrupt(rcvpkt) ||isACK(rcvpkt,1) )rdt_rcv(rcvpkt)&& notcorrupt(rcvpkt)&& isACK(rcvpkt,0)aguardaACK0Emissor parcial (fragmentoFSM do emissor)aguarda0 debaixordt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt)extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK,1, chksum)udt_send(sndpkt)rdt_rcv(rcvpkt) &&(corrupt(rcvpkt) ||has_seq1(rcvpkt))udt_send(sndpkt)Receptor parcial Λrdt2.2: fragmentos doemissor e receptor
  37. 37. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática37 Camada de Transporterdt3.0: canais com erros e perdasNova hipótese: canal de transmissão que está por baixo também podeperder pacotes (dados ou ACKs)– Para recuperar da perda de pacotes, usa-se checksum, nº desequência, ACK’s e retransmissões– Mas como determinar a perda de pacotes?Nova hipótese: canal de transmissão que está por baixo também podeperder pacotes (dados ou ACKs)– Para recuperar da perda de pacotes, usa-se checksum, nº desequência, ACK’s e retransmissões– Mas como determinar a perda de pacotes?Abordagem: o emissor aguarda um tempo “razoável” pelo ACKretransmite se nenhum ACK for recebido neste intervalose pacote (ou ACK) estiver apenas atrasado (e não perdido):– retransmissão provoca um pacote duplicado, mas o uso do nº desequência possibilita detecção correcta no receptor– receptor deve especificar nº de sequência do pacote sendo reconhecidorequisitos adicionais– Receptor tem de incluir em cada ACK o nº de seq. do pacote que está a confirmar– requer temporizador (“timer”)Abordagem: o emissor aguarda um tempo “razoável” pelo ACKretransmite se nenhum ACK for recebido neste intervalose pacote (ou ACK) estiver apenas atrasado (e não perdido):– retransmissão provoca um pacote duplicado, mas o uso do nº desequência possibilita detecção correcta no receptor– receptor deve especificar nº de sequência do pacote sendo reconhecidorequisitos adicionais– Receptor tem de incluir em cada ACK o nº de seq. do pacote que está a confirmar– requer temporizador (“timer”)
  38. 38. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática38 Camada de Transporterdt3.0: emissorsndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)start_timerrdt_send(data)EsperaACK 0rdt_rcv(rcvpkt) &&( corrupt(rcvpkt) ||isACK(rcvpkt,1) )Esperachamada 1de cimasndpkt = make_pkt(1, data, checksum)udt_send(sndpkt)start_timerrdt_send(data)rdt_rcv(rcvpkt)&& notcorrupt(rcvpkt)&& isACK(rcvpkt,0)rdt_rcv(rcvpkt) &&( corrupt(rcvpkt) ||isACK(rcvpkt,0) )rdt_rcv(rcvpkt)&& notcorrupt(rcvpkt)&& isACK(rcvpkt,1)stop_timerstop_timertimeoutudt_send(sndpkt)start_timertimeoutrdt_rcv(rcvpkt)Esperachamada 0de cimaEsperaACK 1Λrdt_rcv(rcvpkt)ΛΛΛudt_send(sndpkt)start_timer
  39. 39. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática39 Camada de Transporterdt3.0: em acçãoAlternating-bit protocol
  40. 40. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática40 Camada de Transporterdt3.0: em acção
  41. 41. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática41 Camada de Transporterdt3.0: Funcionamento do stop-and-waitemissorúltimo bit do 1º pacotetransmitido, t = L / Rchegada do 1º bit do pacotechegada do último bit doprimeiro pacote, envia ACKACK chega, envia próximopacote, t = RTT + L / R1º bit do 1º pacote transmitido, t = 0receptorDesprezando• duração do ACK• tempo de processamento• atraso de filas de espera• atrasos nos nósintermédiosRTT
  42. 42. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática42 Camada de TransporteDesempenho do rdt3.0stop-and-waitExemplo:Ligação de 1 GbpsTempo de propagação extremo-a-extremo de 15 mspacote de 1KBrdt3.0 funciona, mas o desempenho...Ttransmissão =L (tamanho pacote em bits)10^9 b/seg= 8 segUemissor: utilização ou eficiência – fracção do tempo que o emissor está ocupado a enviarUe m is s o r=.0 0 83 0 .0 0 8= 0 .0 0 0 2 7m ic r o s e cL / RR T T + L / R=8kb/pacoteµR (ritmo de transmissão, bps)=Pacote de 1KB cada 27 mseg - débito de 37kB/seg numa ligação de 1 GbpsO protocolo de comunicação limita o uso dos recursos físicos!
  43. 43. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática43 Camada de TransporteProtocolos de janela(em pipeline)Técnica de janela (pipeline): o emissor envia múltiplos pacotes deseguida, sem esperar pela confirmação de cada um– Intervalo dos números de sequência tem de aumentar (do nº de bits para anumeração de pacotes)– Armazenamento no emissor e/ou no receptorTécnica de janela (pipeline): o emissor envia múltiplos pacotes deseguida, sem esperar pela confirmação de cada um– Intervalo dos números de sequência tem de aumentar (do nº de bits para anumeração de pacotes)– Armazenamento no emissor e/ou no receptor(a) operação do protocolo stop-and-wait (b) operação do protocolo com pipelineDuas formas genéricas de protocolos de janela: Go-back-N, Repetição Selectiva
  44. 44. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática44 Camada de TransporteProtocolos de janela (pipeline): maiorutilização1º bit transmitido, t = 0emissor receptorúltimo bit do 1º pacotetransmitido, t = L / R1º bit do pacote chegaúltimo bit do pacote chega, envia ACKACK chega, enviapróximo pacotet = RTT + L / Rúltimo bit do 2o pacote chega, envia ACKúltimo bit do 3º pacote chega, envia ACKAumenta a utilizaçãopor um factor de 3!0008,0008,30024,0/RTT/3tx ==+×=RLRLURTT
  45. 45. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática45 Camada de TransporteVoltar atrás: Go-back-N (GBN)Emissor:Cabeçalho do pacote com k-bits para o nº de sequência ([0,2k-1] modulo 2k)Protocolo de janela deslizante (Sliding-window protocol)– “janela” de tamanho N - até N pacotes consecutivos, ainda não confirmados– Janela desliza para a frente ao longo dos números de sequência à medida que recebe ACKsACK(n): confirma todos os pacotes até o nº de sequência n– ACK cumulativo, podem ser recebidos ACKs duplicados (ver receptor)temporizador único para o pacote mais antigo por confirmartimeout(n): retransmite pacote n e pacotes de nº de seq. superior na janelaenvia um nº máximo de pacotes de seguida, sem esperar por ACKsnúmeros de sequência
  46. 46. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática46 Camada de TransporteGBN: Máquina de estadosestendida do emissorACK basedNAK freeΛbase = 1nestseqnum = 1rdt_rcv(rcvpkt) && corrupt(rcvpkt)ΛNum cenário mais realista• Se janela cheia, pacotescolocados em fila de espera• Ou implementação de semáforos
  47. 47. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática47 Camada de TransporteReceptor simples:ACK: envia sempre ACK com nº de seq. mais elevado para os pacotes recebidoscorrectamente e ordenadamente– pode gerar ACKs duplicados– só tem de memorizar o nº de sequência esperado: expectedseqnumPacotes fora de ordem:1. descarta (não armazena) - não há necessidade de armazenamento (buffers) no receptor2. Reconfirma o último pacote que chegou na ordemGBN: Máquina de estadosestendida do receptorΛexpectedseqnum = 1Make_pkt(sndpkt,0, ACK, checksum)
  48. 48. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática48 Camada de TransporteGBN em acção
  49. 49. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática49 Camada de TransporteReceptor reconhece (ACKed) individualmente de todos ospacotes correctamente recebidos– armazena pacotes em fila de espera, conforme necessário,para posterior entrega, em-ordem, à camada superiorEmissor apenas reenvia pacotes para os quais o ACK nãotenha sido recebido– temporizador no emissor para cada pacote sem ACKJanela do emissor– N números de sequência consecutivos– novamente limita os números de sequência dos pacotesenviados, por confirmarRepetição Selectiva (“Selective-Repeat”)Problema com GBN: Se relação (janela N x atrasos no canal) grande=> pipeline pode ficar cheio em caso de erro num só pacote
  50. 50. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática50 Camada de Transporte(a) Visão dos números de sequência no emissor(b) Visão dos números de sequência no receptorRepetição Selectiva: janela do emissor ereceptor
  51. 51. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática51 Camada de Transporte1. Dados para enviar:se o próximo nº de seqdisponível cabe na janela,envia o pacote2. Timeout –Temporizador(n)expirou:reenvia pacote n, reinicia otemporizador3. ACK(n) em [sendbase,sendbase+N]:marca pacote n comoconfirmadose n é o pacote mais antigopor confirmar, avança a baseda janela para o próximopacote por confirmarPacote n em [rcvbase, rcvbase+N-1]envia ACK(n)fora de ordem: armazenaPor ordem:– entrega (também entrega os pacotesem ordem na fila de espera)– avança a janela para o próximopacote ainda não recebidoPacote n em [rcvbase-N,rcvbase-1]ACK(n)Doutro modo:ignorareceptoremissorRepetição Selectiva
  52. 52. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática52 Camada de TransporteRepetição Selectivaem acçãoJanela do emissorJanela do receptor
  53. 53. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática53 Camada de TransporteRepetição Selectiva:dilemaExemplo:Nºs de seq.: 0, 1, 2, 3Dimensão da janela =3Dados duplicados sãopassados incorretamente comonovos em (a)O receptor não vê diferençasentre os dois cenários!Qual a relação entre o númerode nºs de sequência disponíveise a dimensão da janela?Tamanho janela ≤ (2k-1)/2Na realidade, pode occorrer narede a reordenação de pacotes
  54. 54. Artur ArsenioRedes de Computadores 2010/2011Departamento de Engenharia Informática54 Camada de TransportePrincípios da transferência fiável dedados – RevisãoServiços da camada de transporteMultiplexagem e desmultiplexagemTransporte não orientado à ligação: UDPPrincípios da transferência fiável de dadosTransporte orientado à ligação: TCP– transferência fiável de dados– controlo do fluxo– Gestão de ligaçõesPrincipios do controlo docongestionamento– Controlo de congestionamento do TCPtransferência fiável– rtd1.0: canais fiáveis– rtd2.0 canal introduzerros nos bits2.1 ACKs e NAKscorrompidos2.2 Sem NAKs– rtd3.0 canais comerros e perdasProtocolos comparalelismo (empipeline)– Go-back-N– Repetição Selectivatransferência fiável– rtd1.0: canais fiáveis– rtd2.0 canal introduzerros nos bits2.1 ACKs e NAKscorrompidos2.2 Sem NAKs– rtd3.0 canais comerros e perdasProtocolos comparalelismo (empipeline)– Go-back-N– Repetição Selectiva

×