# Modelo OSI

O Modelo OSI (acrônimo do inglês Open System Interconnection) é um modelo de rede de computador referência da ISO dividido em camadas de funções, criado em 1971 e formalizado em 1983, com objetivo de ser um padrão, para protocolos de comunicação entre os mais diversos sistemas em uma rede local (Ethernet), garantindo a comunicação entre dois sistemas computacionais (end-to-end).
Este modelo divide as redes de computadores em 7 camadas, de forma a se obter camadas de abstração. Cada protocolo implementa uma funcionalidade assinalada a uma determinada camada.
Segundo Tanenbaum o Modelo OSI não é uma arquitetura de redes, pois não especifica os serviços e protocolos exatos que devem ser usados em cada camada. Ele apenas informa o que cada camada deve fazer.
O Modelo OSI permite comunicação entre máquinas heterogêneas e define diretivas genéricas para a construção de redes de computadores (seja de curta, média ou longa distância) independente da tecnologia utilizada.

## História

A Organização Internacional para a Normalização (do inglês: International Organization for Standardization - ISO), foi uma das primeiras organizações a definir formalmente uma arquitetura padrão com objetivo de facilitar o processo de interconectividade entre máquinas de diferentes fabricantes, assim em 1984 lançou o padrão chamado Interconexão de Sistemas Abertos (do inglês: Open Systems Interconnection - OSI) ou Modelo OSI.
A Organização Internacional para a Normalização (ISO) começou a desenvolver a sua estrutura de arquitetura OSI, com quatro componentes principais: um modelo abstrato de rede, o chamado Modelo de Referência Básico ou sete camadas do modelo, e um conjunto de protocolos específicos e outros dois de menor relevância.
O conceito de um modelo de sete camadas foi fornecida pelo trabalho de Charles Bachman, Serviços de Informação da Honeywell. Vários aspectos do projeto OSI evoluíram a partir de experiências com a ARPANET, a Internet incipiente, NPLNET, EIN, CYCLADES rede e o trabalho em IFIP WG6.1. O novo projeto foi documentado em ISO 7498 e seus adendos diferentes. Neste modelo, um sistema de rede foi dividido em camadas. Dentro de cada camada, existem entidades responsáveis por implementar as funções da camada, interagindo somente com a camada abaixo (N-1) e, também possui funções para serem utilizadas de modo transparente pela camada acima (N+1).
Protocolos ativam um sinal elétrico de um host para interagir com uma entidade correspondente na mesma camada em outro host. Definições de serviços abstratamente descrevem a funcionalidade fornecida a um (N), camada por uma camada de (N-1), em que N era uma das sete camadas de protocolos de funcionamento no hospedeiro local.
Os documentos padrões OSI estão disponíveis no ITU-T como o X.200 série de recomendações. Algumas das especificações do protocolo também estão disponíveis como parte da série X ITU-T. O equivalente a ISO e ISO / IEC para o modelo OSI estavam disponíveis a partir de ISSO, mas apenas alguns deles sem taxas.
A ISO costuma trabalhar em conjunto com outra organização, a União Internacional de Telecomunicações (do inglês: International Telecommunications Union - ITU), publicando uma série de especificações de protocolos baseados na arquitetura OSI. Estas séries são conhecidas como 'X ponto', por causa do nome dos protocolos: X.25, X.500.

## Implementação do sistema aberto

Etapas obrigatórias para atingir interoperabilidade (comunicação transparente), compatibilidade (execução em diferentes versões de um sistema), portabilidade (execução em diferentes arquiteturas) e escalabilidade (capacidade de expansão) exigidas no sistema aberto (OSI):
* Definição do modelo: define o que cada camada deve fazer, isto é, indica os serviços que cada camada deve oferecer;
* Definição dos protocolos de camada: define os componentes que fazem parte do modelo (padrões de interoperabilidade e portabilidade), não só os relacionados à comunicação, mas também alguns não relacionados, como a estrutura de armazenamento de dados;
* Seleção dos perfis funcionais: realizada pelos órgãos de padronização de cada país que escolhem os padrões que lhes cabem, baseados em alguns critérios, por exemplo: condições tecnológicas, base instalada, visão futura.

