Você está na página 1de 7

FUNDAMENTOS DE REDES DE COMPUTADORES - CCT0547

Semana Aula: 11
CAMADAS SUPERIORES

Tema
Camada de Transporte

Palavras-chave
TCP, UDP

Objetivos
Conhecer os protocolos TCP e UDP

Estrutura de Conteúdo
Fundamentos da Camada de transporte

Camada de Transporte
Posicionada entre as camadas de Aplicação e Redes, a camada de transporte é
fundamental na arquitetura de rede em camadas, pois desempenha o papel fundamental
de fornecer serviços de comunicação diretamente aos processos de aplicação que rodam
em máquinas diferentes. Isto é, fornece uma comunicação lógica entre estes processos.
Os processos de aplicação utilizam a comunicação lógica provida pela camada de
transporte sem a preocupação com os detalhes da infraestrutura física utilizada para
transportar as mensagens:
-Divide os dados que chegam da camada de aplicação em segmentos e passa-os com o
endereço de destino para a próxima camada para transmissão, que neste caso será a
camada de rede.
-Fornece uma comunicação lógica entre os processos do aplicativo em execução entre
hosts diferentes, que pode ser orientada à conexão e não orientada à conexão.
-A transferência de dados na camada de transporte também pode ser categorizada como
confiável ou não confiável, com informações de estado ou sem informações de estado;
-Utiliza o conceito de porta para a identificação dos processos de aplicação;
-Especifica 2 tipos de protocolos e a utilização de um ou de outro depende das
necessidades da aplicação (SNMP-UDP, FTP-TCP):
oTCP (Transmission Control Protocol)
oUDP (User Datagram Protocol)
Portas e sockets
Portas
Identificam os processos de origem e de destino viabilizando a comunicação fim-a-fim.
O
Sistema operacional oferece uma interface (socket) (linkar com o texto sobre socket no
final do arquivo) que permite às aplicações especificarem ou acessarem portas em um
determinado host enviando e recebendo datagramas de forma independente.
As portas são classificadas em:
Reservadas (padronizadas através da RFC 1070) - 0 - 1023

Liberadas (automaticamente definida pelo SO para aplicações clientes e/ou


portas de servidores de aplicações ainda não reconhecidas formalmente na
Internet) - 1024 a 65535

Exemplos de Portas conhecidas


Porta TCP - Descrição
20 - Servidor FTP (File Transfer Protocol, protocolo de transferência de arquivo) (canal
de dados)
21 - Servidor FTP (canal de controle)
23 - Servidor Telnet
53 - Transferências de zona DNS (Domain Name System, sistema de nomes de domínios)

80 - Servidor da Web (HTTP, Hypertext Transfer Protocol, protocolo de transferência de


hipertexto)
139 - Serviço de sessão de NetBIOS

Porta UDP - Descrição


53 - Consultas de nomes DNS (Domain Name System, sistema de nomes de domínios)
69 - Trivial File Transfer Protocol (TFTP)
137 - Serviço de nomes de NetBIOS
138 - Serviço de datagrama de NetBIOS
161 - Simple Network Management Protocol (SNMP)
520 - Routing Information Protocol (RIP, protocolo de informações de roteamento)

Socket
A associação entre 2 processos cooperantes (cliente/servidor) é identificada por um par
de sockets (socket1, socket2), uma vez estabelecida uma conexão, cada socket
corresponde a um ponto final dessa conexão.
É o identificador único de cada conexão existente num host em determinado momento
pois associa IP origem, porta origem, IP de destino e Porta de Destino.
8.1.2. Conexão: Three Way Handshake

O protocolo TCP especifica três fases durante uma conexão: estabelecimento da ligação,
transferência e término de ligação.
O estabelecimento da ligação é feito em três passos, enquanto que o término é feito em
quatro. Durante a inicialização são inicializados alguns parâmetros, como o Sequence
Number (número de sequência) para garantir a entrega ordenada e robustez durante a
transferência.

