Todas as redes que formam a Internet são capazes de comunicar-se umas com as outras, porque todas elas usam a mesma série de protocolos. Os dois procolos mais conhecidos dentre esses são o Transmission Control Protocol (TCP) e o Internet Protocol (IP). Consequentemente, essa família de protocolos é chamada de pilha de protocolos TCP / IP. Esses protocolos são implementados pelo software que reside em cada um dos computadores na Internet e são organizados em camadas. Assim, eles são chamados de pilha TCP / IP . Cada vez que seu computador quer enviar um pacote para outro computador, o pacote caminhar "para baixo" através da série de camadas de protocolo presentes emsua máquina. Cada uma dessas camadas modifica o seu pacote e, em seguida, passa o pacote para o software que está na camada seguinte. Quando o pacote chega ao computador de destino, o pacote deve passar ("subir") pela mesma série de camadas para ser efetivamente entregue.

Uma vez que o pacote está sendo modificado em cada camada, o pacote tem um nome diferente em cada camada. O nome usado genericamente para o pacote em qualquer camada é pacote. O termo pacote é utilizado na camada de aplicação. O termo segmento é usado no camada de transporte. O termo datagrama é usado na camada de rede. O termo quadro é utilizado na camada de enlace.

Uma vez que a Internet é um conjunto de redes, existem nela conexões entre redes adjacentes. Essas conexões geralmente são viabilizadas por meio de computadores especializados chamados roteadores. À medida que seu pacote cruza a Internet em direção ao computador de destino, ele tem que passar através de roteadores interligando as redes que o pacote está atravessando. Em cada roteador, o pacote tem de passar por alguns dos protocolos da pilha TCP / IP, mas não todos eles. O pacote tem de passar pelas camadas no roteador ("subindo", isto das camadas de nível mais baixo para as camadas de nível mais alto) para remover as características específicas da rede da qual ele está saindo. O pacote então se move "para baixo" através das camadas no roteador para adicionar os recursos específicos para a rede ele está entrando.

O applet Java acima ilustra este processo de um pacote que se desloca para baixo através das camadas de protocolo no computador de envio (o computador de origem), para cima e, em seguida, para baixo nas camadas dos roteadores que encontra em sua jornada e, finalmente, para cima nas camadas do computador de recepção (o computador de destino). As camadas de protocolo têm nomes padrão que são mostrados no applet. Nós não vamos tentar explicar a função exata de cada camada. Ao longo do nosso curso vamos estudá-las em profundidadeentantoPor exemplo, tanto a resolução do nome como a implementação da Web são feitas na camada de aplicação, neste último caso (Web) garantindo a transferência de dados confiável , por meio da camada de transporte. O mecanismo de acesso a redes locais Ethernet é implementado na camada de enlace.

Este applet ilustra o processo básico de passagem do pacote pelas camadas, descendo a pilha de proctocolos na máquina de origem, subindo através da pilha de protocolos no roteador da primeira rede, descendo na pilha de protocolos no roteador da segunda rede, e finalmente subindo através da pilha de protocolos na máquina de destino. Cores diferentes são utilizados para indicar as diferentes camadas qu estão sendo atravessadas. Além desse conceito básico, este applet ilustra três conceitos adicionais.

Roteador pára na camada de rede

O primeiro conceito (que fica claro a partir do layout do applet), é que o pacote só precisa ir até a camada de rede no roteador. A necessidade de conter apenas até a camada de rede no roteador decorre do fato de que essa camada o router através da camada de rede, porque a camada de rede é responsável pela escolha do caminho através da Internet que o pacote irá seguir. A escolha do caminho é chamado de roteamento. O roteador é chamado de roteador porque a camada de rede no roteador está envolvida na decisão de roteamento (ou seja, a escolha de qual rota ou caminho que o pacote deve seguir) . O principal protocolo na camada de rede para a pilha TCP/IP é chamado de IP (Internet Protocol) e é um dos protocolos mais importantes da pilha de protocolos TCP / IP.

Encapsulamento e Desencapsulamento

O segundo conceito é o de encapsulamento/desencapsulamento. À medida em que um pacote se move para baixo através das camadas de protocolo na máquina de origem e para baixo através das camadas em um roteador, as transformações sofridas pelo pacote são chamadas de encapsulamento. Encapsulamento significa que o pacote original é encapsulado ou envolvido por um cabeçalho ou header (e para algumas camadas, um reboque - ou trailer), resultando em um pacote maior. Cada camada realiza o encapsulamento para adicionar as informações específicas dessa camada no pacote. Da mesma forma, como o pacote vai para cima através das camadas de protocolo em um roteador e na máquina de destino, estes cabeçalhos são removidos em um processo chamado desencapsulamento. A parte inferior esquerda da janela do applet é uma tabela do tamanho do pacote e o tamanho de cada um dos cabeçalhos. O applet ilustra este conceito, mostrando cada cabeçalho ao ser adicionado ao pacote ou ao ser retirado do pacote pela camada apropriada. Além disso, cada cabeçalho é mostrado na cor da camada de protocolo correspondente.

Fragmentação e Remontagem

O terceiro conceito é o da fragmentação e remontagem. Cada rede tem um tamanho máximo de pacote que pode ser enviado através dela. Diferentes tipos de redes podem ter diferentes tamanhos máximos. Esse tamanho é chamado de Maximum Transmission Unit (MTU). Mais precisamente, a MTU é o tamanho máximo da carga útil do quadro que é enviado através da rede. A carga útil do quadro não inclui o cabeçalho do quadro. O tamanho da mensagem que se origina na camada de aplicação pode ser arbitrariamente grande. A camada de transporte adicionará o cabeçalho de transporte para criar um segmento, que é então passado para a camada de rede. A camada de rede adicionará seu cabeçalho camada de rede para criar um datagrama que então será passado para a camada de enlace. No entanto, esse datagrama é a carga dos dados (os dados transportados) pelo quadro da camada de enlace. Assim, se o datagrama é maior que a MTU ocorrerá um problema.

A solução é que a camada de rede deve dividir o seu datagrama em fragmentos, come cada fragmento não maior do que a MTU. Cada fragmento tem de ser um datagrama, que tem um cabeçalho da camada de rede. Assim, o que acontece é que o segmento passado da camada de transportes para a camada de rede é dividido em pedaços (cargas ou payloads) para cada um dos fragmentos. Cada fragmento é então transformado em um datagrama, precedido de um cabeçalho da camada de rede. O fragmento inteiro (incluindo o cabeçalho da camada de rede) não pode ser maior do que a MTU da rede .

A simulação usa um tamanho da mensagem de 2000 bytes e um cabeçalho da camada de transporte de 20 bytes. Assim, o segmento que está sendo passado para a camada de rede na máquina de origem é 2020 bytes. Se a MTU da primeira rede é de 3000 bytes, a fragmentação não é necessário. A camada de rede da máquina de origem simplesmente anexa o cabeçalho da camada de rede de 20 bytes e passa o datagrama para a camada de enlace da máquina de origem. A camada de enlace da máquina de origem anexa seu cabeçalho de quadro de 14 bytes e, em seguida, um quadro de 2054 bytes é transmitido pela rede (na verdade, ainda há normalmente 8 bytes de prefixo na camada física e 4 bytes de frame check sum como trailer, fazendo com que o quadro tenha 2066 bytes. Este cenário ocorre quando a configuração padrão do MTU do primeiro link é 3000 bytes.