red_com2_not_aul06_GR
Download
Report
Transcript red_com2_not_aul06_GR
Redes de Computadores 2
- Camada de Transporte (Princípios de
Funcionamento & UDP & TCP) -
Paulo Roberto Freire Cunha
[email protected]
Revisão ...
processos se comunicam
enviando/ recebendo
mensagens através de
sockets (API)
socket é a interface entre o
processo da aplicação e a
camada de transporte
um processo identifica o
outro processo que ele quer
se comunicar através de um
endereço IP e uma porta
F
T
P
Aplicação
do Usuário
T
E
L
N
E
T
D
N
S
H
T
T
P
S
M
T
P
S
N
M
P
Interface de Sockets
UDP
TCP
IP
ARP
PPP
Interface de rede
Camada de Abstração do Hardware
Drivers
Redes de Computadores 2 (baseado nos slides do Kurose)
Camada de Transporte
Princípios da Camada de Transporte
funções básicas
multiplexação/
demultiplexação
Visão Geral
transporte
transporte de dados
confiável
controle de fluxo
controle de
congestionamento
serviços da camada de
transporte sem conexão:
UDP
transporte de dados
confiável
transporte orientado a
conexão: TCP
controle de
congestionamento no TCP
Redes de Computadores 2 (baseado nos slides do Kurose)
Princípios da Camada de Transporte
F
T
P
Aplicação
do Usuário
T
E
L
N
E
T
D
N
S
H
T
T
P
S
M
T
P
S
N
M
P
Interface de Sockets
CAMADA DE TRANSPORTE
UDP
TCP
IP
ARP
PPP
Interface de rede
Camada de Abstração do Hardware
Drivers
Redes de Computadores 2 (baseado nos slides do Kurose)
Serviços da Camada de Transporte
fornece comunicação entre
aplicações que executam em
hosts separados
os serviços da camada de
rede transferem dados
aplicação
transport
rede
enlace
física
network
data link
physical
rede
enlace
física
rede
enlace
física
entre “sistemas finais”
os serviços da camada de
transporte transferem dados
entre “processos”
Redes de Computadores 2 (baseado nos slides do Kurose)
rede
enlace
física
rede
enlace
física
aplciação
transport
rede
enlace
física
Serviços de Transporte na Internet
TCP
UDP
Não tem um serviço Multicast confiável,
confiável
unicast
em tempo real ou
unicast / multicast
ordenado
estabelecimento da
O projeto de uma aplicação
deve definir que serviço deverá
controle de
congestionamento
não-confiável
com garantia de largura banda
conexão
ser usado.
não-ordenado
controle de fluxo
Redes de Computadores 2 (baseado nos slides do Kurose)
Multiplexação/Demultiplexação
demultiplexação
envia segmentos
(unidade de dados
multiplexação
trocada entre
múltiplos processos e
entidades da camada
coloca um cabeçalho
de transporte) para a
aplicação correta
“executada no
receptor”
coleta dados de
“executada no
transmissor”
Redes de Computadores 2 (baseado nos slides do Kurose)
Multiplexação/Demultiplexação
dado da camada
de aplicação
cabeçalho
do segmento
segmento
Ht M
Hn segment
P1
M
aplicação
transporte
rede
M
M´
P4
aplicação
transporte
rede
Redes de Computadores 2 (baseado nos slides do Kurose)
M´
P2
aplicação
transporte
rede
Multiplexação/Demultiplexação
Formato do Segmento UDP/TCP
baseadas no IP e no número
das portas do transmissor
receptor
cada segmento tem o número
da porta da origem e do
destino
32 bits
porta origem # porta dest. #
resto do cabeçalho
dados
portas específicas das
aplicações
Redes de Computadores 2 (baseado nos slides do Kurose)
Multiplexação/Demultiplexação
são reservados 16 bits para as portas (65536 portas)
0-1023 portas reservadas (RFC 1700)
ftp (20,21)
http (80)
smtp (25)
telnet (23)
> 1023 livres
Redes de Computadores 2 (baseado nos slides do Kurose)
Multiplexação/Demultiplexação
host A
porta orig.: x
porta dest:23
servidor B
porta orig.:23
porta dest: x
IP orig: C
IP dest: B
porta orig: y
port dest: 80
telnet
Cliente WEB
host A
Cliente WEB
host C
IP orig.: A
IP Dest: B
porta orig: x
porta dest:80
IP orig: C
IP dest: B
porta orig: x
porta dest:80
Servidor
WEB B
Servidor WEB
Redes de Computadores 2 (baseado nos slides do Kurose)
UDP – User Datagram Protocol
RFC 768
tipo de serviço fornecido à
camada de aplicação
benefícios do uso do
UDP
“melhor esforço”
perda de pacotes
pacotes fora de ordem
“sem-conexão”
não há um estabelecimento
inicial (handshake) da
conexão
cada pacote é tratado de
forma independente
o handshake (como no
TCP) pode causar atrasos
simplicidade (não mantém
o estado da conexão no
cliente/servidor)
cabeçalho de dados
pequeno (TCP –20)
ausência de controle de
congestionamento
Redes de Computadores 2 (baseado nos slides do Kurose)
UDP
aplicações que usam o
UDP
multimídia
tolerante a perdas
sensível a taxa de
transmissão
telefonia na Internet
protocolos de aplicação
que usam UDP
DNS
SNMP
RIP
32 bits
porta orig #
porta dest #
length
checksum
dados
Datagrama (max. 516 bytes)
Redes de Computadores 2 (baseado nos slides do Kurose)
UDP – exemplo 1
7345
7070
7345
7070
8+12
crc
8+12
crc
Hello World
paulista
Hello World
7070
7345
7070
7345
8+12
crc
8+12
crc
HELLO WORLD
HELLO WORLD
goiana
Redes de Computadores 2 (baseado nos slides do Kurose)
UDP – exemplo 2 [CLOCK]
7345
7070
7345
7070
8+5
crc
8+5
crc
CLOCK
paulista
CLOCK
7070
7345
7070
7345
8+8
crc
8+8
crc
10:45:30
10:45:30
goiana
Redes de Computadores 2 (baseado nos slides do Kurose)
UDP – exemplo 2 [MJVM]
7345
7070
7345
7070
8+5
crc
8+5
crc
MJVM
paulista
MJVM
7070
7345
7070
7345
8+6
crc
8+6
crc
304516
304516
goiana
Redes de Computadores 2 (baseado nos slides do Kurose)
Checksum UDP
Objetivo: Detectar erros nos dados transmitidos
Transmissor
calcula o checksum
Receptor
trata todo o datagrama
como seqüência de 16 bits
soma todas as seqüência
calcula o complemento
soma todas as
seqüências de 16 bits
do datagrama
se a soma for 11111111,
então OK
se a soma contiver um
0, então ERRO
Redes de Computadores 2 (baseado nos slides do Kurose)
Checksum UDP
0110011001100110
0101010101010101
0000111100001111
0110011001100110
0101010101010101
1011101110111011
0000111100001111
1100101011001010
0011010100110101
+
+
complemento
checksum
Redes de Computadores 2 (baseado nos slides do Kurose)
Princípios de Transferência Confiável de Dados
Confiabilidade das Camadas
REDE
Camada de
TRANSPORTE
Camada de
APLICAÇÃO
Serviço Confiável
Fornecido
Transmissor
Implementação do Serviço
Confiável
Receptor
As características
do canal
Dado
Dado
Não-Confiável definem
a complexidade
Dado
rdt_send()
Canal Confiável
do protocolo confiável
Dado
Protocolo
Confiável
(emissor)
udt_send()
deliver_data()
Protocolo
Confiável
(receptor)
Pacote
Pacote
Canal NÃO-Confiável
Redes de Computadores 2 (baseado nos slides do Kurose)
rdt_rcv()
Princípios de Transferência Confiável de Dados
deliver_data(): chamada
por rdt para enviar o dado
para aplicação
rdt_send(): chamada da
aplicação
rdt_send()
Transmissor
Dado
Dado
Protocolo
Confiável
(emissor)
udt_send()
deliver_data()
receptor
Protocolo
Confiável
(receptor)
Pacote
Pacote
rdt_rcv()
Canal NÃO-Confiável
udt_send(): chamada por
rdt para transferência em um
canal não-confiável
rdt_rcv(): chamado quando
o pacote chega ao receptor
Redes de Computadores 2 (baseado nos slides do Kurose)
Protocolos para Transmissão
Confiável
rdt 1.0
canal confiável
rdt 2.0
rdt 2.1
canal não-confiável (com
erros)
perda de bits
uso de ACK/NACK
problema: ACK/NACK
corrompidos
canal com erros
numeração dos pacotes (0
ou 1)
pacotes são
retransmitidos se o
ACK/NACK for
corrompido
duplicatas são eliminadas
problema: o receptor não
sabe se o ACK/NACK foi
recebido
Redes de Computadores 2 (baseado nos slides do Kurose)
Protocolos para Transmissão
Confiável
rdt 2.2
rdt 3.0
canal com erros
não usa o NACK
o ACK segue com o
número do último
pacote transmitido
canal com erro e
perdas
ack e # do pacote
ajuda, mas não é
suficiente
o emissor espera um
certo tempo e
retransmite o pacote
Redes de Computadores 2 (baseado nos slides do Kurose)
Protocolos com Pipeline
vários pacotes são
transmitidos antes
do receptor receber
um ack de que a
exemplos de
protocolos
Go-back-N
Retransmissão
transmissão foi
realizada com
sucesso
seletiva
Redes de Computadores 2 (baseado nos slides do Kurose)
Protocolos com Pipeline
Go-back-N
usa janelas
pacotes com número de
Retransmissão seletiva
reconhecidos
seqüência
ACK(n): reconhece os pacotes
até n
temporizador para cada pacote
se acontecer um timeout(n), o
pacote n e todos os pacotes com
número de seqüência maiores são
retransmitidos
todos os pacotes são
individualmente
um temporizador é
mantido para cada pacote
não reconhecido
apenas os pacotes não
reconhecidos são
retransmitidos
Redes de Computadores 2 (baseado nos slides do Kurose)