
<--------------------------Just Hack The Planet----------------------------->

So... Para vc ter dois computadores interligado  preciso que haja comunicao
entre essas belezinhas! O responsavel por essa comunicao so os protocolos,
no caso da internet o protocolo  o TCP/IP (Transmission Control 
Protocol/Internet Protocol na verdade so dois), que  usado tb nas redes 
Ethernet. Junto ao TCP/IP ou abaixo dele roda outros protocolos como:

 - UDP : User Datagram Protocol
 - POP : Post Office Protocol
 - SMTP: Simple Mail Transfer Protocol
 - ICMP: Internet Control Message Protocol
 - FTP : File Transfer Protocol
 - Http: HyperText Transfer Protocol
 - ARP : Address Resolution Protocol

Tem mais uma porrada de protocolo, mas estes so os principais! ;)

Ele so responsveis pelo funcionamento do TCP/IP.


	O TCP/IP  construido em camadas, a estrutura desse protocolo,  
semelhante a estrutura do modelo de redes OSI - Open Systems Interconnection.
Cada camada  especialista em uma tarefa, possuindo seus prprios protocolos.
(Esses ai em cima) Pra cv comear a pegar a manha de como funciona o TCP, 
vamo colocar uma espcie de Algoritimo! Look Down ;)

1 - Um terminal "A" precisa enviar um msg ao terminal "B"
2 - O prg faz uma rotina interna que prepara a msg, colocando o Destino e 
Remetente, e depois vai pra uma "Caixa de Sada".
3 - Uma rotina de envio de dados pega o que tem na caixa de saida, quebra em 
pacotes e manda pra uma Porta de Comunicao.
4 - Na Porta, uma rotina verifica se o destino  nessa rede, ou se vai 
precisar dos servios de um  roteador, manda pra Placa de Rede e verifica se 
cada pacote foi recebido corretamente.
5 - A Placa de Rede ve se pode enviar e vai mandando Bit a Bit modulando a 
corrente eltrica no cabo.
6 - A Placa de Rede do computador B recebe um pacote e ve que  para o seu 
endereo e Manda pra Porta de Comunicao.
7 - A Porta verifica a validade do Pacote, e manda pra uma rotina de 
recebimento de dados.
8 - A rotina de recepcao de msg, espera a chagada de todos os pacotes e 
remonta a msg e poe numa "caixa de entrada" .
9 -  O Aplicativo de recepcao de msg recebe os dados e alerta o usuario.

                                  The End    
                         (No foi liiiindo?!??!?)


	Esse  principio do funcionamente de um Protocolo.
	Cada uma das camadas executa um trabalho sobre a msg, da uma olhada 
no esquema de camadas do modelo de redes OSI:

     ---------------
    |   Aplicao   |
     ---------------
    | Apresentao  |
     ---------------
    |    Sesso     |
     ---------------
    |  Transporte   |
     ---------------
    |     Rede      |
     ---------------
    |    Ligao    |
     ---------------
    |    Fsica     |
     ---------------

Nota: As camadas funcionam em Hierarquia.


	O TCP usa um modelo de rede simplificado, composto de 4 camadas 
lgicas. Na verdade existe uma quinta camada representado pelo Hardware usado.
So...o TCP foi criado como um sistema universal de troca de informaes entre
computadores, ento deve se obter o maximo de independencia dos fabricantes 
de Redes. Vc jamais conseguira comprar uma "Placa de Rede TCP/IP", pq  mais 
dificil do que conseguir Chifre de Unicrnio.

	Agora imagine 2 terminais tentando se comunicar usando o TCP/IP. Para
clarear um pouco mais, da look no desenho:


    -----------------
   |   Aplicao     |
    -----------------
   |  Transporte     |
    -----------------
   |   Internet      |
    -----------------
   |Interface de rede|
 +   -----------------
 * |    Hardware     | *   ---->  Esta  a 5 camada, que alguns consideram e
    -----------------             outros no.


Interface de Rede: Responsvel por converter os pacotes em Frames especificos
do tipo de Rede Tb converte os Endereos IP em Endereo Fisico.

