Você está na página 1de 9

User Datagram Protocol (UDP)

Redes de Computadores ! Descrito na RFC 768


Instituto de Informática - UFRGS

! PDU do UDP é denominada datagrama


! Orientado a mensagem
Protocolos de Transporte na Internet ! Protocolo de transporte da família TCP/IP não orientado à conexão
UDP e TCP ! Por não executar controle de fluxo, de erro e de ordenamento, possui baixo
custo de processamento

Instituto de Informática - UFRGS


! Em relação ao IP agrega funcionalidade de multiplexação e demultiplexação
e detecção de erros
! Processos origem e destino são identificados através de portas

A. Carissimi -30-nov.-09
Aula 26
Redes de Computadores 2

Formato do datagrama UDP Campos do datagrama UDP

32 bits ! Porta fonte


IP Header DATA ! Associada ao processo de origem
Trasnferência

Source Port Destination Port DATA ! Permite ao destino retornar mensagens ao processo de origem
length Checksum
DATA ! Porta destino
! Usada para demultiplexação das mensagens encapsuladas nos datagramas
! Tamanho
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

Cabeçalho 802.3 ! Tamanho total do datagrama UDP (inclui cabeçalho + dados)


Cabeçalho IP
Data ! Checksum
Cabeçalho UDP
! Verificação da integridade dos dados (complemento de 1 em 16 bits)
A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09

! 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
Área de dados UDP
PDU – Protocol Data Unit Área de dados IP
Área de dados 802.3
Redes de Computadores 3 Redes de Computadores 4
Razões para usar UDP Transmission Control Protocol (TCP)

! Melhor controle dos dados enviados ! Descrito nas RFCs 793, 1122, 1323, 2018 e 2581
! Dados da aplicação são empacotados pelo UDP e enviados ao IP ! Protocolo orientado a conexão
! Cada mensagem aplicação deve caber em um datagrama UDP
! PDU do TCP é denominada de segmento
! Desejável que caiba em um datagrama IP para evitar fragmentação
! Mensagens geradas por processos são fragmentadas em segmentos TCP
! Não há estabelecimento de conexão ! Abordagem baseada em fluxo de dados (data stream)
! Não há atrasos (troca de T-PDUs e processamento)
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


! Trata os dados como uma cadeia continua de bytes
! Não há estados de conexão a monitorar/gerenciar ! Decide como agrupar os bytes em segmentos
! Não faz controle de perda, repetição, ordenamento e congestionamento
! Fornece comunicação confiável ponto a ponto entre dois processos
! Usado em aplicativos que toleram erros de entrega
A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09
! Cada conexão TCP envolve exatamente duas extremidades
! Cabeçalho simplificado ! Envio pode ocorrer entre uma ou outra direção de uma mesma conexão TCP

Redes de Computadores 5 Redes de Computadores 6

Serviços oferecidos pelo TCP a aplicativos Segmento TCP

Orientado a conexão 32 bits


! Transferência confiável de dados dentro de um canal lógico, a !
Controle de erro e fluxo IP Header
conexão ! Urgent pointer
! Garantia de entrega e de ordem Ack Source Port Destination Port
! Interface data stream (visão da aplicação) Sequence Number
! Gerenciamento da conexão Push
! Os dados são tratados como uma seqüência de bytes sem estrutura alguma Rst Acknowledgment Number
! Não há noção de registro/bloco/pacote para envio ou recepção Syn Hlen Flags Window
Cabeçalho 802.3
Fin Checksum Urgent Pointer
Cabeçalho IP
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

Options+padding
Cabeçalho TCP

Data
A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09

Área de dados TCP


Área de dados IP
Área de dados 802.3 PDU – Protocol Data Unit

Redes de Computadores 7 Redes de Computadores 8


Os campos mais simples primeiro: hlen, flags... ...checksum, options e padding

