Você está na página 1de 56

20

Rede de computadores

Alexandre da Silva Carissimi


Juergen Rochol
Lisandro Zambenedetti Granville
Material Didático

Nota.:

Este material foi criado para ser


utilizado na disciplina de Redes de
Computadores dos cursos de
Ciência da Computação e
Engenharia da Computação da
Universidade Federal do Rio
Grande do Sul (UFRGS) l. Ele é
baseado no conteúdo do livro, mas
não tem uma correspondência
exata.

Redes de Computadores 2
Capítulo 6 – Nível de transporte

Redes de Computadores 3
Nível de transporte

Aplicação Protocolo nível de aplicação Aplicação

Protocolo nível de apresentação


Apresentação Apresentação

Protocolo nível de sessão


Sessão Sessão

Protocolo nível de transporte


Transporte Transporte

Protocolo nível de rede


Rede Rede

Protocolo nível de enlace


Enlace Enlace

Protocolo nível de físico


Físico Físico

Redes de Computadores 4
Introdução

• Objetivo:

– Fornecer comunicação lógica entre processos de aplicação

• Camada de rede oferece comunicação lógica entre


hospedeiros

• Funcionalidades:

– Multiplexação e demultiplexação

– Serviço não orientado à conexão

– Serviço orientado à conexão

• Implementado pela entidade de transporte

– Software que executa as tarefas da camada de transporte

Redes de Computadores 5
Contexto do protocolo de transporte
Usuários (processos)
do
Serviço de transporte
(fim a fim)

Protocolo nível de transporte


Transporte Transporte

Rede Rede

Enlace Enlace

Físico Físico
Rede

Redes de Computadores 6
Multiplexação e demultiplexação

• Problema: camada de rede entrega dados entre dois sistemas finais,


identificando cada um por um endereço exclusivo
– Ampliar a entrega de hospedeiro a hospedeiro para processo a
processo
• Múltiplos usuários podem utilizar o mesmo protocolo de transporte
– Usuários são identificados por transport services acess point (TSAP)

TSAP 1 TSAP 2  TSAP n

Camada de transporte
Demultiplexação da camada de Multiplexação da camada de
rede para a camada de transporte rede pela camada de transporte
Camada de rede
Redes de Computadores 7
Demultiplexação na Internet

• Protocolos de transporte TCP/UDP empregam o conceito de porta

• Porta é um identificador numérico único (16 bits) associado a um


processo

• Demultiplexação é feito com base na porta

– A informação de portas fonte e destino são “carregadas” na T-


PDU
Porta Fonte Porta Destino
Cabeçalho
Outros campos do cabeçalho
T-PDU

Redes de Computadores 8
O conceito de porta
• É um número de 16 bits utilizado como
identificador
Porta Protocolo Aplicação • Existem dois tipos de portas
20 TCP FTP-data
– Bem conhecidas (well know ports): 1 a 1.023
21 TCP FTP-control
25 TCP SMTP – Efêmeras (ephemeral ports)
53 TCP/UDP DNS • Registered ports: 1.024 a 49.151
80 TCP HTTP • Dynamics and/or private ports: 49.152 a
110 TCP POP3 65.535
161 UDP SNMP • http://www.iana.org/assignments/port-
numbers
• Uma aplicação é completamente identificada por:
TCP UDP
– Endereço IP
– Protocolo (TCP ou UDP)
IP
Internet Protocol – Número de porta
• Portas TCP são independentes de Portas UDP
Interface de – Porta 100 (TCP) ≠ Porta 100 (UDP), mas se
rede convenciona “alocar” as duas
simultaneamente para um mesmo protocolo
Redes de Computadores 9
Serviço não orientado à conexão

• Serviço não confiável

– Não garante a entrega dos dados

– Os dados podem ser perdidos, entregues fora de ordem ou


duplicados

– Pode prover mecanismos de detecção de erro para garantir a


integridade dos dados

• Dados são transportados em T-PDUs individuais e independentes