Internet: E o elo entre as camadas inferiores orientadas para o Hardware e as
camadas superiores orientadas para o aplicativo.

Transporte: Prov a comunicao entre os aplicativos  conhecida tb como Host-
to-Host, controla fluxo de dados, quebra a msg em pacotes, e verifica as 
sequencias dos minino!

Aplicao: Cada prg usa suas regras para se comunicar, obedecendo sempre um 
padro, no seria possivel ler uma msg num Web Browser, pq o prg de mail fala
um protocolo e o navegador outro.



ENDEREAMENTO:
	As placas de rede tem um numero gravado na sua EMPROM, para a 
identificao. 
	Como cada estao "sabe" o seu endereo fisico, no h confusao para 
identificar quais pacotes devem receber.
Nota: O endereo das Placas  fornecido pelo IEEE (no sei o que significa), 
sendo nico pra cada placa existente!


Endereamento Virtual:
	O TCP/IP  implementado por software, formando uma rede virtual entre
redes heterogeneas, o TCP/IP  + ou - um conjunto de protocolos que padroniza
a comunicao. Imgina vc na sua empresa com micros do tipo: PC, Macintoshes, 
Estaes RISC, MainFrames e Roteadores, no daria pra ligar porra nenhuma! E 
pode ser que no d! Seria possvel caso possuam interface para o mesmo tipo
de rede fsica e usando o bunitinho do TCP/IP!
	Para implementar este tipo de comunicao universal, a Camada Internet
do TCP/IP utiliza seu prprio endereamento, conhecido como endereo IP. Ele 
 um endereo virtual ou seja cada equipamento deve conhecer o seu prprio IP,
que no esta gravado na placa, como o endereo fisico. Alm dissotem que ser 
capaz de fazer o mapeamento entre os ender. IP e fisico das maquinas 
conectadas na rede a que pertence.
	Se sua rede no tem conexo com a Internet (www), vc pode colocar os 
IPs que der na telha, porm, se quiser conexo com ela, tera que solicitar 
uma faixa de endereos IP ao INTERNIC, que regula a distribuio deles.
	Quando vc conecta na Internet usando um provedor, vc no tem um IP 
fixo, mas como ela funciona a base de TCP/IP vc precisa do IP, ento seu 
provedor lhe empresta um, temporariamente.


	Ahh, por falar em provedor gostarimos de mencionar nosso provedor!  
a STY Acesso QUASE ilimitadoe a conexo  QUASE boa! ;) 



ENDEREOS IP
	Um IP identifica um computador (pode ser um roteador ou mascara de 
subrede), em uma rede TCP/IP.
	Ele  um numero composto por 4 bytes (ou octetos), normalmente 
representado por pontos:
       
   Ex.
      IP = 192.168.0.1

	O endereo IP no deve apenas indicar qual  o coputador mas tb a 
qual rede ele pertence. Isto  feito dividindo-se o IP em ENDEREO DE REDE e 
ENDEREO DE COMPUTADOR.
	Esta diviso no pode ser fixa, pq temos vrios tamanhos de redes, 
desde poucos terminais at grandes WAN's. So....foi criado o sistema de 
classes IP.

Bate um zio:

  Classe A - mais de 16 milhes de Computadores
  Classe B - at  65.536 computadores
  Classe C - at  255 computadores

	Bom eu sei que essa pergunta no veio a sua cabea, mas mesmo assim 
eu vou perguntar! Como  feita a diviso??? Well...vamos considerar o 
endereo IP que contm 32 bits. Os tres primeiros servem para identifcar a 
Classe do Endereo e de acordo com ela sabemos quantos bits so usados para 
identificar a rede e quantos para o computador:

   Classe A: 7 bits para a rede e 24 para o computador
   Classe B: 14 bits para a rede e 24 para o computador
   Classe C: 21 bits para a rede e 8 para o computador

    (no deu pra entender nada, mas tudo bem) ;)

	Ento, se observarmos os tres primeiros bits de um endereo IP, 
