Camada de Transporte: TCP, UDP e Protocolos Essenciais
Classificado em Computação
Escrito em em português com um tamanho de 98,81 KB
Camada de Transporte
Sua função é promover uma transferência de dados confiável e econômica entre a máquina de origem e a máquina de destino.
A internet possui dois tipos de protocolo de transporte: o serviço orientado a conexões (TCP) e o serviço sem conexões (UDP).
- Em ambos os casos, as conexões têm três fases:
- o estabelecimento;
- a transferência de dados;
- e o encerramento.
TPDU (Unidade de Dados do Protocolo de Transporte)
A TPDU (Unidade de Dados do Protocolo de Transporte) serve para denominar as mensagens enviadas de uma entidade de transporte a outra entidade de transporte (encapsulamento da camada de transporte).
UDP (User Datagram Protocol)
O UDP oferece um meio para as aplicações enviarem datagramas IP encapsulados sem que seja necessário estabelecer uma conexão. Ele transmite segmentos que consistem em um cabeçalho de 8 bytes, seguido pela carga útil. Realiza a troca de datagramas sem confirmações ou entrega garantida. Ex: TFTP, SNMP, DHCP, DNS
- Source/Destination Port: As duas portas servem para identificar a origem e o destino do pacote para ser entregue corretamente.
- UDP Length: Inclui o cabeçalho de 8 bytes e os dados.
- UDP Checksum: Contém o cálculo de verificação (checksum) feito a partir de campos do cabeçalho e dos dados.
TCP (Transmission Control Protocol)
O TCP foi projetado especificamente para oferecer um fluxo de bytes fim a fim confiável em uma inter-rede não confiável.
Inter-rede
Uma inter-rede é diferente de uma única rede porque suas diversas partes podem ter topologias, larguras de banda, retardos, tamanhos de pacote e outros parâmetros completamente diferentes.
O serviço TCP é obtido quando tanto o transmissor quanto o receptor criam pontos extremos chamados soquetes. Cada soquete tem um número que consiste no endereço IP do host e em um número de 16 bits local para esse host, chamado porta. Deve haver uma conexão entre a máquina transmissora e receptora para que o TCP funcione. Um soquete pode ser utilizado por várias conexões ao mesmo tempo.
Principais Portas Utilizadas e Protocolo
As transmissões e recepções do TCP trocam dados em forma de segmentos (Cabeçalho de 20 Bytes).
Dois fatores restringem o tamanho do segmento: a carga útil do IP (65.515 bytes) e o fato de que cada rede tem uma unidade máxima de transmissão de 1500 bytes (carga útil Ethernet).
- Source/Destination Port: Identificam a origem e o destino dos pacotes.
- Sequence Number: Contém o número de sequência de 32 bits.
- Acknowledgement Number: Especifica o próximo byte esperado e não o último byte recebido corretamente; tem 32 bits.
- TCP Header Length: Informa quantas palavras de 32 bits existem no cabeçalho TCP.
- 6 Flags de 1 bit: Atribui o valor 1 em todos se o Urgent Pointer estiver sendo utilizado.
Urgent Pointer
O Urgent Pointer é usado para sinalizar a uma aplicação a existência de uma informação contida no campo de dados que precisa ser processada com prioridade.
ACK (Acknowledgement)
Se ACK = 1, o Acknowledgement Number é válido.
PSH (Push)
O PSH indica dados com o flag PUSH. Com ele, o receptor é solicitado a entregar os dados à aplicação mediante sua chegada, em vez de armazená-los até que um buffer completo tenha sido recebido.
RST (Reset)
O RST é utilizado para reinicializar uma conexão que tenha ficado confusa devido a uma falha.
SYN (Synchronize)
O SYN é usado para estabelecer conexões.
FIN (Finish)
O FIN é utilizado para encerrar uma conexão.
Window Size (Controle de Fluxo de Dados)
A Window Size indica quantos bytes podem ser enviados a partir do byte confirmado.
Checksum
O Checksum também é fornecido para aumentar a confiabilidade.
Options
O campo Options foi projetado como uma forma de oferecer recursos extras ou recursos que não foram previstos.
No TCP, as conexões são estabelecidas por meio do handshake de três vias.
Para estabelecer uma conexão, um lado — digamos, o servidor — aguarda passivamente por uma conexão de entrada, executando as primitivas LISTEN
e ACCEPT
através da especificação de uma determinada origem ou de ninguém em particular.
O outro lado — digamos, o cliente — executa uma primitiva CONNECT
, especificando o endereço IP e a porta à qual deseja se conectar, o tamanho máximo do segmento TCP que está disposto a aceitar. A primitiva CONNECT
envia um segmento TCP com o bit SYN ativado e um bit ACK desativado, e aguarda uma resposta.
Multiplexação
Se houver apenas um endereço de rede disponível em um host, todas as conexões de transporte nessa máquina terão de utilizá-lo. Ao chegar uma TPDU, é necessário encontrar algum meio de descobrir a qual processo ela deve ser entregue. Essa situação é denominada multiplexação ascendente.
Exemplo: Quatro conexões de transporte distintas utilizam a mesma conexão de rede (por exemplo, um endereço IP) para o host remoto. O processo inverso é conhecido como demultiplexação.
Socket de Berkeley
Os Sockets de Berkeley são um conjunto de bibliotecas de funções (primitivas) para a programação sobre protocolos de comunicação.
SMTP (Simple Mail Transfer Protocol)
O SMTP é o protocolo padrão para envio de e-mails através da internet. É simples, onde um ou vários destinatários de uma mensagem são especificados e validados, sendo, depois, a mensagem transferida.
Esse protocolo roda sobre a porta 25 em uma rede TCP.
Exemplos de servidores SMTP: Exim, Postfix, Qmail e Microsoft Exchange Server.
O SMTP é apenas um protocolo de envio.
Funções
CONNECT()
Responsável por executar a conexão em uma porta propriamente dita.
GETSERVBYPORT()
Permite determinar qual serviço está sendo executado em uma determinada porta TCP.
GETHOSTBYNAME()
Permite utilizar o nome de domínio no lugar do IP.
LISTEN()
Determina quantas conexões poderão ser feitas simultaneamente.
BIND()
Associa uma porta TCP a um socket.
ACCEPT()
Aceita as conexões em um socket.
SEND()
Envia mensagens.
RECV()
Recebe mensagens.