TCP/IP
Para vc ter dois computadores interligado é preciso que haja comunicação entre essas belezinhas! O responsavel por essa comunicação são os protocolos, no caso da internet o protocolo é o TCP/IP (Transmission Control Protocol/Internet Protocol na verdade são 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 são os principais! ;)
Ele são responsáveis 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 próprios protocolos. (Esses ai em cima) Pra cv começar a pegar a manha de como funciona o TCP, vamo colocar uma espécie 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 Saída".
3 - Uma rotina de envio de dados pega o que tem na caixa de saida, quebra em pacotes e manda pra uma Porta de Comunicação.
4 - Na Porta, uma rotina verifica se o destino é nessa rede, ou se vai precisar dos serviços 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 elétrica no cabo.
6 - A Placa de Rede do computador B recebe um pacote e ve que é para o seu endereço e Manda pra Porta de Comunicação.
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
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:
--------------- | Aplicação | --------------- | Apresentação | --------------- | Sessão | --------------- | Transporte | --------------- | Rede | --------------- | Ligação | --------------- | Física | ---------------
Nota: As camadas funcionam em Hierarquia.
O TCP usa um modelo de rede simplificado, composto de 4 camadas lógicas. Na verdade existe uma quinta camada representado pelo Hardware usado. So...o TCP foi criado como um sistema universal de troca de informações entre computadores, então 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 Unicórnio.
Agora imagine 2 terminais tentando se comunicar usando o TCP/IP. Para clarear um pouco mais, da look no deseinho:
----------------- | Aplicação | ----------------- | Transporte | ----------------- | Internet | ----------------- |Interface de rede| + ----------------- * | Hardware | * ----> Esta é a 5º camada, que alguns consideram e outros não. -----------------
Interface de Rede: Responsável por converter os pacotes em Frames especificos do tipo de Rede Tb converte os Endereços IP em Endereço Fisico.
Internet: E o elo entre as camadas inferiores orientadas para o Hardware e as camadas superiores orientadas para o aplicativo.
Transporte: Provê a comunicação entre os aplicativos conhecida tb como Host-to-Host, controla fluxo de dados , quebra a msg em pacotes, e verifica as sequencias dos minino!
Aplicação: Cada prg usa suas regras para se comunicar, obedecendo sempre um padrão, não seria possivel ler uma msg num Web Browser, pq o prg de mail fala um protocolo e o navegador outro.
ENDEREÇAMENTO: As placas de rede tem um numero gravado na sua EMPROM, para a identificação. Como cada estação "sabe" o seu ender. fisico, não há confusao para identificar quais pacotes devem receber. Nota: O endereço das Placas é fornecido pelo IEEE (não sei o que significa), sendo único pra cada placa existente!
Endereçamento 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 comunicação. Imgina vc na sua empresa com micros do tipo: PC, Macintoshes, Estações RISC, MainFrames e Roteadores, não daria pra ligar porra nenhuma! E pode ser que não dê! Seria possível caso possuam interface para o mesmo tipo de rede física e usando o bunitinho do TCP/IP! Para implementar este tipo de comunicação universal, a Camada Internet do TCP/IP utiliza seu próprio endereçamento, Conhecido como endereço IP. Ele é um endereço virtual ou seja cada equipamento deve conhecer o seu próprio IP, que não esta gravado na placa, como o ender. fisico. Além disso tem que ser capaz de fazer o mapeamento entre os ender. IP e fisico das maquinas conectadas na rede a que pertence. Se sua rede não tem conexão com a Internet (www), vc pode colocar os IPs que der na telha, porém, se quiser conexão com ela, tera que solicitar uma faixa de endereços IP ao INTERNIC, que regula a distribuição deles. Quando vc conecta na Internet usando um provedor, vc não tem um IP fixo, mas como ela funciona a base de TCP/IP vc precisa do IP, então seu provedor lhe empresta um, temporariamente.
Ahh, por falar em provedor gostarimos de mencionar nosso provedor! é a STY Acesso QUASE ilimitado e a conexão é QUASE boa! ;)
ENDEREÇOS 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 endereço IP não deve apenas indicar qual é o coputador mas tb a qual rede ele pertence. Isto é feito dividindo-se o IP em ENDEREÇO DE REDE e ENDEREÇO DE COMPUTADOR. Esta divisão não pode ser fixa, pq temos vários tamanhos de redes, desde poucos terminais até grandes WAN's. So....foi criado o sistema de classes IP.
Bate um zóio:
Classe A - mais de 16 milhões de Computadores Classe B - até 65.536 computadores Classe C - até 255 computadores
Bom eu sei que essa pergunta não veio a sua cabeça, mas mesmo assim eu vou perguntar! Como é feita a divisão??? Well...vamos considerar o Endereço IP que contém 32 bits. Os tres primeiros servem para identifcar a Classe do Endereço e de acordo com ela sabemos quantos bits são 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
(não deu pra entender nada, mas tudo bem) ;)
Então, se observarmos os tres primeiros bits de um endereço IP, saberemos qual e a sua classe, rede e o computador. (mais fácil 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 endereços é para uso especial, não podendo ser utilizado, este endereços tem varias finali dades, por ex: O endereço 127.0.0.1 é o LOOPBACK siginificando o próprio 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 são qualquer numero e dane-se, atenção:
Normalmente em endereços TCP/IP os zeros (0) siginificam ESTE e os uns (1) significam TODOS Ex. Considere os dois componentes de um IP: Endereço de Computador e Endereço de rede, seguindo a regra de "ESTE" e "TODOS", fica fácil identificar alguns endereços:
Endereço de Rede Endereço de Computador
Todos os numeros "0" Todos os numeros "0" Todos os numeros "0" Endereço de computador Todos os numeros "1" Todos os numeros "1" Endereço de Rede Todos os numeros "1"
Então finalmente temos o LOOPBACK: 127.0.0.1
Essa parte pode ser meio complicada de entender, mas pense que os 0 sejam a sua máquina e que os 1 sejam o resto da rede, talvez fique mais fácil de entender.
MÁSCARA DE SUB-REDE
A Máscara de Sub-Rede é a técnica que permite a divisão de uma rede em várias sub-redes, todas compartilhando a mesma faixa de Endereço IP. Esta técnica consiste basicamente em acrescentar alguns bit a Endereço de Rede, de modo a identificar mais de uma rede agregada. Estes Bits são retirados da parte reservada ao Endereço do Computador, portanto as sub-redes resultantes terão menos Endereços IP do que a rede original. Como vimos um Endereço IP possui duas partes: Endereço de Rede e Endereço de Computador. Ele é divido assim para poupar memória dos roteadores, que não necessitam saber o Endereço do computador, apenas o Endereço de Rede. Quando uma nova rede é adicionada logo ela recebe uma faixa de Endereços IP, que pode ser de Classe B ou C. Então rapidinho, muitos roteadores ficam sabendo do seu Endereço de Rede (é feito automaticamente), então se criarmos uma sub-rede teriamos que avisar todos eles novamente, correndo o risco de entupi-lo com informações de muitas sub-redes. (Afinal de contas eles servem para isso!). Em um Endereço IP Classe B, 16 bits são dedicados ao Endereço de Rede e os outros 16 ao Endereço de Computador, então poderiamos criar uma classificação que indique a sub-rede. +++
Endereços Virtuais X Endereços Fisicos
Os equipamentos conectados a uma rede se comunicam usando o Endereço Fisico qye está gravado em sua Placa de Rede. As camadas de Internet, Transporte e Aplicação do TCP/IP utilizam apenas os Endereços IP, então deve haver um meio de mapear os Endereços Virtuais (IP) em Físicos. Até a camada Internet as estações são identificadas pelo seu Endereço IP, porém a Camada de Interface de Rede é a responsável por lidar com um tipo de Rede física que esta sendo utilizada. Portanto deve gerar os Frames com o endereço físico do destinatário. Para isto ele utiliza dois protocolos que rodam exclusivamente nela: ARP e RARP. Uma jeito simples de mapear Endereços Virtuais em Endereços Físicos seria criar uma tabela de conversão e copiá-la para cada máquina participante. Mas tem umas desvantagens: Quando a Interaface de Rede necessita obter um Endereços Físicos, ela ja tem um Datagrama esperando pra ser enviado. Longas tabela, podem ser problemáticas a começar pelo local onde seria armazendo, note que nem todas os terminais precisam comunicar-se entre si, então teria armazenamento desnecessário, 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 dinâmino, no qual as próprias estações descobrem os Endereços Físicos 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 geringonça fununcia: ;)
O terminal de IP 1.1.1.1 precisa saber quem qual é o Endereço Físico do IP 1.1.1.3 para continuar com a operação. 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 Endereço Físico é: F9383910
Então o terminal que quer saber o Endereço Físico, lança uma pergunta e o IP correspondente responde com com o Endereço Físico. (na verdade não é bem uma pergunta, é só pra explicar qual é o e+squema ;) . Agora existe tb o RARP, que é o reverso do ARP, ele descobre o IP ao invés do Endereço Físico. O RARP dificilmente é encontrado nos pacotes TCP/IP mais comuns.
SISTEMA DE NOME DE DOMÍNIO - DNS Na maioria dos acessos que fazemos a Internet utilizamos nomes ao invés de Endereços IP. Como vc sabe todo o endereçamento feito em redes TCP/IP é feito através do IP, então quem traduz os nomes em números? A solução para traduzir nomes em endereços IP foi o arquivo HOSTS, presente em todos os sistemas UNIX assim como no Win95. Este arquivo contém uma entrada para cada estação, cujo nome precisamos traduzir. A pesquisa de nomes é feita sempre que um cliente TCP/IP solicita acesso através de um Nome de Domínio. Ex. quando vc solicita uma página Web: www.gostosa.com , seu browser irá praticamente traduzir o nome "www.gostosa.com" em um endereço IP para depois contactar o servidor da página. É 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 dicionário 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 comunicação via TCP/IP e começa a recebre os dados.
DATAGRAMAS IP Cada camada do TCP/IP acrescenta sei próprio cabeçalho no fragmentp da msg, esse processo é chamado de encapsulação, 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 máximo de um datagrama é de 64kb, que é maior que a capacidade das redes físicas usadas hoje.
ROTEADORES Ja cansei de falar em roteadores ao longo desse texto, mas é que sem ele, acho que sem ele não seria possível a mágica da Internet. No meu ponto de vista a Internet nada mais é do que milhares de roteadores interligando milhares de redes. Roteadores são computadores interligando redes físicas, cuja função é enviar os pacotes, para uma outra rede distinta, tem os endereços de algumas redes e sabe qual o caminho para levar os pacotes até elas. Podem ser computadores dedicados ou computadores comuns. Com a graça de Deus o Win95 não pode servir como roteador. É possível 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 endereços das redes? Well, ele usa uma tabela cheia de endereços de redes, Máscaras de Sub-Rede, Gateway, Interface de rede e Métricas. Mais ou menos como uma caderno de endereços. Quando tem pacotes a receber ele verifica se tem o endereço da rede e se pode enviar.
TABELA DE ROTEAMENTO IP
Também conhecida por Routing Information Table - RIT. Ela indica para onde enviar os pacotes que nã estao destinados à mesma rede física, tanto para estações quanto para roteadores. É uma tabela que contém as informações:
Destino - Endereço de destino fora da rede física. Pode ser apenas o endereço de rede ou o endereço IP completo.
Subnet Mask - Máscara de SubRede que deve ser ultilizada para comparação.
Gateway - Endereço IP do roteador que pode entregar o pacote ao destinatário. Também conhecido com "Next Hop" ou "Next Router".
Interface - Endereço IP da interface de rede para onde enviar o pacote. Faz sentido apenas para computadores multihomed ou roteadores.
Métrica - É a quantidade de roteadores que o pacote deve atravessar para chegar ao destino. Quando o roteador está na mesma rede que o destinatário, a quantidade é 1. Porém se ele tem mais dois roteadores no caminho, a quantidade é 3. Serve como dica para o campo TTL. Também 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 ultilitários TCP/IP e ver o que acontece. O Windows 95 e o Windows NT não vem com todos os ultilitários que um sistema UNIX possui. Temos poucas ferramentas, porém é possível verificarmos todos os aspectos relativos à camada Internet. o NETSTAT O NETSTAT serve para nos mostrar a RIT e fornecer diversas estatísticas. Seus parâmetros são:
NETSTAT [-a] [-e] [-n] [-s] [-p protocolo] [-r] [intervalo]
[-a] - Mostra todas as conexões ativas.
[-n] - Exibe os endereços IP das conexões ativas, e não os nomes das estações.
O resto você se vira e lê o Help. hehehe ;)
Usando o PING
O PING é um dos ultilitários mais conhecidos.Porém tem muitos recursos interessantes, veja alguns parâmetros:
PING [-t] [-a] [-n contador] [-l tamanho] [-f] [-i TTL] [-v TOS] [-r contador] [-s contador] [-w tempo] destino
[-a] - Transforma endereços em nomes.
[-l tamanho] - Tamanho do Datagrama.
[-v TOS] - Use este tipo de servço.
Usando o ROUTE
Há uma maaneira de informar entradas na RIT manualmente, é através do ultilitário ROUTE. Muito cuidado ao usa-lo, pois você pode bagunçar todo o roteamento de sua rede ("faça isso...hehehe").
ROUTE [-f] [comando [destino] [MASK subnet] [gateway]]
[-f] - Limpa todas as entradas de gateway.
MASK - Indica que o próximo parâmetro é uma máscara 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 aplicação, mais precisamente para o programa aplicativo ao qual estão destinados. A tarefa de separar as mensagens por programa aplicativo, é chamada de multiplexação/demultiplexação, e é executada na camada de transporte. A função principal da camada de transporte é fazer com que cada programa receba os dados que lhe são destinados. Outra tarefa importante é a validação dos dados, coisa que o IP não faz, e o controle de conexão entre os comunicantes. Temos dois protocolos nesta camada: o Transmission Control Protocol - TCP e o User Datagram Protocol - UDP. Então dentro de uma estação pode haver vários programas aplicativos com vários processos se comunicando através do TCP/IP. Que bagunça não!??? ;) Como podemos identificar os processos que estão se comunicando em estações distintas? O TCP/IP ultiliza o conceito de PORTAS e SOQUETES para identificar os processos comunicantes.
PORTAS As portas da camada de transporte não são dispositivos de Hardware. Não pense em compara-las com as portas COM ou LPT do sistema. Na verdade são abstrações ultilizadas para permitir a multiplexação.
Imagine uma porta como um painel de controle onde podem ser plugados conectores, ou soquetes.
As portas representam o primeiro mecanismo de conexão de aplicativos à camada de transporte. Um programa de servidor fica escutando ("não existe microfone para gritar isso.... é no sentido figurado...heh..na verdade o computador não 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, não é feita a conexão entre o cliente e o servidor. As mensagens são enviadas para uma determinada porta, se algum programa estiver "escutando" aquela porta, receberá a mensagem e enviará a resposta.
|---------|---------------------------| |Número da| Serviço que a ultiliza | | Porta | | |---------|---------------------------| | 7 |ECHO | |---------|---------------------------| | 20 |FTP (dados) | |---------|---------------------------| | 21 |FTP (controle) | |---------|---------------------------| | 25 |SMTP (envio de email) | |---------|---------------------------| | 110 |POP3 (verificação de email)| |---------|---------------------------| | 80 |HTTP (World Wide Web) | |---------|---------------------------|
SOCKTES Socktes são uma abstração que representa a conexão de um aplicativo com uma porta. Podemos ter vários aplicativos conectados a uma porta, cada um com o seu prórpio socket aberto. Mesmo no UDP, necessitamos criar sockets para receber ou enviar dados.
CAMADA DE APLICAÇAO Finalmente chegamos ao topo de Mundo TCP/IP. Neste nível, não estamos mais preocupados em fragmentação, roteamento e conexão, pois os protocolos desta camada são orientados à serviço. Os programas aplicativos que usam o TCP/IP normalmente efetuam chamadas ao sistema operacional para requisitar seus serviços.No ambiente Windows, isto é feito através de uma DLL, chamada de WINSOCK.
MIME E UUENCODE Bem, antes de falarmos do protocolo de aplicação é necessário vermos algo sobre MIME e UUENCODE. Ele está presente em aplicações desenvolvidas para trefegar texto ASCII, como o SMTP/POP3. O HTTP normalmente ultiliza a convenção MIME. Quando o correi eletrônico foi introduzido, covencionou-se que a codificação das mensagens seria ASCII padrão, com cada caracter ocupando 7 bits. Logo, caracteres cujo ASCII fosse acima de 128 não poderiam ser transmitidos. Imagine arquivos binários como imagens sons e programas executáveis... Para solucionar este problema seria necessário desenvolver um sistema de codificação que transformasse mensagens de 8 bits em 7 bits. Outra forma mais antiquadra de codificação é o UNIX to UNIX encode - UUENCODE. Também pode ser usada para transmitir arquivos binários via email. O formato MIME é mais moderno e identifica o tipo de arquivo e codificação empregada. Como TODOS os datagramas IP, o MIME também possui um cabeçalho. O tipo de codificação é muito importante para quem vai receber a mensagem. Você deve ter reparado que algmumas pessoas não conseguem ver mensagens com acentuação. A causa disso é que seu programa de recpção de mensagens não suporta MIME, ou você está enviando mensagens sem codificação alguma (8 bits). Bem, a intenção aqui não é ensinar como codificar arquivos em MIME ou UUENCODE. Basta você saber o que é MIME e UUENCODE.