saberemos qual e a sua classe, rede e o computador. (mais fcil observar em 
valores decimais) 
            

                 Classe           de            at

                    A          0.1.0.0        126.0.0.0 
                    B         128.0.0.0      195.255.0.0
                    C         192.0.1.0     223.255.255.0





	Alguns endereos  para uso especial, no podendo ser utilizado, este
endereos tem varias finalidades, por ex: O endereo 127.0.0.1  o LOOPBACK 
siginificando o prprio computador, tanto  que se enviar uma msg a esse IP, 
vai mandar uma msg a si mesmo.

	Aqui vem um fato interessante pra quem acha que os IP's so qualquer 
numero e dane-se, ateno:

Normalmente em endereos TCP/IP os zeros (0) siginificam ESTE e os uns (1) 
significam TODOS 
Ex.
Considere os dois componentes de um IP: Endereo de Computador e Endereo de 
rede, seguindo a regra de "ESTE" e "TODOS", fica fcil identificar alguns 
endereos:
      

            Endereo de Rede                          Endereo de Computador
          
          Todos os numeros "0"                         Todos os numeros "0"
          Todos os numeros "0"                        Endereo de computador
          Todos os numeros "1"                         Todos os numeros "1"
          Endereo de Rede                             Todos os numeros "1"


    Ento finalmente temos o LOOPBACK: 127.0.0.1
  
	Essa parte pode ser meio complicada de entender, mas pense que os 0 
sejam a sua mquina e que os 1 sejam o resto da rede, talvez fique mais fcil
de entender.



MSCARA DE SUB-REDE

	A Mscara de Sub-Rede  a tcnica que permite a diviso de uma rede 
em vrias sub-redes, todas compartilhando a mesma faixa de Endereo IP. Esta 
tcnica consiste basicamente em acrescentar alguns bit a Endereo de Rede, de
modo a  identificar mais de uma rede agregada. Estes Bits so retirados da 
parte reservada ao Endereo do Computador, portanto as sub-redes resultantes 
tero menos Endereos IP do que a rede original.
	Como vimos um Endereo IP possui duas partes: Endereo de Rede e 
Endereo de Computador. Ele  divido assim para poupar memria dos roteadores,
que no necessitam saber o Endereo do computador, apenas o Endereo de Rede.
Quando uma nova rede  adicionada logo ela recebe uma faixa de  Endereos IP,
que pode ser de Classe B ou C. Ento rapidinho, muitos roteadores ficam 
sabendo do seu Endereo de Rede ( feito automaticamente), ento se criarmos 
uma sub-rede teriamos que avisar todos eles novamente, correndo o risco de 
entupi-lo com informaes de muitas sub-redes. (Afinal de contas eles servem 
para isso!).
	Em um Endereo IP Classe B, 16 bits so dedicados ao Endereo de Rede
e os outros 16 ao Endereo de Computador, ento poderiamos criar uma 
classificao que indique a sub-rede.
+++


Endereos Virtuais X Endereos Fisicos

	Os equipamentos conectados a uma rede se comunicam usando o Endereo 
Fisico que est gravado em sua Placa de Rede. As camadas de Internet, 
Transporte e Aplicao do TCP/IP utilizam apenas os Endereos IP, ento deve 
haver um meio de mapear os Endereos Virtuais (IP) em Fsicos. At a camada 
Internet as estaes so identificadas pelo seu Endereo IP, porm a Camada 
de Interface de Rede  a responsvel por lidar com um tipo de Rede fsica que
esta sendo utilizada. Portanto deve gerar os Frames com o endereo fsico do 
destinatrio. Para isto ele utiliza dois protocolos que rodam exclusivamente 
nela: ARP e RARP. 
	Uma jeito simples de mapear Endereos Virtuais em Endereos Fsicos 
seria criar uma tabela de converso e copi-la para cada mquina participante.
 Mas tem umas desvantagens:  Quando a Interaface de Rede necessita obter um 
