Tcp transmission control protocol e ip internet protocol

1,495
-1

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,495
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
25
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tcp transmission control protocol e ip internet protocol

  1. 1. Tutorial sobre TCP/IP TCP:Transmission Control Protocol IP: Internet Protocol Protocolos: Simplesmente um conjunto de regras bem definidas que definem uma acao a ser executada (parece definicao de algoritmo mas na verdade pode ate ser encarado como um). Assim, protocolos em computacao, e em especial a redes, define como computadores podem se comunicar entre si. Todo computador conectado em rede necessita de uma identificacao, sendo assim, já de posse dessa identificacao, o protocolo tem por papel primordial estabelecer a conexao mais confiavel e duradoura possivel entre computadores. Dessa forma, se define: como enviar e receber e-mails, como me identifico a outro computador, quanto tempo devo esperar para que você me envie um conjunto de informacoes, com que intervalo um conjunto de informacoes deve ser espacado a fim de se obter a conexao mais confiavel possivel, como começar e como terminar uma conexao, etc. Intranet: Intranet é o novo conceito para redes de acesso discado mas não vinculado diretamente ao que conhecemos como Internet. Tal como um provedor de acesso à Internet, a Intranet conecta clientes a suas redes corporativas internas. Encare uma Intranet como servidora dela mesma, ou seja, voce pode acessa-la sem mesmo ter uma conta com um provedor Internet, contudo, o acesso limita-se apenas a rede privada e, de forma alguma, voce poderia, por exemplo, visitar paginas em outros locais alem da qual foi pre- programada pela empresa. As diferenças residem ai, no resto, temos todas as caracteristicas de uma rede qualquer: serviços WWW, ftp e o que mais a empresa venha a necessitar para atender seus clientes. Um bom exemplo a dar a respeito é sobre os serviços de Home Banking do Banco Itau (Isso não é propaganda heim?); você conecta-se, por acesso discado, do seu modem, a rede interna de servicos privados do Banco Itau e usufrui dos servicos de um caixa on-line. Extranet: Extranet é uma variante da Intranet, ou seja, podemos defini-la como sendo uma interligação entre Intranets por meio da Internet. Dessa forma, uma Intranet pode se comunicar a outra bastando apenas a sua interligacao por meio da Internet o que, nesse caso, envolveria um provedor de acesso discado. Pense comigo: uma empresa com varias filiais precisando de comunicação urgente com uma outra localizada a varios milhares de quilometros; a comunicacao por acesso puramente discado, Intranet a Intranet seria inviável; usa-se, então, um provedor de acesso local para a interligação entre as duas filiais. Introdução Ao contrario do que muita gente possa pensar, TCP/IP nao é o unico protocolo utilizado em comunicao em redes, tanto é que ao mesmo nivel de um IP, por exemplo, existe o x.25 e, ao TCP, o UDP. E algo mais que algumas pessoas possam fazer confusao é a respeito do que cada um faz, ou seja, TCP define um papel um tanto diferente do IP e vice-versa, cada qual com um papel especifico mas com sobrevivencia mutua e sempre "ajudado" por protocolos semelhantes. Na realidade podemos ate mesmo estudar os dois protocolos separadamente. O TCP/IP foi adotado como padrao em todo mundo como meio de comunicacao com a Internet. Algumas empresas podem implementar seus proprios protocolos de comunicacao em redes internas, se quiserem, mas para a comunicacao com a Internet deverao adaptar seus equipamentos a fim de operar em TCP/IP.
  2. 2. O TCP/IP foi primeiramente desenvolvido como um projeto particular que atendesse aos servicos do Governo Americano em especial as Forcas Armadas. No tempo da Guerra Fria, nao era possivel um nivel de comunicao satisfatorio entre bases comandadas, entao foi necessario a criacao de um nivel de transmissao de informacoes mais adequado. Logicamente existiam as transmissoes puramente fisicas com dados trafegando por meio de pulsos eletricos tal qual um barramento transfere dados entre perifericos. Pensar em algo como isso naqueles tempos era no minimo ridiculo. Como me comunicar dessa forma com uma base militar a algumas centenas ou milhares de quilometros? Levando em conta alguns conceitos de eletronica, o sinal se perderia ou se anularia facilmente nesse meio, os fios. Mesmo levando em conta que fosse possivel tal meio de comunicao, as informacoes nao sao enviadas como em um protcolo por TCP/IP, ou seja, por pacotes. É tudo enviado de uma vez so. Se a transmissao por algum motivo fosse interrompida todo o processo iria falhar e a informacao nao chegaria ao destino final. Desastroso. Alem de permitir uma conexao mais confiavel em redes, o TCP/IP permitia transmissoes bem mais arrojadas do que aquelas realizadas em modo puramente fisico, ou seja, unicamente por transmissao em pulsos. Assim, uma transmissao puramente fisica so poderia ser realizada somente por dois usuarios por vez e se se quisesse enviar mais informacoes a outros computadores nao seria possivel ou entao deveria-se fechar uma das conexoes para que a informação pudesse chegar em dois locais. Levando em conta que naquele tempo a comunicacao era primordial entre varios lugares ao mesmo tempo, esse modo de transmissao nao era o mais indicado. Pelo TCP/IP (outros protocolos permitiam isso tambem) era possivel comunicacao entre vários computadores ao mesmo tempo e isso atendia as pretensoes da epoca. Nesse tempo, os cientistas tiveram a ideia de transmissao por pacotes, ou seja, somente partes da informacao que deveria ser transmitida seriam enviadas. Assim, uma mensagem nao corria o risco de se perder no meio da transmissao e mesmo uma conexao mal realizada nao seria de toda inutil. Bem ,alguem poderia estar se perguntando: "Tudo bem, entendi o que você quis dizer, mas se se usa qualquer protocolo para meios de comunicao atraves de pacotes segmentados, isso tambem implica um meio fisico de transmissao e nesse meios os dados trafegam normalmente como pulsos eletricos tambem." -- Ok, você esta certo, nao ha diferencas em como a informação chega ao destino, ha sim no modo como ela é enviada. Como sera explicado mais adiante, o IP segmenta a informação em varios pacotes e esse pacotes sao tratados meramente como pulsos eletricos quando transmitidos e quando chegam ao computador destino, mas o TCP (o responsavel pelo recebimento) implementa um metodo seguro de transmissao, isso porque se o que se queria ser enviado nao chegou ao destino de forma completa, uma nova conexao pode ser restabelecida sem prejuizo do que já havia sido feito. Creio que você já deve ter ouvido falar no GetRight nao? Otimo programa. Isso seria um bom exemplo para dar a você: quando uma conexao termina por qualquer motivo com o meio de origem, o que envia os dados, uma nova conexo pode ser estabelecida sem prejuizo dos dados que estavam sendo recebidos, ou seja, pode ser reinicializada de onde se parou sem problemas. Assim funciona o meio de transmissao de pacotes e acho que você já pegou o espirito da coisa sobre a importancia desse protocolo. O protocolo TCP/IP implantou um novo conceito arrojado no modo de transmissao mundial entre redes mesmo as heterogeneas (Sistemas Operacionais diferentes) e qualquer Sistema que tenha por pretensao conectar o usuario em rede mundial Internet deve ter tais protocolos instalados Bom, era isso que eu queria falar a você como introducao. Agora vamos a parte tecnica da coisa. Conceitos Técnicos Antes de comecar, um esclarecimento: Um provedor de acesso a internet funciona por concessao de uma outra grande rede maior. Assim, seu provedor nada mais é do que uma rede conectada a outra maior e você, quando conectado ao seu provedor e fazendo parte dele como um host, é um micro-host em toda a essa rede maior. Essa grande rede maior é chamada de backbone (espinha-dorsal em ingles) e é nela onde estao conectadas as redes menores que oferecem servicos, as provedoras. É o nivel mais alto das redes. Os backbones nacionais sao: RNP, Embratel, Unysis, Global One, IBM e Banco Rural. Creio
  3. 3. que sao os unicos ate o momento. Esse sao os de nivel mais alto no Brasil, mas existem os backbones estaduais tambem (na realidade podem ser considerados como centros de roteamento aos backbones nacionais): ANSP - SP; Rede Bahia - BA; Rede Catarinense - SC; Rede Internet Minas - MG; Rede Paraibana de Pesquisa - PB; Rede Rio - RJ; Rede Pernambuco de Informática - PE; Rede Norte- riograndense de Informática - RN e Rede Tchê - RS. Sendo assim, a sua provedora é seu backbone pessoal, que se liga ao backbone do estado onde esta localizada que por sua vez é conectada ao de maior nivel, os backbones nacionais. Se seu estado nao possui backbone provavelmente sua provedora utiliza um backbone de outro estado ou entao de algum instituto de tecnologia proprio que possa fazer pelo menos um roteamento satisfatorio. Quando estabelecemos uma comunicacao com nosso provedor de acesso a internet, por exemplo, nos é atribuido um numero de identificacao na rede. Esse numero de identificacao é o IP. Um numero IP nada mais é do um numero de 32 bits segmentado em quatro partes, portanto com oito bits, formando um byte. Ao total teriamos 4 bytes. Se voce recebe por exemplo 11001000.11111001.11011111.1110010 esse numero define voce no mundo inteiro, ou seja, seu computador é unico na internet naquele momento e voce é perfeitamente identificado por ele. Assim como um numero de telefone, não existem dois numeros IP conectados ao mesmo tempo a não ser, obvio, que seja pertencente a uma rede interna (que não possua acesso a Internet). Algo interessante a se dizer sobre essa identificacao é que, como foi dito, sao um conjunto de bits e como tal é representado por numeros binarios. O mesmo numero acima traduzido para tabela decimal ficaria: 200.249.223.114. Isso é importante notar, porque um numero como esse nao é dado a voce em formato decimal mas sim binario e depois convertido gracas ao servidor ou servidores DNS. Outra coisa interessante a ser dita a respeito é que numeros IP nunca ultrapassam o patamar de numero 256. Assim, voce nunca ira ver nada como 200.286, isso não é possivel. Simplesmente porque a tabela de conversao atinge somente 256 possibilidades numericas (de 0 a 255). Portanto, o maximo que voce ira ver sera 255 como numero identificador de um dos segmentos do quarteto decimal. Na realidade poderiamos dizer 253 possibilidades porque o numero 0 eh destinado a processos especiais e 255 não pode ser atribuido a numeros IP de hosts, eles possuem outra finalidade (a mascara de sub-rede). Maiores detalhes sobre isso na secao "HIERARQUIA DE REDES". Outro fato que eu acredito muitas pessoas facam confusao é a respeito do host. Um host nada mais é do que um computador conectado em rede (em uma rede interna ele tambem pode ser chamado de nó). Vamos citar um exemplo de provedora, a ELOGICA. Quando voce disca para la e você é conectado, eles te fornecem um numero IP, ok. Para a ELOGICA voce nada mais é do que um computador conectado na rede dela, meramente um numero de identificacao. Como identifico um host? simples. Um endereco IP é dividido em duas partes: uma destinada a identificao da rede e a outra identificando o host, ou seja o micro que pertence a essa rede e se conectou a ela. Voltando ao exemplo acima: se nos temos 200.249.223.114 os dois primeiros bytes desse numero (lembre-se da definicao mais acima, para nao ficar perdido) sao destinados a rede, entao: 200.249 é a rede a qual me conectei. Ok. Os outros dois ultimos bytes definem o host: 223.114. Entao, para ficar facil, eu sou um micro chamado de host com identificacao 223.114 conectado na rede 200.249. Mais outra coisa deve ser dita: acho que voce já ouviu falar em sub-rede, claro. Pois é, uma sub- rede nada mais é do que uma rede hierarquicamente inferior em relacao a uma rede maior. Geralmente, os numeros que identificam a sub-rede sao referidos ao terceiro byte da cadeia do IP, assim o mesmo numero 200.249.223.114 pode definir uma sub-rede de identificacao 223. Como voce pode ver, uma rede pode ter varias sub-redes menores cada uma interdependente entre si mas dependente em relacao a rede maior. (*Esse conceito de identificacao de sub-redes envolve detalhes maiores e voce ira obter melhores informacoes na secao "HIERARQUIA DE REDES"*) Voltando ao exemplo da ELOGICA: ela possui varias sub-redes cada uma com um papel diferente mas de importancia suma dentro de toda a rede. Para a ELOGICA foi concedido o numero 200.249.XXX como identificador da rede em geral. Dentro dessa rede maior, a ELOGICA criou varios outros departamentos menores cada um com um servico especifico. Assim, poderiamos ter 200.249.223;
  4. 4. 200.249.238; 200.249.219; 200.249.218, etc. Cada uma dessas sub-redes com uma funcao especifica. Se você por exemplo, se conecta a rede e recebe: 200.249.219.15 entao voce é um host de numero 15 dentro da sub-rede 219 na rede 200.249. (*Infelizmente desconheco o menor e o maior nivel de rede concedido a ELOGICA porque, como eh uma rede classe C, apenas o segundo byte não informa a sub-rede verdadeira. Assim outras redes tambem podem ter 200.249.XXX como identificador, o que vai diferenciar ai seria o terceiro byte, justamente o que define uma rede dessa classe.*) O conjunto de sub-redes da ELOGICA segue abaixo: • 200.249.238.2 bbs.ELOGICA.com.br • 200.249.238.3 PE.ELOGICA.com.br • 200.249.238.4 ceiun01.ELOGICA.com.br • 200.249.238.9 irc.ELOGICA.com.br • 200.249.238.11 os390.ELOGICA.com.br • 200.249.238.15 dominus.ELOGICA.com.br • 200.249.238.16 oxente.ELOGICA.com.br • 200.249.238.17 clovis.ELOGICA.com.br.238.249.200.in-addr.arpa • 200.249.238.18 host238-18.ELOGICA.com.br • 200.249.238.19 host238-19.ELOGICA.com.br Observe que os servidores principais se concentram na sub-rede 238. Isso nao significa que um host de um usuario nao possa entrar e ser identificado como pertencente a sub-rede 238. De fato, esses sao enderecos fixos e pertencem aos servidores que atendem servicos tais como o IRC mais acima ou o de e-mail (se nao me engano o responsavel ai seria o ceiun01). Mas observe que mais abaixo (os dois ultimos hosts) encontramos numeros de hosts comuns, ou seja, sao de usuarios conectados no momento. Um outro exemplo: • 200.249.223.1 host223-1.ELOGICA.com.br • 200.249.223.2 host223-2.ELOGICA.com.br • 200.249.223.3 host223-3.ELOGICA.com.br • 200.249.223.4 host223-4.ELOGICA.com.br • 200.249.223.5 host223-5.ELOGICA.com.br • 200.249.223.6 host223-6.ELOGICA.com.br • 200.249.223.7 host223-7.ELOGICA.com.br • 200.249.223.8 host223-8.ELOGICA.com.br • 200.249.223.9 host223-9.ELOGICA.com.br • 200.249.223.10 host223-10.ELOGICA.com.br • 200.249.223.11 host223-11.ELOGICA.com.br • 200.249.223.12 host223-12.ELOGICA.com.br Nessa sub-rede de agora, a 223 nao ouve nenhum servidor anunciado, apenas usuarios conectados. Outras sub-redes foram verificadas mas nao houve nenhuma nova inclusao de servidores, parece que todo o servico se concentra na sub-rede 238. De fato, como sera visto no proximo capitulo, sub-redes superiores a 224 são destinadas a servicos especiais e ficam destinadas aos servidores. Hierarquia de Redes Como havia dito antes, a ELOGICA não obteve um numero de rede do nada. A ela foi concedido um numero de rede que é: 200.249.XXX. O fato de ter colocado os caracteres X é porque a ELOGICA não é única no mundo com identificacao 200.249. De fato, assim como ela, a NETPE (uma outra
  5. 5. provedora aqui de PE) tambem recebeu 200.249 como identificacao. Ambas são redes classe C e são varias pelo mundo. O que vai diferenciar as duas sera o terceiro byte da cadeia do IP. Uma organização mundial chamada IETF (Internet Engineering Task Force, ou Força Tarefa de Engenharia da Internet) eh quem outorga esses numeros a quem a solicita. As redes são divididas hierarquicamente no mundo, assim nos temos rede de maior tamanho e aquelas menores. Essa definicao de maior ou menor atende o simples fato da possibilidade de um numero maior ou menor de hosts conectados. Assim nos temos: Redes classe A, B e C. Redes classe A: São as redes de maior numero de hosts conectados e somente pouquissimos orgaos ao redor do mundo possuem o privilegio de possuir um endereco de rede situado na classe A (diga-se de passagem, não existem mais enderecos dessa classe disponiveis a novos cadastros, a não ser que alguem se descadastre). De fato, não eh qualquer organizacao no mundo que possui esse privilegio e eh apenas concedido a Universidades e organismos Governamentais. A quantidade de enderecos disponiveis a esse nivel é pequena, atinge numeros de 1 a 126. Observe que não utilizei os caracteres X pra identificar um outro nivel, isso não eh necessario em classes do tipo A, porque o primeiro byte jah eh suficiente para a identificacao de toda a rede. Já deu pra perceber portanto que essas redes são muito poucas mas atende o maior numero possivel de hosts conectados: 16.777.215. No mundo inteiro somente existe 126 redes classe A com demanda de aproximadamente 16 milhoes de hosts. Entao nos poderiamos ter: 1.0.0.1 ate 126.255.255.254. Esses dezesseis milhoes de hosts reflete o numero de possibilidades possiveis entre os tres ultimos bytes do quarteto. Assim, se fizermos uma analise combinatoria desses termos chegariamos no numero em questao. Bom, uma pergunta poderia surgir: "Ok, redes desse tipo são realmente grandes mas não entendi como ficou essa ultima parte, e quanto aos outros enderecos? Por que não foram incluidos? - Os outros enderecos de rede não foram incluidos poque são o resultado da analise combinatoria entre os outros possiveis hosts. Levando em conta que possuimos ainda os tres ultimos bytes da cadeia do IP, teriamos 256 possibilidades diferentes em um byte da cadeia do IP. Se temos 256 possibilidades entre cada um dos tres ultimos bytes da cadeia do IP entao faca o seguinte: eleve 256 ao cubo. O que voce vai obter é exatamente 16.777.216 como resultado. Uma pergunta interessante poderia surgir: "Certo, mas em outra parte do tutorial voce afirma que o numero 0 e o 255 não podem ser atribuidos a numeros IP porque possuem outras funcoes" - Não eh bem assim. O que afirmei eh que numeros de hosts não podem ter esses numeros e quando me refiro a host me refiro a um micro conectado e não um servidor de rede. Dessa forma, uma rede pode se utilizar de todas as possibilidades desde que não seja atribuido aqueles valores a hosts. Rede tipo B: Essas são as redes intermediarias e possuem enderecos de rede de 128 a 16.384. Redes desse tipo são identificadas pelos dois primeiros bytes. São possiveis portanto um numero de redes dessa classe da ordem de 16.256. Faca as contas: se voce já sabe que a rede ira comecar em 128 e terminara em 191 (o proximo nivel da hierarquia das redes começara em 192) , basta subtrair 128 de 192, o resultado voce multiplica por 256. Assim, voce ira obter 16.384. Por exemplo: o resultado que voce obteve foi 64 jah que o primeiro byte do nivel iria de 128 a 192 e o segundo de 0 a 255. Assim, como exemplo, poderiamos ter: 128.0.0.1 ate 191.255.255.254. O numero de hosts disponiveis nessa classe eu acho que voce já sabe como calcular: 256 elevado ao quadrado (são os dois ultimos bytes restantes). Teriamos entao 65.536. Esse é o numero possivel de hosts conectados nessa classe. No mundo temos entao 16.256 redes classe B com um maximo de 65.536 hosts conectados. Uma pergunta poderia surgir: "Voce comecou a contar esta rede a partir de 128, a rede anterior não terminou em 126? Onde esta o numero 127?" - O numero 127 não se destina a identificar redes publicas. De fato, esse numero eh destinado a testes de loopback em uma rede. Um loopback nada mais eh do que a conexao que a rede faz com ela mesma para testes internos, configuracoes, etc. Isso não eh exclusivo de redes e tanto eh que loopbacks existem quando queremos verificar a velocidade de trafego numa comunicacao paralela ou serial por exemplo. Dessa forma, uma rede que comece com 127 não eh uma rede que conecte hosts. Eh um teste interno apenas. Entao se voce vir 127.0.0.1, por exemplo, isso eh um numero de loopback. Rede tipo C: Essas são as menores e são as mais numerosas em todo mundo. Provavelmente a sua provedora de acesso a Internet usa uma rede tipo C. Enderecos de rede vao de 192 ate 2.097.152. No mundo são possiveis, entao, algo em torno de 2 milhoes de redes com apenas 254 hosts conectados (que eh o ultimo byte). Os endereços de rede ficariam entao: 192.0.0.1 a 224.255.255.254. Como
  6. 6. provavelmente sua provedora não possui apenas 254 usuarios cadastrados, ela com certeza dividiu a sua rede em redes menores cada uma comportando 254 usuarios. Isso ira acontecer sempre a medida que a demanda por acessos a novos usuarios aumentar, ou seja, se uma rede classe C jah não atende mais a demanda, ela pode ser aumentada com a inclusao de novas sub-redes. Para se chegar a esse numero de 2 milhoes o calculo eh o mesmo do que jah foi feito acima, ou seja, redes classe C são identificadas pelos tres primeiros bytes entao faça somente o 256 elevado ao cubo e vc achara o valor, certo? Bastante errado. Ao contrario das outras redes, uma rede classe C possui mais restricoes. Uma rede classe C comeca do numero 192, ok. Mas não termina em 256! De fato, ela termina no numero 224. Isso acontece porque numeros superiores a 224 são destinados a servicos especiais (com protocolos diferentes) e não são incluidos como identificador de rede. Assim nos teriamos apenas 32 possibilidades no primeiro byte (de 192 ate 224). Os dois bytes seguintes continuariam da mesma forma, ou seja, não existem restricoes e continuariam com 256 possiblidades. Entao nos teriamos: 32 x 256 x 256 = 2.097.152. E assim nos temos o numero de redes disponiveis nessa classe. Na verdade o numero de redes disponiveis eh isso menos uma rede: a 192.168 que eh feita quando queremos construir nossa rede particular. Se algum dia voce quiser montar sua rede provavelmente ira nomear seus hosts como: 192.168.0.1; 192.168.0.2.... ate o fim do numero de maquinas disponiveis. Se chegar na maquina de numero 24, por exemplo, era podera ser conhecia como: 192.168.2.4. Outro item a ser comentado eh sobre o que se chama de mascara da sub-rede. Isso nada mais eh do que a determinacao da classe a qual uma rede pertence. Assim nos poderiamos ter: • Classe A: 255.0.0.0 • Classe B: 255.255.0.0 • Classe C: 255.255.255.0 Parece desnecessario? Pois eh, realmente nos damos a olhar a primeira vista e pensar que não eh necessario um tipo de identificacao de redes desse tipo. Bastaria olhar o numero do primeiro byte e isso jah seria suficiente p/ saber a que classe a rede pertence. Isso a nossos olhos eh otimo mas para uma maquina, a que ira analisar pedidos, por exemplo, isso não eh suficiente. Precisamos informar a ela que a rede eh do tipo C, A ou B e isso eh feito pela mascara da sub-rede (tambem chamada de netmask). Eh necessario esse tipo de informcao porque uma rede de amplo espectro, uma classe A, por exemplo, pode ser dividida em redes classe B que por sua vez pode ser subdividida em redes classe C. Por exemplo, voce pode ter uma rede classe A mas achou muito grande e resolveu dividi-la em varias redes B, no final voce quis varias tipo C, ok, sem problemas. Mas quando voce fez isso, voce automaticamente criou redes verdadeiras e não apenas subsividoes. Assim a menor divisao que voce fez foi em 20 vezes. Não se deu por satisfeito e resolveu criar redes menores dentro daquelas 20, vamos supor 5. Cada uma dessas divisoes não eh tratada como um mero host, por exemplo, eh uma rede inteira. Sendo assim, voce precisa informar que aquela subdivisao das 20, as outras 5 redes, não são hosts e sim redes classe C. E, na verdade, quando se chega a um ponto como esse, nem mesmo uma simples "olhada" nos numeros eh suficiente para informar que tipo de rede é e fatalmente voce ira precisar se certificar disso por meio do netmask. Isso eh importante porque sem essas informacoes não eh possivel o roteamento de dados. Eh necessario manter o nivel de hierarquia das redes. Se voce tem, por exemplo, um numero de rede como: 125.142.75.6 isso parece ser uma rede classe A. Quem pode garantir? Uma "olhada" nesse numero não eh suficiente pra termos certeza. Essa pode ser a nossa divisao de redes que fizemos nas linhas acima ou entao uma rede A verdadeira. Sendo assim, é extremamente necessario informar que essa rede não eh uma rede A e sim uma classe C dentro de uma A. Dependendo di sistema em uso, podemos definir simplesmente pelo netmask. 255.255.255.0 eh suficiente pra informar que essa eh uma rede C. Espero que tenha sido esclarecedor essas informacoes. Eh muito importante o conhecimento desses topicos se quiser saber mais sobre construcao de redes. Conceitos Técnicos
  7. 7. O protocolo IP possui outras determinacoes alem de identificar voce na rede: ele transforma a informacao a ser enviada em pequenos pacotes cada um contendo em torno de 512 bytes (alguns autores se divergem quanto ao tamanho dos pacotes, alguns chegam a admitir 200 bytes). Esses pacotes recebem o nome de datagrams e em cada um desses pacotes é alocada a informacao do computador de origem e de destino. Que informacao é essa? o numero IP. Assim, se por exemplo voce estabelece uma conexao com algum servidor tipo ftp, junto de cada pacote vai o seu numero IP, para que o servidor saiba para quem esta enviando os dados, alem do proprio numero IP do servidor para que possa ser localizado, logico. A respeito do tamanho dos pacotes eles podem ser facilmente percebidos: experimente fazer um upload por e-mail de um arquivo qualquer de, digamos, 137 kb. Na janela informativa de status da operacao voce ira perceber que aquele pacote de 137 kb aumentou para algo em torno de 188 kb. Esse arquivo de 137 kb foi segmentado em varias partes de mais ou menos 512 bytes cada e foi anexado um cabeçalho informativo feito pelo IP (explicado mais adiante) contendo informacoes do computador de origem e de destino. Essa informacoes adcionais, colocadas em cada pacote, constituem alguns kbytes a mais em tudo e foi por isso que aumentou para 188 kb. Um dado interessante a respeito é que algumas aplicacoes cliente (leia-se programas que recebem exclusivamente dados) como um mIRC por exemplo, anexa os dois protocolos em seu meio e é perfeitamente configuravel o tamanho de cada pacote, ou seja, voce poderia enviar pacotes de dados com 512 ou 200 bytes sem problemas. Contudo, pacotes maiores sao mais confiaveis e é sempre aconselhavel voce utilizar pacotes de 512 byes. Tambem nao vamos exagerar e colocar pacotes de 1024 bytes. Absurdo. É possivel? é. Mas nao é uma boa ideia. Uma cartacteristica interessante da rede é que os dados transformados em pacotes podem se perder no caminho da transmissao. Nos primordios do TCP/IP, essas informacoes nao se perdiam tao facilmente mas com o crescente congestionamento da rede, um ou outro pacote pode se perder no caminho ou no minimo chegar na ordem errada. Isso ocorre primeiramente porque qualquer coisa enviado atraves de rede deve passar pelo meio fisico e nesse meio essas "coisas" nada mais sao do que sinais eletricos provenientes de um meio digital. Assim, um pacote de informacoes sao varios pulsos de interrupcao numa corrente continua. Assim, os pacotes sao enviados sequencialmente mas nao é garantida a sucessao correta, assim um pacote de numero 20 pode chegar na frente do 15. Ai entao entra o TCP responsavel pelo recebimento dos pacotes que chegam. Esse protocolo tem sua maior funcao no reordenamento dos pacotes. Assim, se um pacote enviado pelo IP se perde no caminho, o TCP manda novo pedido ao computador que estava enviando a informacao a fim de ser reestabelecido o processo e o envio novamente do mesmo pacote ou entao, se todos os pacotes conseguiram chegar, po-los na ordem correta. Esse pedido geralmente eh feito pelo protocolo ICMP (parte do IP que trata de controle de erros, explicado mais adiante) o qual é enviado em um pacote menor do que 512 bytes informando que um pacote chegou de forma inadequada ou nao chegou. Perceba que a informacao nao chega inteira mas segmentada em centenas ou milhares de pacotes, dependendo do tamanho do que se quer enviar. Entao como o TCP ao receber o pacote sabe em que ordem ele deve ficar? Nesse caso entra o TCP de origem. O TCP do computador de origem fornece um numero sequencial a cada pacote segmentado pelo IP. Assim, quandos os pacotes chegam no destino, o TCP de destino se incumbe de "ver" esses numeros e po-los na ordem correta e nao na ordem em que chegam. Já pensou se nao fosse assim? Quando uma pagina html fosse "aberta" no seu navegador ficaria tudo desorganizado, porque o seu TCP os receberia e os ordenaria do modo como chegassem. Outro protocolo que acredito que poucas pessoas possam conhecer ou se conhecem tem certa duvida é o UDP. O UDP (User Datagram Protocol) possui as mesmas qualificacoes que o protocolo TCP e exerce a nivel de rede a mesma coisa. A diferenca real se resume no fato de que qualquer conexao realizada por UDP é bastante falha e insegura. Enquanto o TCP fornece um numero sequencial a cada pacote a fim de serem reorganizados na ordem correta, o UDP envia os pacotes a esmo, ou seja, sem sequencia. Quando esse pacotes chegam no destino fica meio dificil a conexao. Mas ai fica a pergunta: para que diabos serve o UDP entao? Bom, se voce tem certeza que possui uma conexao confiavel e sabe que os pacotes nao irao se perder no meio do caminho ou entao que chegarao na ordem correta, o UDP pode ser a sua escolha. Nesse caso nao se perderia tempo na reordenacao de pacotes.
  8. 8. Um exemplo paratico de quando se usa o UDP? quando se nuka alguem ou quando se da o chamado death ping. Ninguem vai se preocupar em enviar alguma coisa a vitima na ordem correta. O objetivo do nuke eu creio que você já conheca. Entao pode ser uma boa pedida já que o envio é mais rapido, se bem que nuke alem de ser condenavel eh um pouco antigo e diversas formas de protecao jah foram feitas. Bom, entao alguem poderia se perguntar: "mas e como fica o IP?". Bom, o IP fica na mesma, ou seja, ele, a nivel de rede, continua a exercer a mesma funcao de antes e nao é porque foi incluido o UDP que ele nao vai ser usado. Isso não implica. O TCP ai foi substituido meramente para se acelerar o processo ou com algum outro proposito como o do nuke ou death ping. Os Servidores Bom, resolvi incluir esse adido como parte integrante desse tutorial a respeito de modos de transmissao em redes por ser um assunto que, acredito, muita gente ainda faça bastante confusao. Como havia dito em outra parte do texto, IP sao numeros de 32 bits segmentados em quatro partes cada uma contendo oito bits, um byte portanto. Quando voce faz uma comunicacao remota com um computador qualquer em especial os que atendem servicos, os chamados servidores, o IP fornece um numero de identificacao que recebe o nome de IP como simples alusao ao serviço que ele faz. Nao so o numero de identificacao do seu proprio host mas tambem do servidor que atendera os pedidos. Entao, quando voce faz a solicitacao de um pedido qualquer a um servidor como o ftp por exemplo, junto a ele vai o seu IP e o IP do servidor. Lembre-se que o processo IP "quebra" qualquer informacao em pequenos pacotes conhecidos como datagrams. Entao como é feita a comunicacao? Bastante simples: vamos supor que voce esteja no seu navegador, um Netscape por exemplo, e voce quer acessar uma pagina qualquer. Entao voce descreve uma url e aponta o browser nesse pedido. O IP entao entra em açao. Ele agrupa esse pedido num unico pacote contendo os Ips de identificacao e manda ao servidor que atendera os pedidos. (*Eu nao sei como funciona um servidor como um Windows® NT, por exemplo, entao vou descrever como se processa tudo em uma maquina padrao POSIX, um Linux por exemplo. Embora o NT esteja incluido nesse padrao tambem, eu nao sei como o servico é atendido por la.*) Esse pacote chegando por la é recebido por algo como se fosse um grande secretario geral de um grande departamento. O responsavel nesse caso seria o que é chamado em servidores UNIX de daemon, mais conhecido como inetd (nao vou entrar em detalhes sobre isso, acredito que ira fugir bastante do assunto em questao). Esse "secretario geral" atende todos os pedidos que chegam, mas desvia o sercvico a um servidor especifico que no nosso exemplo sera o httpd (outro daemon) . Nesse caso, o servico que o inetd fez foi somente "avisar" ao pacote que ele por si nao faz o servico, mas avisa quem é o responsavel, o httpd. Entao, chegado o pedido, o httpd verifica em seus arquivos (novamente nomes de arquivos nao sao importantes ao entendimento do assunto, isso é uma questao especificca a assuntos em UNIX e nao é preciso entrar em detalhes sobre isso) onde se encontra, por exemplo, uma pagina qualquer. Encontrando essa pagina, o httpd a organiza e segmenta em pacotes e envia ao computador que fez o pedido, o cliente. Os pacotes recem chegados no computador de origem sao colocados em sua ordem correta e a aplicacao cliente, o Netscape, ira se encarrega de mostrar o conteudo da pagina que foi organizada. Portas de Comunicação Esse é outro assunto bastante difundido na internet e temido por muita gente. Mas antes, merece uma descricao detalhada: Tal como os numeros IP, numeros de portas sao formados por bits. As portas sao atendidas em numeros que vao de 0 a 65534 (na verdade o mais correto seria de 1 a 65535. Ate agora nao vi nenhum servidor que atendesse em portas de numero 0). Numeros de portas de comunicao sao formadas por
  9. 9. sequencia de 16 bits dividido em duas partes cada uma com um byte portanto e separados por pontos de divisao como em um numero IP. Como havia dito, numeros de portas vao de 0 a 65535, sao muitas portas portanto e cada uma destinada a alguma conexao qualquer. Lembre-se que a cada dia sao inventados novos servicos que se utilizam do protocolo TCP/IP como meio e esses novos servicos, vamos citar como exemplo o ICQ, precisam de uma dessas portas disponiveis para conexao. "Qualquer uma?" -- Sim, qualquer uma. Nao ha um padrao para as portas serem abertas com o mesmo numero anterior. O Sistema Operacional se encarregara de escolher uma porta adequada nao necessariamente igual a anterior. Numeros de porta inferiores a 1024 sao destinadas ao computador que atende determinado servico. Voltando ao exemplo anterior, o dos servidores: observe que esse pedido é sempre atendido na porta 80 (porta padrao de servicos http), contudo, nada impede que essa porta seja atendida em outro numero. Em relacao a isso, tal pratica é muito corriqueira, ou seja, numa Intranet, por exemplo, é bastante comum o administrador da rede reservar um numero maior a um servico especial que nao possa ser acessado assim tao facilmente. Nesse ultimo exemplo, vamos supor que o administrador tenha ficado receoso porque algumas pessoas estao conseguindo acessar um determinado servico que, embora deva ficar sempre no ar porque atende a certas pessoas, nao deve ser acessivel a todos. Entao ele pode muito bem mudar a porta padrao do servico - vamos supor um telnet que atende na porta 23 - para algo em torno de 56263. Bem, o administrador é realmente uma pessoa responsavel e muda todos os dias o endereco da porta de forma a que ninguem possa acessa-lo assim tao facilmente, dessa forma se tornando bastante dificil a alguem o acesso a esse servico. Essa é uma pratica bastante difundida em servidores particulares visando a seguranda de toda a rede, mas nao pde ser usada em servidores permanentes como um proevdor de acesso a intenet. Nesse caso , a medida mais correta é inabilitar o servico inteiro já que nao se pode avisar a todos os usuarios que o numero da porta mudou de numero. Alguem pode estar se perguntando: "Ok, entendi o que voce quis dizer. Mas vamos supor que o meu progama cliente, o que envia o pedido, vamos supor um telnet, queira se comunicar com um servidor telnet remoto. Nao saberia ele a porta correta de comunicao?" -- BBBem, nao é assim tao simples. Já pensou se tudo fosse assim? Simplesmente eu saberia onde qualquer servico é atendido e todo o trabalho do administrador vai por agua a baixo com todas aquelas mudancas de numeros. Na verdade, o seu telnet envia o pedido e o inetd o repassa ao telned. Mas acontece uma coisa: se eu mudar o endereco de porta do telnet para outro numero qualquer, o inetd nao sabera o numero a nao ser que eu o informe. O pedido vai ser atendido? Nesse caso nao. Mas se voce indicar a porta correta onde o servico esta disponivel, a comunicacao sera estabelecida. Entao, voce teria de apontar o numero correto ao seu cliente telnet e este enviaria o numero ao servidor remoto. Simples? Pois é, é assim que as coisas funcionam e a seguranca é mantida. Algo importante que nao foi explicado anteriormente é que um dos papeis que o TCP exerce nesse monte de protocolos é que ele fornece o numero da porta a ser atendida. Assim, me utilizando do cliente telnet, o TCP fornece o numero da porta. Mas quem envia é o IP. Confundiu? Vamos dizer assim: O IP é responsavel na rede pela transmissao de pacotes, como você já sabe. Em cada pacote vai o IP de destino e de origem (isso esta meio repetitivo mas é necessario). Isso é como se fosse um envelope onde no corpo externo da carta vai o endereço para onde quero enviar, o destinatario, e de onde foi mandado, o remetente. Dentro do envelope vai uma carta. Nessa carta sao fornecidos os enderecos de portas onde o servico é atendido. É interessante dizer que o IP nao sabe o numero da porta, isso é papel do TCP ou do proprio UDP. Nem o UDP nem o TCP sabem para onde vao, ou seja, eles nao sabem quais sao os numeros IP. Bom, ok. Mas e quanto aos numeros de portas acima de 1024? Bem, essas sao destinadas apenas a comunicao entre programas que se utilizam de TCP/IP. Como havia dito mais acima, vamos citar o exemplo do ICQ. Otimo programa. Quando voce estabelece uma comunicacao com os servidores que conectam voce ao ICQ, automaticamente é aberta uma porta de comunicao. Se voce executar qualquer PortScan para rastreamento de portas abertas, voce ira verificar que uma porta, sempre acima de 1024, foi aberta. Voce pode verificar agora mesmo se alguma porta de comunicacao foi aberta no seu micro. Simplesmente no prompt do seu MS-DOS digite:netstat -an. Algo como o que segue abaixo vai aparecer:
  10. 10. Route Table Active Connections Proto Local Address Foreign Address State TCP 127.0.0.1:1041 0.0.0.0 LISTENING TCP 127.0.0.1:1041 127.0.0.1:110 ESTABLISHED TCP 200.215.169.67:1034 200.215.160.63:110 TIME_WAIT TCP 200.215.169.67:1040 200.215.160.63:110 TIME_WAIT TCP 200.215.169.67:137 0.0.0.0:0 LISTENING UDP 200.215.169.67:138 0.0.0.0:0 LISTENING UDP 200.215.169.67:139 0.0.0.0:0 LISTENING Podemos interpretar isso assim: Proto: é o protocolo utilizado para transportar o servico, nesse caso foi utilizado o TCP, mas poder poderia ter sido utilizado o UDP sem problemas, quer dizer, ate certo ponto e dependendo do servico. Local Address: É o numero de porta local ode foi estabelecida a conexao. Observe que foram todas acima de 1024. Excecoes foram vistas mas serao explicadas. Foreign Address: É o endereco de porta remoto onde a conexao foi estabelecida. Foi colocado o nome do protocolo que atende o servico, o pop3. Poderia ter sido colocado o numero de porta sem problemas, nesse caso ficaria 110. State: Define o estado em que a conexao se encontra no momento. Desses estados, tres foram efetuados: listening: isso é a espera de conexao que ainda nao foi estabelecida. No momento em que foi executado o netstat, a porta estava sendo ouvida. Established: Essa nao precisa de muita definicao, a conexao foi efetuada com sucesso nas portas em questao e o programa cliente esta recebendo dados de forma normal. Time Wait: O servidor parou momentaneamente de enviar dados e no momento em que o comando netstat foi executado isso estava ocorrendo. Observe as portas que foram estabelecidas no computador local: 1041, 1034, 1040, 137, 138, 139. Como voce pode verificar foram estabelecidas conexoes nas portas menores a 1024, como 137, 138, 139. Essas portas atendem servicos portanto. Vamos a elas: A porta 139 na realidade é apenas um bug encontrado nas versoes Windows® anteriores a OSR2 e pode ser fechada pelo usuario com programas especificos ou pelo renomeamento de um driver de dispositivo virtual que nesse caso é o vnbt.386. Os efeitos provocados pelo mau uso dessa porta já sao bastante divulgados: isso causa uma pane geral nos sistemas Windows® e mesmo os NTs mais antigos ainda sofrem com esse problema. Nao é um nuke propriamente dito porque os efeitos sao diferentes. Na realidade aproveita-se a falha que o Windows® possui em atender servicos marcados como urgente (os chamados OOB ou out-of-band). O Windows® da preferencia a pacotes marcados dessa forma e relega a segundo plano as outras conexoes que você possui. O efeito é o termino da sua conexao TCP/IP. Isso siginifica que alguem poderia tentar usar seu micro com alguma forma de hacking? Provavelmente nao. Digo provavelmente porque a porta 139 é usada ainda como brincadeira por muita gente metida a hacker mas que nada mais fazem do que cancelar uma conexao TCP/IP e travar a maquina de um usuario inocente (existem exceçoes). Brincadeira de criança. Essa porta, portanto, nao atende servicos a nao ser o de enviar resposta ao pacote OOB.
  11. 11. As portas 137 e 138 sao reservadas ao NetBios (Network Input/Output System) do Windows®. Na verdade nao é exclusividade dos sistemas Windows® e pode ser implementado em qualquer maquina. O NetBios foi desenvolvido pela IBM como forma de servir o micro cliente como host servidor em alguns casos especificos. Assim, alguem usando um Windows® 95 poderia disponibilizar essas duas portas para permitir servicos como acesso a uma impressora compartilhada por exemplo. Mas é altamente recomendavel que estas portas estejam fechadas. Se voce nao é usuario de uma rede interna de algum departamento e ninguem usa seu micro como host servidor temporario para, por exemplo, compartilhar sua impressora entao nao ha nenhum motivo para permanecer com essas portas abertas. O usuario dessa configuracao de portas precisa urgentemente de uma re-configuracao do Windows®. Verifique em seu micro, caso use Windows®, se voce esta com algum servico compartilhador de redes como o NetBios. Se está, nao permita nenhum compartilhamento entao. Isso constitui-se de uma forma de hacking realmente e nao é usada por criancas que adoram nukar o usuario inocente, hackers que possuem conhecimento dessas portas abertas (e tem conhecimento da tecnica) podem acessar seu micro da forma como quiserem jah que essas portas sao atendentes de servicos ao contrario da porta 139. O Windows® usando o NetBios vai permitir acesso nesse caso. Essa descricao acima (do NetBios) nao se constitui de uma falha dos sistemas Windows® propriamente dita - é inclusive anunciada pela Microsoft. É sim uma má configuracao do usuario que, por algum descuido, permitiu essa forma de conexao. Mas as tres portas se encontravam em modo listening o que quer dizer que nenhuma conexao foi estabelecida, o que nao significa que nao possa ser feito. Agora poderia sobrevir uma duvida: "Ok, essas tres portas foram estabelecidas e estavam em modo listening mas e quanto ao endreço do host? Por que nao foi informado nada?" - Bom, é simples. As portas estavam abertas apenas, todas as tres, mas nenhum host externo, naquele momento, estava tentando acessa-las Exatamente por isso nao foi informado nenhum IP de identificação remoto. Possivelmente, quando alguem tentasse firmar uma conexao, o IP seria fornecido. As outras portas maiores, acima de 1024 foram estabecidas normalmente no computador local sem problemas. O que acontece é o seguinte: Como expliquei mais acima a respeito de uma conexao telnet, o programa cliente informa a porta na qual devera ser estabelecida a conexao mas nao informa a porta local. Isso sera feito depois e quem o fara é o seu Sistema Operacional. Assim, o computador remoto, o servidor envia um pacote qualquer de volta ao computador de origem (lember-se que ele sabe qual o IP de origem) e somente depois disso a porta é aberta. Sera que isso seria motivo de preocupacao de alguem? Acredito que, infelizmente, a maioria das pessoas ainda temem essas portas abertas quando dao o comando netstat. Na verdade nao ha o que se preocupar. As portas sao estabelecidas temporariamente e depois que a conexao é terminada a porta se fecha, a nao ser aquelas que sao conhecidas, como o bug do Windows® da porta 139 e/ou as 137 e 138. Se isso nao acontecesse ninguem receberia informacao de lugar nenhum. Assim, uma porta origem e destino devem ser abertas. Uma outra duvida que poderia surgir a respeito: "Ok, as portas sao fechadas, mas e durante a minha conexao, as portas estao abertas e nao possuem conexao com portas tao altas, qualquer pessoa com um scaneador de portas conseguiria descobrir facilmente onde estou conectado." -- Calma, nao é bem assim. Uma porta so atende um servico de cada vez e nao consegue estabelecer conexao em dois pontos simultaneamente. Assim, qualquer um que tentasse estabelecer qualquer comunicacao com seu computador primeiro teria de esperar a porta aberta parar de ser solicitada para depois atender outra coisa. Ou seja, para poder scanear as suas portas de comunicacao primeiro o servico teria de cancelar a conexao que havia estabelecido antes, o que nao é possivel , e segundo lhe enviar um pacote informando a porta que esta aberta. Assim, deu para entender como o scaneador de portas funciona: ele fica perturbando o computador remoto com pacotes aleatorios de dados (ai entraria o UDP, porque nao é necessrio nenhuma reorganizacao de pacotes) funcionando como uma especie de ping esperando pelas resposta. TCP/IP em Camadas
  12. 12. Uma rede TCP/IP eh dividida apenas em quatro camadas (não confunda com divisao de redes em camadas OSI, isso jah eh aplicado a construcao de redes desde o andamento e construcao dela em um escritorio, por exemplo ate o ponto final, em outra localidade. Divisao em camadas por TCP/IP não envolve os conceitos de construcao desde a origem real ate o final). A divisao das redes TCP/IP eh como se segue (Esse modelo de rede TCP/IP foi feito pensando-se na origem em relacao ao destino): Aplicação Transporte Rede Físico Fisico: Esse é o proprio meio fisico da rede ou , em outras palavras, é onde as coisas acontecem de fato. Assim, qualquer comunicacao entre mcros deverao pessar pelo meio fisico. Nessas camada esto incluidas todos os dispositivos fisicos de sua rede: cabos, placas da rede, enfim todo hardware usado em comunicacao em redes esta incluido nessa camada. Em relacao a esse nivel, todos os dados sao tratados como pulsos eletricos, ou seja, interrupcoes na corrente continua do micro. Rede: Essa camada é a responsavel pelo roteamento dos pacotes entre os hosts, ou seja, tem por funcao encontrar o caminho mais curto e confiavel entres os computadores. Eh exercida pelo protocolo IP. A nivel de redes espcificicamente, (não apenas a TCP/IP podemos incluir ainda nessa camada um outro protocolo conhecido como X.25) esse nivel eh ainda responsavel pelo envio dos pacotes. Transporte: Essa camada jah inclue o protocolo que transporta o servico, ou seja, ai esta incluido o TCP e/ou o UDP. Assim, essa camada eh a responsavel pelos pacotes criados pelo IP da camada anterior. Eh obrigacao da camada de transporte oferecer a comunicacao mais confiavel entre os hosts de uma rede e tentar a todo custo enviar dados da forma mais clara e limpa possivel. Caso algum pacote se perda na rede, por exemplo, eh obrigacao dessa camada enviar novo pedido a fim de ser restabecida a conexao correta novamente. Para não evitar confusao nessa camada: o nivel mais acima, o de rede, cria os pacotes e os envia mas lembre-se que o TCP eh quem tem por obrigacao fornecer uma maneira de colocar esses pacotes na ordem correta. Assim, o TCP aloca essas informacoes em cada pacote e o IP o envia. Quando esses pacotes chegam ao destino, o TCP desse destino eh quem vai coloca- los em ordem de acordo com o que o TCP de origem fez. Aplicação: Aqui se incluem as aplicacoes processadas (os programas). Assim, quando voce faz um pedido a fim de receber uma pagina html, o seu navegador processa os pacotes que chegam (ai entrar o TCP) e forma a pagina para que voce possa ver. Isso não ocorre apenas com o destino, ou seja, para que voce recebesse essas informacoes um outro programa teve de ser processado para que as informacoes chegassem a voce.

×