# Camada de rede

A camada de rede do modelo OSI lida com as transferências de pacotes de uma origem para um destino. O seu papel é mais sofisticado que a camada de enlace, pois em vez de de transferir quadros de uma extremidade até a outra de um fio (função da camada de enlace), a camada de rede precisa dar hops (saltos) de roteador para roteador. Esses saltos só são possíveis pelo fato de que ela conhece a topologia da rede em que está atuando, e além disso através desse conhecimento, consegue calcular caminhos que evitem sobrecarregar a rede.

## Funções

Sua função principal é o transporte de pacotes entre sistemas finais da rede por meio de três funções importantes:
- Determinação de caminhos: rota escolhida pelos pacotes entre origem e destino, utilizando um algoritmo de roteamento;
- Comutação: Mover pacotes entre as portas de entradas e saída dos roteadores;
- Estabelecimento de conexões: Algumas arquiteturas de redes necessitam o estabelecimento de circuitos virtuais antes da transmissão de dados.
Existem dois principais serviços possíveis para entregar pacotes à seus respectivos destinos:
- Redes de Circuitos Virtuais (VC): estabelece uma conexão antes de enviar os dados, libera a conexão após a troca de dados e cada pacote transporta um identificador do VC, não transporta o endereço completo do destino. Sinalização: Usada para estabelecer, manter e encerrar o VC.
- Redes de Datagramas: Não estabelece conexões, não há informação de estado de conexão dos roteadores e os pacotes transportam o endereço de destino (pacotes com o mesmo destino podem seguir diferentes rotas). O principal aspecto que deve ser observado nessa camada é a execução do roteamento dos pacotes entre fonte e destino, principalmente quando existem caminhos diferentes para conectar entre si dois nós da rede. Em redes de longa distância é comum que a mensagem chegue do nó fonte ao nó destino passando por diversos nós intermediários no meio do caminho e é tarefa do nível de rede escolher o melhor caminho para essa mensagem.
A escolha da melhor rota pode ser baseada em tabelas estáticas, que são configuradas na criação da rede e são raramente modificadas; pode também ser determinada no início de cada conversação, ou ser altamente dinâmica, sendo determinada a cada novo pacote, a fim de refletir exatamente a carga da rede naquele instante. Se muitos pacotes estão sendo transmitidos através dos mesmos caminhos, eles vão diminuir o desempenho global da rede, formando gargalos. O controle de tais congestionamentos também é tarefa da camada de rede.
As funções exercidas na camada de rede do modelo OSI estão listados abaixo:
* Tráfego direção ao destino final
* Dirigindo; lógico endereços de rede e serviços endereços
* Encaminhamento de funções; descoberta e seleção de rotas
* Comutação de pacotes
* Controle de sequencia de pacotes
* Detecção de erro End-to-end dos dados (a partir do emissor para o receptor de dados).
* Controle de congestionamento
* Controle de fluxo
* Portal de serviços
É a camada responsável por encaminhar os dados entre diversos endereços de redes, como se fosse uma central de correios, fazendo com que os dados cheguem a seu destino.

## Serviços à camada de transporte

A camada de rede oferece alguns tipos de serviços à camada de transporte que devem seguir alguns objetivos para que seja possível o encaminhamento correto dos pacotes:
* Camada de rede deve fornecer serviços que sejam independentes da tecnologia presente nos roteadores.
* Para a camada de transporte, fica transparente a quantidade, tipo e tecnologia dos roteadores, quem fica responsável por isso é a camada de rede.
* O esquema de numeração dos endereços de rede deve ser de forma uniforme, assim disponibilizando os pacotes de forma uniforme para a camada de transporte.

## Protocolos

IP “Internet Protocol” – Recebe segmentos de dados da camada de transporte e os encapsula em datagramas, é um protocolo não confiável por não exigir confirmação.
ICMP “Internet Control Message Protocol” – É um padrão TCP/IP necessário, são documentos regidos IETF que estabelecem os padrões de cada protocolo com o ICMP os hosts e roteadores que usam comunicação IP podem relatar erros e trocar informações de status e controle limitado.
IGMP “Internet Group Management Protocol” – É usado por hosts para reportar seus participantes de grupos de hosts a roteadores multicast vizinhos, é um protocolo assimétrico.

## Algoritmos de roteamento

Como explanado anteriormente, a função da camada de rede é rotear pacotes do transmissor até o receptor. O algoritmo de roteamento é a parte de software da camada, esse algoritmo tem a responsabilidade de definir qual interface de saída será utilizada para transmitir o pacote recebido. Se a rede utilizar datagramas a decisão será tomada mais de uma vez para cada um dos pacotes, visto que a rota pode mudar. Caso estejam sendo utilizados circuitos virtuais o roteamento ocorrerá cada vez que um novo circuito virtual for aberto, a partir disto os pacotes continuarão a seguir sempre a mesma rota anteriormente definida.
Alguns tipos de algoritmos de roteamento que podem ser citados são:
* Roteamento pelo caminho mais curto;
** A ideia deste algoritmo é criar um grafo de rede, onde cada nodo do grafo representa um roteador e cada aresta é uma interface de comunicação, para definir uma rota entre dois dispositivos então é utilizado um algoritmo para fazer a busca do menor caminho no grafo.
* Flooding;