R d d C
t d
F
RGS
Redes de Computadores
c
a
-U
F
NAT/NAPT
U D t
P t
l UDP
o
rmáti
c
User Datagram Protocol – UDP
Introdução a protocolos de aplicação (sockets)
d
e Inf
o
tituto
d
Ins
t
Aula 22
Trabalho sob a Licença Atribuição-SemDerivações-SemDerivados 3.0 Brasil Creative Commons. Para visualizar uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-nd/3.0/br/
Introdução
ç
Entidades da camada de transporte também podem oferecer
serviços não orientados a conexão
M t ti d t d d d ã d li ã l t Mesmo sem ter garantias de entrega, de ordem e de não duplicação eles tem
o seu valor.
Na arquitetura TCP/IP corresponde ao protocolo UDP
U
FRGS
q p p
Funcionamento do NAPT (vulgarmente conhecido como NAT)
Envolve itens da camada de rede e da camada de transporte
rmática
-U
Os serviços das entidades de transporte são disponibilizados para a
camada de nível superior
juin-1
7
u
to de
Info Na arquitetura TCP/IP isso é feito através da interface de sockets
. Carissimi -15-j
3 assuntos
Instit u Redes de Computadores 2 (c) A3 assuntos
User Datagram Protocol (UDP)
g
(
)
Descrito na RFC 768
PDU do UDP é denominada datagrama
Orientado a mensagem
Encapsula uma mensagem da aplicação sem realizar fragmentação Controle é do próprio processo usuário
U
FRGS
Controle é do próprio processo usuário
Protocolo de transporte da família TCP/IP não orientado à conexão
Por não fazer controle de fluxo e de erro possui baixo custo de processamento
rmática
-U
juin-1
7
Por não fazer controle de fluxo e de erro possui baixo custo de processamento Em relação ao IP agrega funcionalidade de multiplexação e demultiplexação
entre processos u to de Info . Carissimi -15-j
Processos origem e destino são identificados através de portas
Instit
u
Redes de Computadores 3
(c) A
Formato do datagrama UDP (relembrando...)
g
(
)
S P t D ti ti P t 32 bits IP Header DATA DATA Tr a
Source Port Destination Port length Checksum DATA DATA asnferênci a U FRGS a Cabeçalho IP Cabeçalho 802.3 rmática -U juin-1 7
Data Cabeçalho IPCabeçalho UDP
u
to de
Info
. Carissimi
-15-j
Área de dados UDP
Instit
u
Redes de Computadores 4
(c) A PDU – Protocol Data Unit
Área de dados 802.3Área de dados IP
Campos do datagrama UDP
p
g
Porta fonte
Associada ao processo de origem (multiplexação)
Permite ao destino retornar mensagens ao processo de origem Permite ao destino retornar mensagens ao processo de origem
Porta destino
Usada para demultiplexação das mensagens encapsuladas nos datagramas
U
FRGS
p p ç g p g
Tamanho
Tamanho total do datagrama UDP (inclui cabeçalho + dados)
C
rmática -U juin-1 7
Checksum
Verificação da integridade dos dados (complemento de 1 em 16 bits)
Calculado sobre um pseudo-cabeçalho (IP destino IP fonte campo protocolo
u
to de
Info
. Carissimi
-15-j Calculado sobre um pseudo cabeçalho (IP destino, IP fonte, campo protocolo,
tamanho TPDU e a constante zero), o cabeçalho UDP e os dados
Dados
Instit
u
Redes de Computadores 5
(c) A
Razões para usar UDP
p
Menor custo computacional
Não há estabelecimento de conexão, nem estados a monitorar e gerenciar Nã f t l d d ti ã d t ti t Não faz controle de perda, repetição, ordenamento e congestionamento
Usado em aplicativos que toleram erros de entrega (ex. DNS) Cabeçalho simplificado
U
FRGS
Cabeçalho simplificado
Melhor controle dos dados enviados pela aplicação
Dados da aplicação são empacotados pelo UDP e enviados ao IP
rmática
-U
juin-1
7
p ç p p
Cada mensagem aplicação deve caber em um datagrama UDP Desejável que caiba em um datagrama IP para evitar fragmentação
u
to de
Info
. Carissimi
-15-j
Emprego de broadcast ou multicast
Instit
u
Redes de Computadores 6
(c) A
NAT- Network Address Translation (relembrando...)
(
)
Endereços IPs devem ser únicos
Constatação: nem toda máquina precisa ter endereço Internet válido
Para que desperdiçar endereços IP válidos?
Endereços IP reservados para redes não conectadas (RFC 1918)
U
FRGS
Bloco/Classe A: 10.0.0.0 – 10.255.255.255/8 (16.777.216 IPs)
Bloco/Faixa de classe B: 172.16.0.0 - 172.31.255.255/12 (1.048.576 IPs) Bloco/Faixa de classe C: 192 168 0 0 - 192 168 255 255/16 (65 536 IPs)
rmática
-U
juin-1
7
Bloco/Faixa de classe C: 192.168.0.0 - 192.168.255.255/16 (65.536 IPs)
Atenção: endereços especiais
u to de Info . Carissimi -15-j Endereço interno Internet Servidor NAT Instit u (c) A Servidor NAT
Segurança → efeito colateral positivo
Funcionamento do NAT
Redeinterna externaRede
End origem IP: 200.0.2.78 IP: 10.1.1.1 End. destino End. origem U FRGS 10.1.1.1 10.8.8.8 200.0.2.78 IP: 200.0.2.78 requisição rmática -U juin-1 7 Dispositivo 10.8.8.8 200.0.2.78 resposta u to de Info . Carissimi -15-j 10.2.2.2 NAT IP: 10.2.2.2 IP: 200.0.2.78 End origem Instit u (c) A
QUESTÃO: para quem direcionar a resposta?
Funcionamento do NAPT (Cont.)
(
)
src: 10.1.1.1 | 1456 dst: 143.54.11.130 | 80 src: 200.0.2.78 | 9385 dst: 143.54.11.130 | 80 10.1.1.1 Dispositivo NAPT 10.8.8.8 200.0.2.78 U FRGS 143.54.11.130 src: 10.2.2.2 | 1456 src: 200.0.2.78 | 2167 rmática -U juin-1 7 10.2.2.2 src: 10.2.2.2 | 1456 dst: 143.54.11.130 | 80 dst: 143.54.11.130 | 80 T b l t u to de Info . Carissimi -15-j 10.1.1.1 :1456 10.2.2.2 :1456 :9385 :2167 Tabela mapeamento Tradução de Portas(Network Address and Port Translation)
Instit
u
Redes de Computadores 9
(c) A
Traduções de endereços, portas e protocolos
ç
ç , p
p
NAT (RFC 1631)
Mapeamento de um endereço IP em outro E i t i d d N 1 M N 1 1 Existem variedades: N:1, M:N; 1:1
NAPT (RFC 3022)
Mapeamento de endereços e portas em outros endereços e portas
U
FRGS
Mapeamento de endereços e portas em outros endereços e portas Denominado corriqueiramente de “NAT” (ou NAT tradicional)
NAT-PT (RFC 2766)
rmática
-U
NAT PT (RFC 2766)
Mapeamento de endereços e portas em outros endereços e portas
Capacidade de traduzir protocolos da camada de rede (Protocol Translation)
juin-1
7
u
to de
Info Um dos mecanismos previstos para a transição IPv4-IPv6
. Carissimi -15-j Instit u Redes de Computadores 10 (c) A
Críticas ao NAT/NAPT
Viola regra do endereço IP ser único
Viola a independência de camadas
Mistura informações nível 3 (end. IP) com informações do nível 4 (porta)
Só funciona com protocolos TCP e UDP (porta)
U
FRGS
Transforma a Internet (rede orientada a pacotes) em uma rede
orientada a conexão (circuito virtual)
N id d d t t d A B B C i ã A C
rmática
-U Necessidade de manter estado A-B; B-C para comunicação A-C
Aplicações que inserem o IP, ou porta, no corpo de suas mensagens
podem apresentar disfunção com o NAT
juin-1
7
u
to de
Info
podem apresentar disfunção com o NAT
Ex.: FTP, H.323 e IPsec . Carissimi -15-j Instit u Redes de Computadores 11 (c) A
Nível de aplicação
p
ç
P t l í l d t ãProtocolo nível de aplicação
Aplicação Aplicação
Protocolo nivel de sessão Protocolo nível de apresentação Sessão Apresentação Sessão Apresentação U FRGS Transporte
Protocolo nivel de transporte
Sessão Sessão Transporte rmática -U juin-1 7 E l Protocolo nível de enlace
Protocolo nível de rede E l Rede Rede u to de Info . Carissimi -15-j Enlace Protocolo nível de físico
Protocolo nível de enlace Físico Enlace Físico Instit u Redes de Computadores 12 (c) A
Visão da camada de transporte pela camada aplicação
p
p
p
ç
Interface de sockets
Interface entre a aplicação e as entidades de transporte
Conjunto de primitivas para definir portas estabelecer conexão (ou não) Conjunto de primitivas para definir portas, estabelecer conexão (ou não),
enviar e receber dados
Originalmente proposta para ambientes Unix e linguagem C
U
FRGS
Originalmente proposta para ambientes Unix e linguagem C
Adotada em várias plataformas e linguagens (java, C#,...) Concebido para ser genérico
rmática
-U
juin-1
7
A Internet corresponde a família AF_INET
Construída sobre a abstração de socket
u
to de
Info
. Carissimi
-15-j
Na Internet um endpoint é representado pelo par (endereço IP e porta) No TCP, cada conexão é identificada por um par de endpoints (socket pair)
Instit
u
Redes de Computadores 13
(c) A
Modelo cliente-servidor
Paradigma empregado na implementação de serviços na Internet
Cliente: envia requisição a um servidor
S id b i i ã t i d li t Servidor: recebe requisição, executa serviço, responde ao cliente
Serviços baseados em
TCP: multiplexação e demultiplexação é feita com base na conexão
U
FRGS
TCP: multiplexação e demultiplexação é feita com base na conexão Um buffer para cada conexão estabelecida
Servidor possui um socket em modo passivo (listen) e um socket para
rmática
-U p p ( ) p
cada conexão estabelecida com cliente (established)
Cliente possui um socket ativo que passa para established (por conexão) UDP lti l ã d lti l ã é f it b t
juin-1
7
u
to de
Info UDP: multiplexação e demultiplexação é feita apenas com base nas portas
Uma fila única para cada porta (“vala comum”)
Sockets de cliente e servidores não possuem estados associados
. Carissimi
-15-j
Instit
u Sockets de cliente e servidores não possuem estados associados
Redes de Computadores 14
(c) A
Socket no lado cliente
Configuração default do endpoint
Local: IP especial 0.0.0.0 e porta arbitrária definida pelo sistema operacional R t IP i l 0 0 0 0 t i l ANY (*)
Remoto: IP especial 0.0.0.0 e porta especial ANY (*)
Podem ser atribuídos valores específicos via programação
Local: não se modifica
U
FRGS
Local: não se modifica
Remoto: define IP e porta no servidor
rmática -U juin-1 7 u to de Info . Carissimi -15-j Instit u (c) A
Socket no lado servidor
Configuração default do endpoint
Local: IP especial 0.0.0.0 e porta arbitrária definida pelo sistema operacional R t IP i l 0 0 0 0 t i l ANY (*)
Remoto: IP especial 0.0.0.0 e porta especial ANY (*)
Podem ser atribuídos valores específicos via programação
Local:
U
FRGS
Local:
IP específico: define qual interface de rede recebe as 4-PDUs
Endereço 0.0.0.0 significa “qualquer uma das interfaces”
rmática
-U ç g q q
Porta específica: define a porta do processo que atende o serviço Remoto: define de quem receberá dados
juin-1
7
u
to de
Info Associação default: “de qualquer IP, qualquer Porta”
Configuração usual do socket de listen (protocolo TCP)
IP e porta específicos: define que só recebe de dado IP e/ou porta
. Carissimi
-15-j
Instit
u IP e porta específicos: define que só recebe de dado IP e/ou porta
Interface de sockets
Socket é um descritor de arquivo
Paradigma abrir-ler-escrever-fechar
As primitivas básicas são:
As primitivas básicas são:
socket( ): cria novo socket (cliente e servidor)
bind( ): associa IP e porta ao endpoint local (servidor, típico)
U
FRGS
( ) ( )
Cliente não faz bind porque é o sisop que inicializa
listen( ): coloca socket a receber pedidos conexão (servidor TCP) accept( ): bloqueia até receber pedidos conexão (servidor TCP)
rmática
-U
juin-1
7
accept( ): bloqueia até receber pedidos conexão (servidor TCP)
Select(): permite esperar por pedidos em vários sockets
connect( ): estabelece conexão endpoint remoto (cliente TCP)
it ( ) dt ( ) i d d k t TCP/UDP u to de Info . Carissimi -15-j
write( ), sendto( ): envia dados para socket TCP/UDP read( ), recvfrom( ): lê dados de socket TCP/UDP close( ): destroi socket (cliente e servidor)
Instit
u
Redes de Computadores 17
(c) A
( ) ( )
Clientes e servidores UDP
Servidor UDP
socket bind recvfrom sendto close
U
FRGS socket sendto recvfrom close
Comunicação rmática -U juin-1 7 Cliente UDP u to de Info . Carissimi -15-j
Não há estados em sockets UDP (serviço sem conexão)
Instit
u
Redes de Computadores 18
(c) A Fonte: Arquitetura e protocolos de Rede TCP-IP, 2ª edição. G. Elias, Lobato, L.C. Escola Superior de Redes. RNP. 2013.
Clientes e servidores TCP
Servidor TCP
socket bind listen accept read write close
U FRGS Comunicação Sincronização rmática -U juin-1 7 Cliente TCP
socket connect write read close
u
to de
Info
. Carissimi
-15-j Cliente TCP
Socket original (listen) Fonte: Arquitetura e protocolos de Rede TCP IP 2ª edição G Elias
Instit
u
Redes de Computadores 19
(c) A
Socket original (listen)
Socket conectado (criado no accept)
Fonte: Arquitetura e protocolos de Rede TCP-IP, 2ª edição. G. Elias, Lobato, L.C. Escola Superior de Redes. RNP. 2013.
Exemplo sockets (lado servidor TCP)
p
(
)
main() {
a
main() {
int cont,create_socket,new_socket,addrlen; int bufsize = 1024;
char *buffer = malloc(buffsize); struct sockaddr in address;
do{
recv(new_socket,buffer,bufsize,0); // do service...
send(new_socket,buffer,bufsize,0); struct sockaddr_in address;
printf("\x1B[2J");
if ((create_socket = socket(AF_INET,SOCK_STREAM,0)) > 0) printf("The socket was created\n");
( ) .... }while(strcmp(buffer,"/q")) close(new_socket); close(create_socket); U FRGS
printf( The socket was created\n ); address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(15000);
if (bind(create socket (struct sockaddr *)&address sizeof(address)) == 0) }
rmática
-U
juin-1
7
if (bind(create_socket,(struct sockaddr )&address,sizeof(address)) == 0) printf("Binding Socket\n");
listen(create_socket,3); addrlen = sizeof(struct sockaddr_in);
new socket = accept(create socket (struct sockaddr *)&address &addrlen);
u
to de
Info
. Carissimi
-15-j new_socket = accept(create_socket,(struct sockaddr )&address,&addrlen);
if (new_socket > 0){
printf("The Client %s is connected...\n",inet_ntoa(address.sin_addr)); for(cont=1;cont<5000;cont++) printf("\x7"); Instit u Redes de Computadores 20 (c) A printf( \x7 ); }
Exemplo sockets (lado cliente)
p
(
)
main(int argc char *argv[]) { main(int argc,char *argv[]) {
int create_socket, buffsize = 1024; char *buffer = malloc(buffsize); struct sockaddr_in address;
if ((create_socket = socket(AF_INET,SOCK_STREAM,0)) > 0) printf("The Socket was created\n");
address.sin_family = AF_INET; address sin port = htons(15000);
U
FRGS
address.sin_port = htons(15000);
inet_pton(AF_INET,argv[1],&address.sin_addr);
if (connect(create_socket,(struct sockaddr *)&address,sizeof(address)) == 0)
printf("The connection was accepted with the server %s \n" inet ntoa(address sin addr));
rmática
-U
juin-1
7
printf( The connection was accepted with the server %s...\n ,inet_ntoa(address.sin_addr)); do{
gets(buffer);
send(cria_socket,buffer,bufsize,0); recv(create socket buffer bufsize 0);
u
to de
Info
. Carissimi
-15-j recv(create_socket,buffer,bufsize,0);
printf("Message recieved: %s\n",buffer); if (strcmp(buffer,"/q")) printf("Message to send: "); }while (strcmp(buffer "/q")); Instit u Redes de Computadores 21 (c) A }while (strcmp(buffer, /q )); close(create_socket); }
Servidor iterativo (single threaded)
( g
)
Adequado para serviços com reduzida taxa de requisições e
serviços cujas requisições possuem baixa carga de processamento
Servidor TCP
U
FRGS
socket bind listen accept read write close
rmática
-U
juin-1
7
Socket original (listen) Novo socket (conectado)
u to de Info . Carissimi -15-j Instit u Redes de Computadores 22
(c) A Fonte: Arquitetura e protocolos de Rede TCP-IP, 2ª edição. G. Elias, Lobato, L.C. Escola Superior de Redes. RNP. 2013.
Servidor concorrente (multithreaded)
(
)
Serviços com elevada taxa de requisições e serviços cujas
requisições possuem alta carga de processamento
Implementado com várias threads ou processos independentes
U
FRGS
Servidor TCP
read write close
rmática
-U
juin-1
7 socket bind
read write close
listen accept u to de Info . Carissimi -15-j
read write close
Socket original (listen) Novo socket (conectado)
Instit
u
(c) A Fonte: Arquitetura e protocolos de Rede TCP-IP, 2ª edição. G. Elias, Lobato, L.C. Escola Superior de Redes. RNP. 2013.
Funcionamento de sockets: lado servidor
> netstat -uan
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 192.168.1.33:161 0.0.0.0:* d 0 0 192 168 1 65 161 0 0 0 0 * > netstat -tan udp 0 0 192.168.1.65:161 0.0.0.0:* udp 0 0 0.0.0.0:161 0.0.0.0:* U FRGS
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN Tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 150.1.20.1:25 192.10.1.50:57568 ESTABLISHED tcp 0 0 150 1 20 1:25 200 50 2 10:58461 ESTABLISHED rmática -U juin-1 7 tcp 0 0 150.1.20.1:25 200.50.2.10:58461 ESTABLISHED tcp 0 0 150.1.20.1:25 150.10.1.20:60496 ESTABLISHED
Fonte: Arquitetura e protocolos de Rede TCP-IP, 2ª edição. G. Elias, Lobato, L.C. Escola Superior de Redes. RNP. 2013.
u
to de
Info
. Carissimi
-15-j
Na demultiplexação, a associação default só é usada se não houver outro socket mais específco
Instit
u
(c) A
Situação de portas e sockets no servidor
ç
p
Servidores TCP
Socket inicial (estado de LISTEN)
Endpoint local possui endereço IP 0 0 0 0 e porta específica do servidor Endpoint local possui endereço IP 0.0.0.0 e porta específica do servidor Endpoint remoto possui endereço IP.0.0.0.0 e porta ANY
Socket escravo (estado ESTABLISHED)
U
FRGS
( )
Endpoint local possui endereço IP e porta específica do servidor Endpoint remoto possui endereço IP e porta do cliente
rmática
-U
Servidores interativos tem 1 socket em listen e no máximo um em established Servidores concorrentes tem 1 socket em listen e n em established
Servidores UDP juin-1 7 u to de Info Servidores UDP
Há sempre um socket no servidor por associação IP/Porta Não há estados . Carissimi -15-j Instit u Redes de Computadores 25 (c) A
Leituras complementares
p
Tanenbaum, A. Redes de Computadores (4
aedição), Campus,
2000.
C ít l 5 ã 5 6 (NAT) Capítulo 5, seção 5.6 (NAT) Capítulo 6, seção 6.1
Carissimi A ; Rochol J; Granville L Z; Redes de Computadores
U
FRGS
Carissimi, A.; Rochol, J; Granville, L.Z; Redes de Computadores.
Série Livros Didáticos. Bookman 2009.
Capítulo 5, seção 5.5.1 rmática -U juin-1 7 p , ç Capítulo 7, seção 7.2 u to de Info . Carissimi -15-j Instit u Redes de Computadores 26 (c) A