# Redes de computadores/Protocolos e serviços de rede

Podemos pensar em rede de computadores como diversas máquinas interligadas fisicamente entre si onde os seus utilizadores promovem a troca de informação de seu interesse. Entretanto, uma rede não pode ser bem estabelecida considerando apenas o hardware como preocupação principal como nas primeiras redes, atualmente o software é considerado uma das partes mais importantes na concepção de novas tecnologias de redes de computadores.
Protocolo é o conjunto de regras sobre o modo como se dará a comunicação entre as partes envolvidas.
Protocolo é a "língua" dos computadores, ou seja, uma espécie de idioma que segue normas e padrões determinados. É através dos protocolos que é possível a comunicação entre um ou mais computadores. Os protocolos de rede nasceram da necessidade de conectar equipamentos de fornecedores distintos, executando sistemas distintos, sem ter que escrever a cada caso programas específicos. Ambos os computadores devem estar configurados com os mesmos parâmetros e obedecer aos mesmos padrões para que a comunicação possa ser realizada sem erros. Existem diversos tipos de protocolos de rede, variando de acordo com o serviço a ser utilizado. De maneira geral há dois tipos de protocolos: Abertos e Proprietários ou Específicos. Os protocolos Abertos são os protocolos padrões da internet. Este podem comunicar com outros protocolos que utilizam o mesmo padrão de protocolo. Um exemplo seria o TCP/IP, pois ele pode comunicar com várias plataformas como Windows, Linux, Mac e outros. Já os protocolos Proprietários são feitos para ambiente específicos (daí o seu nome), pois ele apenas pode comunicar com uma plataforma padrão. Exemplos desse tipo de protocolo: IPX/SPX, NETBIOS e outros. São exemplos de protocolos de rede: IP (Internet Protocol), DHCP (Dynamic Host Configuration Protocol), TCP (Transmission Control Protocol), HTTP (Hypertext Transfer Protocol), FTP (File Transfer Protocol), Telnet (Telnet Remote Protocol), SSH (SSH Remote Protocol), POP3 (Post Office Protocol 3), SMTP (Simple Mail Transfer Protocol), IMAP (Internet Message Access Protocol).

## Funções dos Protocolos

Uma das funções dos protocolos é pegar os dados que serão transmitidos pela rede, dividir em pequenos pedaços chamados pacotes, na qual dentro de cada pacote há informações de endereçamento que informam a origem e o destino do pacote. É através do protocolo que as fases de estabelecimento, controle, tráfego e encerramento, componentes da troca de informações são sistematizadas. O protocolo desempenha as seguintes funções:
* Endereçamento: especificação clara do ponto de destino da mensagem.
* Numeração e sequencia: individualização de cada mensagem, através de número sequencial.
* Estabelecimento da conexão: estabelecimento de um canal lógico fechado entre fonte e destino.
* Confirmação de recepção: confirmação do destinatário, com ou sem erro, após cada segmento de mensagem.
* Controle de erro: detecção e correção de erros.
* Retransmissão: repetição da mensagem a cada recepção de mensagem.
* Conversão de código: adequação do código às características do destinatário.
* Controle de fluxo: manutenção de fluxos compatíveis com os recursos disponíveis.

## Hierarquia

Como já foi visto um protocolo é um conjunto de regras sobre o modo como se dará a comunicação entre as partes envolvidas. Com o intuito de reduzir a complexidade do projeto, a maioria das redes foi organizada como uma série de níveis ou camadas, que são colocadas uma sobre a outra. O número, o nome, o conteúdo e a função de cada camada difere de uma rede para outra. Em todas as redes, no entanto, o objetivo de cada camada é oferecer determinados serviços para as camadas superiores. A camada n de uma máquina comunica-se com a camada n de outra máquina. Para isso acontecer, ela baseia-se num conjunto de convenções e regras que vão permitir gerenciar esta comunicação na qual foi nomeada de protocolo da camada n, ou, simplesmente, protocolo n.
As entidades que ocupam as mesmas camadas em diferentes máquinas são chamadas de PARES. São os pares que se comunicam utilizando o protocolo. Os dados não são transferidos diretamente entre os pares, pois não existe meio físico entre eles. Então cada camada transfere os dados para a camada inferior a ela, até alcançar a última camada. Após a última camada está o meio físico (meio de transmissão) através do qual se dá a comunicação.
Em cada par de camadas adjacentes, há uma INTERFACE (Define as operações e serviços que a camada inferior tem a oferecer para a camada superior a ela). Ao conjunto das camadas compondo uma rede dá-se o nome de arquitetura da rede. As especificações da arquitetura devem conter informações suficientes para permitir o correto desenvolvimento da rede, tanto do ponto de vista do software quanto do hardware. Por outro lado, os detalhes de implementação dos mecanismos em cada camada, assim como as especificações detalhadas das interfaces não fazem parte da definição da arquitetura da rede.
Resumindo, o protocolo é um conjunto de regras que controlam o formato e o significado das informações trocadas pelas entidades pares contidas numa camada, sendo que as entidades utilizam protocolos com a finalidade de implementar as suas definições de serviços e as entidades têm a liberdade de trocarem os seus protocolos, desde que não alterem o serviço visível para os seus utilizadores.

## Serviços de Rede

Um serviço de rede é um conjunto de operações implementado por um protocolo através de uma interface, e é oferecido à camada imediatamente superior. Ele define o que uma camada é capaz de executar sem se preocupar com a maneira pela qual as operações serão executadas.
Cada serviço é utilizado por aplicações diferentes, podendo uma aplicação utilizar vários serviços, como, por exemplo, um browser como o Mozilla Firefox. Este utiliza, por exemplo, HTTP, SHTTP, DNS.
Os serviços podem ser orientados a conexão ou não. Serviços relacionados à família TCP são orientados a conexão, enquanto serviços relacionados ao protocolo UDP são sem conexão.

## Classificação de serviços

* Serviços orientados a conexão: é o serviço TCP. Antes do envio de dados, um processo conhecido como handshaking cria uma conexão fraca entre os hosts. Basicamente, esse processo prepara o receptor para a recepção de pacotes. Esta conexão prévia possibilita verificar se todos os pacotes irão chegar corretamente ao destino, e em caso negativo, solicitar o reenvio dos mesmos (quando o receptor recebe um pacote, ele envia uma mensagem de confirmação ao transmissor. Se a confirmação não chegar, o pacote é reenviado), gerando uma transferência de dados confiável. Também pode fazer-se um controlo de fluxo e congestionamento, para casos em que o receptor não suporta a velocidade de envio dos pacotes, ou quando algum roteador na rede está congestionado (é enviada uma mensagem ao transmissor, reduzindo ou interrompendo a velocidade de envio de pacotes). Como exemplo de serviços orientados a conexão, TCP, temos: HTTP, FTP, Telnet.
* Serviços sem conexão: é o serviço UDP (Protocolo de Datagrama de Usuário). Não há o processo de handshaking. Assim, uma aplicação apenas envia dados para um host, e com isso não há como saber se todos os pacotes chegaram. É mais rápido, mesmo por não haver a etapa da handshaking, mas é menos confiável, além de não possuir a possibilidade de controle de fluxo e congestionamento presentes no TCP. Algumas aplicações que usam o UDP: conferência de vídeo e telefone por internet.
Existem outros tipos de serviços, como o DHCP, que automaticamente determina um endereço IP válido a cada host conectado à Internet e o DNS, que possibilita que o utilizador use strings, ao invés de endereços IP para se conectar a outros servidores. O DNS mantém um banco de dados que relaciona cada string a um endereço IP.