Endereos Fsicos, ela ja tem um Datagrama esperando pra ser enviado. Longas 
tabela, podem ser problemticas a comear pelo local onde seria armazendo, 
note que nem todas os terminais precisam comunicar-se entre si, ento teria 
armazenamento desnecessrio, no caso de uma novo terminal ou roteador serem 
adicionados, as tabelas de todos os terminais teriam que ser modificado, e o 
que aconteceria se uma Placa de Rede apresentasse defeito? Para resolver 
esses problemas, o pessoal que criou o TCP/IP pensou em um mapeamento
dinmino, no qual as prprias estaes descobrem os Endereos Fsicos uma das
outras. Esse mapeamento  o Address Resolution Protocol - ARP, um protocolo 
que roda na Camada de Interface de rede.

Um exempo simples de como esse geringona funciona:  ;)
 
O terminal de IP 1.1.1.1 precisa saber quem qual  o Endereo Fsico do IP 
1.1.1.3 para continuar com a operao. Ele vai funcionar mais ou menos assim:

     Eu sou 1.1.1.1 , A0578503. Quem  1.1.1.3 ?
     Eu sou 1.1.1.1 e meu Endereo Fsico : F9383910
      
	Ento o terminal que quer saber o Endereo Fsico, lana uma pergunta
e o IP correspondente responde com com o Endereo Fsico. (na verdade no  
bem uma pergunta,  s pra explicar qual  o esquema ;) . Agora existe tb o 
RARP, que  o reverso do ARP, ele descobre o IP ao invs do Endereo Fsico. 
O RARP dificilmente  encontrado nos pacotes TCP/IP mais comuns.




SISTEMA DE NOME DE DOMNIO - DNS
	Na maioria dos acessos que fazemos a Internet utilizamos nomes ao 
invs de Endereos IP. Como vc sabe todo o endereamento feito em redes 
TCP/IP  feito atravs do IP, ento quem traduz os nomes em nmeros? A 
soluo para traduzir nomes em endereos IP foi o arquivo HOSTS, presente em
todos os sistemas UNIX assim como no Win95. Este arquivo contm uma entrada 
para cada estao, cujo nome precisamos traduzir. A pesquisa de nomes  feita
sempre que um cliente TCP/IP solicita acesso atravs de um Nome de Domnio. 
Ex. quando vc solicita uma pgina Web: www.gostosa.com, seu browser ir 
praticamente traduzir o nome "www.gostosa.com" em um endereo IP para depois
contactar o servidor da pgina.  ai que entra o HOSTS ou o Servidor DNS. O 
HOSTS funciona apenas em redes internas, tanto o Servidor DNS como o HOSTS, 
fuinciona como um dicionrio de nomes.
Ex:
      
       
      ___________   Quem  www.gostosa.com?    __________
      |   Web   | ---------------------------> |Servidor|
      | Borwser |         192.168.11.5         |  DNS   |
      ----------- <--------------------------- ----------

Depois de reconhecido o IP, o seu borwser estabelece uma comunicao via 
TCP/IP e comea a recebre os dados.




DATAGRAMAS IP
	Cada camada do TCP/IP acrescenta sei prprio cabealho no fragmento 
da msg, esse processo  chamado de encapsulao, pois o fragmento da camada 
superior  embutido dentro do fragmento gerado,  como se vc encaixasse um 
caixa dentro da outra, a medida que vai andando. O tamanho mximo de um 
datagrama  de 64kb, que  maior que a capacidade das redes fsicas usadas 
hoje.


ROTEADORES
	Ja cansei de falar em roteadores ao longo desse texto, mas  que sem 
ele, acho que sem ele no seria possvel a mgica da Internet. No meu ponto 
de vista a Internet nada mais  do que milhares de roteadores interligando 
milhares de redes.
	Roteadores so computadores interligando redes fsicas, cuja funo 
enviar os pacotes, para uma outra rede distinta, tem os endereos de algumas 
redes e sabe qual o caminho para levar os pacotes at elas. Podem ser 
computadores dedicados ou computadores comuns. Com a graa de Deus o Win95 
no pode servir como roteador.  possvel usar o WinNT ou OS/2 Warp Server, 
mas  muito melhor usarmos algo do tipo como UNIX ou LINUX. Em resumo um 
roteador  mais computador que liga mais de uma rede. E como ele sabe os 
endereos das redes? Well, ele usa uma tabela cheia de endereos de redes, 
Mscaras de Sub-Rede, Gateway, Interface de rede e Mtricas. Mais ou menos 
como uma caderno de endereos. Quando tem pacotes a receber ele verifica se 
tem o endereo da rede e se pode enviar.

