Sejam Bem Vindos!

Espaço voltado para discussão de aspectos teóricos e praticos da estrutura e funcionamento dos recursos de informação baseadas nas novas mídias; e das implicações inerentes à adopção tecnológica em unidades de informação.

quarta-feira, 24 de agosto de 2011

Procolo HTTP e TCP/ IP

Introdução
A necessidade de interligação de computadores e outros sectores por meio de uma plataforma inteligente, estimulou o surgimento de estudos que viriam culminar com a invenção da Internet. Esta viria a construir o mecanismo difusor da informação no seio das instituições, com vista auxiliar no processo de tomada de decisões. Contudo a questão inerente a transferência de informação não estava resolvida, visto que o processo acontecia de forma limitada em função da não existência de uma plataforma que permitisse a comunicação paralela entre os sectores, pois nem todos trabalham sob a mesma plataforma de transferência de informação. O presente trabalho tem por objectivo apresentar de forma sumaria falar de dois dos mais importantes protocolos de transferência da informação no ambiente web. Estabelecendo relações entre o surgimento, funcionamento dos protocolos e à plataforma nas quais os estes correm, e quais o modelos por eles usados para o estabelecimento da conexão e relações de comunicação entre o pesquisador e o sistema de recuperação.
















Modelo OSI
Conforme Torres e Lima (2007), protocolo é uma “linguagem” usada para transmitir dados pela rede. Para que dois computadores se possam comunicar, eles devem usar o mesmo protocolo (ou seja, a mesma linguagem).
A pilha de protocolos desempenha uma porção de funções e o papel do modelo OSI é padronizar a ordem em que a pilha de protocolos desempenha essas funções. Dois protocolos diferentes podem ser incompatíveis, mas se eles seguirem o modelo OSI, ambos farão as coisas na mesma ordem, ajudando aos desenvolvedores de software a entender como eles funcionam.

