Protocolode 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 familia de protocolos utilizados pela Internet.
Esta familia 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 familia 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 sao protocolos individuais que podem serdiscutidos demodo
isolado, mas eles nao sao os unicos protocolos que compoem essa familia. Pode
acontecer de um usuario do TCP/IP nao utilizar o protocolo TCP propriamente
dito,mas sim alguns protocolos da familia. A utilizacao do TCP/IP nessa situacao nao
deixa de ser apropriada porque o nome se aplica de modo generico ao uso de
qualquer protocolo da familia 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
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.