Estabelecimento da ligação
Tipicamente, numa ligação TCP existe aquele designado de servidor (que abre um socket
e espera passivamente por ligações) num extremo, e o cliente no outro.
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.
Durante estas trocas, são trocados números de sequência iniciais (ISN) entre os
interlocutores que irão servir para identificar os dados ao longo do fluxo, bem como
servir de contador de bytes transmitidos durante a fase de transferência de dados (sessão).
No final desta fase, o servidor inscreve o cliente como uma ligação estabelecida numa
tabela própria que contém um limite de conexões, o backlog. No caso do backlog ficar
completamente preenchido a ligação é rejeitada ignorando (silenciosamente) todos os
subsequentes pacotes SYN.

Transferência de dados (sessão)


Durante a fase de transferência o TCP está equipado com vários mecanismos que
asseguram a confiabilidade e robustez: números de sequência que garantem a entrega
ordenada, código detector de erros (checksum) para detecção de falhas em segmentos
específicos, confirmação de recepção e temporizadores que permitem o ajuste e contorno
de eventuais atrasos e perdas de segmentos.
Como se pode observar pelo cabeçalho TCP, existem permanentemente um par de
números de sequência, doravante referidos como número de sequência e número de
confirmação (ACKnowledgement). O emissor determina o seu próprio número de
sequência e o receptor confirma o segmento usando como número ACK o número de
sequência do emissor. Para manter a confiabilidade, o receptor confirma os segmentos
indicando que recebeu um determinado número de bytes contíguos. Uma das melhorias
introduzidas no TCP foi a possibilidade do receptor confirmar blocos fora da ordem
esperada. Esta característica designa-se por selective ACK, ou apenas SACK.
A remontagem ordenada dos segmentos é feita usando os números de sequência, de 32
bit, que reiniciam a zero quando ultrapassam o valor máximo, 231-1, tomando o valor da
diferença.

As confirmações de recepção (ACK) servem também ao emissor para determinar as


condições da rede. Dotados de temporizadores, tanto os emissores como receptores
podem alterar o fluxo dos dados, contornar eventuais problemas de congestão e, em
alguns casos, prevenir o congestionamento da rede. O protocolo está dotado de
mecanismos para obter o máximo de performance da rede sem a congestionar ? o envio
de tramas por um emissor mais rápido que qualquer um dos intermediários (hops) ou
mesmo do receptor pode inutilizar a rede. São exemplo a janela deslizante, o algoritmo de
início-lento

Adequação de parâmetros
O cabeçalho TCP possui um parâmetro que permite indicar o espaço livre atual do
receptor (emissor quando envia a indicação): a janela (ou window). Assim, o emissor fica
a saber que só poderá ter em trânsito aquela quantidade de informação até esperar pela
confirmação (ACK) de um dos pacotes - que por sua vez trará, com certeza, uma
atualização da janela. Curiosamente, a pilha TCP no Windows foi concebida para se
auto-ajustar na maioria dos ambientes e, nas versões atuais, o valor padrão é superior em
comparação com versões mais antigas.
Porém, devido ao tamanho do campo, que não pode ser expandido, os limites aparentes
da janela variam entre 2 e 65535, o que é bastante pouco em redes de alto débito e
hardware de alta performance. Para contornar essa limitação é usado umaOpção especial
que permite obter múltiplos do valor da janela, chamado de escala da janela, ou TCP
window scale; este valor indica quantas vezes o valor da janela, de 16 bit, deve ser
operado por deslocamento de bits (para a esquerda) para obter os múltiplos, podendo
variar entre 0 e 14. Assim, torna-se possível obter janelas de 1gigabyte. O parâmetro de
escala é definido unicamente durante o estabelecimento da ligação.