• Na Internet corresponde ao protocolo User Datagram Protocol (UDP)

Redes de Computadores 10
User Datagram Protocol (UDP)

• Descrito na RFC 768

• PDU do UDP é denominada datagrama

• Protocolo de Transporte da família TCP/IP não orientado à conexão

– Por não executar controle de fluxo, de erro e de ordenamento,


possui baixo custo de processamento

• Processos origem e destino são identificados através de portas

Redes de Computadores 11
Formato do datagrama UDP

32 bits
IP Header DATA

Trasnferência
Source Port Destination Port DATA
Length Checksum
DATA

Cabeçalho 802.3
Cabeçalho IP
Cabeçalho UDP
Data

Área de dados UDP


Área de dados IP
PDU – Protocol Data Unit Área de dados 802.3
Redes de Computadores 12
Campos do datagrama UDP
• Porta fonte
– Associada ao processo de origem
– Permite ao destino retornar mensagens ao processo de origem
• Porta destino
– Usada para demultiplexação das mensagens encapsuladas nos
datagramas
• Tamanho
– Tamanho total do datagrama UDP (inclui cabeçalho + dados)
• Checksum
– Verificação da integridade dos dados (complemento de 1 em 16
bits)
– Calculado sobre um pseudocabeçalho (IP destino, IP fonte,
campo protocolo, tamanho TPDU e a constante zero), o cabeçalho
UDP e os dados
• Dados

Redes de Computadores 13
Serviço orientado a conexão

• Serviço confiável

– Garante a entrega de um fluxo de dados (stream)

– Provê controle de fluxo, controle de erro e ordenamento

• Uma conexão é composta por três fases:

– Estabelecimento: negocia parâmetros para realizar o controle de


fluxo, de erro e de sequência

– Transferência: troca de dados pela conexão (full-duplex)

– Encerramento: desfaz a conexão liberando recursos do sistema


operacional (descritores e estruturas de dados) e garante
recebimento de dados em trânsito.

• Na Internet corresponde ao Transmission Control Protocol (TCP)


Redes de Computadores 14
Conexão

• Três objetivos:
– Garantir que o correspondente existe
– Negociar parâmetros (e.g.: tamanho de T-PDUs, créditos, QoS,
início do número de sequência, etc.)
– Reservar recursos nas entidades de transporte envolvidas (e.g.:
buffers, identificadores de conexão)
• Consiste na troca de T-PDUs de controle (SYN, FIN)
– Diferentes estados (CLOSED, ESTAB, LISTEN)
• Entidades de transporte podem:
– Esperar passivamente por pedido de abertura de conexão
– Iniciar ativamente um pedido de abertura de conexão

Redes de Computadores 15
Estabelecimento de conexões: cenários
Sistema A Sistema B
SYN funciona como solicitação
(cliente/servidor) (cliente/servidor)
de abertura de conexão e como
confirmação de um pedido de CLOSED CLOSED
conexão
SYN (Active open) SYN SYN Active open

SYN ESTAB ESTAB


SN = 1
Sistema A Sistema B
SN=1, ACK=101
(servidor) (cliente)
SN = 101, ACK = 50 CLOSED CLOSED

Active open
LISTEN SYN
ATENÇÃO: não considera erros, (Passive open)
nem atrasos! (a completar) ESTAB SYN
ESTAB
Redes de Computadores 16
Diagrama básico de estados de conexão

Redes de Computadores 17
Encerramento de uma conexão

• Conexão é bidirecional, qualquer lado pode pedir o encerramento


• Duas formas:
– Simétrico: um correspondente ao encerrar a conexão indica
apenas que não tem mais dados a enviar mas ainda está aceitando
dados do outro
• Conexão só é encerrada se ambos os lados concordarem
• Não há perda de dados
• Encerramento gracioso (graceful)
– Assimétrico: um correspondente encerra a conexão
independentemente do outro lado
• Pode haver perdas de dados

Redes de Computadores 18
Encerramento simétrico e assimétrico

Simétrico Assimétrico

