|
[10/10]
:. Resumo do dia [10/10] :. UAC será menos irritante e mais eficaz no Windows 7 [10/10] :. Empresa japonesa lança curiosa tela LCD secundária [10/10] :. Primeira chamada de celular completará 25 anos [10/10] :. Depois de 10 anos, Apple consegue patente do Dock [10/10] :. Quiz sobre DSL [10/10] :. Wikimedia migrará seus servidores para Ubuntu [10/10] :. Lançado kernel Linux 2.6.27 [09/10] :. Resumo do dia [09/10] :. Asus Eee PC touchscreen e dual-core em 2009 [09/10] :. Ericsson desenvolve torre de transmissão movida a vento [09/10] :. Lançado Mandriva 2009 final [08/10] :. Open Hack Day no Brasil, inscrições para evento do Yahoo! [08/10] :. NVIDIA lança revisão 177.80 dos drivers para Linux [08/10] :. Mozilla introduz o Geode, extensão de geolocalização :. Mais noticias » |
TCP/IP não é um protocolo, são protocolos.Transportar dados de um computador ao outro é uma tarefa não tão fácil quanto parece. Para termos uma conexão confiável de uma ponta até a outra precisamos estabelecer diversos passos ou diversas abordagens que dividem o problema em pedaços. Um protocolo é uma palavra a qual seu uso na informática não é diferente do uso coloquial. Se o presidente da República for visitar um país da África ele deve seguir o protocolo de visitação daquele país. Assim é na informática, um protocolo é um conjunto de regras que possibilita a comunicação entre duas entidades. Os protocolos TCP/IP por exemplo foram desenvolvidos pelo exército americano com objetivo de: Esta tarefa se faz dividindo o problema em pedaços. Numa rede que roda sobre TCP/IP esta divisão se faz por: Interface, Rede, Transporte e Aplicação Ouvimos em palestras, literatura técnica e pelo meio em geral chamarem o TCP/IP de protocolo. Na verdade o TCP é um protocolo e o IP é outro protocolo ambos de camadas diferentes. Analisamos abaixo InterfaceDefine a representação de 1 bit: ótico, magnético, elétrico. E sua única finalidade é transportar estes bits de uma ponta a outra. Exemplos: Ethernet, Wireless, Fax-Modem. Apesar de pensarmos que todos fazem a mesma coisa, eles funcionam de uma forma totalmente diferente. Por exemplo o Fax Modem exige um número de telefone para estabelecer a conexão, desta forma ele transforma sinais de computador em som para então trocar informações. O Ethernet (aquele RJ45 de cabo geralmente azul) já possui uma forma automática para o usuário de descobrir a quem ele deve se comunicar e fazendo isso muito rápido. E o Wireless por exemplo tem uma definição de bit totalmente diferente transportando-os pelo ar. RedeConsidera a rede num todo e transporta dados de qualquer máquina até qualquer outra máquina. Exemplo: IP (Até hoje foi o único modelo proposto mais existe suas versões como versão 4 ou 6) A tarefa desta camada é fazer com que os dados cheguem ao seu destino final. Existe uma tabela de roteamento nas máquinas e roteadores que especifica qual rota deve ser tomada para cada IP ou grupo de IPs. Através desta tabela os pacotes não seguem caminhos totalmente arbitrários mas seguem um caminhos um pouco mais direcionados. TransporteTorna esta comunicação através de um fluxo de bytes, tornando a confiável ou usável. Exemplos: TCP, UDP. Como numa rede IP o pacote pode tomar diversos caminhos diferentes, existe a possibilidade de um pacote IP chegar antes de outro pacote que foi lançado anteriormente. Existe até a possibilidade do seu pacote se perder e nunca chegar no seu destino. Por isso foi proposto o TCP, que é um protocolo cuja finalidade é deixar a comunicação confiável. Enquanto a finalidade do UDP é ser ágil. Usando um exemplo didático podemos dizer que: Por causa desta implementação, usando-se o UDP, o programador corre o risco de enviar a palavra "ABACAXI" e receber no outro lado a palavra "CABAAX". Enquanto usando o TCP ele não corre este risco. Na prática o uso do UDP se restringe a: Caso sua aplicação não vise estes 3 usos, é muito mais inteligente optar por TCP. AplicaçãoProtocolo definido pelo aplicativo do usuário. Exemplos: HTTP, FTP, SMTP, POP, IMAP, Bit Torrent, etc... Na internet hoje usamos em geral uma porta para cada aplicação. Mas esta abordagem não é obrigatória porque o que definirá a aplicação é a sintaxe dos dados. Por exemplo podemos ter um servidor HTTP rodando sobre a porta 23 ou 3000 nada impede isto. Todos estes protocolos a princípio não dependem um do outro. Por exemplo uma requisição HTTP será transmitida em 1 ou vários datagramas TCP, que por sua vez será transmitida em 1 ou vários pacotes IP, que pode ser transmitidas em 1 ou vários quadros ethernets. Assim como um pacote que você coloca uma embalagem a mais em cada entidade que passa. Hipoteticamente poderíamos ter uma requisição HTTP rodando sobre TCP/IP rodando sobre um código Morse ;) Na teoria e prática indo mais afundo no exemplo: Interface : Quadro Ethernet:
Nota: Estes endereços (origem e destino) são MAC Address, a sua placa de rede desconhece o que é um IP
Rede: Pacote IP versão 4
Este é um protocolo cujo objetivo é saber como levar estes pacotes de um ponto ao outro. Para isso ele utiliza o IP , campo de 32 bits ou 4 bytes como conhecemos. O IP é hierárquico ou seja, ele é capaz de especificar seu lugar geográfico de acordo com seu endereço e mais que isso ele consegue estimar uma sub-região através dos seus primeiros bits. Transporte: Datagrama TCP
O datagrama TCP é chamado de orientado ao conexão. Isto porque ele é confiável. O TCP faz retransmissões se for necessário e também ordena os seus pacotes (coisa que o IP não faz). Tanto o TCP como UDP são usados na programação através de um socket que é na verdade uma espécie de arquivo onde o que é "gravado" de um lado é "lido" do outro. Aplicação: Requisição HTTP O texto enviado através do TCP numa requisição HTTP pode ser da seguinte maneira:
Host: dominio User-Agent: Navegador Accept: Tipos Exemplo geral: Então como funciona isso, como eu abro meu orkut? Quando você faz uma requisição HTTP, por exemplo no servidor www.orkut.com O navegador monta uma requisição HTTP mais ou menos assim: GET /index.html HTTP/1.1
Host: www.orkut.com User-Agent: Mozilla/5.0 Accept: text/xml;application/xml;text/html;text/plain;image/png Então joga esta requisição nos dados do datagrama TCP. Por sua vez o datagrama TCP usará a porta 80 como porta de destino (por ser http). Este datagrama TCP inteiro irá entrar nos dados do pacote IP. O DNS traduzirá quem é o IP do domínio www.orkut.com, e colocará este endereço no pacote IP. Este pacote IP será colocado nos dados do quadro ethernet (se ele for menor que 1500 bytes). Por sua vez seu computador irá tentar descobrir quem é o endereço Mac daquele IP. Se você estiver usando uma internet através de um roteador da rede interna para internet ele usará o MAC do roteador. E então sua placa de rede monta o quadro e envia. O quadro será como na figura abaixo: ![]() Veja que a placa de rede não sabe nada sobre porta, nem sobre IP. Estas são abstrações providas pelo IP e pelo TCP. Então a sua placa só tem 1 identificador que é o MAC. Os roteadores só enxergam (só desempacotam) até o IP, eles não abrem (não deveriam abrir) um pacote TCP. Através do IP eles conseguem saber aonde este pacote deve ir. Quando este pacote chega na sua máquina o sistema operacional irá abrir o pacote TCP e então ele poderá ser usado pelo servidor do outro lado. Em geral quando se vai programar usando o IP, usa-se o TCP. Isto porque o TCP além de robusto não é pesado. Enquanto a outra alternativa (UDP) é pouco confiável e te obriga a fazer o trabalho de reenviar pacotes na mão. Sobre este assunto queria deixar algumas considerações tais como:
|
|||||||||||||||||||||||||||||||||||