RPG     Downloads     Hacking     Tutoriais     Roms     NightStalkers     Links

Protocolo TCP/IP

Para hackear um sistema ligado a internet/intranet ou até 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 é 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 para permitir aos
computadores
compartilharem recursos numa rede. Toda a família de protocolos
inclue um conjunto
de padrões que especificam os detalhes de como comunicar
computadores, assim como
também convenções para interconectar redes e rotear o tráfego.
Mas ao contrário do que acontece na imprensa, o nome completo
raramente eh usado.
O TCP e o IP são protocolos individuais que podem ser
discutidos de modo 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

Talvez seja dificíl lembrar todos esses acrônimos, até porque
alguns também são
utilizados por outros protocolos (por exemplo o protocolo RIP da
família Novell,
ou o IPX, é diferente do RIP da família TCP/IP). Além do mais,
saber exatamente
quais são os protocolos que compoem uma determinada família
não é pre-requisito
para compreender o funcionamente básico da rede.

Uma visão resumida do Protocolo

Alguma transferência se inicia com um pedido de leitura ou escrita
de um arquivo,
o qual também serve para pedir uma conexão. Se o servidor
reconhece o pedido, a
conexão é aberta e o arquivo é 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 próximo pacote possa ser
enviado. Um pacote de
dados menor que 512 bytes sinaliza a terminacao de uma
transferência.
Se um pacote consegue se perder na rede, o receptor indicará
time-out e poderá
retransmitir seu último 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
retransmissão,desde cada passo
de reconhecimento garante que todos os pacotes mais anteriores
tenham sido recebidos.
Notar que as duas máquinas envolvidas na transferencia são
consideradas
transmissoras e receptoras. Uma envia dados e recebe
reconhecimento, a outra envia
reconhecimento e recebe dados.
Muitos erros são causados pela terminação da conexao. Um erro
é sinalizado enviando
um pacote de erro. Este pacote não é reconhecido nem
retransmitido (i.e., um servidor
TFTP ou usuário pode terminar depois enviando uma mensagem
de erro) assim o outro
terminal da conexão não deve recebê-lo. Portanto os time-out são
usados para
detectar tais terminais quando o pacote de erro foi perdido.

Protocolo IP

O protocolo IP define mecanismos de expedição de pacotes sem
conexão. IP define
três pontos importantes:

A unidade básica de dados a ser transferida na Internet.
O software de IP executa a função de roteamento, escolhendo um
caminho sobre o qual
os dados serão enviados.
Incluir um conjunto de regras que envolvem a idéia da expedição
de pacotes não
confiáveis. Estas regras indicam como os hosts ou gateways
poderiam processar os
pacotes; como e quando as mensagens de erros poderiam ser
geradas; e as condições
em que os pacotes podem ser descartados.

Dentro do protocolo IP temos os seguintes tópicos:

Endereços IP
Formato do datagrama IP
Roteamento do datagrama IP
ICMP (Internet Control Message Protocol)
 

TCP (Transport Control Protocol)
TCP é um protocolo da camada de transporte. Este é um
protocolo orientado à conexão
o que indica que neste nível vão ser solucionados todos os
problemas de erros que
não forem solucionados no nível IP, dado que este último é um
protocolo sem conexão.
Alguns dos problemas com o que o TCP deve tratar são:
Pacotes perdidos ou destruídos por erros de transmissão,
expedição 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 confiável,
assim como os
procedimentos que os computadores usam para assegurar que os
dados cheguem
corretamente. Entre estes procedimentos estão:

Distinguir entre multiplos destinos numa maquina determinada.
Fazer recuperação 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, Conexões e Endpoints
Segmentos, fluxo e Número de Sequencia

Formato do Segmento TCP

DNS (Domain Name System)