TABELA DE ROTEAMENTO IP

	Tambm conhecida por Routing Information Table - RIT.
	Ela indica para onde enviar os pacotes que n estao destinados  
mesma rede fsica, tanto para estaes quanto para roteadores.  uma tabela 
que contm as informaes:

Destino - Endereo de destino fora da rede fsica. Pode ser apenas o endereo
de rede ou o endereo IP completo.

Subnet Mask - Mscara de SubRede que deve ser ultilizada para comparao.

Gateway - Endereo IP do roteador que pode entregar o pacote ao destinatrio.
Tambm conhecido com "Next Hop" ou "Next Router".

Interface - Endereo IP da interface de rede para onde enviar o pacote. Faz 
sentido apenas para computadores multihomed ou roteadores.

Mtrica -  a quantidade de roteadores que o pacote deve atravessar para 
chegar ao destino. Quando o roteador est na mesma rede que o destinatrio, a
quantidade  1. Porm se ele tem mais dois roteadores no caminho, a 
quantidade  3. Serve como dica para o campo TTL. Tambm chado de Distance ou
Hop Counter.

 
VERIFICANDO O ROTEAMENTO

	Bem, agora que entendemos o que acontece na camada Internet, podemos 
brincar um pouco com os ultilitrios TCP/IP e ver o que acontece.
	O Windows 95 e o Windows NT no vem com todos os ultilitrios que um 
sistema UNIX possui. Temos poucas ferramentas, porm  possvel verificarmos 
todos os aspectos relativos  camada Internet. 

Usando o NETSTAT
O NETSTAT serve para nos mostrar a RIT e fornecer diversas estatsticas. Seus
parmetros so:

NETSTAT	[-a] [-e] [-n] [-s] [-p protocolo] [-r] [intervalo]

[-a] - Mostra todas as conexes ativas.

[-n] - Exibe os endereos IP das conexes ativas, e no os nomes das estaes.

O resto voc se vira e l o Help. hehehe ;)

Usando o PING

	O PING  um dos ultilitrios mais conhecidos. Porm tem muitos 
recursos interessantes, veja alguns parmetros:

PING [-t] [-a] [-n contador] [-l tamanho] [-f] [-i TTL] [-v TOS] 
[-r contador] [-s contador] [-w tempo] destino

[-a] - Transforma endereos em nomes.

[-l tamanho] - Tamanho do Datagrama.

[-v TOS] - Use este tipo de servio.

Usando o ROUTE

	H uma maaneira de informar entradas na RIT manualmente,  atravs do
ultilitrio ROUTE. Muito cuidado ao usa-lo, pois voc pode bagunar todo o 
roteamento de sua rede ("faa isso...hehehe").

ROUTE [-f] [comando [destino] [MASK subnet] [gateway]]

[-f] - Limpa todas as entradas de gateway.

MASK - Indica que o prximo parmetro  uma mscara de subrede.


CAMADA DE TRANSPORTE
	O que acontece com os pacotes quando chegam ao seu destino?
	Imagine que o IP recebeu e validou os datagramas, enviando-os para a 
camada de transporte. O que deve ser feito agora? Devem ser enviados para a 
camada de aplicao, mais precisamente para o programa aplicativo ao qual 
esto destinados. A tarefa de separar as mensagens por programa aplicativo, 
chamada de multiplexao/demultiplexao, e  executada na camada de 
transporte.
	A funo principal da camada de transporte  fazer com que cada 
programa receba os dados que lhe so destinados.
	Outra tarefa importante  a validao dos dados, coisa que o IP no 
faz, e o controle de conexo entre os comunicantes.
	Temos dois protocolos nesta camada: o Transmission Control Protocol 
- TCP e o User Datagram Protocol - UDP. 
	Ento dentro de uma estao pode haver vrios programas aplicativos 