Término da ligação
A fase de encerramento da sessão TCP é um processo de quatro fases, em que cada
interlocutor responsabiliza-se pelo encerramento do seu lado da ligação. Quando um
deles pretende finalizar a sessão, envia um pacote com a flag FIN ativa, ao qual deverá
receber uma resposta ACK. Por sua vez, o outro interlocutor irá proceder da mesma
forma, enviando um FIN ao qual deverá ser respondido um ACK.
Pode ocorrer, no entanto, que um dos lados não encerre a sessão. Chama-se a este tipo de
evento de conexão semi-aberta. O lado que não encerrou a sessão poderá continuar a
enviar informação pela conexão, mas o outro lado não.
(http://pt.wikipedia.org/wiki/Transmission_Control_Protocol.)

Protocolos TCP e UDP

TCP (Protocolo de Controle de Transmissão): protocolo que oferece serviços de entrega


de pacotes orientados à conexão. Dentre esses serviços estão verificação de erros e
numeração sequencial. O dispositivo de destino responde com um pacote de confirmação
de recebimento a cada pacote ou grupo de pacotes recebido;
UDP (Protocolo de Datagrama do Usuário): protocolo que oferece serviço de entrega de
pacotes em conexão, ou seja, sem nenhum tipo de verificação de erros, numeração
sequencial ou garantia de entrega;

Entrega confiável x entrega não confiável


A entrega confiável de dados assegura a entrega dos segmentos ao seu destino em uma
sequência adequada, sem qualquer dano ou perda. Um protocolo confiável como o TCP
cuida de todos os problemas fundamentais de rede como congestionamento, fluxo de
dados e duplicação.
A entrega não-confiável de dados não promete a entrega dos segmentos ao seu destino.
No processo de entrega não confiável de dados, os segmentos podem ser corrompidos ou
perdidos. Um protocolo não confiável como o UDP assume que a rede subjacente é
completamente confiável. Os protocolos não confiáveis não cuidam de alguns problemas
fundamentais como congestionamento, fluxo de dados e duplicação.

Entrega com informação de estado x sem informação de estado


A entrega de dados com informações de estado utiliza o conceito de ?sessão?, em que um
lote de solicitações é enviado e respostas são recebidas. As informações divulgadas em
uma solicitação podem ser utilizadas para modificar as solicitações futuras.
Na entrega de dados sem informação de estado, cada solicitação é autocontida, sem
quaisquer outras informações associadas a qualquer outras informações associadas a
qualquer outra solicitação.

Transporte orientado a conexão - TCP


TCP
O TCP (tranmission Control Protocol)Protocolo de Controle de Transmissão), RFCs:
793, 1122, 1323, 2018, 2581, é um dos protocolos da pilha TCP/IP que está localizado
na camada de transporte.

O serviço oferecido pelo TCP tem sete caracterísitcas importantes:


?Orientação à conexão: um aplicativo primeiro deve solicitar uma conexão com um
destino, e então usar a conexão para transferir dados.
?Comunicação ponto a ponto: cada conexão de TCP tem exatamente duas extremidades.
?Confiabilidade completa. O protocolo garante que os dados enviados através de uma
conexão serão entregues exatamente como enviados, sem dados faltando ou fora de
ordem.
?Comunicação full Duplex: Uma conexão TCP permite que os dados fluam em uma ou
outra dreção e permite que um ou outro programa aplicativo envie dos a qualquer hora.
Ele pode armazenar nos buffers dados que partem e que chegam em ambas as direções,
possibilitando que um aplicativo envie dados e então continue uma computação enquanto
os dados estão sendo transferidos.
?Interface de stream: um aplicativo envia uma sequência contínua de octetos através de
uma conexão. Porém não garante que os dados serão entregues ao aplicativo receptor em
pedaços do mesmo tamanho que foram transferidos pelo aplicativo remetente.
?Partida de conexão confiável: O TCP exige que dois aplicativos criem uma conexão,
ambos devem concordar com a nova conexão;
? Desligamento de conexão graciosa(Graceful Connection Shutdown).: um programa
aplicativo pode abrir uma conexão, enviar quantias arbitrárias de dados e então requisitar
o fechamento da conexão.. O TCP garante a entrega confiável de todos os dados antes de
fechar a conexão.