O DNS (Domain Name System) é um esquema de gerenciamento
de nomes,
hierárquico e distribuído. O DNS define a sintaxe dos nomes
usados na Internet,
regras para delegação de autoridade na definição de nomes, um
banco de dados
distribuído que associa nomes a atributos (entre eles o endereco
IP) é um
algoritmo distribuído para mapear nomes em endereços. O DNS e
especificado
nas RFCs 882, 883 e 973. As aplicações normalmente utilizam um
endereco IP de
32 bits no sentido de abrir uma conexão ou enviar um datagrama
IP. Entretanto,
os usuários preferem identificar as máquinas através de nomes ao
invés de números.
Assim é necessário um banco de dados que permita a uma
aplicação encontrar um
endereço, dado que ela conhece o nome da máquina com a qual
se deseja comunicar.

Um conjunto de servidores de nomes mantem o banco de dados
com os nomes e
endereços das máquinas conectadas a Internet. Na realidade este
e apenas um
tipo de informação armazenada no domain system (sistema de
domínios). Note
que e usado um conjunto de servidores interconectados, ao invés
de um único
servidor centralizado. Existem atualmente tantas instituições
conectadas a
Internet que seria impraticável exigir que elas notificassem uma
autoridade
central toda vez que uma máquina fosse instalada ou trocasse de
lugar. Assim, a
autoridade para atribuição de nomes e delegada a instituições
individuais.
Os servidores de nome formam uma árvore, correspondendo a
estrutura institucional.
Os nomes também adotam uma estrutura similar.

Um exemplo típico é o nome www.foznet.com.br. Para encontrar
seu endereco na
Internet pode ser necessário o acesso a até quatro servidores de
nomes.
Inicialmente deve ser consultado um servidor central,denominado
servidor raiz,
para descobrir onde esta o servidor br. O servidor br é o
responsavel pela
gerência dos nomes das instituicoes/empresas brasileiras ligadas à
Internet.
O servidor raiz informa como resultado da consulta o endereco IP
de vários
servidores de nome para o nível br (pode existir mais de um
servidor de nomes
em cada nível, para garantir a continuidade da operação quando
um deles para
de funcionar). Um servidor do nível br pode então ser consultado,
devolvendo o
endereco IP do servidor com.

De posse do endereco de um servidor com e possível solicitar que
ele informe o
endereço de um servidor foznet, quando, finalmente, pode-se
consultar o servidor
foznet sobre o endereço da máquina www.O resultado final da
busca é o endereço
Internet correspondente ao nome www.foznet.com.br.

Cada um dos níveis percorridos é referenciado como sendo um
domínio. O nome
completo www.foznet.com.br é um nome de domínio (DNS).

Na maioria dos casos, não é necessario ter acesso a todos os
domínios de um nome
para encontrar o endereço correspondente, pois os servidores de
nome muitas vezes
possuem informações sobre mais de um nível de domínio o que
elimina uma ou mais
consultas. Além disso, as aplicações normalmente tem acesso ao
DNS através de um
processo local (servidor para as aplicacoes e um cliente DNS),que
pode ser
implementado de modo a guardar os últimos acessos feitos, e
assim resolver a
consulta em nível local. Essa abordagem de acesso através de um
processo local,
simplifica e optimiza a tarefa das aplicações no que tange ao
mapeamento de nomes
em endereços, uma vez que elimina a necessidade de implementar,
em todas as
aplicações que fazem uso do DNS, o algorítmo de caminhamento
na árvore de domínios
descrito anteriormente.

O DNS não se limita a manter e gerenciar endereços Internet.
Cada nome de domínio é
um número em um banco de dados, que pode conter registros
definindo várias
propriedades. Por exemplo, o tipo da máquina e a lista de serviços
fornecidos por
ela. O DNS permite que seja definido um alias (nome alternativo)
para o número.
Também é possível utilizar o DNS para armazenar informações
sobre usuários, listas
de distribuição ou outros objetos.

O DNS é particularmente importante para o sistema de correio
eletrônico. No DNS são
definidos registros que identificam a maquina que manipula as
correspondências
relativas a um nome, identificado assim onde um determinado
usuário recebe suas
correspondências. O DNS pode ser usado também para definição
de listas para
distribuição de correspondências.

