Protocolo IPv4

**IP** é un acrónimo do inglés "***Internet Protocol***" (ou **protocolo de Internet**), que é un protocolo usado entre dúas máquinas en rede para encamiñamento dos datos.

Os datos nunha rede IP envíanse en bloques referidos como paquetes ou datagramas (os termos son basicamente sinónimos no IP, sendo usados para os datos en diferentes lugares nas capas IP). En particular, no IP ningunha definición é necesaria antes de que o host tente enviar paquetes para un host co cal non se comunicou previamente.

O IP ofrece un servizo de datagramas non confiábel (tamén chamado de *mellor esforzo*); ou sexa, o paquete ven case sen garantías. O paquete pode chegar desordenado (comparado con outros paquetes enviados entre os mesmos hosts), tamén poden chegar duplicados, ou poden ser perdidos por enteiro. Se a aplicación precisa de confiabilidade, esta engádense na capa de transporte.

Os routers úsanse para reencamiñar datagramas IP a través das redes interconectadas na segunda capa. A falta de calquera garantía de entrega significa que o deseño da troca de paquetes faise de forma máis simplificada. (Note que se a rede cae, reordena ou doutra forma damnifica un gran número de paquetes, a performance observada polo usuario será pobre, logo a maioría dos elementos de rede tentan arduamente non facer este tipo de cousas - *mellor esforzo*. Con todo, un erro ocasional non irá producir ningún efecto notábel.)

O IP é o elemento común atopado en Internet pública dos días de hoxe. É descrito no RFC 791 da IETF, que foi pola primeira vez publicado en setembro de 1981. Este documento describe o protocolo da capa de rede máis popular e actualmente en uso. Esta versión do protocolo designase de versión 4, ou IPv4. O IPv6 ten enderezo de orixe e destino de 128 bits, ofrecendo máis enderezos que os 32 bits do IPv4.

## Formato da cabeceira do IPv4
O primeiro campo do **cabeceira** (*header*) dun datagrama IPv4 é o campo de versión (*version*), de 4 bits.

O segundo campo, de 4 bits, é o IHL (*Internet Header Length*, ou sexa, Lonxitude da cabeceira de Internet) co número de words de 32 bits na cabeceira IPv4. Como a cabeceira IPv4 pode conter un número variábel de opcións, este campo esencialmente especifica o offset para a porción de datos dun datagrama IPv4. Un cabeceira mínimo ten 20 bytes de lonxitude, logo o valor mínimo en decimal no campo IHL sería 5.

No RFC 791, os 8 bits seguintes alócanse para un campo tipo de Servizo (ToS) agora DiffServ e ECN. A intención orixinal era que un host especificase unha preferencia de como tratar os datagramas que circularían pola rede. Por exemplo, un host pode definir o campo de valores do seu ToS dos datagramas IPv4 para preferir pequeno desfasamento de tempo (ou "delay"), en canto que outros poden preferir alta fiabilidade. Na práctica, o campo ToS non foi largamente implementado. Con todo, o traballo experimental, de investigación e desenvolvemento enfocouse en como facer uso destes oito bits. Estes bits foron redefinidos e máis recentemente a través do grupo de traballo do DiffServ na IETF e polos puntos de código do Explicit Congestion Notification (ECN) codepoints (ver RFC 3168).

O campo de 16 bits seguinte do IPv4 define todo o tamaño do datagrama, incluíndo cabeceira e datos, en bytes de 8 bits. O datagrama de tamaño mínimo é de 20 bytes e o máximo é 65535. O tamaño máximo do datagrama que se lle require a un host que sexa capaz de tratar son 576 bytes, mais os hosts máis modernos permiten paquetes ben maiores.
Por veces, as subredes impoñen restricións no tamaño, en cada caso os datagramas teñen que ser *fragmentados*. A fragmentación trátase ben no host ou ben no switch de paquetes no IPv4, e apenas no host no caso do IPv6.

