Aula 7   camada de transporte
Upcoming SlideShare
Loading in...5
×
 

Aula 7 camada de transporte

on

  • 1,743 views

 

Statistics

Views

Total Views
1,743
Views on SlideShare
1,743
Embed Views
0

Actions

Likes
0
Downloads
91
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Aula 7   camada de transporte Aula 7 camada de transporte Presentation Transcript

  • Fundamento de Redes de Computadores Aula 7 Camada de Transporte
  • Notas da Aula✔ A avaliação será dia 24 de Abril. ✔ Individual e sem consulta.● Fundamentos de Redes de Computadores 2/38
  • Relembrando as Camadas Fundamentos de Redes de Computadores 3/38
  • Serviços da Camada de TransporteOferecem comunicação lógica entre processos de aplicação aplicação transporte rodando em hospedeiros rede enlace diferentes física tra nsProtocolos de transporte rodam em po sistemas finais rte Lado remetente: divide as msgs da ló − gi aplicação em segmentos, passa à co camada de rede fim −Lado destinatário: remonta os a fim segmentos em msgs, passa à camada de aplicação aplicação transporteMais de um protocolo de transporte rede enlace disponível às aplicações física − Internet: TCP e UDP Fundamentos de Redes de Computadores 4/38
  • Camada de Transporte Versus RedeCamada de rede: Analogia com a família: comunicação lógica 12 crianças mandando entre hospedeiros carta a 12 criançasCamada de transporte: − Processos = crianças comunicação lógica − Msgs da aplicação = entre processos cartas nos envelopes − Conta com e amplia os − Hospedeiros = casas serviços da camada − Protocolo de transporte de rede = Ana e Bill − Protocolo da camada de rede = serviço postal Fundamentos de Redes de Computadores 5/38
  • Protocolos da Camada de Transporte da InternetRemessa confiável e em aplicação ordem (TCP) transporte rede −Controle de congestionamento enlace física −Controle de fluxo rede lo enlace rede gi −Estabelecimento da conexão enlace ca física física leRemessa não confiável e nd rede -e desordenada: UDP enlace nd física tra −Extensão sem luxo do IP pelo rede ns enlace po “melhor esforço” física rt network rede data linkServiços não disponíveis: enlace physical física rede aplicação enlace transporte −Garantias de atraso física rede enlace −Garantias de largura de banda física Fundamentos de Redes de Computadores 6/38
  • Multiplexação / Demultiplexaçãodemultiplexação no destinatário: multiplexação no remetente: entregando segmentos colhendo dados de múltiplos recebidos ao socket correto sockets, envelopando dados com cabeçalho (usados depois = socket = processo para demultiplexação) aplicação P3 P1 P1 aplicação P2 P4 aplicação transporte transporte transporte rede rede rede enlace enlace enlace física física física hospedeiro 2 hospedeiro 3 hospedeiro 1 Fundamentos de Redes de Computadores 7/38
  • Como Funciona a DemultiplexaçãoHospedeiro recebe 32 bits datagramas IP # porta origem # porta destino −Cada datagrama tem endereço IP de origem, endereço IP de destino outros campos de cabeçalho −Cada datagrama carrega 1 segmento da camada de transporte dados da −Cada segmento tem número aplicação de porta de origem, destino (mensagem)Hospedeiro usa endereços IP & números de porta para formato do segmento TCP/UDP direcionar segmento ao socket apropriado Fundamentos de Redes de Computadores 8/38
  • Demultiplexação não Orientada para ConexãoCria sockets com números Quando hospedeiro recebe de porta: segmento UDP: −verifica número de porta − DatagramSocket mySocket1 = new de destino no segmento −direciona segmento UDP DatagramSocket(12534); −DatagramSocket para socket com esse mySocket2 = new número de porta DatagramSocket(12535); Datagramas IP comSocket UDP identificado diferentes endereços IP por tupla de dois de origem e/ou números elementos: de porta de origem − (endereço IP destino, direcionados para o número porta destino) mesmo socket Fundamentos de Redes de Computadores 9/38
  • DatagramSocket serverSocket = new DatagramSocket(6428); P2 P3 P1 P1 SP: 6428 SP: 6428 DP: 9157 DP: 5775 SP: 9157 SP: 5775 cliente DP: 6428 DP: 6428 Cliente servidor IP: A IP: C IP:BSP oferece “endereço de retorno” Fundamentos de Redes de Computadores 10/38
  • Demultiplexação orientada para conexãoSocket TCP identificado Hospedeiro servidor pode por tupla de 4 admitir muitos sockets elementos: TCP simultâneos: − Endereço IP de origem − Cada socket identificado − Número de porta de por usa própria tupla de 4 origem Servidores Web têm − Endereço IP de destino diferentes sockets para − Número de porta de cada cliente conectando destino − HTTP não persistente terá diferentes sockets paraHospedeiro destinatário cada requisição usa todos os quatro valores para direcionar segmento ao socket apropriado Fundamentos de Redes de Computadores 11/38
  • P1 P4 P5 P6 P2 P1 P3 SP: 5775 DP: 80 S-IP: B D-IP:C SP: 9157 SP: 9157cliente DP: 80 DP: 80 cliente servidor IP: A S-IP: A IP: C S-IP: B IP:B D-IP:C D-IP:C Fundamentos de Redes de Computadores 12/38
  • Demultiplexação orientada para conexão: servidor Web threaded P1 P4 P2 P1 P3 SP: 5775 DP: 80 S-IP: B D-IP:C SP: 9157 SP: 9157 cliente DP: 80 DP: 80 cliente servidor IP: A S-IP: A IP: C S-IP: B IP:B D-IP:C D-IP:C Fundamentos de Redes de Computadores 13/38
  • Transporte não Orientado para Conexão: UDPUDP: User Datagram Protocol Por que existe um UDP? [RFC 768] −Sem estabelecimento deProtocolo de transporte da Internet conexão (que pode gerar “sem luxo”, básico atraso)Serviço de “melhor esforço”, −Simples: sem estado de segmentos UDP podem ser: −perdidos conexão no remetente, −entregues à aplicação fora da destinatário ordem −Cabeçalho de segmentoSem conexão: pequeno −sem handshaking entre remetente e −Sem controle de destinatário UDP −Cada segmento UDP tratado congestionamento: UDP independente dos outros pode transmitir o mais rápido possível Fundamentos de Redes de Computadores 14/38
  • UDP continuandoNormalmente usado para streaming de aplicações 32 bits de multimídia tamanho, # porta origem # porta dest. −Tolerante a perdas em bytes, do tamanho soma verif. −Sensível à taxa segmento UDP, incluindoOutros usos do UDP cabeçalho −DNS −SNMP dados daTransferência confiável por aplicação (mensagem) UDP: aumenta confiabilidade na camada de aplicação formato de segmento UDP − recuperação de erro específica da aplicação! Fundamentos de Redes de Computadores 15/38
  • Soma de Verificação UDPObjetivo: detectar “erros” (ex., bits invertidos) nosegmento transmitidoRemetente: Destinatário:Trata conteúdo de segmento como Calcula soma de verificação do sequência de inteiros de 16 bits segmento recebidoSoma de verificação (checksum): Verifica se soma de verificação adição (soma por complemento de calculada igual ao valor do campo 1) do conteúdo do segmento de soma de verificação:Remetente coloca valor da soma de NÃO – erro detectado verificação no campo de soma de SIM – nenhum erro detectado. Mas verificação UDP pode haver erros mesmo assim? Vamos ver mais pra frente Lembram do digito verificador de documentos? Fundamentos de Redes de Computadores 16/38
  • Exemplo de Soma de Verificação da Internetnota − Ao somar números, um carryout do bit mais significativo precisa ser somado ao resultadoexemplo: somar dois inteiros de 16 bits 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 contorna 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 soma 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 soma de 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 verificação Fundamentos de Redes de Computadores 17/38
  • Princípios de transferência confiável de dados● Importante nas camadas de aplicação, transporte e enlace● Lista dos 10 mais importantes tópicos de redes!● Características do canal confiável determinarão complexidade do protocolo de transferência confiável (rdt – Reliable Data Transfer) Fundamentos de Redes de Computadores 18/38
  • Transferência confiável de dados: introduçãordt_send(): chamado de cima, (p. e., deliver_data(): chamado pelapela apl.). Dados passados para remeter à rdt para remeter dados para cimacamada superior do destinatáriolado ladoremetente destinatárioudt_send(): chamado pela rdt, rdt_rcv(): chamado quando pacotepara transferir pacote por canal chega no lado destinatário do canalnão confiável ao destinatário Fundamentos de Redes de Computadores 19/38
  • vamos:Desenvolver de forma incremental os lados remetente e destinatário do protocolode transferência confiável de dados (rdt)Considerar apenas a transf. de dados unidirecionalMas informações de controle fluirão nas duas direções!●Usar máquinas de estado finito (FSM) para especificar remetente, destinatário evento causando transição de estado ações tomadas sobre transição de estado estado: quando neste “estado”, próximo estado estado estado determinado 1 evento 2 exclusivamente pelo ações próximo evento Fundamentos de Redes de Computadores 20/38
  • Rdt1.0: Transferência confiável por canal confiávelCanal subjacente perfeitamente confiávelSem erros de bitSem perda de pacotesFSMs separadas para remetente e destinatário: − remetente envia dados para canal subjacente − destinatário lê dados do canal subjacente Espera rdt_send(dados) Espera rdt_rcv(pacote) chamada chamada extract (pacote, de cima packet = de baixo dados) make_pkt(dados) deliver_data(dados) udt_send(pacote) remetente destinatário Fundamentos de Redes de Computadores 21/38
  • Rdt2.0: Canal com erros de bitCanal subjacente pode inverter bits no pacote − Soma de verificação para detectar erros de bitA questão: como recuperar-se dos erros: −Reconhecimentos (ACKs): destinatário diz explicitamente ao remetente que o pacote foi recebido OK −Reconhecimentos negativas (NAKs): destinatário diz explicitamente ao remetente que o pacote teve erros −Remetente retransmite pacote ao receber NAKNovos mecanismos no rdt2.0 (além do rdt1.0): −Detecção de erro −Feedback do destinatário: msgs de controle (ACK,NAK) destinatário->remetente Fundamentos de Redes de Computadores 22/38
  • Rdt2.0: Especificação da FSM (Máquina de Estado Finito) rdt_send(dados) snkpkt = make_pkt(dados,soma_verif) udt_send(pctenv) destinatário rdt_rcv(pctrec) && Espera Espera isNAK(pctrec) rdt_rcv(pctrec) && chamada ACK ou de cima udt_send(pctenv) corrupt(pctrec) NAK udt_send(NAK) rdt_rcv(pctrec) && isACK(pctrec) Espera Λ chamada de baixoremetente rdt_rcv(pctrec) && notcorrupt(pctrec) extract(pctrec,dados) deliver_data(dados) udt_send(ACK) Fundamentos de Redes de Computadores 23/38
  • Rdt2.0: Operação sem erros rdt_send(dados)3 snkpkt = make_pkt(dados,soma_verif) udt_send(pctenv) destinatário rdt_rcv(pctrec) && Espera Espera isNAK(pctrec) rdt_rcv(pctrec) && chamada ACK ou de cima udt_send(pctenv) corrupt(pctrec) 1 NAK udt_send(NAK) rdt_rcv(pctrec) && isACK(pctrec) 4 Espera Λ chamada remetente 2 de baixo 6 rdt_rcv(pctrec) && 5 notcorrupt(pctrec) extract(pctrec,dados) deliver_data(dados) udt_send(ACK) Fundamentos de Redes de Computadores 24/38
  • rdt2.0: Cenário de erro rdt_send(dados)3 snkpkt = make_pkt(dados,soma_verif) udt_send(pctenv) destinatário rdt_rcv(pctrec) && isNAK(pctrec) 4 Espera Espera rdt_rcv(pctrec) && chamada ACK ou de cima udt_send(pctenv) corrupt(pctrec) 1 NAK udt_send(NAK) 5 rdt_rcv(pctrec) && isACK(pctrec) Espera Λ chamada 6 remetente 2 de baixo rdt_rcv(pctrec) && 7 notcorrupt(pctrec) extract(pctrec,dados) deliver_data(dados) udt_send(ACK) Fundamentos de Redes de Computadores 25/38
  • Rdt2.0 tem uma falha fatal!O que acontece se Tratando de duplicatas: ACK/NAK for −remetente retransmite pacote atual se ACK/NAK corrompido? corrompido − remetente não sabe o −remetente acrescenta que aconteceu no número de sequência a destinatário! cada pacote −destinatário descarta (não − não pode simplesmente sobe) pacote duplicado retransmitir: possível duplicação remetente envia um pacote, depois espera resposta do destinatário Fundamentos de Redes de Computadores 26/38
  • Rdt2.1: Remetente trata de ACK/NAKs corrompidos rdt_send(dados) pctenv = make_pkt(0, dados, checksum) udt_send(pctenv) rdt_rcv(pctrec) && Espera ( corrupt(pctrec) || Espera chamada 0 ACK ou isNAK(pctrec) ) de cima NAK 0 udt_send(pctenv)rdt_rcv(pctrec) rdt_rcv(pctrec)&& notcorrupt(pctrec) && notcorrupt(pctrec)&& isACK(pctrec) && isACK(pctrec) Λ Λ Espera Espera ACK ou chamada 1 rdt_rcv(pctrec) && NAK 1 de cima ( corrupt(pctrec) || rdt_send(dados) isNAK(pctrec) ) udt_send(pctenv) pctenv = make_pkt(1, dados, checksum) udt_send(pctenv) Fundamentos de Redes de Computadores 27/38
  • rdt_rcv(pctrec) && notcorrupt(pctrec) && has_seq0(pctrec) extract(pctrec,dados) deliver_data(dados) pctenv = make_pkt(ACK, chksum) udt_send(pctenv)rdt_rcv(pctrec) && rdt_rcv(pctrec) &&(corrupt(pctrec) (corrupt(pctrec) pctenv = make_pkt(NAK, chksum) pctenv = make_pkt(NAK, chksum) udt_send(pctenv) udt_send(pctenv) Espera Esperardt_rcv(pctrec) && 0 de 1 de rdt_rcv(pctrec) && not corrupt(pctrec) && cima baixo not corrupt(pctrec) && has_seq1(pctrec) has_seq0(pctrec)pctenv = make_pkt(ACK, chksum) pctenv = make_pkt(ACK, chksum)udt_send(pctenv) udt_send(pctenv) rdt_rcv(pctrec) && notcorrupt(pctrec) && has_seq1(pctrec) extract(pctrec,dados) deliver_data(dados) pctenv = make_pkt(ACK, chksum) udt_send(pctenv) Fundamentos de Redes de Computadores 28/38
  • Rdt2.1: DiscussãoRemetente: Destinatário: − # seq acrescentado ao − deve verificar se pacote pkt recebido está − dois #s seq. (0,1) duplicado bastarão. Por quê? − estado indica se 0 ou 1 − deve verificar se é # seq. esperado do ACK/NAK recebido foi pacote corrompido − o dobro de estados nota: destinatário não − estado de “lembrar” se sabe se seu último pacote “atual” tem # seq. 0 ou 1 ACK/NAK foi recebido OK no remetente Fundamentos de Redes de Computadores 29/38
  • Rdt2.2: Um protocolo sem NAKMesma funcionalidade de rdt2.1, usando apenas ACKsEm vez de NAK, destinatário envia ACK para último pacote recebido OK − Destinatário precisa incluir explicitamente # seq. do pacote sendo reconhecido com ACKACK duplicado no remetente resulta na mesma ação de NAK: retransmitir pacote atual Fundamentos de Redes de Computadores 30/38
  • Rdt2.2: Fragmentos do remetente, destinatário rdt_send(dados) pctenv = make_pkt(0, dados, checksum) udt_send(pctenv) rdt_rcv(pctrec) && Espera Espera ( corrupt(pctrec) || chamada 0 ACK isACK(pctrec,1) ) de cima 0 udt_send(pctenv) fragmento FSM do remetente rdt_rcv(pctrec) && notcorrupt(pctrec)rdt_rcv(pctrec) && && isACK(pctrec,0) (corrupt(pctrec) || Λ Espera fragmento FSM 0 dehas_seq1(pctrec)) baixo do destinatárioudt_send(pctenv) rdt_rcv(pctrec) && notcorrupt(pctrec) && has_seq1(pctrec) extract(pctrec,dados) deliver_data(dados) pctenv = make_pkt(ACK1, chksum) udt_send(pctenv) Fundamentos de Redes de Computadores 31/38
  • Rdt3.0: Canais com erros e perdanova suposição: canal Técnica: remetente espera quantidade “razoável” de tempo subjacente também por ACK pode perder pacotes Retransmite se não chegar ACK nesse tempo (dados ou ACKs) Se pct (ou ACK) simplesmente − soma de verificação, # atrasado (não perdido): seq., ACKs, −Retransmissão será duplicada, mas os #s de seq. já cuidam disso retransmissões serão −Destinatário deve especificar # seq. úteis, mas não do pacote sendo reconhecido com ACK suficientes Requer contador regressivo Fundamentos de Redes de Computadores 32/38
  • Remetente rdt3.0 rdt_send(dados) pctenv = make_pkt(0, dados, checksum) rdt_rcv(pctrec) && udt_send(pctenv) ( corrupt(pctrec) || start_timer isACK(pctrec,1) ) rdt_rcv(pctrec) Λ Λ Espera Espera timeout chamada 0 ACK0 udt_send(pctenv) de cima start_timer rdt_rcv(pctrec) && notcorrupt(pctrec) rdt_rcv(pctrec) && isACK(pctrec,1) && notcorrupt(pctrec) stop_timer && isACK(pctrec,0) stop_timer Espera Esperatimeout chamada 1 ACK1udt_send(pctenv) de cimastart_timer rdt_rcv(pctrec) rdt_send(dados) Λ rdt_rcv(pctrec) && pctenv = make_pkt(1, dados, checksum) ( corrupt(pctrec) || udt_send(pctenv) isACK(pctrec,0) ) start_timer Λ Fundamentos de Redes de Computadores 33/38
  • RDT 3.0 em ação Fundamentos de Redes de Computadores 34/38
  • RDT 3.0 em ação Fundamentos de Redes de Computadores 35/38
  • Desempenho do rdt3.0rdt3.0 funciona, mas com desempenho ruim pois fica esperando um ack.ex.: enlace 1 Gbps, 15 ms atraso propriedade, pacote 8000 bits: L 8000bits d trans = = 9 = 8 microssegundos R 10 bps  U remet: utilização – fração do tempo remet. ocupado enviando L/ R 0,008 U = = = 0,00027 remet 30,008 RTT +L / R m icrosec  onds Pct. 1 KB cada 30 ms -> 33 kB/s vazão em enlace de 1 Gbps  protocolo de rede limita uso de recursos físicos! Fundamentos de Redes de Computadores 36/38
  • RDT 3.0: Operação Pare e Espere L/ R 0,008 U = = = 0,00027 remet 30,008 RTT +L / R microsec onds Fundamentos de Redes de Computadores 37/38
  • Slides baseados no material do livro Fundamento de Redes da Pearson Editora. Fundamentos de Redes de Computadores 38/38