Você está na página 1de 26

Redes de Computadores

Aula 8
Camada de transporte: TCP e UDP
Prof. José Martins Junior
Principais características
• Visão “fim-a-fim” da comunicação entre duas aplicações em rede

• Na Internet, assume papéis importantes


– Identificação precisa e não-ambígua de cada aplicação (porta, ou
“endereço” de transporte da aplicação no host)
– Entrega de mensagens entre cada par de aplicações, de acordo com
alguns parâmetros de qualidade de serviço
• É descrita pela quarta camada no modelo ISO/OSI e pela terceira camada
do modelo TCP/IP
– Sua interface (sockets, p.e) prevê acesso aos serviços oferecidos
Camadas e encapsulamento

• Uma Transport Data Unit (TPDU) é encapsulada em um pacote na camada


de rede, que é encapsulado em um quadro na camada de enlace
Tipos de serviços prestados
• O serviço de transporte pode ser qualificado
quanto
– Confiabilidade: confiável ou não confiável
• Confirmação, retransmissão e não duplicação de dados
transmitidos entre as aplicações
– Conexão: orientado à conexão, ou não
• Estabelecimento de conexões que representam um
“circuito virtual fim-a-fim”, pelo qual os dados são
transmitidos ordenadamente, dando a idéia de um
fluxo contínuo (ou stream)
Primitivas de serviço
• LISTEN
– Coloca a entidade de transporte em estado de atenção, na espera por
conexões de outras aplicações
• CONNECT
– Com uma mensagem de requisição de conexão (CONNECTION
REQUEST), uma aplicação pode solicitar o estabelecimento de uma
conexão com outra (em estado LISTENING)
• SEND
– Tal primitiva permite uma aplicação enviar dados (DATA) para serem
transmitidos pela camada de transporte
• RECEIVE
– Através desta primitiva, uma aplicação realiza uma espera bloqueada
até que um pacote de dados chegue
• DISCONNECT
– Solicita o encerramento da conexão (DISCONNECT REQUEST)
Paradigma cliente-servidor
• As aplicações em rede relacionam-se em pares onde cada uma assume um
papel diferente: cliente ou servidora

– Cada relação descreve um serviço em rede


• Exemplos de serviços bem conhecidos: transferência de arquivos, correio
eletrônico e emulação de terminal remoto
• Para cada tipo de serviço é então descrito um protocolo de aplicação
– Nessa relação, as aplicações assumem papéis distintos
• A servidora mantém um papel passivo, pois aguarda a solicitação de
conexões e serviços de outras aplicações
• As clientes (ativas), solicitam as conexões e serviços
– É comum também encontrar a qualificação escrava para a aplicação
servidora, e mestre para a aplicação cliente
Comportamento cliente-servidor
• Comportamento geral de uma aplicação servidora
– Aguarda a mensagem com requisição (que pode conter dados)
– Executa o serviço solicitado
– Envia a mensagem de resposta (que pode conter dados)
• Comportamento geral de uma aplicação cliente
– Envia mensagem de requisição ao servidor
– Aguarda o retorno da mensagem com a resposta
• Possibilidades de interação:
– Um cliente pode acessar diversos serviços distintos
• Ex.: um browser pode acessar páginas Web (HTTP), e arquivos (FTP)
– Um cliente pode acessar vários servidores de um mesmo serviço
• Ex.: um browser pode obter elementos de vários servidores Web
– Servidores podem se tornar clientes de outros servidores
• Exs.: MTA e DNS
– Um host pode executar várias aplicações clientes e/ou servidoras
Transporte na Internet
• A arquitetura TCP/IP define dois protocolos distintos para
realização das funções da camada de transporte
– UDP e TCP
– Ambos se diferenciam pelo formato de seus PDUs e pelo tipo de
serviço prestado
• Uma função importante é comum a ambos
– Identificar cada aplicação distinta em execução no host
• Multiplexação: as várias aplicações clientes e/ou servidoras podem
compartilhar os serviços de uma mesma entidade de transporte
• Porta: identificador único local (na Internet, um descrito por um número
inteiro de 16 bits) que descreve e registra as aplicações em execução,
atendidas pela pilha TCP/IP
• O servidor utiliza tal identificador para se registrar localmente
• O cliente pode informá-lo, como destino desejado (endpoint), à camada
de transporte
Identificação de aplicações

• Identificador único e global de uma aplicação na Internet


– Obtido pela associação do endereço IP de um host (que é único na rede) com
a porta de uma aplicação (que é única no host)
– Cada conexão/serviço de transporte possui um único par de identificadores