O protocolo HTTP
HTTP (acrónimo para Hypertext Transfer Protocol, que significa Protocolo de Transferência de Hipertexto) é um protocolo de comunicação (na camada de aplicação segundo o Modelo OSI) utilizado para transferir dados por intranets e pela World Wide Web.
Normalmente, este protocolo utiliza o porta 80 e é usado para a comunicação de sites web, comunicando na linguagem HTML. Contudo, para haver comunicação com o servidor dos sites é necessário utilizar comandos adequados, que não estão em linguagem HTML.
Este protocolo tem sido usado pela WWW desde 1990. A primeira versão de HTTP, chamada HTTP/0.9, era um protocolo simples para a transferência de dados no formato de texto ASCII pela Internet, através de um único método de requisição, chamado GET. A versão HTTP/1.0 foi desenvolvida entre 1992 e 1996 para suprir a necessidade de transferir não apenas texto. Com essa versão, o protocolo passou a transferir mensagens do tipo MIME44 (Multipurpose Internet Mail Extension) e foram implementados novos métodos de requisição, chamados POST e HEAD.
Um sistema de comunicação em rede possui diversos protocolos que trabalham em conjunto para o fornecimento de serviços. Para que o protocolo HTTP consiga transferir seus dados pela Web, é necessário que os protocolos TCP e IP (Internet Protocol, Protocolo de Internet) tornem possível a conexão entre clientes e servidores através de socket TCP/IP, uma vez que estes não estabelecem conexão mais realizam funções de transportes de dados em ambiente web.
O HTTP utiliza o modelo cliente-servidor, como a maioria dos protocolos de rede, baseando-se no paradigma de requisição e resposta. Um programa requisitante (cliente) estabelece uma conexão com um outro programa receptor (servidor) e envia-lhe uma requisição, contendo a URI, a versão do protocolo, uma mensagem MIME (padrão utilizado para codificar dados em formato de textos ASCII para serem transmitidos pela Internet) contendo os modificadores da requisição, informações sobre o cliente e, possivelmente, o conteúdo no corpo da mensagem.
O servidor responde com uma linha de status (status line) incluindo sua versão de protocolo e um código de operação bem sucedida ou um código de erro, seguido pelas informações do servidor, meta-informações da entidade e o possível conteúdo no corpo da mensagem. Após o envio da resposta pelo servidor, encerra-se a conexão estabelecida. O processo ocorre como ilustrado na figura abaixo.
Comunicação Cliente servidor Fonte: KUROSE, 2006.
O protocolo HTTP faz a comunicação entre o cliente e o servidor através de mensagens. O cliente envia uma mensagem de requisição de um recurso e o servidor envia uma mensagem de resposta ao cliente com a solicitação. Uma mensagem, tanto de requisição quanto de resposta, é composta, conforme definido na RFC 2616, por uma linha inicial, nenhuma ou mais linhas de cabeçalhos, uma linha em branco obrigatória finalizando o cabeçalho e por fim o corpo da mensagem, opcional em determinados casos.
O cabeçalho da mensagem (header) é utilizado para transmitir informações adicionais entre o cliente e o servidor. O cabeçalho é especificado imediatamente após a linha inicial da transacção (método), tanto para a requisição do cliente quanto para a resposta do servidor, seguido de dois pontos (:) e um valor. Existem quatro tipos de cabeçalhos que poderão ser incluídos na mensagem os quais são: general-header, requestheader, response header e entityheader.
Uma mensagem HTTP pode conter um corpo de dados que são enviados abaixo das linhas de cabeçalho. Em uma mensagem de resposta, o corpo da mensagem é o recurso que foi requisitado pelo cliente, ou ainda uma mensagem de erro, caso este recurso não seja possível. Já em uma mensagem de requisição, o corpo pode conter dados que serão enviados directamente pelo usuário ou um arquivo que será enviado para o servidor.
Quando uma mensagem HTTP tiver um corpo, poderão ser incluídos cabeçalhos de entidades que descrevem suas características, como por exemplo, o Content-Type que informa o tipo MIME dos dados no corpo da mensagem e o Content-Length que informa a quantidade de bytes que o corpo da mensagem contém.
Uma mensagem de requisição do cliente é composta pelos seguintes campos: uma linha inicial (Request-Line); linhas de cabeçalhos (Request-header); uma linha em branco obrigatória e um corpo de mensagem opcional.
A linha inicial de uma requisição é composta por três partes separadas por espaços: o método (Method), a identificação do URI (Request-URI) e a versão do HTTP (HTTP-Version) utilizado.
Request-URI é um identificador uniforme de recurso (Uniform Resource Identifier) que identifica sobre qual recurso será aplicada a requisição. No protocolo HTTP, o tipo de URI utilizado é chamado de URL (Uniform Resource Locater), o qual é composto pela identificação do protocolo, pelo endereço do computador servidor e pelo documento requisitado.
O protocolo HTTP define oito métodos que indicam a acção a ser realizada no recurso especificado. Conforme Bastos & Ladeiras (2001), o método determina o que o servidor deve fazer com o URL fornecido no momento da requisição de um recurso.
GET: É o método mais comum: solicita algum recurso como um arquivo ou um script CGI (qualquer dado que estiver identificado pelo URI) por meio do protocolo HTTP. O método GET é reconhecido por todos os servidores.
Pedido do cliente (seguido por uma linha em branco, de maneira que o pedido termina com um newline duplo, cada um composto por um carriage return seguido de um Line Feed):
A utilização do método POST em uma requisição ocorre quando é necessário enviar dados ao servidor para serem processados geralmente por um programa script identificado no Request-URI. Uma requisição por meio desse método sempre requer que as informações submetidas sejam incluídas no corpo da mensagem e formatadas como uma query string, além de conter cabeçalhos adicionais especificando seu tamanho (Content-Lenght) e seu formato (Content-Type). Por isso, esse método oferece uma maior segurança em relação aos dados transferidos, ao contrário do método GET que os dados são anexos a URL, ficando visíveis ao usuário.
Uma mensagem de resposta do servidor é composta pelos seguintes campos: uma linha inicial (Status- Line); linhas de cabeçalhos (Responseheader); uma linha em branco obrigatória e um corpo de mensagem opcional. A linha inicial de uma resposta, chamada de linha de status, possui por sua vez três partes separadas por espaços: a versão do protocolo HTTP (HTTP-Version), um código de status (Status-Code) da resposta, que fornece o resultado da requisição, e uma frase de justificativa (Reason-Phrase) que descreve o código do status.
O Status-Line de uma resposta HTTP indica ao cliente se sua requisição foi bem sucedida ou não. Esta situação é fornecida através de um código de retorno
(Status-Code) e uma frase explicativa (Reason-Phrase). O código de status é formado por três dígitos e o primeiro dígito representa a classe que pertence classificada em cinco tipos.
O HTTP/1.0 é um protocolo stateless, isto significa que as conexões entre um cliente e um servidor são encerradas após o envio de cada requisição ou resposta. Cada vez que uma conexão é estabelecida ou encerrada, é consumida uma grande quantidade de tempo da CPU, de largura de banda e de memória. Na maioria das vezes, para se obter o resultado esperado, é necessário realizar mais de uma solicitação de recursos através de várias conexões.
A conexão persistente, implementada como conexão padrão no protocolo HTTP/1.1, possibilita que uma conexão seja estabelecida para enviar várias requisições em sequência sem a necessidade de esperar por cada resposta, no qual serão recebidas na mesma ordem em que as solicitações foram enviadas. Este processo é chamado de pipelining.
Pode também dar-se o caso de ser estabelecida uma conexão sem pipelining, em que o cliente só faz nova requisição quando o servidor lhe envia a resposta, ou seja, o servidor fica inactivo até o objecto (HTML, GIF, CSS, etc.) atingir o seu destino no cliente.
Se, na versão 1.1, uma requisição incluir o cabeçalho Connection: close, a conexão será encerrada após o envio da resposta correspondente. Utiliza-se este cabeçalho quando não há suporte a conexões persistentes, quando for a última requisição a ser enviada nesta conexão, ou ainda, sempre que quiser encerrar a conexão mesmo que nem todas as requisições tenham sido completadas. Além disso, o servidor pode fechar uma conexão se estiver ociosa por um determinado período de tempo.

