Protocolo TCP/IP
Para hackear um sistema ligado a internet/intranet ou
ate mesmo um
uma simples rede que utiliza o tcp/ip, nada melhor do que saber
lidar a
fundo com o protocolo mais usado e mais
famoso no mundo inteiro.
TCP/IP
------
TCP/IP e o nome que se da a toda a família de protocolos utilizados pela
Internet. Esta família de protocolos foi
desenvolvida pela DARPA
(Defense Advanced Research Project Agency) no
DoD (Departamento de
Defensa dos Estados Unidos).
Este conjunto de protocolos foi
desenvolvido p/permitir aos computadores
compartilharem recursos numa rede.Toda a família de protocolos inclue um
conjunto de padroes que especificam os detalhes de como comunicar
computadores, assim como tambem conven‡äes para interconectar redes e
rotear o trefego.
Mas ao contrario do que
acontece na imprensa, o nome completo raramente
eh usado.O TCP e o IP são protocolos individuais que podem serdiscutidos
demodo isolado, mas eles não são os únicos protocolos que compõem
essa
família. Pode acontecer de um usuário do TCP/IP não utilizar o
protocolo
TCP propriamente dito,mas sim alguns protocolos da família. A utilização
do TCP/IP nessa situação não deixa de ser apropriada
porque o nome se
aplica de modo genérico ao uso de qualquer protocolo da família TCP/IP.
Pilha
-----
ARP - Address Resolution
Protocol
ICMP - Internet Control Message
Protocol
UDP - User Datagram
Protocol
RIP - Routing Information
Protocol
HTTP - Hypertext Transfer
Protocol
NNTP - Network News Transfer
Protocol
*SMTP - Simple Mail Transfer Protocol
SNMP - Simple Network
Management Protocol
FTP - File Transfer
Protocol
TFTP - Trivial File Transfer
Protocol
INETPhone - Telephone Services on Internet
IRC - Internet Relay Chat
RPC - Remote Procedure
Call
NFS - Network File System
*DNS - Domain Name System
* Descricao destes protocolos nesta edicao.
Talvez seja dificil lembrar todos esses acronimos, ate porque
alguns
tambem sao utilizados por outros protocolos (por exemplo o
protocolo
RIP da familia Novell, ou o IPX, eh diferente
do RIP da familia
TCP/IP). Alem do mais, saber exatamente quais sao os
protocolos que
compoem uma determinada familia nao eh pre-requisito
paracompreender
o funcionamente basico da rede.
Uma visao resumida do Protocolo
--------------------------------
Alguma transferencia se inicia com um pedido de leitura ou escrita de um
arquivo, o qual tambem serve para pedir uma
conexao. Se o servidor
reconhece o pedido, a conexao eh aberta e o arquivo eh enviado num bloco
de tamanho fixo de 512 bytes.
Cada pacote de dados contem um
bloco de dados e deve ser reconhecido por
um pacote de acknowledgment antes que o proximo pacote possa ser enviado.
Um pacote de dados menor que 512 bytes sinaliza a
terminacao de uma
transferencia.
Se um pacote consegue se perder
na rede, o receptor indicara time-out e
podera retransmitir seu ultimo pacote (o qual pode
ser dados ou um
reconhecimento ). Isto motiva ao transmissor do
pacote perdido a
retransmitir o pacote perdido. O transmissor tem que guardar
apenas um
pacote para retransmissao,desde cada passo de reconhecimento garante que
todos os pacotes mais anteriores tenham sido recebidos.
Notar que as duas maquinas
envolvidas na transferencia sao consideradas
transmissoras e receptoras. Uma envia dados e recebe reconhecimento,
a
outra envia reconhecimento e recebe dados.
Muitos erros sao causados pela
terminacao da conexao.Um erro e sinalizado
enviando um pacote de erro. Este pacote nao e reconhecido nem
retransmitido
(i.e., um servidor TFTP ou usuario pode terminar depois enviando uma
mensagem de erro) assim o outro terminal da conexao nao deve recebe-lo.
Portanto os time-out sao usados para detectar tais terminais quando o
pacote de erro foi perdido.
Protocolo IP
------------
O protocolo IP define mecanismos de expedicao de pacotes sem conexao.
IP define tres pontos importantes:
1. A unidade basica de
dados a ser transferida na Internet.
2. O software de IP executa a funcao de roteamento, escolhendo um
caminho
sobre o qual os dados serao enviados.
3. Incluir um conjunto de regras que envolvem a ideia da expedicao
de
pacotes nao confiaveis. Estas regras indicam como
os hosts ou gateways
poderiam processar os pacotes; como e quando as
mensagens de erros
poderiam ser geradas; e as condicoes em que os
pacotes podem ser
descartados.
Dentro do protocolo IP tem os seguintes topicos:
Endere‡os
IP
Formato do datagrama IP
Roteamento do datagrama IP
ICMP (Internet Control Message Protocol)
TCP (Transport Control
Protocol)
--------------------------------
TCP e um protocolo da camada de transporte. Este e um protocolo orientado
a conexao, o que indica que neste nivel vao ser solucionados todos os
problemas de erros que nao forem solucionados no nivel IP, dado que este
ultimo e um protocolo sem conexao. Alguns dos problemas com os q TCP deve
tratar sÆo:
pacotes perdidos ou destruidos
por erros de transmissao.
expedicao de pacotes fora de ordem ou duplicados.
O TCP especifica o formato dos
pacotes de dados e de reconhecimentos que
dois computadores trocam para realizar uma transferˆncia confiavel,
assim
como os procedimentos que os computadores usam para assegurar que os
dados
cheguem corretamente. Entre estes procedimentos estao:
Distinguir entre
multiplos destinos numa maquina determinada.
Fazer recuperacao de erros, tais como pacotes perdidos ou
duplicados.
Para entender melhor o
protocolo TCP a seguir veremos alguns conceitos,
para depois passarmos ao formato TCP.
Portas,
Conexoes e Endpoints
Segmentos, fluxo e Numero de Sequencia
Formato do Segmento TCP
DNS (Domain Name System)
------------------------
O DNS (Domain Name System) e um esquema de
gerenciamento de nomes,
hierarquico e distribuido. O DNS define a sintaxe dos nome s
usados na
Internet, regras para delegacao de autoridade na definicao de
nomes, um
banco de dados distribuido que associa nomes a atributos
(entre eles o
endereco IP) e um algoritmo distribuido para mapear nomes em
enderecos.
O DNS e especificado nas RFCs 882, 883 e 973.
As aplicacoes normalmente
utilizam um endereco IP de 32 bits no sentido
de abrir uma conexao ou enviar um datagrama IP. Entretanto, os
usuarios
preferem identificar as maquinas atraves de nomes ao inves de
numeros.
Assim e necessario um banco de dados que
permita a uma aplicacao
encontrar um endereco, dado que ela conhece o nome da maquina com a qual
se deseja comunicar.
Um conjunto de servidores de
nomes mantem o banco de dados com os nomes
e enderecos das maquinas conectadas a Internet. Na
realidade este e
apenas um tipo de informacao armazenada no domain
system (sistema de
dominios).Note que e usado um conjunto de servidores interconectados, ao
inves de um unico servidor centralizado.
Existem atualmente tantas
instituicoes conectadas a Internet que seria impraticavel exigir q
elas
notificassem uma autoridade central toda vez que
uma maquina fosse
instalada ou trocasse de lugar. Assim, a autoridade para
atribuicao de
nomes e delegada a instituicoes individuais.Os servidores de nome formam
uma arvor, correspondendo a estrutura institucional. Os
nomes tambem
adotam uma estrutura similar.
Um exemplo tipico
e o nome chupeta.jxh.xyz.br. Para encontrar seu
endereco Internet, pode ser necessario o acesso a ate quatro
servidores
de nomes.Inicialmente deve ser consultado um servidor central,denominado
servidor raiz, para descobrir onde esta o servidor br. O servidor br e o
responsavel pela gerencia dos nomes das instituicoes/empresasbrasileiras
ligadas a Internet. O servidor raiz informa como resultado da consulta o
endereco IP de varios servidores de nome para o nivel br
(pode existir
mais de um servidor de nomes em cada nivel, para garantir a continuidade
da operacao quando um deles para de funcionar). Um servidor do
nivel br
pode entao ser consultado, devolvendo o endereco IPdo servidor xyz.
De posse do
endereco de um servidor xyz e possivel solicitar que ele
informe o endereco de um servidor jxh,
quando, finalmente, pode-se
consultar o servidor jxh sobre o endereco da maquina chupeta.O resultado
final da busca e o endereco Internet correspondente ao nome
chupeta.jxh.xyz.br
Cada um dos niveis
percorridos e referenciado como sendo um dominio.
O nome completo chupeta.jxh.xyz.br e um nome de dominio.
Na maioria dos casos, nao e
necessario ter acesso a todos os dominios de
um nome para encontrar o endereco correspondente, pois os
servidores de
nome muitas vezes possuem informacoes sobre mais de um nivel de
dominio
o que elimina uma ou mais consultas.Alem disso,as aplicacoes normalmente
tem acesso ao DNS atraves de um
processo local (servidor para as
aplicacoes e um cliente DNS),que pode ser implementado de modo a guardar
os ultimos acessos feitos, e assim resolver a consulta em nivel local.
Essa abordagem de acesso atraves de um
processo local, simplifica e
otimiza a tarefa das aplicacoes no que tange ao mapeamento de
nomes em
enderecos, uma vez que elimina a necessidade de implementar, em todas as
aplicacoes que fazen uso do DNS, o algoritmo de caminhamento
na arvore
de dominios descrito anteriormente.
O DNS nao se limita a manter e
gerenciar enderecos Internet.Cada nome de
dominio e um no em um banco de dados,que pode conter registros definindo
varias propriedades. Por exemplo,o tipo da maquina e a lista de servicos
fornecidos por ela. O DNS permite que
seja definido um alias (nome
alternativo) para o no. Tambem e possivel utilizar o DNS para
armazenar
informacoes sobre usuarios, listas de distribuicao ou
outros objetos.
O DNS e particularmente
importante para o sistema de correio eletronico.
No DNS sao definidos registros que identificam a maquina que manipula as
correspondencias relativas a um dado nome, identificado assim
onde um
determinado usuario recebe suas correspondencias. O DNS pode
ser usado
tambem para definicao de listas para distribuicao de correspondencias
SMTP - Simple Mail Transfer
Protocol
------------------------------------
O SMTP (Simple Mail Transfer Protocol) e o protocolo usado no sistema de
correio eletronico na arquitetura Internet TCP/IP. Um usuario,ao desejar
enviar uma mensagem,utiliza o modulo interface com o usuario para compor
a mensagem e solicita ao sistema de correio eletronico que a entregue ao
destinatario. Quando recebe a mensagem do usuario, o sistema de
correio
eletronico armazena uma copia da mensagem
em seu spool ( area do
dispositivo de armazenamento), junto com o horario do armazenamento
e a
identificacao do remetente e do destinatario.A transferencia da mensagem
e executada por um processo em background, permitindo
que o usuario
remetente, apos entregar a mensagem ao sistema de
correio eletronico,
possa executar outras aplicacoes.
O processo de transferencia de
mensagens,executando em background,mapeia
o nome da maquina de destino em seu endereco IP, e tenta estabelecer uma
conexao TCP com o servidor de correio eletronico da maquina de
destino.
Note que o processo de transferencia atua como cliente
do servidor do
correio eletronico. Se a conexao for estabelecida, o cliente
envia uma
copia da mensagem para o servidor, que a armazena em seu
spool. Caso a
mensagem seja transferida com sucesso, o servidor avisa ao
cliente que
recebeu e armazenou uma copia da mensagem.Quando recebe a confirmacao do
recebimento e armazenamento, o cliente retira a copia
da mensagem que
mantinha em seu spool local. Se a mensagem, por algum motivo,
nao for
transmitida com sucesso, o cliente anota o
horario da tentativa e
suspende sua execucao. Periodicamente o cliente acorda
e verifica se
existem mensagens a serem enviadas
na area de spool e tenta
transmiti-las. Se uma mensagem nao for
enviada por um periodo, por
exemplo de dois dias, o servico de correio eletronico devolve a mensagem
ao remetente, informando que nao conseguiu transmiti-la.
Em geral, quando um usuario se
conecta ao sistema, o sistema de correio
eletronico e ativado para verificar se existem mensagens na caixa postal
do usuario. Se existirem, o sistema de correio eletronico emite um aviso
para o usuario que, quando achar conveniente,ativa o modulo de interface
com o usuario para receber as correspondencias.
Uma mensagem SMTP divide-se em
duas partes: cabecalho e corpo, separados
por uma linha em branco. No cabecalho sao especificadas as
informacoes
necessarias para a transferencia da mensagem. O cabecalho e composto por
linhas, que contem uma palavra-chave seguida de um valor. Por
exemplo,
identificacao do remetente (palavra-chave "to:"seguida do seu
endereco),
identificacao do destinatario, assunto da mensagem, etc... No corpo
sao
transportadas as informacoes da mensagem propriamente dita. O formato do
texto e livre e as mensagens sao transferidas no formato texto.
Os usuarios do sistema de
correio eletronico sao localizados atraves de
um par de identificadores. Um deles especifica
o nome da maquina de
destino e o outro identificaa caixa postal do usuario. Um remetente pode
enviar simultaneamente varias copias de uma mensagem,
para diferentes
destinatarios utilizando o conceito de lista de distribuicao(um nome que
identifica um grupo de usuarios). O formato
dos enderecos SMTP e o
seguinte:
nome_local@nome_do_dominio
onde o nome_do_dominio
identifica o dominio ao qual a maquina de destino
pertence (esse endereco deve identificar um grupo de maquinas gerenciado
por um servidor de correio eletronico). O nome local identifica a
caixa
postal do destinatario.
O SMTP especifica
como o sistema de correio eletronico
transfere
mensagens de uma maquina para outra. O modulo interface com usuario
e a
forma como as mensagens sao armazenadas nao sao
definidos pelo SMTP.
O sistema de correio eletronico pode tambem ser utilizado por
processos
de aplicacao para transmitir mensagens contendo textos.