## Camadas

O conceito de layers (camadas de software) separa os módulos de um software em camadas, cada uma com sua contribuição para a execução do software. As camadas separam o código-fonte seguindo uma forma lógica, podendo gerar pacotes físicos, mas não implicam necessariamente em separação física, assim as camadas podem compartilhar CPU e até processos iguais.
Este modelo é dividido em sete camadas hierárquicas, ou seja, cada camada usa as funções da própria ou da camada anterior, para esconder a complexidade e transparecer de modo simples as operações ao usuário, seja ele um programa ou uma outra camada.
O modelo OSI utilizou basicamente de 5 conceitos básicos para chegar a abstração de 7 camadas:
* Uma nova camada deve ser criada quando um novo grau de abstração é preciso.
* Cada camada deve possuir suas funções muito bem especificadas.
* A funcionalidade de cada camada deve ter em vista os protocolos de comunicação padronizados internacionalmente.
* A limitação de cada camada deve ter em vista minimizar a quantidade de dados trocados entre uma camada e outra.
* Cada camada deve possuir um tamanho apropriado, deve ser grande o suficiente para que duas funções não sejam realizadas na mesma camada mas pequena o suficiente para que não se torne difícil controla-la.
As camadas são empilhadas na seguinte ordem:
* 7. Camada de aplicação;
* 6. Camada de apresentação;
* 5. Camada de sessão;
* 4. Camada de transporte;
* 3. Camada de rede;
* 2. Camada de enlace de dados;
* 1. Camada física.
De acordo com o padrão X.200, existem sete camadas, de 1 a 7, onde cada camada é conhecida de forma genérica como "camada N". Somente a entidade N+1 (na camada acima de N) pode solicitar serviços de uma "entidade N" (na camada N). Interagindo através da transmissão de "Unidade de Protocolo de Dados" (PDU), bloco de dados dividido em três partes: cabeçalho (header), carga útil (SDU) e rabeira (trailer).
A Unidade de Dados de Serviço (SDU) é uma unidade específica de dados que foram passados ​​de uma camada OSI para uma camada inferior, e que a camada inferior ainda não encapsulou em uma unidade de dados de protocolo (PDU). Uma SDU é um conjunto de dados que são enviados por um usuário dos serviços de uma determinada camada, e é transmitida semanticamente inalterada a um usuário do serviço peer.
A PDU é uma camada de N e o SDU camada de N-1. Com efeito, a SDU é a "carga útil" de uma dada PDU. Isto é, o processo de alteração de um SDU a uma PDU é constituído por um processo de encapsulamento, realizada pela camada inferior. Todos os dados contidos no SDU fica encapsulado dentro do PDU. A camada de N-1 adiciona cabeçalhos ou rodapés, ou ambos, para a SDU, transformando-a numa PDU de camada N-1. Os cabeçalhos ou rodapés adicionados fazem parte do processo utilizado para tornar possível a obtenção de dados de uma fonte para um destino.
Alguns aspectos ortogonais, tais como gestão e segurança, envolvem todas as camadas.
Serviços de segurança não estão relacionados com uma camada específica: eles podem ser relacionados por uma série de camadas, tal como definido pela ITU-T recomendação X.800.
Estes serviços visam melhorar a tríade CIA (confidencialidade, integridade e disponibilidade) dos dados transmitidos. Na verdade, a disponibilidade de serviço de comunicação é determinada pelo projeto de rede e/ou de gestão de rede protocolos. Escolhas adequadas para estes são necessárias para proteger contra negação de serviço.$^[$

### 1 - Camada Física

A camada física define especificações elétricas e físicas dos dispositivos. Em especial, define a relação entre um dispositivo e um meio de transmissão, tal como um cabo de cobre ou um cabo de fibra óptica. Isso inclui o layout de pinos, tensões, impedância da linha, especificações do cabo, temporização, hubs, repetidores, adaptadores de rede, adaptadores de barramento de host (HBA usado em redes de área de armazenamento) e muito mais. A camada física é responsável por definir se a transmissão pode ser ou não realizada nos dois sentidos simultaneamente. Sendo a camada mais baixa do modelo OSI, diz respeito a transmissão e recepção do fluxo de bits brutos não-estruturados em um meio físico. Ela descreve as interfaces elétricas, ópticas, mecânicas e funcionais para o meio físico e transporta sinais para todas as camadas superiores.
Tem-se que a Camada Física atribui as características mecânicas, elétricas e funcionais, além dos procedimentos para ativar, manter e desativar conexões físicas para a transmissão de bits. Assim, a Camada Física OSI fornece os requisitos para transportar pelo meio físico de rede os bits que formam o quadro da camada de Enlace de Dados, tendo como objetivo, criar o sinal elétrico, óptico ou micro-ondas que representa os bits em cada quadro.

### 2 - Camada de Ligação de Dados ou Enlace de Dados

A camada de ligação de dados também é conhecida como de enlace ou link de dados. Esta camada detecta e, opcionalmente, corrige erros que possam acontecer no nível físico. É responsável por controlar o fluxo (recepção, delimitação e transmissão de quadros) e também estabelece um protocolo de comunicação entre sistemas diretamente conectados.

### 3 - Camada de Rede

A camada de rede fornece os meios funcionais e de procedimento de transferência de comprimento variável de dados de sequências de uma fonte de acolhimento de uma rede para um host de destino numa rede diferente (em contraste com a camada de ligação de dados que liga os hosts dentro da mesma rede), enquanto se mantém a qualidade de serviço requerido pela camada de transporte. A camada de rede realiza roteamento de funções, e também pode realizar a fragmentação e remontagem e os erros de entrega de relatório. Roteadores operam nesta camada, enviando dados em toda a rede estendida e tornando a Internet possível. Este é um esquema de endereçamento lógico - os valores são escolhidos pelo engenheiro de rede. O esquema de endereçamento não é hierárquico.
A camada de rede pode ser dividida em três subcamadas:
* Sub-rede de acesso - considera protocolos que lidam com a interface para redes, tais como X.25;
* Sub-rede dependente de convergência - necessária para elevar o nível de uma rede de trânsito, até ao nível de redes em cada lado;
* Sub-rede independente de convergência - lida com a transferência através de múltiplas redes. Controla a operação da sub rede roteamento de pacotes, controle de congestionamento, tarifação e permite que redes heterogêneas sejam interconectadas.

### 4 - Camada de Transporte

A camada de transporte é responsável por receber os dados enviados pela camada de sessão e segmentá-los para que sejam enviados a camada de rede, que por sua vez, transforma esses segmentos em pacotes. No receptor, a camada de Transporte realiza o processo inverso, ou seja, recebe os pacotes da camada de rede e junta os segmentos para enviar à camada de sessão.
Isso inclui controle de fluxo, ordenação dos pacotes e a correção de erros, tipicamente enviando para o transmissor uma informação de recebimento, garantindo que as mensagens sejam entregues sem erros na sequência, sem perdas e duplicações.
A camada de transporte separa as camadas de nível de aplicação (camadas 5 a 7) das camadas de nível físico (camadas de 1 a 3). A camada 4, Transporte, faz a ligação entre esses dois grupos e determina a classe de serviço necessária como orientada à conexão, com controle de erro e serviço de confirmação ou sem conexões e nem confiabilidade.
O objetivo final da camada de transporte é proporcionar serviço eficiente, confiável e de baixo custo. O hardware e/ou software dentro da camada de transporte e que faz o serviço é denominado entidade de transporte.
A entidade de transporte comunica-se com seus usuários através de primitivas de serviço trocadas em um ou mais TSAP (Transport Service Access Point), que são definidas de acordo com o tipo de serviço prestado: orientado ou não à conexão. Estas primitivas são transportadas pelas TPDU (Transport Protocol Data Unit).
Na realidade, uma entidade de transporte poderia estar simultaneamente associada a vários TSA e NSAP (Network Service Access Point). No caso de multiplexação, associada a vários TSAP e a um NSAP e no caso de splitting, associada a um TSAP e a vários NSAP.
A ISO define o protocolo de transporte para operar em dois modos:
* Orientado à conexão
* Não-Orientado à conexão.
Como exemplo de protocolo orientado à conexão, temos o TCP, e de protocolo não orientado à conexão, temos o UDP. É óbvio que o protocolo de transporte não orientado à conexão é menos confiável. Ele não garante - entre outras coisas - a entrega das TPDU, nem tão pouco a ordenação das mesmas. Entretanto, onde o serviço da camada de rede e das outras camadas inferiores é bastante confiável - como em redes locais - o protocolo de transporte não orientado à conexão pode ser utilizado, sem o overhead inerente a uma operação orientada à conexão.
O serviço de transporte baseado em conexões é semelhante ao serviço de rede baseado em conexões. O endereçamento e controle de fluxo também são semelhantes em ambas as camadas. Para completar, o serviço de transporte sem conexões também é muito semelhante ao serviço de rede sem conexões. Constatado os fatos acima, surge a seguinte questão: "Por que termos duas camadas e não uma apenas?". A resposta é sutil, mas procede: A camada de rede é parte da sub-rede de comunicações e é executada pela concessionária que fornece o serviço (pelo menos para as WAN). Quando a camada de rede não fornece um serviço confiável, a camada de transporte assume as responsabilidades, melhorando em suma importância a qualidade do serviço.

### 5 - Camada de Sessão

Responsável pela troca de dados e a comunicação entre hosts, a camada de Sessão permite que duas aplicações em computadores diferentes estabeleçam uma comunicação, definindo como será feita a transmissão de dados, pondo marcações nos dados que serão transmitidos. Se porventura a rede falhar, os computadores reiniciam a transmissão dos dados a partir da última marcação recebida pelo computador receptor.

### 6 - Camada de Apresentação

A camada de Apresentação, também chamada camada de Tradução, converte o formato do dado recebido pela camada de Aplicação em um formato comum a ser usado na transmissão desse dado, ou seja, um formato entendido pelo protocolo usado. Um exemplo comum é a conversão do padrão de caracteres (código de página) quando o dispositivo transmissor usa um padrão diferente do ASCII. Pode ter outros usos, como compressão de dados e criptografia.
Os dados recebidos da camada 7 estão descomprimidos, e a camada 6 do dispositivo transmissor fica responsável por comprimir esses dados. A transmissão dos dados torna-se mais rápida, já que haverá menos dados a serem transmitidos: os dados recebidos da camada 4 foram "encolhidos" e enviados à camada 1.
Para aumentar a segurança, pode-se usar algum esquema de criptografia neste nível, sendo que os dados só serão descodificados na camada 6 do dispositivo receptor.
Ela trabalha transformando os dados em um formato no qual a camada de aplicação possa aceitar, minimizando todo tipo de interferência.

### 7 - Camada de Aplicação

A camada de aplicação corresponde às aplicações (programas) no topo da camada OSI que serão utilizadas para promover uma interação entre a máquina-usuário (máquina destinatária e o usuário da aplicação). Esta camada também disponibiliza os recursos (protocolo) para que tal comunicação aconteça, por exemplo, ao solicitar a recepção de e-mail através do aplicativo de e-mail, este entrará em contato com a camada de Aplicação do protocolo de rede efetuando tal solicitação (POP3 ou IMAP).
Tudo nesta camada é relacionado ao software. Alguns protocolos utilizados nesta camada são: HTTP, SMTP, FTP, Telnet, SIP, RDP, IRC, SNMP, NNTP, POP3, IMAP, BitTorrent, DNS, ICMP.

### Resumo

| CAMADA | FUNÇÃO |
| 7 - Aplicação | Funções especialistas (transferência de arquivos, envio de e-mail, terminal virtual). |
| 6 - Apresentação | Formatação dos dados, conversão de códigos e caracteres (compressão e criptografia). |
| 5 - Sessão | Negociação e conexão com outros nós, analogia. |
| 4 - Transporte | Oferece métodos para a entrega de dados ponto-a-ponto. |
| 3 - Rede | Roteamento de pacotes em uma ou várias redes. |
| 2 - Enlace | Detecção de erros. |
| 1 - Física | Transmissão e recepção dos bits brutos através do meio físico de transmissão. |

## Arquitetura Internet

O padrão aberto técnico da Internet, o Protocolo de Controle de Transmissão (do inglês: Transmission Control Protocol - TCP), surgiu de uma necessidade específica do Departamento de Defesa dos Estados Unidos, que necessitava de uma rede que pudesse sobreviver a qualquer condição, até mesmo uma guerra nuclear. O Modelo de Referência e a Pilha de Protocolos TCP/IP tornam possível a comunicação de dados entre dois computadores em qualquer parte do mundo.
Devido ao surgimento massivo de redes de computadores, a International Organization for Standardization (ISO) realizou uma pesquisa sobre esses vários esquemas de rede e percebeu-se a necessidade de se criar um modelo de rede para ajudar os desenvolvedores a implementar redes que poderiam comunicar-se e trabalhar juntas (modelo de referência OSI).
Diferentemente do modelo OSI, que possui sete camadas, o modelo TCP/IP possui quatro camadas, são elas:
* Camada 4: A camada de Aplicação;
* Camada 3: A camada de Transporte;
* Camada 2: A camada de Internet;
* Camada 1: A camada de Acesso a Rede.

## Tabela de exemplos

| Camada | Exemplos | suite TCP/IP | SS7 | suite AppleTalk | suite OSI | suite IPX | SNA | UMTS |
| 7 - Camada de aplicação | HL7, Modbus | HTTP, SMTP, SNMP, FTP, NFS, NTP, BOOTP, DHCP, RMON, POP3, IMAP, TELNET, DNS, LDAP, SSL | ISUP, INAP, MAP, TUP, TCAP | AFP, PAP | FTAM, X.400, X.500, DAP | | APPC | |
| 6 - Camada de apresentação | TDI, ASCII, EBCDIC, MIDI, MPEG | XDR, TLS | | AFP, PAP | | | | |
| 5 - Camada de sessão | Named Pipes, NetBIOS, SIP, SAP, SDP | Estabelecimento da sessão TCP | | ASP, ADSP, ZIP | | NWLink | DLC? | |
| 4 - Camada de transporte | NetBEUI | TCP, TFTP |UDP, RTP, SCTP, SSL, DCCP,SCTP,RSVP | | ATP, NBP, AEP, RTMP | TP0, TP1, TP2, TP3, TP4 | SPX, RIP | | |
| 3 - Camada de rede | NetBEUI, Q.931 | IP, ICMP, IPsec, RIP, OSPF, BGP, NAT, Roteador | MTP-3, SCCP | DDP | X.25 (PLP), CLNP | IPX | | RRC (Radio Resource Control) |
| 2 - Camada de ligação de dados | Ethernet, Token Ring, FDDI, PPP, HDLC, Q.921, Frame Relay, Bridge, ATM, Fibre Channel | MTP-2, ARP | LocalTalk, TokenTalk, EtherTalk, Apple Remote Access, PPP | X.25 (LAPB), Token Bus | 802.3 framing, Ethernet II framing | SDLC | MAC (Media Access Control) | |
| 1 - Camada física | Alicate,RS-232, V.35, V.34, Q.911, T1, E1, CDDI, 10BASE-T,100BASE-TX, ISDN, Repetidor, SONET, DSL, 802.11 | | MTP-1 | Localtalk on shielded, Localtalk on unshielded (PhoneNet) | X.25 (X.21bis, EIA/TIA-232, EIA/TIA-449, EIA-530, G.703) | | Twinax | PHY (Physical Layer) |