TCP/IP
Em 1966, o Departamento de Defesa do governo americano iniciou, através de sua agência DARPA (Defense Advanced Research Projects Agency) projectos para a interligação de computadores em centros militares e de pesquisa, com o objectivo de criar um sistema de comunicação e controle distribuído com fins militares. Ele foi utilizado em todas as redes de longa distância do sistema de Defesa dos EUA em 1983, mas não foi amplamente aceite até ser incorporado ao BSD (Berkeley Software Distribution) UNIX 4.2.
Neste contexto surge a ARPANET, cujo principal objectivo teórico era formar uma arquitectura de rede sólida e robusta que pudesse sobreviver a uma perda substancial de equipamento e ainda operar com os computadores e enlaces de comunicação.
Neste período a ARPANET era baseada em IMPs (Interface Message Processors), rodando diversos protocolos, sendo o principal o NCP (Network Control Protocol). O TCP/IP ainda estava sendo projectado e a Internet era formada por máquinas de grande porte e minicomputadores ligados aos IMPs.
O protocolo TCP/IP começou a ser projectado em 1977 com o objectivo de ser o único protocolo de comunicação da ARPANET. Em 1/1/1983, todas as máquinas da ARPANET passaram a utilizar o TCP/IP como protocolo de comunicação. Isto permitiu o crescimento ordenado da rede, eliminando as restrições dos protocolos anteriores.
A Internet é uma rede pública de comunicação de dados, com controlo descentralizado e que utiliza o conjunto de protocolos TCP/IP como base para a estrutura de comunicação e seus serviços de rede. Isto se deve ao fato de que a arquitectura TCP/IP fornece não somente os protocolos que habilitam a comunicação de dados entre redes, mas também define uma série de aplicações que contribuem para a eficiência e sucesso da arquitectura.
Os protocolos TCP (Transmission Control Protocol) e IP (Internet Protocolo) foram criados com o intuito de realizar a intercomunicação de computadores. As configurações desses protocolos tem como função controlar como a informação é passada de uma rede a outra, e como manipular o endereçamento contido nos pacotes, a fragmentação dos dados e a verificação de erros.
TCP/IP – Conjunto de protocolos Internet, definindo como se processam as comunicações entre os vários computadores. Pode ser implementado virtualmente em qualquer tipo de computador, porque não é uma tecnologia proprietária (em termos de concepção, é independente do hardware e de sistemas operativos). Geralmente, para além dos protocolos TCP e IP (porventura os 2 mais importantes), o nome TCP/IP designa também o conjunto dos restantes protocolos de Internet: UDP, ICMP, etc.
O conjunto de protocolos TCP/IP foi projectado especialmente para ser o protocolo utilizado na Internet. Sua característica principal é o suporte directo a comunicação entre redes de diversos tipos. Neste caso, a arquitectura TCP/IP é independente da infra-estrutura de rede física ou lógica empregada. De fato, qualquer tecnologia de rede pode ser empregue como meio de transporte dos protocolos TCP/IP.
A arquitectura TCP/IP, assim como OSI realizam a divisão de funções do sistema de comunicação em estruturas de camadas.
Estas são as camadas que compõem o modelo TCP/IP.
APLICAÇÃO
Nesta camada são necessários protocolos de transporte para garantir o funcionamento das aplicações reais (DNS, WWW, SMTP, POP, NFS, FTP).
Esta camada trabalha com a porta a qual esta ligada a aplicação.
Ex: FTP (porta 21), HTTP (porta 80), Telnet (porta 23), etc.