! Hlen ! Checksum
! Fornece o tamanho do cabeçalho TCP em múltiplos de 4 bytes (palavra) ! Verificação da integridade dos dados (complemento de 1 em 16 bits)
! Tipicamente assume o valor 5 (20 bytes), exceto quando há options ! Calculado sobre um pseudo-cabeçalho (IP destino, IP fonte, campo protocolo,
! Flags tamanho da TPDU e a constante zero), o cabeçalho TCP e os dados
! Indica o propósito e o tipo do segmento ! Options
! URG: segmento transporta dados urgentes ! Lista variável de informações e parâmetros para o TCP
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


! ACK: segmento transporta uma confirmação positiva ! Usado principalmente para definir o tamanho máximo de um segmento (MSS)
! PSH: mecanismo push foi adotado no envio do segmento ! Padding
! RST: a conexão deve ser imediatamente abortada (reset) ! Usado para “arrendondar” o número de bytes do cabeçalho para este ter
A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09
! SYN: segmento transporta requisição de abertura de conexão sempre um número inteiro de palavras de 32 bits.
! FIN: segmento transporta requisição de encerramento da conexão

Redes de Computadores 9 Redes de Computadores 10

Conexão TCP TCP: Controle de seqüência

SYN
! Objetivo:
Estabelecimento

SYN/ACK
! Garantir que dados são recebidos na ordem em que foram emitidos (e sem
ACK duplicação)
! O protocolo TCP faz isso através de um número de seqüência
Campos sequence number, DATA ! Número inicial é negociado durante o estabelecimento da conexão
Trasnferência

acknowledgement number, window DATA/ACK ! Cada byte possui um número de seqüência


Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

e urgent pointer são usados nos


ACK ! Indica sempre o primeiro byte de dados contido no segmento
mecanismos de controle de erro e
de fluxo (ordenamento). ! É o número que está no campo sequence number (SN)
FIN
! Usado para manter ordenamento e detectar duplicação
A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09
Encerramento

ACK
FIN
150 151 198 199 200 201 348 349 350 351 448 449
ACK
Segmento 150 Segmento 200 Segmento 350

Redes de Computadores 11 Redes de Computadores 12


TCP: Controle de erros Controle de erros (cont.)

! Objetivo: ! Baseado em:


! Garantir o recebimento correto de T-PDUs ! Checksum: detecção de erros
! No protocolo TCP é baseado em ! timeout : segmentos não confirmados são reenviados
! Confirmação positiva (ACK) ! confirmações positivas
! Destino envia mensagem acusando correto recebimento de um segmento
! Ações
! Confirmação (ACK) pode ser enviada em pigbacking com o fluxo de
! Segmento com erro → descartado
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


dados no sentido inverso
! Confirmação acumulativa (similar ao go-back N) ! Segmento perdido → retransmitido por time-out
! Diversos segmentos consecutivos podem ser confirmados por uma única ! Fora de ordem → ordena no buffer, confirma após ordenado (sem perdas)
mensagem ! Duplicados → descarta
A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09
! RFC 2018, permite o reconhecimento seletivo (similar ao selective
repeat)
! Retransmissão por time-out

Redes de Computadores 13 Redes de Computadores 14

TCP: Confirmação positiva TCP: Retransmissão

! Baseado no valor do campo acknowledge number (ACK) ! O protocolo TCP emprega timeout por segmentos
! Indica o número de seqüência do próximo byte que espera receber ! Processo origem dispara um timeout para cada segmento enviado
! Informa o correto recebimento dos bytes com número de seqüência inferiores ! Segmento é retransmitido quando a origem não recebe a confirmação antes
ao da mensagem de confirmação da expiração do temporizador
! O bit de ACK do campo de flags deve estar ativo para dar significado ao ! Tratamento da duplicação é feito pelo sequence number
campo acknowledgement number
! Destino espera segmento com número x, qualquer segmento com número
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

inferior é considerado duplicado e é descartado

150 151 198 199 200 201 348 349 350 351 448 449
A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09

SN=150 SN=200 SN=350

ACK=200 ACK=350 ACK=450

Redes de Computadores 15 Redes de Computadores 16


TCP: Controle de fluxo Campo window: controle de fluxo