O TCP estabelece uma conexão entre o processo na origem e o processo no host de


destino antes de enviar os segmentos dos dados reais. Uma vez que a conexão esteja
estabelecida, os dados podem ser transferidos em ambas as direções entre dois hosts (full
duplex);

Para que vários processos simultaneamente usem os serviços do TCP, é usado o conceito
de porta, onde cada processo de aplicação, em um dado momento, é identificado por uma
porta diferente.

Cabeçalho (Header) TCP


O TCP utiliza um único formato para todas as mensagens e emprega o termo segmento
para se referir a uma mensagem.
Onde,
-Porta Origem e Porta Destino identificam o processo de aplicação que está enviando
dados e o processo de aplicação que irá receber os dados.
-Número de seqüência identifica os bytes enviados. Na prática ele é a identificação do
primeiro byte de dados contido no segmento enviado. Os demais são seqüenciados a
partir deste byte.
-Acknowledgement identifica os bytes que foram recebidos e tratados sem erro pelo
destino, bem como a seqüência do próximo byte esperado
-Tamanho é representa o tamanho total do frame TCP
-Reservado é um campo ainda não utilizado
-FLAGS identifica as flags (syn, fin, psh, rst, ack, urg)
-Window identifica o tamanho da janela para o controle de fluxo
-Checksum destina-se a verificação de erros de transmissão. É calculado usando o pseudo
header, o header TCP e também a área de dados
-Urgent Pointer é um ponteiro para dados urgentes, contidos na área de dados.

Transporte não orientado a conexão - UDP


UDP
O protcolo UDP, padronizado pela RFC 768, é bastante simples, é orientado a datagrama,
não orientado à conexão, não executa controle de fluxo, controle de erro e
sequenciamento. Não tem reconhecimento dos datagramas (ACK/NACK) e devido a sua
simplicidade é considerado não confiável pois não assegura que as mensagens
transmitidas cheguem ao destino e caso cheguem, poderão chegar fora de ordem. A
aplicação que utiliza o UDP deve tratar a falta de confiabilidade. Foi desenvolvido para
aplicações que não geram volume muito alto de tráfego na Internet

Estratégias de Aprendizagem
Nesta aula, deve-se abordar a importância dos protocolos TCP e IP para o
estabelecimento e garantias de comunicação entre origem e destino;
O professor poderia iniciar a abordagem deste tema explanando sobre os motivos que
levaram à criação destes protocolos ( um breve histórico);
A seguir explanaria sobre as características do TCP e UDP. Neste ponto poderia abrir um
debate, na sala de aula, instigando os alunos a pensarem porque existem esses dois
protocolos de camada de transporte. Exemplos envolvendo games e transferência de
arquivos poderiam ilustrar as diferenças de uso e funções destes protocolos;
Da mesma forma que em aulas anteriores, pode-se demonstrar o uso destes protocolos
através do simulador de redes a a partir de uma topologia já montada pelo professor. ou
capturar pacotes em tempo real através de um software de monitoramento de pacotes
como o WireShark;

Indicação de Leitura Específica


Capítulo 5 do livro proprietario
Capitulos 23 do Livro Comunicação de Dados e Redes de Computadores de Behrouz A.
Forouza

Aplicação: articulação teoria e prática


- Site da editora Pearson/Addison Wesley onde se pode encontrar alguns aplicativos (Java
apples) que ajudam a entender alguns dos conceitos abordados nesta aula. Segue a url:

http://wps.aw.com/br_kurose_redes_3/40/10271/2629597.cw/index.html

- Também neste site da editora Pearson (www.aw.com/kurose.br) pode-se encontrar


outros recursos didáticos.

Escolher um recurso e testar.

Considerações Adicionais

Você também pode gostar