Académique Documents
Professionnel Documents
Culture Documents
REDES DE COMPUTADORES
CAMADA DE TRANSPORTE
Camada de Transporte
2
Servios da camada de transporte Multiplexagem / desmultiplexagem Servio no orientado ligao: UDP Transferncia fivel de dados Servio orientado ligao: TCP
Transferncia fivel Controlo de fluxo Gesto de ligaes
Controlo de congestionamento
TCP
14-10-2013
Os protocolos da camada de transporte executam-se nos sistemas terminais e fornecem um servio de comunicao ao nvel lgico entre as aplicaes Servios de transporte vs. servios de rede:
Camada de rede: transferncia de dados entre sistemas terminais Camada de transporte: transferncia de dados entre processos; estes servios so construdos com base nos servios da camada de rede com o objectivo de os melhorar
As entidades da camada de transporte trocam entre si segmentos ou TPDUs (Transport Protocol Data Unit) Camada de rede
Transferncia de dados entre sistemas terminais No reconhecem, nem actuam, sobre informao adicionada pela camada de transporte
Analogia domestica:
12 crianas enviam cartas a 12 crianas
Processos = crianas Mensagens da aplicao = cartas nos envelopes Sistemas terminais = casas Protocolo de transporte = Ana e Joaquim Protocolo da camada de rede = servio postal
Camada de transporte
Comunicao lgica entre processos Depende de, e estende, os servios da camada de rede
14-10-2013
UDP (User Datagram Protocol) - comunicao no fivel, sem garantia de entrega na ordem (best-effort), de um para um ou mais extremos (unicast ou multicast)
Multiplexagem / Desmultiplexagem
6
Multiplexagem-emissor Rene dados de muitos sockets e coloca o cabealho (usado depois para a desmultiplexagem) Desmultiplexagem-receptor Entrega dos segmentos recebidos ao socket correcto
= socket application transport network link physical P3 = process P1 P1 application transport network link physical P2 P4 application transport network link physical
host 1
host 2
host 3
14-10-2013
Cada segmento possui nmeros das portas origem e destino (lembrar: nmeros de portas bem conhecidas para aplicaes especificas)
O sistema terminal usa os endereos IP e os nmeros das portas para direccionar o segmento ao socket apropriado
Multiplexagem/Desmultiplexagem: exemplos
14-10-2013
RFC 768
14-10-2013
UDP
11
Usado em:
aplicaes multimdia
tolerantes a perdas exigentes em ritmo de transmisso
Length, in bytes of UDP segment, including header length
outras aplicaes
DNS SNMP (Simple Network Management Protocol)
Uma aplicao pode incluir mecanismos de transferncia de dados fivel, mesmo usando UDP ao nvel de transporte
12
Receptor:
Calcula checksum do segmento recebido anexado com o valor de checksum enviado
calculo usando exclusive-or ou somamodular conforme algoritmo usado pelo emissor
Mtodo Soma-Modular
Soma (adio usando complemento de 1) do contedo do segmento (RFC[1071] para detalhes sobre algoritmo eficiente de calculo) O resultado colocado no campo checksum do segmento
14-10-2013
Nota: quando se adicionam nmeros, o nmero de transporte deve ser adicionado ao resultado Exemplo: adicionar dois inteiros de16 bits
Camada de Transporte
14
Servios da camada de transporte Multiplexagem / desmultiplexagem Servio no orientado ligao: UDP Transferncia fivel de dados Servio orientado ligao: TCP
Transferncia fivel Controlo de fluxo Gesto de ligaes
Controlo de congestionamento
TCP
14-10-2013
Funo importante nas camadas de aplicao, transporte e ligao de dados As caractersticas do canal de comunicao subjacente determinam a complexidade do protocolo de transmisso fivel (que iremos designar por reliable data transfer rdt)
send side
receive side
udt_send():chamado pela entidade de transporte rdt, para transferir pacotes para o receptor atravs de um canal no fivel
14-10-2013
Vamos desenvolver incrementalmente as partes emissora e receptora do protocolo de transferncia fivel (rdt) Vamos considerar transferncia de dados unidireccional (para simplificar a exposio)
Embora a informao de controlo flua nos dois sentidos!
Na especificao do emissor e do receptor, usam-se mquinas de estados finitos (Finite State Machines - FSM)
eventos que causam transio de estado aces a executar na transio de estados
estado 1 estado 2
Estado: quando se esperam eventos. Quando num estado, o prximo estado unicamente determinado pelo prximo evento
eventos aces
18
emissor
receptor
14-10-2013
Mecanismos introduzidos:
deteco de erros informao de controlo do receptor para o emissor (ACKs e NAKs)
20
receptor
emissor
10
14-10-2013
21
receptor
rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(NAK)
emissor
22
receptor
rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(NAK)
emissor
11
14-10-2013
O que fazer?
Emissor envia ACKs/NAKs referentes aos ACK/NAK do receptor?
E se se perder os ACK/NAK do emissor?
Retransmite-se!?
Tratamento de duplicados
Emissor acrescenta nmero de sequncia a cada pacote Emissor retransmite o pacote corrente se o ACK/NAK se corromper Receptor descarta (no os entrega a aplicao) pacotes duplicados
24
12
14-10-2013
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(NAK, chksum) udt_send(sndpkt) Wait for 0 from below Wait for 1 from below rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt) 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_seq1(rcvpkt) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt)
rdt2.1 discusso
26
Emissor:
No de sequencia adicionado a cada pacote bastam dois nos de sequencia (0,1) Tem de se verificar se ACKs/NAKs recebidos esto corrompidos Duplicou o nmero de estados
O estado tem de se lembrar se o pacote corrente tem o no de sequencia 0 ou 1
Receptor:
Tem de verificar se recebeu pacotes duplicados
O estado indica se se espera um pacote com o no de sequencia 0 ou 1
Nota: receptor no tem como saber se o ultimo ACK/NAK foi recebido correctamente pelo emissor
13
14-10-2013
Mesma funcionalidade de rdt2.1 mas usando apenas ACKs O receptor manda um ACK por cada pacote bem recebido
tem de incluir o nmero do pacote que est a confirmar
A recepo, pelo emissor, de dois ACKs seguidos para o mesmo pacote tem o mesmo efeito que um NAK
Emissor (parcial)
rdt_rcv(rcvpkt) && (corrupt(rcvpkt) || has_seq1(rcvpkt)) udt_send(sndpkt)
Receptor (parcial)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK1, chksum) udt_send(sndpkt)
14
14-10-2013
Requisitos adicionais:
o receptor tem de incluir em cada ACK o n de sequncia do pacote que est a confirmar temporizador timer.
rdt3.0 emissor
30
rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) start_timer Wait for call 0from above Wait for ACK0
rdt_rcv(rcvpkt)
rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,1) ) timeout udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0) stop_timer
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,1) stop_timer Wait for ACK1 rdt_send(data)
rdt_rcv(rcvpkt)
15
14-10-2013
rdt3.0 exemplos
31
rdt3.0 exemplos
32
16
14-10-2013
receptor
RTT
chegada do 1 bit do pacote chegada do ultimo bit do primeiro pacote, envia ACK
Desprezando Durao do ACK Tempo de processamento Atraso de filas de espera Atrasos nos ns intermdios
rdt3.0 desempenho
34
Exemplo:
Ritmo de transmisso - R bps (ex.: 1 Gbps ) Tempo de propagao extremo a extremo - A s (ex.: 15 ms) Tamanho dos pacotes de dados - Li bits (ex.: 1kB (8kbit) ) Tamanho dos pacotes ACK - LA bits (ex.: 125B (1kbit) ) Tempo de processamento de um pacote - Tp s (ex.: 0 sec)
17
14-10-2013
Protocolos de janela
35
Tcnica de janela: o emissor envia vrios pacotes de seguida (tantos quantos o tamanho da janela) sem esperar pela confirmao de cada um.
Aumento do n de bits destinados numerao dos pacotes Armazenamento no emissor e/ou no receptor
Dois tipos de protocolos de janela: voltar atrs (go-Back-N) e repetio selectiva (selective repeat)
36
RTT
ACK chega, envia prximo pacote, t = RTT + L / R Aumenta a utilizao por um factor de 3!
= sender
3*L/R RTT + L / R
.024 =
30.008
= 0.0008
microsecon
18
14-10-2013
Emissor:
nmeros de sequncia com k bits Janela de tamanho N, (so permitidos N pacotes consecutivos sem confirmao)
ACK(n): confirma todos os pacotes at ao nmero n inclusive Temporizador para o pacote (mais antigo) ainda no confirmado timeout: retransmite os pacotes que esto na janela de emisso
GBN emissor
38
rdt_send(data) if (nextseqnum < base+N) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum]) if (base == nextseqnum) start_timer nextseqnum++ } else refuse_data(data) base=1 nextseqnum=1 timeout Wait rdt_rcv(rcvpkt) && corrupt(rcvpkt) start_timer udt_send(sndpkt[base]) udt_send(sndpkt[base+1]) udt_send(sndpkt[nextseqnum-1])
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) base = getacknum(rcvpkt)+1 If (base == nextseqnum) stop_timer else start_timer
19
14-10-2013
GBN receptor
39 default udt_send(sndpkt) rdt_rcv(rcvpkt) && notcurrupt(rcvpkt) && hasseqnum(rcvpkt,expectedseqnum) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(expectedseqnum,ACK,chksum) udt_send(sndpkt) expectedseqnum++ Wait expectedseqnum=1 sndpkt = make_pkt(expectedseqnum,ACK,chksum)
Confirmaes: por cada pacote bem recebido envia o ACK(n) onde n o maior nmero do ltimo pacote que chegou na ordem
podem ser gerados ACKs duplicados precisa apenas de guardar em memria o nmero de sequncia do pacote de que est espera expectedseqnum
20
14-10-2013
Exemplo
Ritmo de transmisso - R bps (ex.: 1 Gbps ) Tempo de propagao extremo a extremo - A s (ex.: 15 ms) Tamanho dos pacotes de dados - Li bits (ex.: 1kB (8kbit) ) Tamanho dos pacotes ACK - LA bits (ex.: 1kB (8kbit) ) Tempo de processamento de um pacote - Tp s (ex.: 0 s ) TT = 2A + 2TP + Ti + TA Ti = Li/R TA = LA/R
Para que o emissor no pare (na ausncia de perdas), o tamanho da janela N : N TT / Ti Quantos bits se tm de usar para numerar os pacotes?
42
Janela do emissor
Contm N nmeros consecutivos, dos quais o primeiro ainda no foi confirmado
21
14-10-2013
43
SR funcionamento
44
emissor
Dados da camada superior:
Se o prximo nmero de sequncia cabe na janela envia um pacote
receptor
Pacote n em [rcvbase, rcvbase+N-1]
Envia ACK(n) Armazena o pacote, envia para a camada superior os pacotes na ordem e avana a janela
timeout(n):
Retransmite o pacote n e reinicializa o temporizador
Pacote n em [rcvbase-N,rcvbase-1]
Envia ACK(n)
ACK(n) em [sendbase,sendbase+N]:
Marca o pacote n como confirmado Se n era o menor nmero de sequncia no confirmado avana a janela at ao prximo no confirmado
22
14-10-2013
SR exemplo
45
SR - numerao
46
Exemplo:
Nmeros de sequncia: 0, 1, 2, 3 Tamanho da janela = 3 O receptor no pode distinguir entre as duas situaes da figura!
23