! Baseado em um esquema de crédito (genérico) ! Origem do segmento informa o tamanho do seu buffer de recepção
! Variação de janela deslizante onde os buffers de transmissão e recepção são (janela) a partir do último byte que confirmou
de tamanho variável (blocos múltiplos de bytes) ! RcvWindow = RcvBuffer – [ LastByteRcvd – LastByteRead ]
! Emissor tem crédito para enviar até n blocos de bytes ao destino
! Segmento ao ser aceito (processado), o destino renova a quantidade de ! Questão paralela: como se sabe o tamanho da área de dados?
créditos por um valor c (0 < c ≤ n)
! Tamanho TPDU (informado no IP) – Tamanho do cabeçalho TCP
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


! Créditos podem ser renegociados
! Máximo teórico é 65535 – 20 – 20, mas é definido através do MSS (Maximum
! No protocolo TCP Segment Size) divulgado por um host no momento do estabelecimento da
! Janela deslizante orientada a byte, i.é., cada byte se comporta como um buffer conexão
A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09
! Tamanho máximo da janela é negociado no estabelecimento da conexão ! Valor default: 536 bytes
! Confirmações (ACKs) servem renovar os créditos ! Ethernet: 1460 bytes

Redes de Computadores 17 Redes de Computadores 18

Transferência de dados: urgent data Transferência de dados: mecanismo data stream push (bit PSH)

! Flag URG indica a presença de dados “urgentes” no segmento ! Buffer de transmissão do TCP tenta otimizar uso da rede
! Usuário (processo) destino decide o que fazer ! Objetivo é diminuir a quantidade de segmentos na rede, bufferizando os
! O campo urgent pointer sinaliza a posição em que termina os dados urgentes dados e enviando quando eles atinjam uma determinada quantidade
! Problema: prejudicar tempo de resposta da aplicação (ex. telnet)
cabeçalho ! Bit PSH
! Processo origem pode solicitar a transmissão de dados até esse momento
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

T-PDU dados urgent ! Força a geração de um segmento com os dados disponíveis


pointer
! Indica que a entidade de transporte deve repassar imediatamente o segmento
para o processo destino
A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09

! Possibilidade raramente usada no TCP ! Encaminha todos os bytes que estão no buffer e não apenas os do
segmento identificado com o PSH
! Necessário que o processo destino priorize os dados (não seria
responsabilidade da aplicação?)

Redes de Computadores 19 Redes de Computadores 20


Conexão na presença de erros: problemas Problema: segmentos de conexões anteriores

! Estabelecimento da conexão ! Problema:


! Baseado em dois TPDUs SYN (two way handshake) ! T-PDU de uma conexão j chega em uma
! Perda de qualquer um dos SYN provoca retransmissão (tratar duplicados) conexão j+1
! Sistema se resincroniza
! Chegada atrasada da T-PDU SYN provoca interpretação erradas de conexão
! Transferência de dados: controle de fluxo e de erro
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


! Solução:
! TPDUs ainda válidos de conexões anteriores chegando atrasadas
! Iniciar cada conexão com um número de
! Encerramento da conexão seqüência a partir do último da conexão
! Chegada de pedidos de encerramento atrasados mais recente
A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09
! Encerramento feito antes de receber todos os segmentos de dados ! TPDUs SYN incluem números de
seqüência
! SYN i

Redes de Computadores 21 Redes de Computadores 22

Mais problemas: atraso na T-PDU de controle Three-way handshake

! T-PDU que chega atrasado é um T-PDU SYN i ! Solução para problema do two-way handshake
! Formalmente provado que a troca de 3 mensagens é condição
necessária e suficiente para assegurar um acordo não ambíguo
entre duas partes
! Mesmo considerando perdas, duplicação e atrasos
! Basicamente consiste em cada lado confirmar o recebimento de T-
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

PDUs de abertura de conexão e número de seqüência


A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09

B pensa que está abrindo conexão que espera números de seqüência a partir de i e
responde a partir de j. A considera que a conexão é com k e j. Ao chegar segmento
com k, B descarta como erro por não pertencer a conexão negociada!!

