Datagramas
O protocolo IP envia informação em forma de datagramas.
Encapsulamento
Cada bloco de bytes, o protocolo IP concatena um header, é esta concatenação que forma o IP Datagrama.
Cada IP Datagrama é entre à camada MAC de baixo para ser enviado para a rede.
Em cada rede a MAC layer frame é composta por um campo header e por um campo data.
No campo data do MAC é encapsulado o IP Datagrama.
Formato
IP Header
Tem um tamanho total de 20 bytes
Os últimos dois campos obrigatório contem o IP origem e o IP destino
Campos
Version (4 bits): versão do protocolo de IP
Header length (4 bits): tamanho do header em múltiplos de 4 bytes
Service type (1 byte): tipo de serviço do datagrama de IP (default é 0x00)
Total length (2 bytes): tamanho do datagrama de IP (header + data), o tamanho tem sempre de ser menor que o MTU do MAC layer frame onde vai ser encapsulado
Identificação (2 bytes): o valor atribuído ao host original do IP datagrama
Flags (3 bits):
1 bit é reservado para uso futuro
2 bit é o do not fragment bit, e está a 1 se a origem não permite que o datagrama de IP seja fragmentado
3 bit é o last fragment bit, irá estar a 0 se o IP datagrama onde se encontra for o último fragmento de um IP datagrama
Fragment Offset (13 bits): posição (em múltiplos de 8 bytes) deste fragmento no fragmento original do IP datagrama. Este campo indica quantos bytes estão na totalidade dos fragmentos anteriores
Time to Live (1 byte): Representa o número de hops máximos que este pacote (IP datagrama) pode dar entre routers antes de ser descartado. Cada router por onde passa subtrai 1 a este valor
Protocol (1 byte): especifica a camada de protocolo mais alta a que o data field pertence
Header Checksum (2 bytes): resultado da soma (em words de 16 bits) dos outros campos do header, permite detetar erros há chegada
MTU - Maximum Transmission Unit - é o tamanho máximo do data field das frames do seu MAC layer
Data
Qualquer conteúdo que aqui seja transportado
Fragmentação e reassemblagem em IP
Acontece que o IP datagrama for maior que o MTU da rede, o pacote terá de ser fragmentado, isto poderá ser feito pelo host ou pelo router
O campo do data é segmentado de forma a que os seus blocos mais o header não seja maior que o MTU. Cada bloco mais um header vai formar um IP datagrama
O campo de identificação dos blocos será igual entre todos
O campo de offset será byte a partir do inicio do primeiro pacotes
A flag do ultimo pacote será 1 para identificar que é o último, todos os outros a flag será 0
Last updated