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)