FIN
FIN*
FIN
CLOSE
WAIT FIN WAIT
CLOSED

FIN DATA

FIN CLOSE FIN* Dados


WAIT DATA WAIT perdidos
FIN
CLOSED

Redes de Computadores 19
Transmission Control Protocol (TCP)

• Descrito nas RFCs 793, 1122, 1323, 2018 e 2581


• Protocolo orientado à conexão
• PDU do TCP é denominada de segmento
– Mensagens geradas por processos são fragmentadas em
segmentos TCP
• Abordagem baseada em fluxo de dados (data stream)
– Trata os dados como uma cadeia continua de bytes
– Decide como agrupar os bytes em segmentos
• Fornece comunicação confiável ponto a ponto entre dois processos
– Cada conexão TCP envolve exatamente duas extremidades
– Envio pode ocorrer entre uma ou outra direção de uma mesma
conexão TCP

Redes de Computadores 20
Serviços oferecidos pelo TCP a aplicativos

• Transferência confiável de dados dentro de um canal lógico, a


conexão

• Interface data stream (visão da aplicação)

– Os dados são tratados como uma sequência de bytes sem


estrutura alguma

– Não há noção de registro/bloco/pacote para envio ou recepção

Redes de Computadores 21
Segmento TCP

• Orientado à conexão 32 bits


• Controle de erro e fluxo IP Header
Urgent pointer
• Garantia de entrega e de ordem Push Source Port Destination Port
• Gerenciamento da conexão Syn Sequence Number
Ack Acknowledgment Number
Seq Hlen Flags Window
Cabeçalho 802.3
Fin Checksum Urgent Pointer
Cabeçalho IP
Options+padding
Cabeçalho TCP

Data

Área de dados TCP


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

Redes de Computadores 22
Os campos mais simples primeiro: hlen, flags...
• Hlen
– Fornece o tamanho do cabeçalho TCP em múltiplos de 4 bytes
(palavra)
• Tipicamente assume o valor 5 (20 bytes), exceto quando há
options
• Flags
– Indica o propósito e o tipo do segmento
• URG: segmento transporta dados urgentes
• ACK: segmento transporta uma confirmação positiva
• PSH: mecanismo push foi adotado no envio do segmento
• RST: a conexão deve ser imediatamente abortada (reset)
• SYN: segmento transporta requisição de abertura de conexão
• FIN: segmento transporta requisição de encerramento da
conexão

Redes de Computadores 23
...checksum, options e padding

• Checksum
– Verificação da integridade dos dados (complemento de 1 em 16
bits)
– Calculado sobre um pseudocabeçalho (IP destino, IP fonte, campo
protocolo, tamanho da TPDU e a constante zero), o cabeçalho TCP
e os dados
• Options
– Lista variável de informações e parâmetros para o TCP
– Usado principalmente para definir o tamanho máximo de um
segmento (MSS)
• Padding
– Usado para “arrendondar” o número de bytes do cabeçalho para
este ter sempre um número inteiro de palavras de 32 bits.
Redes de Computadores 24
Conexão TCP

SYN

Estabelecimento
SYN/ACK

ACK

Campos sequence number, DATA

Transferência
acknowledgement number,
window e urgent pointer são DATA/ACK
usados nos mecanismos de Aula de hoje
ACK
controle de erro e de fluxo
(ordenamento). FIN

Encerramento
ACK
FIN
ACK

Redes de Computadores 25
TCP: Controle de seqüência

• Objetivo:
– Garantir que dados são recebidos na ordem em que foram
emitidos (e sem duplicação)
• O protocolo TCP faz isso através de um número de sequência
– Número inicial é negociado durante o estabelecimento da conexão
– Cada byte possui um número de sequência
– Indica sempre o primeiro byte de dados contido no segmento
– É o número que está no campo sequence number (SN)
• Usado para manter ordenamento e detectar duplicação

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

Redes de Computadores 26
TCP: Controle de erros

