Um datagrama IP, consiste de duas partes: cabeçalho e o campo de dados que transporta o IP de origem e o IP de destino.
O cabeçalho possui uma parte fixa de 20 bytes e um campo "Options" de tamanho variável. O formato do datagrama IPv4 é mostrado na figura
abaixo:
O campo "Version", armazena a versão do protocolo a que o datagrama pertence, na versão 4 possui tamanho de 4 bits (0100).
O segundo campo, de quatro bits, é o "IHL" (acrônimo para Internet Header Length, ou seja, Comprimento do Cabeçalho da Internet), com o número
de palavras de 32 bits no cabeçalho IPv4.
Como o cabeçalho IPv4 pode conter um número variável de opções, este campo essencialmente especifica o
offset para a porção de
dados de um datagrama IPv4.
O campo "Type of service", representa os 8 bits seguintes. A intenção original era para um nó (roteador) especificar uma preferência para como os
datagramas poderiam ser manuseados assim que circulariam pela rede. Na prática, o campo ToS não foi largamente implementado.
O campo "Total Length" é o campo seguinte de dezesseis bits do IPv4, define todo o tamanho do datagrama, incluindo cabeçalho e dados, em bytes
de oito bits. O datagrama de tamanho mínimo é de vinte bytes, e o máximo é 64 Kb.
O tamanho máximo do datagrama que qualquer nó requer para estar apto para manusear são 576 bytes, mas os roteadores mais modernos
manuseiam pacotes bem maiores.
O campo "Identification" é um campo de identificação de 16 bits. Este campo é usado principalmente para identificar fragmentos identificativos do
datagrama IP original.
Flags → O campo é utilizado para identificar e controlar fragmentos, o campo é composto por três (3) bits.
Offset → O campo é constituído por 13 (treze) bits, o offset permite que o receptor do datagrama determine o local do
fragmento do pacote IP original.
TTL → O campo (time to live) ou tempo de vida do pacote, é composto por oito (8 bits), o campo tem a funcionalidade de evitar
que o pacote fique percorrendo em loop sem encontrar o destino final, evitando que o datagrama IP persista. Sem o campo TTL, teríamos muitas
requisições na rede mundial (Internet), o que causaria uma enorme lentidão da rede (delay), ou até mesmo, o travamento de alguns dispositivos de
borda (roteadores ). O campo TTL limita a vida útil do pacote em segundos, onde cada roteador que o datagrama atravessa, é decrementado o valor
do TTL que se inicia no número cento e vinte e oito (128), quando o valor chega a 0 (zero), o pacote é descartado, o TTL é considerado como uma
contagem de hops (saltos).
Protocol → O campo é constituído por oito (8) bits, é neste campo que é realizado a definição de qual é o protocolo usado na
porção de dados de um pacote IP. Existe a possibilidade de ser o TCP, mas há também o UDP e outros. A numeração que se aplica a todos protocolos
da Internet é definida na RFC 1700.
Checksum → O campo é responsável por detectar inconsistência no datagrama IP, realizando uma checagem cíclica de todos os
campos de um datagrama e identificar se nos HOPS (saltos), onde o datagrama percorreu, se não houve nenhuma falha.
Um pacote em trânsito é alterado por cada ponto (roteador) na rede por onde passa, e um destes pontos pode comprometer a integridade do pacote
e o campo checksum é uma forma mais simples de detectar falhas no pacote IPv4.
Endereço de origem e destino → O campo é responsável em trafegar os endereços IPv4 de origem e destino composto por 32
bits cada, segmentado em quatro octetos de oito bits. No caso do IPv6, o campo é composto por 128 bits cada endereço.
A seguir, mostrarei as especificações do novo datagrama IPv6 e comentar as mudanças.