(endereço IP, número de porta) no servidor X (endereço IP, número de porta) no cliente
Portas bem conhecidas e registradas
• Muitos serviços são bem conhecidos na Internet
• Para eles, foram predefinidas portas padronizadas, que são
registradas e mantidas pelo IANA (RFC 3232)
– As portas menores que 1024 são reservadas para uso do sistema
(normalmente de acesso ao administrador/superusuário), e são
denominadas Well Known Ports
• Ex.: porta 80 – servidor Web (HTTP)
– As portas maiores que 1023 são chamadas Registered Port Numbers,
mas podem ser utilizadas por aplicativos de usuários
• Ex.: porta 3306 – servidor MySQL
UDP (User Datagram Protocol)
• O UDP é descrito pela RFC 768
– Provê um tipo de serviço de datagrama (semelhante ao IP)
• Não orientado à conexão (connectionless) e não confiável
• Ou seja, o UDP não reordena as mensagens antes da entrega à aplicação e
não garante a chegada de todas as mensagens
– O header do UDP é muito simples e define apenas
• Endereços das portas de origem e de destino
• Tamanho total (UDP length) em bytes do datagrama (header + data)
• Checksum (opcional; se não calculado, inserem-se zeros)

– A maior vantagem do UDP é ser um protocolo simples, com poucos


campos no header (pouco overhead)
Uso do UDP com RPC
• O RPC é definido pela RFC 1057
– Protocolo para comunicação em sistemas distribuídos
• Uma aplicação pode submeter chamadas, que podem conter parâmetros,
a procedimentos que estão distribuídos em uma rede
• A descoberta do possível servidor é realizada através de consulta a um
serviço de registro de nomes de procedimentos (portmapper)
– A ideia básica do RPC é fazer com que a chamada remota pareça-se
com a chamada a um procedimento local
• Implementações vazias do procedimento são criadas nos dois lados (client
stub e server stub), para acesso local pela aplicação usuária
• Tais chamadas locais são interceptadas pelo RPC que redireciona a
solicitação para a rede, via UDP
Uso do UDP com RTP
• O RTP foi instituído pela RFC 1889
– Protocolo para transmissão de fluxos multimídia na Internet
– Opera sobre UTP, e portanto não é garantido (best-effort)
• A vantagem da operação sobre UDP é justamente a possibilidade de se
perder parte das mensagens, para não atrasar a entrega da maioria
• Ex.: em uma transmissão de vídeo, vale muito mais a pena perder alguns
pixels do quadro, do que atrasar sua exibição
– O RTP complementa o UDP para a identificação de fluxos (streams) de
comunicação que estão sendo transmitidos, além de permitir a
anotação de timestamp e dados para sincronização
TCP (Transmission Control Protocol)
• O TCP está descrito na RFC 793
– É o principal protocolo de transporte da Internet
– Oferece um tipo de serviço baseado em stream (fluxo): orientado à
conexão e confiável
• Realiza a transmissão ordenada e confiável através de uma conexão
preestabelecida
• Essa conexão é mantida durante o serviço e deve ser encerrada ao final
dele, sendo o correto que toda solicitação parta do lado cliente
– O header do TCP é muito mais completo
– Duas medidas podem restringir o tamanho total de um PDU TCP
• A primeira refere-se ao tamanho máximo de payload do IP, de 65515
bytes (haja visto que permite 65535 no total, para um header mínimo de
20 bytes)
• A segunda, e que mais ocorre em termos práticos, é a limitação dada pelo
MTU da rede local (o quadro Ethernet, por exemplo, permite um
tamanho máximo de 1500 bytes de payload)
O header do TCP
Campos do header do TCP
• Além dos campos que indicam as portas de origem e de destino
– Sequence number: número de sequência (por conexão) do TPDU
– Acknowledgement number: descreve o número de sequência do TPDU que
está sendo confirmado
– TCP header length: tamanho do cabeçalho TCP em palavras de 32 bits; este
campo antecede um campo de 6 bits que não é utilizado
– Flags:
• URG: se 1, indica que o campo Urgent pointer foi usado e que existem dados urgentes
(interrupção). O campo Urgent pointer indica, através de um byte offset qual número de
sequência (em relação ao TPDU atual) trará os dados urgentes
• ACK: se 1, indica que o campo Acknowledgement foi usado
• PSH: PUSHed data, comunica à entidade de transporte no destino para entregar cada
mensagem que chega, e não esperar para entregar todas de uma vez
• RST: é utilizado para solicitar o reset (restabelecimento) de uma conexão que apresenta
problemas
• SYN: é usado para solicitar/aceitar o estabelecimento de uma conexão
• FIN: é usado para solicitar/aceitar o encerramento de uma conexão
– Window size: indica o tamanho da janela a ser utilizada no controle de fluxo,
através do algoritmo de janela deslizante
Processo de conexão TCP
• O TCP utiliza a técnica three-way handshake
para estabelecimento e encerramento de
conexões
– A princípio, o servidor deve estar em estado
de LISTENING e ter executado uma chamada
bloqueante de um ACCEPT, aguardando uma
conexão
– O cliente então pode solicitar uma conexão
(CONNECT), que enviará um TCP com os flags
SYN=1 e ACK=0
– No destino, a entidade TCP checará se a
porta escolhida esta aceitando conexões,
senão envia uma resposta com o flag RST=1,
rejeitando a conexão
– Se tudo certo, ela pode aceitar a conexão,
através de uma confirmação
(acknowledgment), com os flags SYN=1 e
ACK=1
– O processo de encerramento de uma
conexão é semelhante
Processo de confirmação no TCP
TCP usa Confirmação Positiva
com Retransmissão para
conseguir entrega de dado
confiável
Destinatário envia uma
mensagem de controle com
Confirmação
(Acknowledgment - ACK) para
a origem verificar a entrega da
mensagem com sucesso
O originador inicializa o
relógio, se o tempo expira
antes da confirmação, ele
inicia o relógio e retransmite
Controle do tempo de expiração
• Tempo de expiração elevado pode causar baixa eficiência
– Deve ser diferente para cada conexão e inicializado dinamicamente
• Hosts na mesma LAN deve ser menores que entre hosts entre 20 hops
• Tempo de entrega na Internet muda dinamicamente, tempo de expiração
deve se adequar
Valor do timeout
• O tempo expiração é baseado em RTT (Round Trip Time)
– Emissor não pode prever o RTT antes de uma transmissão
– Então define o RTO (Retransmission Timeout) baseado em um prévio RTT