TRANSPORTE
Utiliza dois protocolos para a comunicação Host-to-Host (TCP/UDP).
Esta camada também tem como função organizar e controlar o fluxo de dados transmitidos para que o protocolo não se perca no meio de tantos pacotes.

REDE
A camada chamada de rede ou Internet, tem como principal função direccionar os dados aos seus respectivos endereços. Esta característica é chamada de rateamento, que também tem como vantagem evitar o congestionamento da rede, pois trabalha com endereço IP de origem e destino.

FÍSICA
Esta camada está com o seu funcionamento baseado na placa de rede, que dependendo do meio em que está funcionando trabalhará com diferentes padrões.
O protocolo TCP trabalha no mesmo nível que o protocolo UDP, mas oferece serviços mais complexos, que incluem controlo de erros e fluxo, serviço com conexão e envio de fluxo de dados. TCP utiliza o mesmo conceito de porta de UDP, porém este protocolo fornece uma forma simples de acesso ao sistema de comunicação, provendo um serviço sem conexão, sem confiabilidade e sem correcção de erros. Para TCP, uma conexão é formada pelo par (End. IP. Origem, Porta Origem) e (End. IP Destino, Porta Destino).
O protocolo TCP oferece as seguintes características:
 Controle de Fluxo e Erro fim-a-fim
 Serviço confiável de transferência de dados
 Comunicação full- duplex fim-a-fim
 A aplicação basta enviar um fluxo de bytes
Desassociação entre quantidade de dados enviados pela aplicação e pela camada TCP
 Ordenação de mensagens
Multiplexação de IP, através de várias portas
 Opção de envio de dados urgentes