• Objetivo:
– Garantir o recebimento correto de T-PDUs
• No protocolo TCP é baseado em
– Confirmação positiva (ACK)
• Destino envia mensagem acusando correto recebimento de um
segmento
• Confirmação (ACK) pode ser enviada em pigbacking com o
fluxo de dados no sentido inverso
– Confirmação acumulativa
• Diversos segmentos consecutivos podem ser confirmados por
uma única mensagem
– Retransmissão por timeout

Redes de Computadores 27
TCP: Confirmação positiva

• Baseado no valor do campo acknowledge number (ACK)

– Indica o número de sequência do próximo byte que espera receber

– Informa o correto recebimento dos bytes com número de


sequência inferiores ao da mensagem de confirmação

– O bit de ACK do campo de flags deve estar ativo para dar


significado ao campo acknowledgement number

150 151 198 199 200 201 348 349 350 351 448 449
SN=150 SN=200 SN=350

ACK=200 ACK=350 ACK=450

Redes de Computadores 28
TCP: Retransmissão

• O protocolo TCP emprega timeout por segmentos

– Processo origem dispara um timeout para cada segmento enviado

– Segmento é retransmitido quando a origem não recebe a


confirmação antes da expiração do temporizador

• A confirmação pode ser acumulativa

• Tratamento da duplicação é feito pelo sequence number

– Destino espera segmento com número x, qualquer segmento com


número inferior é considerado duplicado e é descartado

Redes de Computadores 29
TCP: Controle de fluxo

• Baseado em um esquema de crédito (genérico)


– Variação de janela deslizante onde os buffers de transmissão e
recepção são de tamanho variável (blocos múltiplos de bytes)
– Emissor tem crédito para enviar até n blocos de bytes ao destino
• Segmento ao ser aceito (processado), o destino renova a
quantidade de créditos por um valor c (0 < c ≤ n)
• Créditos podem ser renegociados
• No protocolo TCP
– Janela deslizante orientada a byte, i.é., cada byte se comporta
como um buffer
– Tamanho máximo da janela é negociado no estabelecimento da
conexão
– Confirmações (ACKs) servem para renovar os créditos

Redes de Computadores 30
Campo window: controle de fluxo

• Origem do segmento informa o tamanho do seu buffer de recepção


(janela) a partir do último byte que confirmou
– RcvWindow = RcvBuffer – [ LastByteRcvd – LastByteRead ]

• Questão paralela: como se sabe o tamanho da área de dados?


– Tamanho TPDU (informado no IP) – Tamanho do cabeçalho TCP
– Máximo teórico é 65535 – 20 – 20, mas é definido através do MSS
(Maximum Segment Size) divulgado por um host no momento do
estabelecimento da conexão
• Valor default: 536 bytes
• Ethernet: 1.460 bytes

Redes de Computadores 31
Transferência de dados

• Urgent pointer (bit URG)


– O flag URG indica ao destino a presença de dados “urgentes” no
segmento
• Usuário (processo) destino decide o que fazer
– O valor do campo urgent pointer sinaliza a posição em que termina
os dados urgentes
• Mecanismo data stream push (bit PSH)
– Processo pode solicitar a transmissão de dados até esse momento
• Força a geração de um segmento com os dados disponíveis
– Indica que a entidade de transporte deve repassar imediatamente
o segmento para a camada superior
– Evita esperar que buffers atinjam limites para que as
transferências ocorram

Redes de Computadores 32
Sessão TCP: abertura e encerramento

Redes de Computadores 33
Sessão TCP: controle de fluxo

Redes de Computadores 34
Introdução
• TCP é um protocolo orientado à conexão
– Abertura de conexão são negociados parâmetros, entre eles o
número de sequência do segmento
• Problemas: erros acontecem e há atrasos na rede
– Pedidos de abertura podem ser perdidos ou chegarem atrasados
– Como diferenciar segmentos de uma conexão i daqueles de uma
conexão i+1
SYN
SYN

SN = 1
SN=1, ACK=101

SN = 101, ACK = 50