com vrios processos se comunicando atravs do TCP/IP. Que baguna no!??? ;)
Como podemos identificar os processos que esto se comunicando em estaes 
distintas? O TCP/IP ultiliza o conceito de PORTAS e SOQUETES para identificar
os processos comunicantes.

PORTAS
	As portas da camada de transporte no so dispositivos de Hardware. 
No pense em compara-las com as portas COM ou LPT do sistema. Na verdade so 
abstraes ultilizadas para permitir a multiplexao.

	Imagine uma porta como um painel de controle onde podem ser plugados 
conectores, ou soquetes.

	As portas representam o primeiro mecanismo de conexo de aplicativos 
 camada de transporte. Um programa de servidor fica escutando ("no existe 
microfone para gritar isso....  no sentido figurado...heh..na verdade o 
computador no escuta nada, ele apenas abre um soquete passivo para guardar 
os recebimentos de dados").
	Quando um programa cliente deseja se comunicar, envia mensagens 
direcionadas aquela determinada porta.
	No caso do UDP, no  feita a conexo entre o cliente e o servidor. 
As mensagens so enviadas para uma determinada porta, se algum programa 
estiver "escutando" aquela porta, receber a mensagem e enviar a resposta.

|---------|---------------------------|
|Nmero da|    Servio que a ultiliza |
| Porta   |                           |
|---------|---------------------------|
|  7      |ECHO                       |
|---------|---------------------------|
| 20      |FTP (dados)                |
|---------|---------------------------|
| 21      |FTP (controle)             |
|---------|---------------------------|
| 25      |SMTP (envio de email)      |
|---------|---------------------------|
| 110     |POP3 (verificao de email)|
|---------|---------------------------|
| 80      |HTTP (World Wide Web)      |
|---------|---------------------------|


SOCKTES
	Socktes so uma abstrao que representa a conexo de um aplicativo 
com uma porta. Podemos ter vrios aplicativos conectados a uma porta, cada 
um com o seu prrpio socket aberto. Mesmo no UDP, necessitamos criar sockets 
para receber ou enviar dados.

CAMADA DE APLICAAO
	Finalmente chegamos ao topo de Mundo TCP/IP. Neste nvel, no estamos
mais preocupados em fragmentao, roteamento e conexo, pois os protocolos 
desta camada so orientados  servio.
	Os programas aplicativos que usam o TCP/IP normalmente efetuam 
chamadas ao sistema operacional para requisitar seus servios. No ambiente 
Windows, isto  feito atravs de uma DLL, chamada de WINSOCK.

MIME E UUENCODE
	Bem, antes de falarmos do protocolo de aplicao  necessrio vermos 
algo sobre MIME e UUENCODE. Ele est presente em aplicaes desenvolvidas 
para trafegar texto ASCII, como o SMTP/POP3. O HTTP normalmente ultiliza a 
conveno MIME.
	Quando o correi eletrnico foi introduzido, covencionou-se que a 
codificao das mensagens seria ASCII padro, com cada caracter ocupando 7 
bits. Logo, caracteres cujo ASCII fosse acima de 128 no poderiam ser 
transmitidos. Imagine arquivos binrios como imagens sons e programas 
executveis... Para solucionar este problema seria necessrio desenvolver um 
sistema de codificao que transformasse mensagens de 8 bits em 7 bits.
	Outra forma mais antiquadra de codificao  o UNIX to UNIX encode - 
UUENCODE. Tambm pode ser usada para transmitir arquivos binrios via email.
	O formato MIME  mais moderno e identifica o tipo de arquivo e 
codificao empregada.
	Como TODOS os datagramas IP, o MIME tambm possui um cabealho.
	O tipo de codificao  muito importante para quem vai receber a 
mensagem. Voc deve ter reparado que algmumas pessoas no conseguem ver 
mensagens com acentuao. A causa disso  que seu programa de recpo de 
mensagens no suporta MIME, ou voc est enviando mensagens sem codificao 
alguma (8 bits).
	Bem, a inteno aqui no  ensinar como codificar arquivos em MIME 
ou UUENCODE. Basta voc saber o que  MIME e UUENCODE.