Redes de Computadores 23 Redes de Computadores 24


Estabelecimento de conexão Ainda problemas: Encerramento de conexão

! Three way handshake ! Baseado em duas T-PDUs FIN (two way handshake)
! Entre pares de porta ! Apresenta problemas similares ao estabelecimento da conexão
Host 1 Host 2 ! Perdas de TPDUs e TPDUs atrasadas
! Problema:
envia SYN seq=x (SN=i; m)

recebe SYN (FIN)


Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


envia SYN seq=y, ACK x+1
recebe SYN seq=y, ACK x+1 PERDA !!!
envia SEQ x+1, ACK y+1
! Solução: numerar TPDUs FIN
A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09
recebe SEQ=x+1, ACK y+1
(SN=i; m)
Espera dados chegarem antes (FIN i+m+1)
de encerrar a conexão.
Posterga!
Redes de Computadores 25 Redes de Computadores 26

Encerramento de conexão simétrico Diagrama de estados conexão TCP

Lado Cliente Lado Servidor


! Antes de receber a confirmação do encerramento (TPDU FIN da
outra entidade) ainda recebe TPDUs de dados CLOSED CLOSED
Espera 30s Recebe ACK
Envia SYN Envia SYN
FIN seq =x
Recebe FIN seq = x TIME_WAIT SYN_SENT LAST_ACK LISTEN
Envia ACK = x+1
Recebe ACK = x + 1 Recebe SYN+ACK Recebe SYN
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

Recebe FIN Envia FIN


Envia ACK Envia SYN+ACK
...

Envia ACK
Envia FIN seq = y ACK = x+1
Recebe FIN seq=y ACK=x+1 FIN_WAIT_2 ESTABLISHED CLOSE_WAIT SYN_RCVD
Envia ACK=y+1
A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09

Envia FIN Recebe ACK


Recebe ACK=y+1 Recebe ACK Recebe FIN
FIN_WAIT_1 Envia ACK ESTABLISHED

Redes de Computadores 27 Redes de Computadores 28


Instituto de Informática - UFRGS

Instituto de Informática - UFRGS


A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09
Redes de Computadores 29 Redes de Computadores 30

Análise da sessão ftp Recuperação de falhas (crash recovery)

[SYN] seq=0 MSS=1460 ! Em caso de falhas as informações de estado de uma conexão são
perdidas por um lado, o outro mantém meia-conexão
[SYN, ACK] seq=0, ack=1, W=5840, MSS=1460

CRASH CRASH
[ACK] seq=1, ack=1 (SN=i, m) (SN=i, m)
17520 220 FTP server Ready ... (23 bytes) Time-out
Time-out
REBOOT
Instituto de Informática - UFRGS

Instituto de Informática - UFRGS

[ACK] seq=1, ack=1


17497 (SN=i, m)
Time-out
[ACK] seq=1, ack=24
(SN=i, m)
Time-out (SN=i, m)
A. Carissimi -30-nov.-09

A. Carissimi -30-nov.-09

[ACK] seq=1, ack=24 (RST i)


USER asc.. (10 bytes)
REBOOT
[ACK] seq=24, ack=11
Reseta a meia conexão por excesso de Reseta a meia conexão por receber
retransmissões comando de reset (RST)
Redes de Computadores 31 Redes de Computadores 32
Leituras complementares

! Stallings, W. Data and Computer Communications (6th edition),


Prentice Hall 1999.
! Capítulo 15, seção 15.3, 15.4
! Tanenbaum, A. Redes de Computadores (4a edição), Campus,
2000.
! Capítulo 6, seção 6.1, 6.2 e 6.3
Instituto de Informática - UFRGS

! Carissimi, A.; Rochol, J; Granville, L.Z; Redes de Computadores.


Série Livros Didáticos. Bookman 2009.
! Capítulo 6, seções 6.4 e 6.5
A. Carissimi -30-nov.-09

Redes de Computadores 33

Você também pode gostar