• Método é chamado de Algoritmo de Retransmissão Adaptativo


– Média Ponderada para RTT:
RTTnew = (alpha*RTTold) + ((1 - alpha)*RTTsample))
– Cálculo de RTO
RTO = beta*RTTnew
Gerenciamento de janela no TCP
• TCP usa janela deslizante
para controle de fluxo
• Destinatário especifica o
tamanho da janela
(window advertisement)
– Descreve quais bytes do
stream podem ser
enviados
– Transportado como ACK
• Receptor envia uma
confirmação para o
próximo byte que pode
ser enviado do fluxo
atual, e o número de
bytes que pode aceitar
Síndrome da janela boba (silly)
• O algoritmo janela deslizante pode resultar na transmissão de
muitos segmentos pequenos
– Se a janela do destinatário estiver cheia, e a aplicação destino
consumir poucos bytes, o destinatário avisará a origem sobre uma
janela muito pequena
– Se a origem enviar uma quantidade de dados para completá-la a cada
vez que a aplicação consumir um pouco dos dados, o uso da banda
tornar-se ineficiente
• Duas soluções possíveis
– O destinatário pode atrasar a informação de mais janelas livres
– A origem pode atrasar o envio até receber um tamanho de janela
satisfatório
Controle de congestionamento
• A camada de transporte pode detectar o
congestionamento da rede pelo RTT das
confirmações e confirmações não recebidas
• É utilizada uma janela de congestionamento
– Inicialmente tal janela tem um tamanho mínimo,
que indica o volume total de mensagens que
pode ser encaminhado à rede antes de receber
uma confirmação (mensagens pendentes)
– À medida que o RTT médio das confirmações
diminui, a janela é aumentada gradativamente, e
vice-versa
– Quando detectado um congestionamento (por
timeout da confirmação), a janela é reduzida
drasticamente, mas pode voltar a crescer, com o
passar do tempo

Explorado pelo RED (Random Early Detection/Discard/Drop)


Aplica descarte seletivo (de determinados fluxos) para reduzir o throughput de
conexões pela redução das janelas de congestionamento
Práticas no laboratório
• Definição de grupos/temas para o trabalho da disciplina
• Inspeção das portas bem conhecidas e registradas
– Arquivo /etc/services
• Descoberta de aplicações ativas
– Inicialização de serviços
– Uso de netstat, lsof e nmap
• Traçado de rota com porta TCP
– Uso do tcptraceroute
• Teste de conexão
– Uso do telnet
• Demonstração de mensagens do processo de conexão
– Uso do Wireshark
Exercícios
1. De que forma duas aplicações se relacionam através da arquitetura TCP/IP?
2. Como é feita a identificação única (e não-ambígua) de uma aplicação na Internet?
3. Em uma relação cliente/servidor, quem assume o papel da aplicação passiva? O que
isso quer dizer?
4. Em uma relação cliente/servidor, quem assume o papel da aplicação ativa? O que
isso quer dizer?
5. Quais são as principais diferenças entre o UDP e o TCP, quanto ao serviço prestado e
o formato do header de cada um?
6. Quais são as vantagens do uso do UDP?
7. Forneça dois exemplos de uso para o UDP.
8. Explique, utilizando também de um esboço, como ocorre o processo de
estabelecimento de uma conexão pelo protocolo TCP.
9. Como é feito o controle de fluxo pelo TCP?
10. Como é feito o controle de congestionamento pelo TCP?
Bibliografia
• TANENBAUM, A. S.; WETHERALL, D. J. Redes de Computadores.
5ª ed. São Paulo: Pearson Prentice Hall, 2011. 600 p. – Capítulo
6
• FOROUZAN, B. A. Comunicação de dados e redes de
computadores. Porto Alegre: AMGH, 2010. 1168 p. – Capítulos
23 e 24

Você também pode gostar