Redes de Computadores 35
Conexão na presença de erros: problemas
• Estabelecimento da conexão
– Baseado em dois TPDUs SYN (two way handshake)
• Perda de qualquer um dos SYN provoca retransmissão (tratar
duplicados)
– Sistema se ressincroniza
• Chegada atrasada da T-PDU SYN provoca interpretação erradas
de conexão
• Transferência de dados: controle de fluxo e de erro
– TPDUs ainda válidos de conexões anteriores chegando atrasadas
• Encerramento da conexão
– Chegada de pedidos de encerramento atrasados
– Encerramento feito antes de receber todos os segmentos de dados

Redes de Computadores 36
Problema: segmentos de conexões anteriores

• Solução:
– Iniciar cada conexão com um
número de seqüência a partir do
último da conexão mais recente
– TPDUs SYN incluem números
de seqüência
– SYN i

Redes de Computadores 37
Mais problemas: atraso na T-PDU de controle
• T-PDU que chega atrasado é um T-PDU SYN i

B pensa que está abrindo conexão que espera números de


sequê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 38
Three-way handshake

• 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-
PDUs de abertura de conexão e número de sequência

Redes de Computadores 39
Estabelecimento de conexão

• Three way handshake


• Entre pares de porta

Host 1 Host 2

envia SYN seq=x


recebe SYN
envia SYN seq=y, ACK x+1
recebe SYN seq=y, ACK x+1
envia SEQ x+1, ACK y+1
recebe SEQ=x+1, ACK y+1

Redes de Computadores 40
Three Way Handshake: Exemplos

Redes de Computadores 41
Ainda problemas: Encerramento de conexão

• Baseado em duas T-PDUs FIN (two way handshake)


• Apresenta problemas similares ao estabelecimento da conexão
– Perdas de TPDUs e TPDUs atrasadas
• Problema:
(SN=i; m)
(FIN)

PERDA !!!

• Solução: numerar TPDUs FIN

(SN=i; m)
Espera dados chegarem antes (FIN i+m+1)
de encerrar a conexão.

Redes de Computadores 42
Encerramento de conexão (cont.)

• Encerramento gracioso (graceful)


– Antes de receber a confirmação do encerramento (TPDU FIN da
outra entidade) ainda recebe TPDUs de dados

FIN seq =x
Recebe FIN seq = x
Envia ACK = x+1
Recebe ACK = x + 1
...
Envia FIN seq = y ACK = x+1
Recebe FIN seq=y ACK=x+1
Envia ACK=y+1
Recebe ACK=y+1

Redes de Computadores 43
Recuperação de falhas (crash recovery)

• 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

CRASH CRASH
Timeout (SN=i, m) (SN=i, m)
Timeout
REBOOT
(SN=i, m)
Timeout

(SN=i, m)
Timeout (SN=i, m)
(RST i)
REBOOT
Reseta a meia conexão por excesso de Reseta a meia conexão por receber
retransmissões comando de reset (RST)
Redes de Computadores 44
Visão da camada de transporte pela camada aplicação

• Processos são identificados por portas


• Modelo tradicional da Internet é cliente-servidor (UDP ou TCP)
– Servidor é um processo que espera por requisições em uma dada
porta
• Informa ao sistema operacional a porta a ser usada
– Serviços Internet usam as portas bem-conhecidas (1 a
1.023)
• Entidade passiva: espera por requisições
– Cliente é um processo que envia requisições ao servidor
• Requisita uma porta não-reservada ao sistema operacional
– Registradas (1.024 a 49.151) ou dinâmicas (49.152 a
65.535)
• Entidade ativa
• Acessa serviços da camada de transporte através de uma API
– Interface socket

Redes de Computadores 45
Interface de socket
• Define uma interface entre a aplicação e as entidades de transporte

– Conjunto de primitivas para definir portas, estabelecer conexão


(ou não), enviar e receber dados

• Originalmente proposta para ambientes Unix e linguagem C

