Agenda Redes de Computadores 2 Prof. Rodrigo da Rosa Righi - Aula 6 professor.unisinos.br/righi rrrighi@unisinos.br Camada de Rede na Internet Formato de Datagrama IP Fragmentação IP ICMP
Camada de Rede na Internet: Protocolo IP O protocolo IP (Internet Protocol) é a implementação da camada de rede na Internet RFC 791, versão 4 do protocolo Endereça nós de origem e destino Endereço IPv4 = identificador de 32 bits Oferece serviço de datagramas à camada de transporte Chamado de serviço best-effort (melhor esforço): sem garantia de entrega, sem ordenação Pode realizar fragmentação dos dados recebidos da camada de transporte nesse caso, reordena no recebimento
Protocolo IP recebe dados da camada de cima e os transmite acrescentando um : Cabeçalho Dados 32 bits TTL Protocolo Checksum do
4 bits Identifica a versão do protocolo IP Roteador/computador pode saber como tratar o restante dos dados Valores possíveis na atualidade: 4 (0100) e 6 (0110) TTL Protocolo Checksum do
4 bits, também chamado de IHL (IP Header Length) Tamanho do em palavras de 4 bytes Na maioria dos casos, contém o valor 5 (0101) Ou seja, 5 x 4 bytes = 20 bytes, que é o tamanho do quando não há Opções TTL Protocolo Checksum do
8 bits, Tipo de Serviço Tentativa de diferenciar classes de serviço (como em QoS): baixa latência, alta vazão, confiabilidade, etc. Pouco utilizado na prática TTL Protocolo Checksum do
16 bits Tamanho em bytes do datagrama completo, incluindo o Limita a quantidade de dados efetivos (payload) Tamanho máximo do datagrama = 2 16 1 = 65535 TTL Protocolo Checksum do
Usados para a fragmentação de datagramas (veremos mais adiante) TTL Protocolo Checksum do ados para a fragmentação de datagra
8 bits, Time To Live ( tempo de vida ) Limita a quantidade de vezes que um pacote pode ser roteado (hops) Serve para proteger contra eventuais erros de configuração que poderiam levar a loops de roteamento É inicializado pelo software que cria o datagrama e decrementado em cada roteador por onde passa Pacote é descartado se o TTL chegar a 0 TTL Protocolo Checksum do its, Time To Live ( tempo de vida )
8 bits, serve de auxílio à camada superior Indica qual o tipo de informação (protocolo) carregada no dataram Exemplos 6 = TCP, 17 = UDP, 1 = ICMP, 50 = ESP, 51 = AH, etc. etc. Ver arquivo /etc/protocols no Linux ou Mac OS X TTL Protocolo Checksum do
16 bits Soma complemento-de-1 dos bytes do (considerando palavras de 16 bits) Serve para detectar eventuais erros na transmissão dos dados Deve ser recomputado em cada roteador Campo TTL é alterado TTL Protocolo Checksum do bits
Endereços IP de origem e de destino do datagrama TTL Protocolo Checksum do dereços IP de origem e de destino do
Informações adicionais sobre o dataram Ex.: dados sobre a rota tomada Raramente utilizadas na prática TTL Protocolo Checksum do ormações adicionais sobre o datagram
Fragmentação IP Ao preparar um datagrama para transmissão, o protocolo IP pode se deparar com a necessidade de fragmentar os dados Ex.: datagrama IP pode ter até 65535 bytes, mas as redes Ethernet suportam datagramas (quadros) de no máximo 1500 bytes necessário fragmentar Pode ocorrer desde a origem até o destino final, incluindo roteadores ao longo do caminho Só depende das limitações impostas pela camada de enlace Camada de rede quebra os dados e envia vários (sub-)datagramas menores
Fragmentação IP Um datagrama deve ser montado para transmitir 1200 bytes vindos da camada de cima. A camada de enlace trabalha com quadros de no máximo 532 bytes. A quantidade máxima de dados em cada datagrama será 532 20 ( IP) = 512 bytes Assim, teremos ao todo 3 fragmentos: os dois primeiros com 512 bytes e o último com 176 bytes Portanto, serão montados e enviados, ao todo, 3 datagramas: 512 512 176 1200 20 512 20 512 20 176
Campos para a Fragmentação IP Identificador Rotula cada datagrama unicamente. Fragmentos de um mesmo datagrama recebem o mesmo identificador MF (More Fragments): deve ser setado em todos os fragmentos exceto o último DF (Don't Fragment): usado em casos especiais, instrui os roteadores a nunca fragmentar aquele dataram : Indica onde encaixar o fragmento dentro do datagrama Exemplo anterior: 1o fragmento tem deslocamento 0, 2o tem deslocamento 512, 3o tem deslocamento 1024
Com o uso dos, sobraram apenas 13 bits para expressar o Lembrando que o tamanho do datagrama é expresso em 16 bits Para ser possível expressar deslocamentos em qualquer parte do datagrama, o valor do campo aponta, na verdade, blocos de 8 bytes Antes de armazenar o valor no campo, deve-se dividir o deslocamento por 8 Ao receber um datagrama, deve-se multiplicar o valor do campo por 8 para obter a posição, em bytes, do fragmento
Exemplo No exemplo anterior: do 2o fragmento é 512 512 / 8 = 64 = 0000001000000 Este é o valor que vai no campo Ao receber o datagrama, 64 * 8 = 512 fragmento será encaixado a partir do byte 512 do dataram Conseqüência: o tamanho dos fragmentos sempre deve ser múltiplo de 8 Exceto, é claro, para o último fragmento
ICMP Internet Control Message Protocol (RFC 792) Reportar erros e fornecer informações entre computadores na rede Não há rota, TTL expirado, Ping, etc. etc. Ao se deparar com uma condição de erro, computador/roteador monta um datagrama ICMP e o envia ao remetente original Ex.: roteador não conhece uma rota para repassar o pacote envia mensagem tipo 3, código 6 para o remetente original
Tipos e Códigos ICMP Toda mensagem ICMP carrega um tipo e um código, além de outras informações Alguns dos tipos e códigos mais comuns: Tipo Código Descrição 0 0 Resposta de eco (ping) 3 1 Host de destino inalcançável 3 3 Porta de destino inalcançável 3 6 Rede de destino desconhecida 8 0 Solicitação de eco (ping) 11 0 TTL expirado