O campo seguinte de 16 bits é un campo de identificación. Este campo usase principalmente para identificar fragmentos identificativos do datagrama IP orixinal. Algúns traballos experimentais suxiren usar o campo IP para outros propósitos, tales como engadir paquetes para levar a información para datagrama, de forma a que axude a investigar datagramas para tras con enderezos fonte falsificados.

O campo de 3 bits que segue úsase para controlar ou identificar fragmentos.

O campo offset do fragmento ten 13 bits, e permite que un receptor determine o sitio dun fragmento en particular no datagrama IP orixinal.

Un campo de 8 bits, o TTL (*time to live*, ou sexa, tempo para vivir) axuda a previr que os datagramas persistan (ex. andando aos círculos) nunha rede. Historicamente, o campo TTL limita a vida dun datagrama en segundos, mais tornouse nun campo de conteo de hops. Cada switch de paquetes (ou router) que un datagrama atravesa decrementa o campo TTL nun valor. Cando o campo TTL chega a cero, o paquete non se segue por un switch de paquetes e descártase.

Séguelle un campo de Protocolo de 8 bits. Este campo define o protocolo seguinte usado nunha porción de datos dun datagrama IP. A Internet Assigned Numbers Authority mantén unha lista de números de protocolos. Os protocolos comúns e os seus valores decimais inclúen o Protocolo ICMP (*Internet control message protocol*, ou sexa, Protocolo de control de mensaxes de Internet) (1), o Protocolo TCP (*Transmission Control Protocol*, ou sexa, Protocolo de control de transmisión) (17).

O campo seguinte é un campo de verificación (*checksum*) para a cabeceira do datagrama IPv4. Un paquete en tránsito altérase por cada router (*hop*) que atravese. Un deses routers pode comprometer o paquete, e o *checksum* é unha simple forma de detectar a consistencia da cabeceira. Este valor axústase ao longo do camiño e verifícase a cada novo *hop*.

[miniatura|dereita|300px|Encapsulamento IP: O [enderezo IP|enderezo de orixe na cabeceira IP irá indicar a quen deberá enviarse a resposta do protocolo encapsulado, neste caso o TCP.]]
A seguir ao campo de verificación, están os enderezos orixe e destino, de 32 bits cada un. Note que esta é unha diferenza con IPv6, onde os enderezos de orixe e destino son de 128 bits cada.

Campos da cabeceira adicionais (chamados de *options*, opcións) poden seguir o campo do enderezo de destino, mais estes non son normalmente usados. Os campos de opción poden ser seguidos dun campo de camiño que asegura que os datos do usuario alíñanse nunha fronteira de words de 32 bits. (No IPv6, as opcións móvense fóra da cabeceira standard e especifícanse polo campo Next Protocol, semellante á función do campo "Protocolo" no IPv4.)

## Enderezo IPv4 e routing
Talvez os aspectos máis complexos do IP sexan o enderezo e o routing. O enderezo define como se atribúen os enderezos IP dos hosts finais e como as subredes dos enderezos de IP dos hosts divídense e agrupados. O routing IP faise por todos os hosts, mais máis comunmente por routers de rede, que tipicamente usan quer protocolos IGP (do inglés, *Interior Gateway Protocol*) ou protocolos EGP (do inglés, *External Gateway Protocol*) para axudar na lectura de datagramas IP que reencamiñen decisións a través de IPs en redes ligadas. Talvez o aspecto máis complexo do protocolo Internet (IP) sexan o enderezo e routing.

## Véxase tamén
### Outros artigos
* Enderezo IP
* IANA

### Ligazóns externas
* RFC 791 - Internet Protocol (inglés)
* RFC 3168 - Explicit congestion notification (inglés)
* RFC 1883 - Internet Protocol, Version 6 (inglés)
*Internet Assigned Numbers Authority (IANA) (inglés)