2. Camada de transporte, que tanto no Modelo OSI quanto no Modelo TCP/IP,
é a camada responsável pela transferência eficiente, confiável e económica dos
dados entre a máquina de origem e a máquina de destino, independente do
tipo, topologia ou configuração das redes físicas existentes entre elas,
garantindo ainda que os dados cheguem sem erros e na sequência correcta.
A camada de transporte possui dois protocolos que são o UDP ( User
Datagram Protocol) e TCP (Transmission Control Protocol).
Camada de rede do modelo OSI que é responsável por controlar a
operação da rede de um modo geral. Suas principais funções são o
roteamento dos pacotes entre fonte e destino, o controle de
congestionamento e a contabilização do número de pacotes ou bytes
utilizados pelo usuário, para fins de tarifação.
O protocolo da camada de rede que iremos detalhar é o ICMP ( Internet
Control Message Protocol).
3. 2. ICMP (Internet Control Message Protocol)
É um protocolo de mensagem de controlo da Internet (utilizado para envio de
mensagens de controle e mensagens de erro em emissão de bancos de dados do
tipo IP).
Caso um roteador não consiga passar adiante um datagrama recebido por estar
congestionado demais ou então por ter zerado o campo tempo de vida (ITL, Time
to Live) do datagrama que ocorreu um erro.
O mecanismo usado pelos roteadores para informar esse tipo de erro è o uso do
protocolo ICMP, Internet Control Message Protocol. Apesar de estarmos tratando
o ICMP como um assunto à parte, ele è parte integrante do protocolo IP.
Ele não se preocupa em corrigir o erro nem tão pouco em verificar a integridade
dos datagramas que circulam pela rede.
4. Como mostramos na figura 1, a mensagem ICMP è transmitida usando um
datagrama IP. Como o IP não verifica se um datagrama chegou ou não ao destino,
pode ocorrer de a própria mensagem ICMP ser perdida no meio caminho!
Figura 1: Encapsulamento de uma mensagem ICMP
È também importante notar que o ICMP, apesar de ser encapsulado em um
datagrama IP, não è considerado um protocolo de alto nível (como o TCP ou o
UDP).
5. 2.1. ESTRUTURA DAS MENSAGENS ICMP
Cada mensagem ICMP possui uma estrutura própria, mas todas elas
começam da mesma maneira, mostrada na figura 2. O campo tipo informa
justamente o tipo de mensagem ICMP. Sò para se ter uma ideia concreta dos
tipos de mensagens ICMP existentes, na tabela a seguir mostramos alguns
desses tipos e seu valor numérico (entrado no campo Tipo).
Figura2: Cabeçalho do protocolo ICMP
6. O campo Código prove mais informações sobre a mensagem ICMP, e o campo
Checksum apresenta a soma de todos os valores presentes na mensagem ICMP.
Checksum - é uma conta que consiste em somar todos os bytes presentes no pacote
de dados e enviar o resultado dentro do próprio pacote.
Para entendermos melhor o funcionamento do ICMP, iremos explicar rapidamente o
funcionamento de algumas das mensagens ICMP existentes.
7. 2.2.ECO
A mensagem de eco serve para verificar se o caminho entre o transmissor e o
receptor está bom.
2.3.DESTINO INALCANÇAVEL
Caso o roteador não consiga entregar um determinado datagrama,ele envia para o
transmissor uma mensagem ICMP de destino inalcançável. Na mensagem de
destino inalcançável, o campo código do cabeçalho ICMP (ver figura 2) e
preenchido com um dos seguintes valores.
2.4.CONGESTIONAMENTO
Um roteador pode porventura receber um número maior de datagramas do que ele
e capaz de processar. Caso isso ocorra, dizemos que o roteador esta
congestionado. Neste tipo de situação, o roteador inclusive pode ter de descartar
datagramas por não estar sendo capaz de recebe - los naquele momento. Quando
isso ocorre, o roteador envia uma mensagem de redução da velocidade de
transmissão ao transmissor do datagrama descartado. O transmissor, ao receber
essa mensagem, passa a transmitir datagramas a uma velocidade menor.
8. 2.5.REDIRECIONAMENTO
Caso o roteador verifique que na rede local onde ele está instalado existe uma rota
melhor a ser usada para enviar um datagrama recebido, ele envia uma mensagem
ICMP de solicitação de redireccionamento ao transmissor, enviando também o
datagrama ao destino.
2.6.TEMPO DE VIDA EXCEDIDO
Quando o contador Tempo de Vida (TTL, Time to Live) do datagrama e zerado, o
roteador envia para a maquina transmissora uma mensagem ICMP de tempo de vida
excedido.
Como vimos anteriormente, todo datagrama IP possui um campo tempo de vida,
que possui um valor que e decrementado a cada vez que o datagrama passa por um
roteador.
9. 2.7.PROBLEMA NOS PARAMETROS
Quando um roteador ou uma máquina encontra problemas para processar um
datagrama e não há nenhuma outra mensagem ICMP que cubra o problema
encontrado, o roteador (ou máquina) envia uma mensagem de problema nos
parâmetros para o transmissor. Normalmente essa mensagem è usada quando o
roteador não consegue decodificar correctamente as informações presentes no
cabeçalho IP do datagrama, isto è, quando há algum problema no cabeçalho do
datagrama.
2.8.SOLICITAÇÃO DE HORÀRIO
Através dessa mensagem de controlo uma máquina pode pedir o horário do
relógio de outra máquina que esteja conectada na rede. A máquina transmissora
envia um comando de solicitação de horário (mensagem ICMP tipo 13) a máquina
da qual quer saber o horário, incluindo no datagrama a hora do envio do
datagrama. A máquina receptora responde ao comando de solicitação de horário
(mensagem ICMP tipo 14) incluindo o horário que o datagrama chegou atè ela e o
horário em que o datagrama de resposta foi enviado.
10. 3. UDP (USER DATAGRAM PROTOCOL)
O User Datagram Protocol (UDP) que significa protocolo de datagramas de
utilizador (ou usuário)- é um protocolo de transporte não orientado á conexão. O
UDP é pouco confiável, não existem técnicas no protocolo para confirmar que os
dados chegaram ao destino correctamente. Por esse motivo esse protocolo não é
usado no transporte de dados importantes como arquivos e e-mails.
Na verdade as aplicações que usam o UDP deverão criar mecanismos para
verificar se os dados chegaram ao destino correctamente e para colocar os
datagramas recebidos em ordem.
11. 3.1. Vantagens do UDP
A vantagem de os programas usarem o UDP em vez do TCP em dados pequenos é
que a transmissão de dados fica mais rápida.
Em redes locais confiáveis, onde não há quase perda de pacotes, o uso do protocolo
UDP é atè viável.
3.2. Desvantagens do UDP
Em redes grandes,e principalmente na internet a taxa de perdas de pacotes pode ser
grande de mais e acabar dando mais trabalho a aplicação ,tornando o envio de
pacotes através do UDP inviável do ponto de vista prático .Por esse motivo o
protocolo UDP so é usado para o envio de dados pequenos e onde a taxa de perda
de pacotes não é problema, isto é, não vai dar muito trabalho a aplicação.
12. 3.3. Protocolos que Utilizam o UDP
SNMP-(Simple Network Managment)É utilizado para configurar dispositivos
como switches ou roteadores e permite que estes enviem o seu status. O problema é
que os hackers, utilizam este protocolo para obter informações sobre o sistema,
como as tabelas de roteamento. As últimas versões do SNMP podem fazer
criptografia md5, porém a maioria ainda usa versões antigas que passa o password
em formato de texto.
TFTP - (Trivial File TranferProtocol) - Esse protocolo é um dos mais elementares
que existem, pois apresenta poucos utilitários, como controle temporal e de
integridade. Ele é um modelo mais simples de FTP, pois não possui nenhum tipo de
mecanismo de segurança e como é baseado no protocolo UDP, não se pode confiar
na integridade de suas transmissões.
13. DHCP-(Dynamic Host Configuration Protocol) É utilizado em redes que sofrem
constantes alterações na topologia e o administrador não pode verificar o IP
(Internet Protocol) de cada máquina devido a enorme quantidade, então o roteador
distribui IPs automaticamente para as estações. Como esta atribuição é feita com a
utilização do UDP, caso haja algum problema o usuário terá que pedir o reenvio
ou reiniciar a máquina. O único problema técnico deste protocolo é que como os
IPs são atribuídos aleatoriamente, fica mais difícil para o administrador ter
controle sobre o que cada host está fazendo.
DNS –(Domain Name System) Um tradutor dos nomes na rede, na qual cada IP
pode ser correspondido com um nome. Neste caso, imaginemos que um usuário
esteja acessando a internet e deseja ir para outra página. Ele digita o endereço no
campo apropriado e entra. Se a página, por acaso, não abrir por não ter
reconhecido o endereço, o problema poderá ter sido no envio ou resposta do
servidor de nomes utilizando o UDP, e então o usuário tentará de novo acessar a
página e provavelmente conseguirá.
14. Encapsulamento de um datagrama UDP
Figura 3: Encapsulamento de um datagrama UDP
3.4.Estrutura do Datagrama UDP
Como foi visto no TCP/IP as aplicações comunicam-se com os protocolos da
camada de transporte (o UDP e o TCP) através de portas.
Figura 4: Estrutura do datagrama UDP
15. Os campos porta de origem e porta de destino especificam a aplicação que
originou o datagrama e para cuja aplicação o datagrama deverá ser entregue na
máquina de destino. Mesmo que a máquina de destino receba vários datagramas
UDP vindo de várias aplicações diferentes, ela tem como saber para qual
aplicação deve entregar o conteúdo do datagrama por causa da existência do
campo Porta de Destino.
O campo tamanho especifica o tamanho do datagrama UDP em bites, incluindo
o seu cabeçalho e sua área de dados. O valor mínimo para esse campo é oito que é
o tamanho do próprio cabeçalho.
Já o checksum é calculado de forma não convencional. O protocolo UDP cria um
pseudo - cabeçalho esse pseudo - cabeçalho é formado apenas para ser utilizado
na soma que resultara no checksum do datagrama, não sendo transmitido junto
com o datagrama. Esse pseudo - cabeçalho é formado pelo endereço IP de origem
e pelo endereço IP de destino, pelo conjunto de oito zeros (campo zeros) pelo
numero que o protocolo UDP representa no protocolo IP( 17 campo protocolo) e
novamente o tamanho do datagrama UDP ( mesmo valor presente no campo
tamanho do datagrama do verdadeiro cabeçalho UDP).
Para formar o seu checksum, o UDP faz a soma usando os valores desse pseudo -
cabeçalho ( que não é transmitido) os valores do seu cabeçalho verdadeiro ( este
sim é transmitido), e os valores presentes em seu campo de dados.
16. Figura 5: Pseudo - cabeçalho UDP, usando apenas o checksum
Teoricamente o campo checksum é opcional (para não usar o checksum, basta
preencher esse campo com todos os bits em um). Entretanto, sem o uso do
checksum torna-se impossível saber se o dado recebido está corrompido ou não, isto
é se ele sofreu ou não alterações durante o caminho entre o transmissor e o receptor.
Por isso, a maioria das aplicações que usam o UDP prefere realizar o checksum.
3.5. Vulnerabilidades do Protocolo UDP
O protocolo UDP assim como o TCP utilizam portas para a comunicação. Um dos
primeiros passos que um hacker pode explorar é fazer a verificação das portas que
estão abertas para comunicação. Caso, o administrador da rede queira impedir a
invasão no sistema ele poderá fechar as portas mais isso significa ficar sem
comunicação, então esta não é a melhor solução.
17. 4. TCP (Transmission Control Protocol) – Protocolo de Controle de
Transmissão
É o protocolo TCP que faz a comunicação fim - a - fim da rede. É orientado à
conexão e altamente confiável independente da qualidade de serviços das sub-
redes que lhe servem de caminho. Para a confiabilidade de transmissão, garante a
entrega das informações na sequência em que lhe foram fornecidas, sem perda
nem duplicação.
Esse protocolo tem como principal objectivo realizar a comunicação entre
aplicações de dois hosts diferentes. O protocolo TCP é um protocolo de nível de
transporte muito utilizado que trabalha com mensagens de reconhecimento,
especificação do formato da informação e mecanismos de segurança. Ele garante
que todos os PDU's (Protocol data Unit) serão enviados com sucesso, pois realiza
transmissões orientadas à conexão.
Quando executado, utiliza o protocolo IP, não orientado à conexão. O TCP então
fica responsável pelo controle dos procedimentos da transferência segura de
dados. Cabe salientar que o IP não é o único protocolo não orientado à conexão
que pode ser utilizado pelo TCP.
Para maior eficiência nas comunicações, o TCP engloba várias funções que
poderiam estar nas próprias aplicações, como processador de texto, base de dados
e correio electrónico. Ele foi criado com o intuito de ser um software universal
contendo essas funções.
18. Existem ainda outros serviços do TCP:
Controle de fluxo - O controle de fluxo atribui uma janela de transmissão ao host
de origem. Essa janela limita o número de bytes transmitidos por vez. O controlo
de fluxo em si está na possibilidade de atribuir diferentes valores às janelas.
Segurança na transmissão - A confiabilidade nas transmissões via TCP está
baseada no fato de que esse protocolo é orientado à conexão e trabalha com
números de reconhecimento sequenciais e positivos.
Comando de OPEN/CLOSE -Por meio de todos os dispositivos físicos, o TCP
pode estabelecer uma conexão virtual, a partir do comando OPEN. Nesse
momento, o TCP realiza o "three - way handshake", que é um processo onde os
TCP's origem e destino trocam mensagens de reconhecimento que possibilitam a
conexão.
No momento em que a transferência de informações terminar, qualquer host (origem ou
destino) poderá fechar a conexão virtual, a partir do comando CLOSE.
Gerenciamento da informação nas transmissões orientadas a conexão - O
protocolo TCP pode controlar todos os aspectos da informação que esta sendo
transmitida, pois é um protocolo de transmissão orientada à conexão. A acção do
TCP se estende a toda a trajectória da informação, onde ele procura garantir o
sucesso da transmissão.
19. Prioridade e segurança - O protocolo TCP permite que o administrador do host
controle os níveis de segurança e permissão de acesso, bem como as prioridades
nas conexões. Essas características não estão presentes em todas as versões, embora
estejam definidas nos padrões TCP.
Transferências orientadas a “stream” - Os aplicativos de nível de interface em
geral enviam dados ao TCP de forma orientada a "stream", onde a informação é
transmitida byte a byte, um após o outro. Quando a informação chega ao TCP, é
então agrupada em pacotes e assim enviada aos demais níveis de transmissão.
As aplicações enviam dados a serem transmitidos pela rede ao protocolo TCP,
através de canais virtuais de comunicação chamados de portas. As portas mais
usadas pelo protocolo TCP são:
20. As portas mais usadas pelo protocolo TCP
Porta Uso
11 Systat
15 Netsat
20 FTP(dados)
21 FTP(controle)
23 Telnet
25 SMTP
43 Whois
79 Finger
80 HTTP
21. O TCP empacota os dados recebidos adicionando as informações da porta de
origem e da porta destino, entre outras, passando o pacote de dados ao
protocolo e ao IP.
A figura a seguir mostra o encapsulamento do pacote de dados TCP.
Figura 6: Encapsulamento de pacote de dados TCP.
22. Ao receber um quadro, a camada de interface com a rede da máquina receptora
(o driver e a placa de rede) ira passar os dados para a camada IP, que por sua vez
passará os dados para a camada TCP, que passará os dados para a aplicação
correcta. A camada TCP sabe para qual aplicação ela deve entregar os dados por
causa do uso do conceito de portas.
4.2. Transmissão e recepção de pacotes
O protocolo TCP envia uma mensagem de confirmação de recebimento a máquina
transmissora chamada acknowledge (também chamada ack).
Se o transmissor não receber uma confirmação de recebimento dentro de um
determinado tempo, o pacote é retransmitido, já que isso significa que datagrama
IP carregando informações inseridas pelo protocolo TCP foram desgastados no
meio do caminho por algum motivo.
Esse determinado tempo a que nos referimos no parágrafo anterior, chamado RTT
(Round trip time), tempo aproximado de viagem é calculado dinamicamente pelo
protocolo TCP.
23. 4.3. Conexão
É comunicação entre duas aplicações em duas diferentes maquinas.
O protocolo TCP é responsável por abrir uma conexão, mantê-la e fecha-la e é
mantida através do envio de dados do transmissor ao receptor.
4.4. Socket
Cada porta permite o uso de um conceito chamado socket. O socket define uma
conexão dentro de uma porta. Com o uso deste conceito, pode-se ter várias
conexões diferentes em uma mesma porta.
Os sockets podem ser classificados em activos ou passivos. Um socket activo é
aquele que envia dados e um passivo é aquele que recebe dados.
4.5. Janelas
Para aumentar o desempenho do envio do pacote, o protocolo TCP trabalha com
o conceito de janela. Com esse conceito, o transmissor pode enviar outros antes de
ter recebido a confirmação de recebimento do primeiro pacote enviado.
25. Onde꞉
•Porta de origem: indica a aplicação que origina os dados.
•Porta do destino: indica a aplicação para a qual os dados serão entregues no
receptor.
•Número de sequência: identifica o número do primeiro byte presente no segmento
dentro do fluxo de dados gerados pela aplicação.
•Número de confirmação: é o acknowledge (ack). Aqui é colocado o número de
sequência do próximo segmento que o receptor espera receber.
•HLEN ou Offset: Esse campo (header lenght) especifica o tamanho do cabeçalho
do pacote TCP, contado em número de 32 bits, isto é, o número de linhas existentes
na figura xxx (em outras palavras o numero de bits existentes no cabeçalho dividido
por 32).
•Bits de controlo ou bits de código: esses bits são usados para controle, conforme
mostra a próxima tabela (os seis bits deste campo são contados da esquerda para a
direita, isto é, o bit URG é o primeiro da esquerda e assim por diante).
26. Bit Significado
URG O campo ponteiro
ACK O campo numero de confirmação e valido
PSH Força a entrada dos dados ( push )
RST Reiniciar a conexão
SYS Sincronismo ,determina o número de sequência inicial
FIN O transmissor chegou ao fim dos seus dados
27. Tamanho da janela: define o tamanho da janela, em bytes, que será usada
na conexão.
Checksum: é calculado de forma similar ao checksum do protocolo UDP,
com a criação de um pseudo - cabeçalho.
Ponteiro urgente: caso existam casos que precisem serem processados
antes de a conexão chegar ao fim, dentro de uma mesma conexão, o bit
URG é activado e este campo é usado para informar a posição, dentro do
segmento, em que os dados urgentes terminam.
Opções + pad: Esse campo é opcional e possui tamanho variável. Se não
for usado, o tamanho do cabeçalho TCP é de 20 bytes. Caso seja usado, o
tamanho do cabeçalho passa a ter 24bytes. Se o campo opções for menor
que 32 bits, então são adicionados zeros (chamados pad) ate que tamanho
desse campo tenha 32 bits (4 bytes).