Professional Documents
Culture Documents
Danielo G. Gomes
danielo@ufc.br
Fortaleza, 19/5/2011
Contedo do Captulo 3
3.1 Servios da camada de transporte 3.2 Multiplexao e demultiplexao 3.3 Transporte no orientado para conexo: UDP 3.4 Princpios da transferncia confivel de dados
2/30
3/30
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
4/30
characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)
5/30
send side
receive side
6/30
estado: neste estado o prximo estado determinado unicamente pelo prximo evento
estado 1
evento aes
estado 2
7/30
confiveis
9/30
10/30
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) 11/30
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) 12/30
Lidando c/ duplicatas:
transmissor inclui nmero de seqncia em cada pacote transmissor retransmite o ltimo pacote se ACK/NAK chegar com erro receptor descarta (no entrega a aplicao) pacotes duplicados
O que fazer?
14/30
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) && not corrupt(rcvpkt) && has_seq0(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)
15/30
rdt2.1: discusso
Transmissor: no. de seq no pacote bastam dois nos. de seq. (0,1). Por qu? deve verificar se ACK/NAK recebidos esto corrompidos duplicou o no. de estados
estado deve lembrar se pacote corrente tem no. de seq. 0 ou 1
nota: receptor no tem como saber se ltimo ACK/NAK foi recebido bem pelo transmissor
16/30
17/30
19
19/30