PROTOCOLO IP
O Protocolo IP é responsável pela comunicação entre máquinas em uma estrutura de rede TCP/IP. Ele provê a capacidade de comunicação entre cada elemento componente da rede para permitir o transporte de uma mensagem de uma origem até o destino. O protocolo IP provê um serviço sem conexão que não é confiável entre máquinas em uma estrutura de rede. Qualquer tipo de serviço com estas características deve ser fornecido pelos protocolos de níveis superiores. As funções mais importantes realizadas pelo protocolo IP são a atribuição de um esquema de endereçamento independente do endereçamento da rede utilizada independente da própria topologia da rede utilizada, além da capacidade de rotear e tomar decisões de roteamento para o transporte das mensagens entre os elementos que interligam as redes.
Na arquitectura TCP/IP, os elementos responsáveis por interligar duas ou mais redes distintas são chamados de roteadores.
As redes interligadas podem ser redes locais, redes geograficamente distribuídas, redes de longa distância com chaveamento de pacotes ou ligações ponto-a-ponto seriais.
Um roteador tem como característica principal a existência de mais de uma interface de rede, cada uma com seu próprio endereço específico. Um roteador pode ser um equipamento específico ou um computador de uso geral com mais de uma interface de rede.
Por outro lado, um componente da arquitectura TCP/IP que é apenas a origem ou destino de um datagrama IP (não realiza a função de roteamento) é chamado de host.

Endereços IP
Um endereço IP é um identificador único para certa interface de rede de uma máquina. Este endereço é formado por 32 bits (4 bytes) e possui uma porção de identificação da rede na qual a interface está conectada e outra para a identificação da máquina dentro daquela rede. O endereço IP é representado pelos 4 bytes separados por um ponto (.) e representados por números decimais. Desta forma o endereço IP: é representado por 208.245.28.63.
Como o endereço IP identifica tanto uma rede quanto a estação a que se refere, fica claro que o endereço possui uma parte para rede e outra para a estação. Desta forma, uma porção do endereço IP designa a rede na qual a estação está conectada, e outra porção identifica a estação dentro daquela rede.
Uma vez que o endereço IP tem tamanho fixo, uma das opções dos projectistas seria dividir o endereço IP em duas metades, dois bytes para identificar a rede e dois bytes para a estação. Entretanto isto traria inflexibilidade pois só poderiam ser endereçados 65536 redes, cada uma com 65536 estações. Uma rede que possuísse apenas 100 estações estaria utilizando um endereçamento de rede com capacidade de 65536 estações, o que também seria um desperdício.

Roteamento IP
Quando uma estação ou roteador deve enviar um pacote para outra rede, o protocolo IP deve enviá-lo para um roteador situado na mesma rede. O roteador por sua vez irá enviar o pacote para outro roteador, na mesma rede que este e assim sucessivamente até que o pacote chegue ao destino final. Este tipo de roteamento é chamado de Next-Hop Routing, já que um pacote é sempre enviado para o próximo roteador.
Neste tipo de roteamento, não há necessidade de um roteador conhecer a rota completa até o destino. Cada roteador deve conhecer apenas o próximo roteador para o qual deve enviar a mensagem. Esta decisão é chamada de decisão de roteamento. Uma máquina situada em uma rede que tenha mais de um roteador deve também tomar uma decisão de roteamento para decidir para qual roteador deve enviar o pacote IP.















Referências Bibliográficas
KUROSE, James. F. & ROSS, Keith W. Redes de Computadores e a internet: Uma abordagem top-down, 3a Edição, Editora Pearson, São Paulo SP, 2006.
MOSHARAF, Firouz, FOUROZAN, Behrouz. Foundations of computer science. 2a edition. ISBN: 978-84480-700-0
TANEMBAUM, Andrew S. Redes de Computadores, 7a Edição, Editora Campus, Rio de Janeiro – RJ, 2003.



Nomes: Arsénio Joaquim; José Juízo Banze; Ligia Zacarias

Nenhum comentário:

Postar um comentário