– Adotada em várias plataformas e linguagens (java, C#,...)

– Concebido para ser genérico

• A Internet corresponde a família AF_INET

• Construída sobre a abstração de socket

– 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)

Redes de Computadores 46
Endpoints
• Endpoint local
– Criado, por default, com o endereço IP especial 0.0.0.0 e uma
porta arbitrária
– Pode ser atribuído uma porta e endereço IP específicos
• Tipicamente, servidor configura porta específica e cliente usa
uma porta selecionada pelo sistema operacional
– Pode participar de várias comunicações com endpoints remotos
distintos
• Endpoint remoto
– Criado, por default, com endereço IP especial 0.0.0.0 e porta ANY
(*)
– Pode ser atribuído um endereço IP e uma porta específica
• Cliente (UDP ou TCP) deve especificar endereço IP e a porta
do servidor
• Servidor UDP pode configurar um endereço IP e porta
específica
• Servidor TCP usa a associação default
Redes de Computadores 47
Estados de um socket

• Socket ativo: cliente


– Usado para solicitar requisições de conexão ao servidor

closed established

• Socket passivo: servidor


– Empregado pelo servidor para aguardar pedidos de conexão

closed listen established

Redes de Computadores 48
Interface de sockets

• Socket é um descritor de arquivo


– Paradigma abrir-ler-escrever-fechar
• As primitivas básicas são:
– socket( )
– bind( )
– listen( )
– accept( )
– connect( )
– write( ), sendto( )
– read( ), recvfrom( )
– close( )

Redes de Computadores 49
Clientes e servidores UDP

Servidor UDP

socket bind recvfrom sendto close

Comunicação

socket sendto recvfrom close

Cliente UDP

Redes de Computadores 50
Clientes e servidores TCP

Servidor TCP

socket bind listen accept read write close

Sincronização Comunicação

socket connect write read close

Cliente TCP

Redes de Computadores 51
Servidores iterativo e concorrente

• Em função de como executam o tratamento de requisições

• Servidor iterativo (single threaded)

– Trata requisições de um único cliente a cada instante

– Implementado como um único processo

• Servidor concorrente (multi-threaded)

– Trata simultaneamente requisições de vários clientes

– Implementado com vários processos ou threads independentes

– Cada processo ou thread trata individualmente as requisições de


um determinado cliente

Redes de Computadores 52
Servidor iterativo

• Adequado para serviços com reduzida taxa de requisições e serviços


cujas requisições possuem baixa carga de processamento

Servidor TCP

socket bind listen accept read write close

Socket original
Novo socket

Redes de Computadores 53
Servidor concorrente

• Serviços com elevada taxa de requisições e serviços cujas


requisições possuem alta carga de processamento

Servidor TCP

read write close

socket bind listen accept

read write close


Socket original
Novo socket

Redes de Computadores 54
Funcionamento de sockets: lado servidor
• Socket (único) que atende o serviço
– Sempre em estado listen (processam segmentos SYN)
– Endpoint local possui o endereço especial 0.0.0.0 e porta específica
do servidor
– Endpoint remoto possui o endereço especial 0.0.0.0 e a porta ANY (*)
• Sockets criados para atender requisições dos clientes
– Estado established (processam segmentos de dados)
– Endpoints locais possuem o endereço IP e porta específica do
servidor
– Endpoints remotos possuem os endereços IP e as portas dos
respectivos clientes

> netstat -tan


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 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
tcp 0 0 150.1.20.1:25 150.10.1.20:60496 ESTABLISHED

Redes de Computadores 55
Gerenciamento de conexões TCP

• Fila de requisições

– Associada a sockets TCP no estado listen

– Armazena requisições de conexão que já foram aceitas pela


entidade TCP

• Processamento da requisição é realizado pela entidade TCP, e


não pelo servidor

• Requisição presente na fila ainda não foi aceita pelo servidor

• Requisição somente é aceita e removida da fila quando o


servidor ativa a função accept

– Possui capacidade fixa, mas pode ser configurada pelo servidor


com a função listen

Redes de Computadores 56

Você também pode gostar