Captulo 3 Camada de Transporte Metas do captulo
- Slides: 81
Capítulo 3: Camada de Transporte Metas do capítulo: r entender os princípios atrás dos serviços da camada de transporte: m m multiplexação/ demultiplexação transferência confiável de dados controle de fluxo controle de congestionamento r aprender sobre os protocolos da camada de transporte da Internet: m m m UDP: transporte não orientado a conexões TCP: transporte orientado a conexões Controle de congestionamento do TCP 3: Camada de Transporte 1
Conteúdo do Capítulo 3 r 3. 1 Introdução e serviços de camada de transporte r 3. 2 Multiplexação e demultiplexação r 3. 3 Transporte não orientado para conexão: UDP r 3. 4 Princípios da transferência confiável de dados r 3. 5 Transporte orientado para conexão: TCP r 3. 6 Princípios de controle de congestionamento r 3. 7 Controle de congestionamento no TCP 3: Camada de Transporte 2
Serviços e protocolos de transporte r rede enlace física e rt co gi ló m fi a rede enlace física m fi m rede enlace física po ns r aplicação transporte rede enlace física a tr r fornecem comunicação lógica entre processos de aplicação executando em diferentes hospedeiros os protocolos de transporte são executados nos sistemas finais: m lado transmissor: quebra as mensagens da aplicação em segmentos, repassa-os para a camada de rede m lado receptor: remonta as mensagens a partir dos segmentos, repassa-as para a camada de aplicação existe mais de um protocolo de transporte disponível para as aplicações aplicação transporte rede enlace física Internet: TCP e UDP 3: Camada de Transporte 3
Camadas de Transporte x rede r camada de rede: comunicação lógica entre hospedeiros r camada de transporte: comunicação lógica entre os processos m depende de, estende serviços da camada de rede Analogia doméstica: 12 crianças enviando cartas para 12 crianças r processos = crianças r mensagens da apl. = cartas nos envelopes r hospedeiros = casas r protocolo de transporte = Anna e Bill r protocolo da camada de rede = serviço postal 3: Camada de Transporte 4
Protocolos da camada de transporte Internet r entrega confiável, ordenada (TCP) a rede enlace física m fi m m m fi serviços não disponíveis: co r extensão sem “gorduras” do “melhor esforço” do IP gi m ló entrega não confiável, não ordenada: UDP rede enlace física e r rede enlace física rt m rede enlace física po ns m controle de congestionamento controle de fluxo estabelecimento de conexão (“setup”) a tr m aplicação transporte rede enlace física garantias de atraso máximo garantias de largura de banda mínima 3: Camada de Transporte 5
Conteúdo do Capítulo 3 r 3. 1 Introdução e serviços de camada de transporte r 3. 2 Multiplexação e demultiplexação r 3. 3 Transporte não orientado para conexão: UDP r 3. 4 Princípios da transferência confiável de dados r 3. 5 Transporte orientado para conexão: TCP r 3. 6 Princípios de controle de congestionamento r 3. 7 Controle de congestionamento no TCP 3: Camada de Transporte 6
Multiplexação/demultiplexação Multiplexação no transm. : reúne dados de muitos sockets, envelopa os dados com o cabeçalho (usado posteriormente para a demultiplexação) Demultiplexação no receptor: Entrega dos segmentos recebidos ao socket correto aplicação P 1 P 2 aplicação transporte P 4 transporte rede enlace rede física enlace P 3 enlace física socket processo física 3: Camada de Transporte 7
Como funciona a demultiplexação r r computador recebe os datagramas IP m cada datagrama possui os endereços IP da origem e do destino m cada datagrama transporta 1 segmento da camada de transporte m cada segmento possui números das portas origem e destino O hospedeiro usa os endereços IP e os números das portas para direcionar o segmento ao socket apropriado 32 bits porta origem porta destino outros campos do cabeçalho dados da aplicação (mensagem) formato de segmento TCP/UDP 3: Camada de Transporte 8
Demultiplexação não orientada a conexões r Cria sockets com números de porta: Datagram. Socket my. Socket 1 = new Datagram. Socket(9911); Datagram. Socket my. Socket 2 = new Datagram. Socket(9922); r Quando o hospedeiro recebe segmento UDP: m m verifica no. da porta de destino no segmento encaminha o segmento UDP para o socket com aquele no. de porta r socket UDP identificado r Datagramas IP com mesmo no. de porta pela dupla: destino diferentes (end IP dest, no. da porta destino) endereços IP origem e/ou números de porta origem podem ser encaminhados para o mesmo socket 3: Camada de Transporte 9
Demultiplexação não orientada a conexões: exemplo Datagram. Socket my. Socket 2 = new Datagram. Socket (9157); Datagram. Socket server. Socket = new Datagram. Socket (6428); application Datagram. Socket my. Socket 1 = new Datagram. Socket (5775); application P 1 P 3 P 4 transport network link physical source port: 6428 dest port: 9157 source port: 9157 dest port: 6428 source port: ? dest port: ? 3: Camada de Transporte 10
Demultiplexação Orientada a Conexões r Socket TCP identificado pela quádrupla: m m endereço IP origem número da porta origem endereço IP destino número da porta destino r receptor usa todos os quatro valores para direcionar o segmento para o socket apropriado r Servidor pode dar suporte a muitos sockets TCP simultâneos: m cada socket é identificado pela sua própria quádrupla r Servidores Web têm sockets diferentes para cada conexão cliente m HTTP não persistente terá sockets diferentes para cada pedido 3: Camada de Transporte 11
Demultiplexação Orientada a Conexões: exemplo application P 3 P 4 application P 3 P 2 transport network link physical host: IP address A P 5 P 6 server: IP address B source IP, port: B, 80 dest IP, port: A, 9157 physical source IP, port: C, 5775 dest IP, port: B, 80 source IP, port: A, 9157 dest IP, port: B, 80 três segmentos, todos destinados ao endereço IP: B, dest port: 80 são demultiplexados para sockets distintos host: IP address C source IP, port: C, 9157 dest IP, port: B, 80 3: Camada de Transporte 12
Demultiplexação Orientada a Conexões: Servidor Web com Threads threaded server application P 3 P 4 P 3 P 2 transport network link physical host: IP address A application server: IP address B source IP, port: B, 80 dest IP, port: A, 9157 source IP, port: A, 9157 dest IP, port: B, 80 physical source IP, port: C, 5775 dest IP, port: B, 80 host: IP address C source IP, port: C, 9157 dest IP, port: B, 80 3: Camada de Transporte 13
Conteúdo do Capítulo 3 r 3. 1 Introdução e serviços de camada de transporte r 3. 2 Multiplexação e demultiplexação r 3. 3 Transporte não orientado para conexão: UDP r 3. 4 Princípios da transferência confiável de dados r 3. 5 Transporte orientado para conexão: TCP r 3. 6 Princípios de controle de congestionamento r 3. 7 Controle de congestionamento no TCP 3: Camada de Transporte 14
UDP: User Datagram Protocol r r r Protocolo de transporte da Internet mínimo, “sem gorduras”, Serviço “melhor esforço”, segmentos UDP podem ser: m perdidos m entregues à aplicação fora de ordem sem conexão: m não há “setup” UDP entre remetente, receptor m tratamento independente de cada segmento UDP [RFC 768] r Uso do UDP: m aplicações de streaming multimídia (tolerante a perdas, sensível a taxas) m DNS m SNMP r transferência confiável sobre UDP: m m adiciona confiabilidade na camada de aplicação recuperação de erros específica da aplicação 3: Camada de Transporte 15
UDP: Cabeçalho do segmento Comprimento em bytes do segmento UDP, incluindo cabeçalho Por quê existe um UDP? r 32 bits porta origem porta dest. comprimento checksum r r Dados de aplicação (mensagem) Formato do segmento UDP r elimina estabelecimento de conexão (o que pode causar retardo) simples: não se mantém “estado” da conexão nem no remetente, nem no receptor cabeçalho de segmento reduzido Não há controle de congestionamento: UDP pode transmitir tão rápido quanto desejado (e possível) 3: Camada de Transporte 16
Soma de Verificação (checksum) UDP Objetivo: detectar “erros” (ex. : bits trocados) no segmento transmitido Transmissor: r r trata conteúdo do segmento como seqüência de inteiros de 16 -bits campo checksum zerado checksum: soma (adição usando complemento de 1) do conteúdo do segmento transmissor coloca complemento do valor da soma no campo checksum de UDP Receptor: r r calcula checksum do segmento recebido verifica se checksum computado é tudo um ‘FFFF’: m NÃO - erro detectado m SIM - nenhum erro detectado. Mas ainda pode ter erros? Veja depois …. 3: Camada de Transporte 17
Exemplo do Checksum Internet r Note que: m Ao adicionar números, o transbordo (vai um) do bit mais significativo deve ser adicionado ao resultado r Exemplo: adição de dois inteiros de 16 -bits 1 1 0 0 1 1 1 0 1 0 1 transbordo 1 1 0 1 1 soma 1 1 0 1 1 0 0 soma de 1 0 0 0 0 1 1 verificação 3: Camada de Transporte 18
Conteúdo do Capítulo 3 r 3. 1 Introdução e serviços de camada de transporte r 3. 2 Multiplexação e demultiplexação r 3. 3 Transporte não orientado para conexão: UDP r 3. 4 Princípios da transferência confiável de dados r 3. 5 Transporte orientado para conexão: TCP r 3. 6 Princípios de controle de congestionamento r 3. 7 Controle de congestionamento no TCP 3: Camada de Transporte 19
Princípios de Transferência confiável de dados (rdt) r r r importante nas camadas de transporte, enlace na lista dos 10 tópicos mais importantes em redes! características do canal não confiável determinam a complexidade de um protocolo de transferência confiável de dados (rdt) 3: Camada de Transporte 20
Transferência confiável: o ponto de partida rdt_send(): chamada de cima, (ex. : pela apl. ). Passa dados p/ serem entregues à camada sup. do receptor lado transmissor udt_send(): chamada pela entidade de transporte, p/ transferir pacotes para o receptor sobre o canal não confiável deliver_data(): chamada pela entidade de transporte p/ entregar dados p/ camada superior lado receptor rdt_rcv(): chamada quando pacote chega no lado receptor do canal 3: Camada de Transporte 21
Transferência confiável: o ponto de partida Iremos: r desenvolver incrementalmente os lados transmissor e receptor de um protocolo confiável de transferência de dados (rdt) r considerar apenas fluxo unidirecional de dados m r mas info de controle flui em ambos os sentidos! Usar máquinas de estados finitos (FSM) p/ especificar os protocolos transmissor e receptor evento causador da transição de estado ações executadas na transição de estado: neste “estado” o próximo estado é determinado unicamente pelo próximo evento estado 1 evento ações estado 2 3: Camada de Transporte 22
rdt 1. 0: transferência confiável sobre canais confiáveis r canal de transmissão perfeitamente confiável m m não há erros de bits não há perda de pacotes r FSMs separadas para transmissor e receptor: m m transmissor envia dados pelo canal subjacente receptor lê os dados do canal subjacente 3: Camada de Transporte 23
rdt 2. 0: canal com erros de bits r canal subjacente pode trocar valores dos bits num pacote m r lembre-se: checksum UDP pode detectar erros de bits a questão: como recuperar esses erros? Como as pessoas recuperam “erros” durante uma conversa? 3: Camada de Transporte 24
rdt 2. 0: canal com erros de bits r canal subjacente pode trocar valores dos bits num pacote m r a questão: como recuperar esses erros? m m m r lembre-se: checksum UDP pode detectar erros de bits reconhecimentos (ACKs): receptor avisa explicitamente ao transmissor que o pacote foi recebido corretamente reconhecimentos negativos (NAKs): receptor avisa explicitamente ao transmissor que o pacote tinha erros transmissor reenvia o pacote ao receber um NAK novos mecanismos no rdt 2. 0 (em relação ao rdt 1. 0): m m detecção de erros retorno ao transmissor: mensagens de controle (ACK, NAK) receptor->transmissor 3: Camada de Transporte 25
rdt 2. 0: especificação da FSM 3: Camada de Transporte 26
rdt 2. 0: operação com ausência de erros rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && is. NAK(rcvpkt) Wait for call from ACK or udt_send(sndpkt) above NAK rdt_rcv(rcvpkt) && is. ACK(rcvpkt) L rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(NAK) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt, data) deliver_data(data) udt_send(ACK) 3: Camada de Transporte 27
rdt 2. 0: cenário de erro rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && is. NAK(rcvpkt) Wait for call from ACK or udt_send(sndpkt) above NAK rdt_rcv(rcvpkt) && is. ACK(rcvpkt) L rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(NAK) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt, data) deliver_data(data) udt_send(ACK) 3: Camada de Transporte 28
rdt 2. 0 tem uma falha fatal! O que acontece se o ACK/NAK for corrompido? r r Transmissor não sabe o que se passou no receptor! não pode apenas retransmitir: possibilidade de pacotes duplicados Lidando c/ duplicatas: r r r transmissor retransmite o último pacote se ACK/NAK chegar com erro transmissor inclui número de seqüência em cada pacote receptor descarta (não entrega a aplicação) pacotes duplicados pare e espera Transmissor envia um pacote, e então aguarda resposta do receptor 3: Camada de Transporte 29
rdt 2. 1: transmissor, trata ACK/NAKs corrompidos 3: Camada de Transporte 30
rdt 2. 1: receptor, trata ACK/NAKs corrompidos rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq 0(rcvpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) extract(rcvpkt, data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq 1(rcvpkt) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) Esperar 0 de baixo Esperar 1 de baixo rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq 1(rcvpkt) extract(rcvpkt, data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq 0(rcvpkt) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) 3: Camada de Transporte 31
rdt 2. 1: discussão Transmissor: r no. de seq no pacote r bastam dois nos. de seq. (0, 1). Por quê? r deve verificar se ACK/NAK recebidos estão corrompidos r duplicou o no. de estados m estado deve “lembrar” se pacote “esperado” deve ter no. de seq. 0 ou 1 Receptor: r deve verificar se o pacote recebido é uma duplicata m estado indica se no. de seq. esperado é 0 ou 1 r nota: receptor não tem como saber se último ACK/NAK foi recebido bem pelo transmissor 3: Camada de Transporte 32
rdt 2. 2: um protocolo sem NAKs r mesma funcionalidade do rdt 2. 1, usando apenas ACKs r ao invés de NAK, receptor envia ACK para último pacote recebido sem erro m receptor deve incluir explicitamente no. de seq do pacote reconhecido r ACKs duplicados no transmissor resultam na mesma ação do NAK: retransmissão do pacote corrente 3: Camada de Transporte 33
rdt 2. 2: fragmentos do transmissor e receptor rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && aguarda chamada 0 de cima rdt_rcv(rcvpkt) && (corrupt(rcvpkt) || has_seq 1(rcvpkt)) udt_send(sndpkt) aguarda 0 de baixo aguarda ACK 0 fragmento FSM do transmissor ( corrupt(rcvpkt) || is. ACK(rcvpkt, 1) ) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && is. ACK(rcvpkt, 0) L fragmento FSM do receptor rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq 1(rcvpkt) extract(rcvpkt, data) deliver_data(data) sndpkt = make_pkt(ACK 1, chksum) udt_send(sndpkt) 3: Camada de Transporte 34
rdt 3. 0: canais com erros e perdas Nova hipótese: canal de transmissão também pode perder pacotes (dados ou ACKs) m checksum, no. de seq. , ACKs, retransmissões podem ajudar, mas não serão suficientes P: como lidar com perdas? m m Abordagem: transmissor aguarda um tempo “razoável” pelo ACK r r transmissor espera até ter certeza que se perdeu pacote ou ACK, e então retransmite r desvantagens? retransmite se nenhum ACK for recebido neste intervalo se pacote (ou ACK) apenas atrasado (e não perdido): m retransmissão será duplicata, mas uso de no. de seq. já cuida disto m receptor deve especificar no. de seq do pacote sendo reconhecido requer temporizador 3: Camada de Transporte 35
Transmissor rdt 3. 0 3: Camada de Transporte 36
rdt 3. 0 em ação 3: Camada de Transporte 37
rdt 3. 0 em ação Destinatário Remetente send pkt 0 rcv ack 0 send pkt 1 pkt 0 ack 0 pkt 1 ack 1 timeout resend pkt 1 rcv ack 1 send pkt 0 rcv ack 1 ignora pkt 1 pkt 0 ack 1 ack 0 rcv pkt 0 send ack 0 rcv pkt 1 send ack 1 rcv pkt 1 (detect duplicate) send ack 1 rcv pkt 0 send ack 0 (d) retransmissão prematura 3: Camada de Transporte 38
Desempenho do rdt 3. 0 r rdt 3. 0 funciona, porém seu desempenho é sofrível r Exemplo: enlace de 1 Gbps, retardo fim a fim de 15 ms, pacote de 1 KB: r pac. de 1 KB a cada 30 mseg -> vazão de 33 k. B/seg num enlace de 1 Gbps r protocolo limita uso dos recursos físicos! 3: Camada de Transporte 39
rdt 3. 0: operação pare e espere 3: Camada de Transporte 40
Protocolos com paralelismo (pipelining) Paralelismo (pipelining): transmissor envia vários pacotes em sequência, todos esperando para serem reconhecidos m m faixa de números de sequência deve ser aumentada Armazenamento no transmissor e/ou no receptor (a) operação do protocolo pare e espere (a) operação do protocolo com paralelismo r Duas formas genéricas de protocolos com paralelismo: Go-back-N, retransmissão seletiva 3: Camada de Transporte 41
Paralelismo: aumento da utilização Aumenta a utilização por um fator de 3! 3: Camada de Transporte 42
Protocolos com Paralelismo Go-back-N: r r O transmissor pode ter até N pacotes não reconhecidos no “tubo” Receptor envia apenas acks cumulativos m r Não reconhece pacote se houver falha de seq. Transmissor possui um temporizador para o pacote mais antigo ainda não reconhecido m Se o temporizador estourar, retransmite todos os pacotes ainda não reconhecidos. Retransmissão seletiva: r r r O transmissor pode ter até N pacotes não reconhecidos no “tubo” Receptor envia acks individuais para cada pacote Transmissor possui um temporizador para cada pacote ainda não reconhecido m Se o temporizador estourar, retransmite apenas o pacote correspondente. 3: Camada de Transporte 43
Go-back-N (GBN) Transmissor: r r r no. de seq. de k-bits no cabeçalho do pacote admite “janela” de até N pacotes consecutivos não reconhecidos ACK(n): reconhece todos pacotes, até e inclusive no. de seq n “ACK/reconhecimento cumulativo” m pode receber ACKs duplicados (veja receptor) temporizador para o pacote mais antigo ainda não confirmado Estouro do temporizador: retransmite todos os pacotes pendentes. 3: Camada de Transporte 44
GBN: FSM estendida para o transmissor If getacknum(rcvpkt)>=base 3: Camada de Transporte 45
GBN: FSM estendida para o receptor simples: r usa apenas ACK: sempre envia ACK para pacote recebido corretamente com o maior no. de seq. em-ordem m m r pode gerar ACKs duplicados só precisa se lembrar do expectedseqnum pacotes fora de ordem: m m descarta (não armazena) -> receptor não usa buffers! reconhece pacote com o mais alto número de seqüência emordem 3: Camada de Transporte 46
sender window (N=4) 012345678 012345678 sender send pkt 0 send pkt 1 send pkt 2 send pkt 3 (wait) rcv ack 0, send pkt 4 rcv ack 1, send pkt 5 ignore duplicate ACK receiver Xloss receive pkt 0, send ack 0 receive pkt 1, send ack 1 receive pkt 3, discard, (re)send ack 1 receive pkt 4, discard, (re)send ack 1 receive pkt 5, discard, (re)send ack 1 timeout 012345678 send pkt 2 pkt 3 pkt 4 pkt 5 rcv rcv pkt 2, pkt 3, pkt 4, pkt 5, deliver, send 3: Camada de Transporte ack 2 ack 3 ack 4 ack 5 47
Retransmissão seletiva r receptor reconhece individualmente todos os pacotes recebidos corretamente m armazena pacotes no buffer, conforme necessário, para posterior entrega em-ordem à camada superior r transmissor apenas re-envia pacotes para os quais um ACK não foi recebido m temporizador de remetente para cada pacote sem ACK r janela do transmissão m N números de sequência consecutivos m outra vez limita números de sequência de pacotes enviados, mas ainda não reconhecidos 3: Camada de Transporte 48
Retransmissão seletiva: janelas do transmissor e do receptor reconhecido 3: Camada de Transporte 49
Retransmissão seletiva transmissor dados de cima: r se próx. no. de seq (n) disponível está na janela, envia o pacote e liga temporizador(n) estouro do temporizador(n): receptor pacote n em [rcvbase, rcvbase+N-1] r reenvia pacote n, reinicia temporizador(n) ACK(n) em r [sendbase, sendbase+N]: r r marca pacote n “recebido” se n for menor pacote não reconhecido, avança base da janela ao próx. no. de seq não reconhecido envia ACK(n) fora de ordem: armazena em ordem: entrega (tb. entrega pacotes armazenados em ordem), avança janela p/ próxima pacote ainda não recebido pacote n em [rcvbase-N, rcvbase-1] r ACK(n) senão: r ignora 3: Camada de Transporte 50
Retransmissão seletiva em ação 3: Camada de Transporte 51
Retransmissão seletiva: dilema Exemplo: r r nos. de seq : 0, 1, 2, 3 tam. de janela =3 receptor não vê diferença entre os dois cenários! incorretamente passa dados duplicados como novos em (a) P: qual a relação entre tamanho de no. de seq e tamanho de janela? 3: Camada de Transporte 52
Conteúdo do Capítulo 3 r 3. 1 Introdução e serviços de camada de transporte r 3. 2 Multiplexação e demultiplexação r 3. 3 Transporte não orientado para conexão: UDP r 3. 4 Princípios da transferência confiável de dados r 3. 5 Transporte orientado para conexão: TCP m m estrutura do segmento transferência confiável de dados controle de fluxo gerenciamento da conexão r 3. 6 Princípios de controle de congestionamento r 3. 7 Controle de congestionamento no TCP 3: Camada de Transporte 53
TCP: Visão geral r ponto a ponto: m r tam. da janela ajustado por controle de fluxo e congestionamento do TCP transmissão full duplex: m m não estruturado em msgs com paralelismo (pipelined): m r 1 transmissor, 1 receptor r fluxo de bytes, ordenados, confiável: m r RFCs: 793, 1122, 1323, 2018, 2581 r orientado a conexão: m buffers de transmissão e recepção r fluxo de dados bi-direcional na mesma conexão MSS: tamanho máximo de segmento handshaking (troca de msgs de controle) inicia estado do transmissor e do receptor antes da troca de dados fluxo controlado: m receptor não será afogado pelo transmissor 3: Camada de Transporte 54
Estrutura do segmento TCP URG: dados urgentes (pouco usado) ACK: campo de ACK é válido PSH: produz envio de dados (pouco usado) RST, SYN, FIN: estabelec. de conexão (comandos de criação e término) contagem por bytes de dados (não segmentos!) número de bytes receptor está pronto para aceitar Internet checksum (como no UDP) 3: Camada de Transporte 55
TCP: nos. de seq. e ACKs segmento de saída do “transmissor” source port # Nos. de seq. : m “número”dentro do fluxo de bytes do primeiro byte de dados do segmento ACKs: m no. de seq do próx. byte esperado do outro lado m ACK cumulativo P: como receptor trata segmentos fora da ordem? m R: espec do TCP omissa deixado ao implementador dest port # sequence number acknowledgement number rwnd checksum urg pointer window size N sender sequence number space sent ACKed sent, not- usable not yet ACKed but not usable (“in-flight”) yet sent segmento que chega ao “transmissor” source port # dest port # sequence number acknowledgement number rwnd A checksum urg pointer 3: Camada de Transporte 56
TCP: nos. de seq. e ACKs cenário telnet simples 3: Camada de Transporte 57
TCP: cenários de retransmissão Religa temporização Desliga temporização Cenário com perda do ACK Temporização prematura, ACKs cumulativos 3: Camada de Transporte 58
TCP: cenários de retransmissão (mais) Desliga temporização Cenário de ACK cumulativo 3: Camada de Transporte 59
Retransmissão rápida r O intervalo do temporizador é frequentemente bastante longo: m r longo atraso antes de retransmitir um pacote perdido Detecta segmentos perdidos através de ACKs duplicados. m m r Se o transmissor receber 3 ACKs duplicados para os mesmos dados, ele supõe que o segmento após os dados reconhecidos se perdeu: m Retransmissão rápida: retransmite o segmento antes que estoure o temporizador O transmissor normalmente envia diversos segmentos Se um segmento se perder, provavelmente haverá muitos ACKs duplicados. 3: Camada de Transporte 60
Host B Host A Seq=92, 8 bytes of data Seq=100, 20 bytes of data X ACK=100 timeout ACK=100 Seq=100, 20 bytes of data Retransmissão de um segmento após três ACKs duplicados 3: Camada de Transporte 61
Conteúdo do Capítulo 3 r 3. 1 Introdução e serviços de camada de transporte r 3. 2 Multiplexação e demultiplexação r 3. 3 Transporte não orientado para conexão: UDP r 3. 4 Princípios da transferência confiável de dados r 3. 5 Transporte orientado para conexão: TCP m m estrutura do segmento transferência confiável de dados controle de fluxo gerenciamento da conexão r 3. 6 Princípios de controle de congestionamento r 3. 7 Controle de congestionamento no TCP 3: Camada de Transporte 62
Controle de Fluxo do TCP a aplicação pode remover dados buffers do socket TCP …. … mais devagar do que o receptor TCP está entregando (transmissor está enviando) processo de aplicação Buffers de recepção do socket TCP code IP code Controle de fluxo o receptor controla o transmissor, de modo que este não inunde o buffer do receptor transmitindo muito e rapidamente SO do transmissor pilha de protocolos no receptor 3: Camada de Transporte 63
Controle de Fluxo do TCP: como funciona r O receptor “anuncia” o espaço livre do buffer incluindo o valor da rwnd nos cabeçalhos TCP dos segmentos que saem do receptor para o transmissor m m r r Rcv. Buffer Tamanho do Rcv. Buffer é configurado através das opções do socket (o valor rwnd default é de 4096 bytes) muitos sistemas operacionais ajustam Rcv. Buffer automaticamente. O transmissor limita a quantidade os dados não reconhecidos ao tamanho do rwnd recebido. Garante que o buffer do receptor não transbordará para processo de aplicação dados armazenados espaço livre carga dos segmentos TCP armazenamento no lado do receptor 3: Camada de Transporte 64
Conteúdo do Capítulo 3 r 3. 1 Introdução e serviços de camada de transporte r 3. 2 Multiplexação e demultiplexação r 3. 3 Transporte não orientado para conexão: UDP r 3. 4 Princípios da transferência confiável de dados r 3. 5 Transporte orientado para conexão: TCP m m estrutura do segmento transferência confiável de dados controle de fluxo gerenciamento da conexão r 3. 6 Princípios de controle de congestionamento r 3. 7 Controle de congestionamento no TCP 3: Camada de Transporte 65
TCP: Gerenciamento de Conexões antes de trocar dados, transmissor e receptor TCP dialogam: r concordam em estabelecer uma conexão (cada um sabendo que o outro quer estabelecer a conexão) r concordam com os parâmetros da conexão. aplicação estado conexão: ESTAB variáveis conexão: No. seq cliente-p/-servidor-p/-cliente tamanho rcv. Buffer no servidor, cliente network Socket client. Socket = new. Socket("hostname", "port number"); network Socket connection. Socket = welcome. Socket. accept(); 3: Camada de Transporte 66
Concordando em estabelecer uma conexão Apresentação de duas vias (2 -way handshake): Let’s talk ESTAB OK ESTAB P: a apresentação em duas vias sempre funciona em redes? r r r choose x ESTAB r req_conn(x) acc_conn(x) atrasos variáveis mensagens retransmitidas (ex: req_conn(x)) devido à perda de mensagem reordenação de mensagens não consegue ver o outro lado ESTAB 3: Camada de Transporte 67
Concordando em estabelecer uma conexão cenários de falha da apresentação de duas vias: escolhe x req_conn(x) ESTAB retransmite req_conn(x) acc_conn(x) ESTAB req_conn(x) cliente termina término da conexão x acc_conn(x) data(x+1) retransmite dados(x+1) servidor esquece x ESTAB conexão aberta pela metade! (sem cliente!) cliente termina término da conexão x req_conn(x) data(x+1) aceita dados(x+1) servidor esquece x ESTAB aceita dados(x+1) 3: Camada de Transporte 68
Apresentação de três vias do TCP estado do cliente estado do servidor LISTEN choose init seq num, x send TCP SYN msg SYNSENT received SYNACK(x) indicates server is live; ESTAB send ACK for SYNACK; this segment may contain client-to-server data SYNbit=1, Seq=x choose init seq num, y send TCP SYNACK SYN RCVD msg, acking SYNbit=1, Seq=y ACKbit=1; ACKnum=x+1 ACKbit=1, ACKnum=y+1 received ACK(y) indicates client is live ESTAB 3: Camada de Transporte 69
TCP: Encerrando uma conexão r seja o cliente que o servidor fecham cada um o seu lado da conexão m enviam segmento TCP com bit FIN = 1 r respondem ao FIN recebido com um ACK m ao receber um FIN, ACK pode ser combinado com o próprio FIN r lida com trocas de FIN simultâneos 3: Camada de Transporte 70
TCP: Encerrando uma conexão estado do cliente estado do servidor ESTAB client. Socket. close() FIN_WAIT_1 FIN_WAIT_2 não pode mais enviar, mas pode receber dados FINbit=1, seq=x CLOSE_WAIT ACKbit=1; ACKnum=x+1 espera o término pelo servidor FINbit=1, seq=y TIMED_WAIT espera temporizada por 2*tempo máximo de vida do segmento ainda pode enviar dados LAST_ACK não pode mais enviar dados ACKbit=1; ACKnum=y+1 CLOSED 3: Camada de Transporte 71
Conteúdo do Capítulo 3 r 3. 1 Introdução e serviços de camada de transporte r 3. 2 Multiplexação e demultiplexação r 3. 3 Transporte não orientado para conexão: UDP r 3. 4 Princípios da transferência confiável de dados r 3. 5 Transporte orientado para conexão: TCP r 3. 6 Princípios de controle de congestionamento r 3. 7 Controle de congestionamento no TCP 3: Camada de Transporte 72
Princípios de Controle de Congestionamento: r informalmente: “muitas fontes enviando dados acima da capacidade da rede de tratá-los” r diferente de controle de fluxo! r Sintomas: m perda de pacotes (saturação de buffers nos roteadores) m longos atrasos (enfileiramento nos buffers dos roteadores) r um dos 10 problemas mais importantes em redes! 3: Camada de Transporte 73
Abordagens de controle de congestionamento Duas abordagens gerais para controle de congestionamento: Controle de congestionamento Controle de assistido pela rede: congestionamento r roteadores enviam fim a fim : informações para os sistemas r r r não usa realimentação explícita da rede congestionamento é inferido a partir das perdas, e dos atrasos observados nos sistemas finais abordagem usada pelo TCP finais m bit indicando congestionamento (SNA, DECbit, TCP/IP ECN, ATM) m taxa explícita para envio pelo transmissor 3: Camada de Transporte 74
Conteúdo do Capítulo 3 r 3. 1 Introdução e serviços de camada de transporte r 3. 2 Multiplexação e demultiplexação r 3. 3 Transporte não orientado para conexão: UDP r 3. 4 Princípios da transferência confiável de dados r 3. 5 Transporte orientado para conexão: TCP r 3. 6 Princípios de controle de congestionamento r 3. 7 Controle de congestionamento no TCP 3: Camada de Transporte 75
Controle de Congestionamento do TCP: aumento aditivo, diminuição multiplicativa r Abordagem: aumentar a taxa de transmissão (tamanho da janela), testando a largura de banda utilizável, até que ocorra uma perda m m aumento aditivo: incrementa cwnd de 1 MSS a cada RTT até detectar uma perda diminuição multiplicativa: corta cwnd pela metade após evento de perda Comportamento de dente de serra: testando a largura de banda 76
Controle de Congestionamento do TCP: detalhes r transmissor limita a transmissão: Last. Byte. Sent-Last. Byte. Acked cwnd r Aproximadamente, taxa = cwnd RTT Bytes/seg r cwnd é dinâmica, em função do congestionamento detectado na rede Como o transmissor detecta o congestionamento? r evento de perda = estouro do temporizador ou 3 acks duplicados r transmissor TCP reduz a taxa (cwnd) após evento de perda três mecanismos: m m m AIMD partida lenta conservador após eventos de estouro de temporização (prevenção de congestionamento) 3: Camada de Transporte 77
TCP: Partida lenta A aumenta a taxa exponencialmente até o primeiro evento de perda: m m m inicialmente cwnd = 1 MSS duplica cwnd a cada RTT através do incremento da cwnd para cada ACK recebido RTT r No início da conexão, B um segme nto dois segm entos quatro seg mentos r Resumo: taxa inicial é baixa mas cresce rapidamente de forma exponencial tempo 3: Camada de Transporte 78
TCP: detectando, reagindo a perdas r perda indicada pelo estouro de temporizador: m cwnd é reduzida a 1 MSS; janela cresce exponencialmente (como na partida lenta) até um limiar, depois cresce linearmente r perda indicada por ACKs duplicados: TCP RENO m ACKs duplicados indica que a rede é capaz de entregar alguns segmentos m corta cwnd pela metade depois cresce linearmente r O TCP Tahoe sempre reduz a cwnd para 1 (seja por estouro de temporizador que ACKS duplicados) m 3: Camada de Transporte 79
TCP: mudando da partida lenta para a CA P: Quando o crescimento exponencial deve mudar para linear? R: Quando cwnd atingir 1/2 do seu valor antes da detecção de perda. Implementação: r r Limiar (Threshold) variável (ssthresh) Com uma perda o limiar (ssthresh) é ajustado para 1/2 da cwnd imediatamente antes do evento de perda. 3: Camada de Transporte 80
Capítulo 3: Resumo r Princípios por trás dos serviços da camada de transporte: multiplexação/ demultiplexação m transferência confiável de dados m controle de fluxo m controle de congestionamento instanciação e implementação na Internet m UDP m TCP m r Próximo capítulo: r r saímos da “borda” da rede (camadas de aplicação e transporte) entramos no “núcleo”da rede 3: Camada de Transporte 81
- Https://slidetodoc.com/captulo-2-o-sudeste-e-o-sul-do/
- Conceito de judaismo
- Camada de
- Camada gasosa
- Mollusca classes
- Derivado vegetal
- Cromatografia
- El diagrama de pauling
- Camada osi
- Camada limite
- Diodo
- Camada mais energetica
- Camada limite termica
- Camada
- Camada de ozonio
- Cromatografia em camada delgada aplicações
- Protocolos da camada de aplicação
- Camada de forma cobertura
- Camada
- Metas desenho
- Varores
- Ejemplos de resultados de un proyecto
- Metas financieras definicion
- Metas y acciones
- Metas ambientales ejemplos
- Estrategias proyecto de nación
- Clima en ibarlucea
- Enfoque de deming
- El mito del equipo administrativo
- Caracteristicas de las metas
- Y2 metas
- Contrato de metas
- Imogene king teoria del logro de metas
- Metas superordenadas
- Metas ambientales ejemplos
- El gallo joven y el gallo viejo moraleja
- Pensamiento sistémico y estratégico
- Fase 1: planificación. objetivos-metas
- Destruindo metas
- Que son
- Ciudadanos con criterio
- Indicadores y metas ejemplos
- Indicadores y metas ejemplos
- Parroquia de guadalupe sabinas coahuila
- Andestech
- Cuando tu hijo te dice no te metas en mi vida
- Metas fisicas
- Metas de la iglesia
- Plano de metas jk
- Modelo de informe de cumplimiento de metas
- Objetivos de la carta de la tierra
- Pemc guanajuato
- Pemc ejemplos
- Esfuerzo para alcanzar objetivos
- Conflictos ejemplos
- Ejemplos de indicadores de eficiencia en una empresa
- Topicos generativos ejemplos
- Metas para educação infantil
- Horizontal imagen
- Objetivos y metas del pei
- Metas ciudadanas
- Especficos
- Agentes inteligentes
- Metas individuales y grupales
- Metas internacionales de seguridad del paciente
- Seminario de jovenes ciudadanos con criterio
- Metas internacionales de seguridad del paciente oms
- Objetivos y metas diferencias
- Fase 1: planificación. objetivos-metas
- Diferencia entre objetivos y metas
- Metas comportamiento organizacional
- Marco de sendai 7 metas
- Metas de diabetes gestacional
- Metas y propósitos
- Ejemplos de objetivos verificables y no verificables
- La realidad de mis metas
- Contenido del kerigma
- Educaweb tubarão
- Fase 1 planificación. objetivos-metas modulo 23
- Metas organizacionales
- El transporte es una actividad
- Guayaquil a huaquillas bus