O documento discute os principais conceitos da camada de transporte na arquitetura TCP/IP, incluindo funções como controle de conexão, fragmentação, endereçamento e confiabilidade. Detalha os protocolos TCP e UDP, descrevendo como o TCP oferece serviço confiável através de mecanismos como controle de fluxo, janelas deslizantes e retransmissão de pacotes, enquanto o UDP é mais simples e não fornece confiabilidade. Apresenta também tópicos para pesquisa adicional.
1. As notas de aulas são referências para estudo. Portanto não devem ser adotadas como material didático absoluto!
Versão 0.1 – 30/08/2008
Romildo Martins Bezerra
CEFET/BA
Redes de Computadores II
Funções da Camada de Transporte............................................................... 2
Controle de conexão............................................................................. 2
Fragmentação..................................................................................... 2
Endereçamento ................................................................................... 2
Confiabilidade .................................................................................... 2
TCP (Transmission Control Protocol)............................................................. 2
Confiabilidade do TCP.............................................................................. 3
UDP – User Datagram Protocol .................................................................... 4
Pesquise .............................................................................................. 5
Temas para trabalhos .............................................................................. 5
Bibliografia........................................................................................... 5
A Camada de Transporte
2. Romildo Martins Bezerra
2
Funções da Camada de Transporte
Os serviços oferecidos pelo protocolo IP não oferecem confiabilidade. Problemas comuns como
congestionamento, perda ou ordenação de pacotes não são tratados. Entretanto as aplicações (HTTP, FTP
e SMTP, por exemplo) necessitam prover um serviço de qualidade para o usuário. A camada de transporte
pode oferecer um serviço confiável de entrega de dados das aplicações utilizando um serviço não
confiável prestado pela camada de rede.
Os principais serviços oferecidos pela camada de transporte são:
Controle de conexão
A camada de transporte possui protocolos que oferecem serviços orientados a conexão e não
orientados a conexão. Os serviços não orientados a conexão tem conceito semelhante ao funcionamento
do protocolo IP. Já o serviço orientado a conexão, primeiramente estabelece uma comunicação entre
usuários finais e só depois começa a transmissão.
Fragmentação
Esta função é similar a camada de rede, mas a fragmentação é feita apenas no transmissor e
receptor, pois os dispositivos de rede em geral não entendem a camada de transporte. Esta fragmentação
não está relacionada com a feita pela camada de rede.
Para exemplificar, imagine um email (SMTP) enviado apenas com um texto simples como:
“Prezada Fulana, vamos sair hoje? Beijos, Fulano”. Agora pense num e-mail com todas as fotos de um
passeio ou com três arquivos de MP3. Nota-se que uma mensagem SMTP pode conter de alguns bytes até
dezenas de megabytes. Logo é necessário fragmentar tais informações em pacotes de tamanhos menores
para serem encapsulados pela camada de rede.
Endereçamento
Conhecemos o endereçamento IP e sabemos que a identificação de um host na Internet é única.
Mas imagine duas situações:
• Um servidor web (HTTP) também é servidor de transferência de arquivos (FTP);
• Você abre duas janelas do Firefox acessando dois links diferentes de um mesmo site.
Como identificar dois serviços num mesmo host? Como identificar duas sessões diferentes entre
uma estação e um servidor web?
Para resolver estas perguntas a camada de transporte oferece à camada de aplicação a função de
endereçamento, onde os serviços são identificados pela sua porta (HTTP–80, FTP–20/21, SMTP–25, DNS–
53...) e uma conexão entre sua estação e outro host é feita através de um socket1
(IP+porta).
Confiabilidade
Para garantir a confiabilidade, a camada de transporte oferece:
• Controle de fluxo;
• Controle de erros;
• Controle de congestionamento e Qualidade de Serviço
Estudaremos durante o curso estes pontos, alguns deles ainda neste documento.
TCP (Transmission Control Protocol)
O TCP é o protocolo da camada de transporte da arquitetura Internet responsável em oferecer
confiabilidade na transmissão. Alguns autores consideram-no como a chave do sucesso da Internet [1]. O
TCP fornece um serviço orientado a conexão, confiável e full-duplex para os serviços de aplicação. Para
isso:
1
É uma abstração que mapeia diretamente a uma porta de transporte (TCP ou UDP) e mais um endereço de rede. Com esse conceito
é possível identificar unicamente um aplicativo ou servidor na rede de comunicação IP.
3. Romildo Martins Bezerra
3
• O TCP é orientado a conexão – Para ter o controle dos
pacotes enviados e conseguir efetuar a fragmentação,
o TCP precisa que os usuários finais tenham o
controle do que está sendo enviado. O protocolo TCP
especifica três fases durante uma conexão:
estabelecimento da ligação, transferência e término
de ligação. Para estabelecimento da conexão o TCP
necessita que: “O cliente inicia a ligação enviando um
pacote TCP com a flag SYN activa e espera-se que o
servidor aceite a ligação enviando um pacote
SYN+ACK. Se, durante um determinado espaço de
tempo, esse pacote não for recebido ocorre um
timeout e o pacote SYN é reenviado. O
estabelecimento da ligação é concluído por parte do
cliente, confirmando a aceitação do servidor
respondendo-lhe com um pacote ACK” - Wikipedia.
• Efetua desconexão “suave” (Graceful Connection
Shutdown) – O TCP só encerra a conexão depois de
entregar os dados ao receptor. A desconexão é feita
conforme visto na figura 02.
• O TCP é Full-duplex - É possível a transferência
simultânea nas duas direções durante a sessão.
• Utiliza o conceito de stream – O TCP envia uma
sequencia limitada e contínua de bytes sem noão dos
registros ou quantidade de pacotes que serão
recebidos.
• Enxerga a rede como uma conexão ponto-a-ponto – O protocolo TCP fornece uma conexão diretamente
entre aplicativos dos hosts. Tal conexão é denominada conexão virtual ponto-a-ponto, pois entre o
transmissor e o receptor, os dispositivos de rede (roteadores) não enxergam a camada de transporte
(Figura 03). O TCP permite a camada de aplicação enxergar a rede como uma conexão virtual.
Figura 03. Ilustração da conexão TCP
Confiabilidade do TCP
São destacados nesta sessão alguns mecanismos que garantem a confiabilidade do protocolo IP,
vamos estudar estes pontos através de exemplos. È sugerido fortemente a leitura dos capítulos
relacionados à camada de transporte dos livros da bibliografia.
• Perda de Pacote e Retransmissão – Quando o TCP envia os dados, ele inicializa um mecanismo
de timeout (temporizador) para receber a confirmação de recebimento. Caso a confirmação
Roteador 2
Host B
Roteador 1
Host A
Aplicação
Transporte
Rede
Enlace
Física
Aplicação
Transporte
Rede
Enlace
Física
Rede
Enlace
Física
Rede
Enlace
Física
Figura 01. Estabelecimento de conexão TCP
(Three-Way Handshake)
Figura 02. Encerramento de conexão TCP
4. Romildo Martins Bezerra
4
não seja recebida ele retransmite o pacote. A retransmissão é a base do sucesso do TCP.
Reflita sobre a retransmissão no atraso de entrega.
• Retransmissão adaptativa e Controle de Tempo – O TCP monitora o atraso do envio dos pacotes
e adapta seu temporizador. Mas como ele pode fazer isso se os relógios não são sincronizados?
Será que esta técnica é eficiente?
• Controle de Fluxo (buffers e janelas de transmissão) – Um problema no mundo das redes é
garantir o controle de fluxo entre usuários finais. A imprevisibilidade do tráfego é o maior
problema. Imagine o resultado do vestibular do CEFET publicado na internet. Diversos usuários
irão fazer requisições em pouco tempo podendo ser mais rápido do que a entrega do servidor
web. Assim diversas requisições serão novamente realizadas, gerando ainda mais tráfego e
pacotes duplicados. Daí o TCP utiliza o conceito de buffers (armazenamento de pedidos e
respostas) e janelas deslizantes:
Janela deslizante é uma característica de alguns protocolos que permite que o
remetente transmita mais que um pacote de dados antes de receber uma
confirmação. Depois de recebê-lo para o primeiro pacote enviado, o remetente
desliza a janela do pacote e manda outra confirmação. O número de pacotes
transmitidos sem confirmação é conhecido como o tamanho da janela;
aumentando o tamanho da janela melhora-se a vazão.
• Controle de Congestionamento - Fica como pesquisa de leitura.
UDP – User Datagram Protocol
O UDp é um protocolo da camada de transporte não confiável e não orientado a conexão. Fornece
apenas os serviços de endereçamento e fragmentação, não provendo confiabilidade (controle de fluxo,
erro, congestionamento). Isso indica que o UDP não adiciona serviços ao protocolo IP. O que nos leva
então a utilizar o UDP?
O UDP por ser mais simples possui um cabeçalho menor gerando um menor overhead. Ideal para
algumas aplicações onde a velocidade é mais útil que a confiabilidade como aplicações multimídia. Afinal
não faz sentido algum receber um trecho de um arquivo música que já passou.
Além de aplicações multimídia, o UDP é utilizado também pelo TFTP (Trivial File Transfer
Protocol), RIP (Routing Information Protocol), SNMP (Simple Network Management Protocol) e DNS
(Domain Name System).
Figura 04. Mostra a retransmissão (701-800), buffer, janela deslizante e recebimento fora de ordem.
5. Romildo Martins Bezerra
5
Pesquise
1. As portas reservadas para os serviços web e que protocolos de transporte utilizam.
2. Para que serve o round-trip delay?
3. Relacione janelas-deslizantes e algoritmo do início lento.
4. Síndrome da “Janela Boba”.
5. Verifique o funcionamento do controle de congestionamento.
6. Compare os cabeçalhos do TCP e UDP.
7. Porque o TFTP não precisa de confiabilidade?
8. Pesquise se existem outros protocolos de transporte na arquitetura TCP/IP.
Temas para trabalhos
1. Programação de Servidor Web [2]
2. Programação de Algoritmo de janelas deslizantes.
Bibliografia
[1] FOROUZAN, B.A. Comunicação de Dados e Redes de Computadores. 3ª Edição. Bookman. 2006
[2] KUROSE, J. Redes de Computadores e a Internet. 3ª Edição. Addison-Wesley, 2006.
[3] COMER, D. E. Redes de Computadores e a Internet. 4ª Edição. Bookman. 2007.