SMTP - Simple Mail Transfer Protocol

O SMTP (Simple Mail Transfer Protocol) e o protocolo usado no
sistema de correio
eletrônico na arquitetura Internet TCP/IP. Um usuário, ao desejar
enviar uma
mensagem, utiliza o módulo interface com o usuario para compor a
mensagem e
solicita ao sistema de correio eletrônico que a entregue ao
destinatário. Quando
recebe a mensagem do usuário, o sistema de correio eletrônico
armazena uma cópia
da mensagem em seu spool (área do dispositivo de
armazenamento), junto com o
horário do armazenamento e a identificação do remetente e do
destinatário. A
transferência da mensagem é executada por um processo em
background, permitindo
que o usuário remetente, após entregar a mensagem ao sistema de
correio eletrônico,
possa executar outras aplicações.
O processo de transferência de mensagens, executando em
background, mapeia o
nome da máquina de destino em seu endereço IP, e tenta
estabelecer uma conexão
TCP com o servidor de correio eletrônico da máquina de destino.
Note que o
processo de transferência atua como cliente do servidor do correio
eletrônico.
Se a conexão for estabelecida, o cliente envia uma cópia 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 cópia da
mensagem. Quando
recebe a confirmação do recebimento e armazenamento, o cliente
retira a cópia da
mensagem que mantinha em seu spool local. Se a mensagem, por
algum motivo, não for
transmitida com sucesso o cliente anota o horário da tentativa e
suspende sua
execução. Periódicamente o cliente acorda e verifica se existem
mensagens a serem
enviadas na área de spool e tenta transmiti-las. Se uma mensagem
não for enviada
por um período, por exemplo de dois dias, o serviço de correio
eletrônico devolve
a mensagem ao remetente, informando que não conseguiu
transmiti-la.

Em geral, quando um usuário se conecta ao sistema, o sistema de
correio eletrônico
é ativado para verificar se existem mensagens na caixa postal do
usuário. Se
existirem, o sistema de correio eletrônico emite um aviso para o
usuario que,
quando achar conveniente, ativa o módulo de interface com o
usuário para receber
as correspondências.

Uma mensagem SMTP divide-se em duas partes: cabeçalho e
corpo, separados por
uma linha em branco. No cabeçalho são especificadas as
informações necessárias
para a transferência da mensagem. O cabeçalho é composto por
linhas, que contém
uma palavra-chave seguida de um valor. Por exemplo,
identificação do remetente
(palavra-chave "to:" seguida do seu endereço), identificação do
destinatário,
assunto da mensagem, etc... No corpo são transportadas as
informações da mensagem
propriamente dita. O formato do texto e livre e as mensagens são
transferidas no
formato texto.

Os usuários do sistema de correio eletrônico são localizados
através de um par de
identificadores. Um deles especifica o nome da máquina de destino
e o outro
identifica caixa postal do usuário. Um remetente pode enviar
simultâneamente
várias cópias de uma mensagem, para diferentes destinatários
utilizando o conceito
de lista de distribuição (um nome que identifica um grupo de
usuários).
O formato dos endereços SMTP é o seguinte:

nome_local@nome_do_domínio

Onde o nome_do_domínio identifica o domínio ao qual a máquina
de destino pertence
(esse endereço deve identificar um grupo de máquinas gerenciado
por um servidor de
correio eletrônico). O nome local identifica a caixa postal do
destinatário.

O SMTP especifica como o sistema de correio eletrônico transfere
mensagens de uma
máquina para outra. O módulo interface com usuário é a forma
como as mensagens são
armazenadas e não são definidas pelo SMTP. O sistema de
correio eletrônico pode
também ser utilizado por processos de aplicação para transmitir
mensagens contendo
textos.

"Espero ter contribuido em algo para a melhoria de seus conhecimentos."

 Copyrigth © SPYMAN

Hosted by www.Geocities.ws

1