IPv4
IPv4-paketti

IPv4-paketti koostuu pakollisista otsikkotiedoista ja data-osiosta:
| + | 0–3 | 0–3 | 0–3 | 0–3 | 4–7 | 4–7 | 4–7 | 4–7 | 8–15 | 8–15 | 8–15 | 8–15 | 8–15 | 8–15 | 8–15 | 8–15 | 16–18 | 16–18 | 16–18 | 19–31 | 19–31 | 19–31 | 19–31 | 19–31 | 19–31 | 19–31 | 19–31 | 19–31 | 19–31 | 19–31 | 19–31 | 19–31 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 0 | versio | versio | versio | versio | otsikon pituus | otsikon pituus | otsikon pituus | otsikon pituus | palveluluokka | palveluluokka | palveluluokka | palveluluokka | palveluluokka | palveluluokka | palveluluokka | palveluluokka | kokonaispituus | kokonaispituus | kokonaispituus | kokonaispituus | kokonaispituus | kokonaispituus | kokonaispituus | kokonaispituus | kokonaispituus | kokonaispituus | kokonaispituus | kokonaispituus | kokonaispituus | kokonaispituus | kokonaispituus | kokonaispituus |
| 32 | tunnus | tunnus | tunnus | tunnus | tunnus | tunnus | tunnus | tunnus | tunnus | tunnus | tunnus | tunnus | tunnus | tunnus | tunnus | tunnus | liput | liput | liput | fragmentin paikka | fragmentin paikka | fragmentin paikka | fragmentin paikka | fragmentin paikka | fragmentin paikka | fragmentin paikka | fragmentin paikka | fragmentin paikka | fragmentin paikka | fragmentin paikka | fragmentin paikka | fragmentin paikka |
| 64 | elinaika | elinaika | elinaika | elinaika | elinaika | elinaika | elinaika | elinaika | protokollan numero | protokollan numero | protokollan numero | protokollan numero | protokollan numero | protokollan numero | protokollan numero | protokollan numero | otsikon tarkistussumma | otsikon tarkistussumma | otsikon tarkistussumma | otsikon tarkistussumma | otsikon tarkistussumma | otsikon tarkistussumma | otsikon tarkistussumma | otsikon tarkistussumma | otsikon tarkistussumma | otsikon tarkistussumma | otsikon tarkistussumma | otsikon tarkistussumma | otsikon tarkistussumma | otsikon tarkistussumma | otsikon tarkistussumma | otsikon tarkistussumma |
96: lähdeosoite
128: kohdeosoite
160: Optiot
192:   Data  
Versio
Ilmoittaa protokollan versionumeron, tässä tapauksessa 4 eli binäärijärjestelmällä ilmoitettuna 0100.
Otsikon pituus (IHL, Internet header length)
Ilmoittaa IPv4-otsikon pituuden 32-bittisinä sanoina. Dataosiota ei lasketa tähän mukaan. Jos optioita ei käytetä, niin kentän arvo on 5.
Palveluluokka (TOS, Type of service)
Ilmoittaa toivomuksen palveluluokasta. Alkuperäisessä määrittelyssä (RFC 791) ensimmäiset kolme bittiä (precedence) määriteltiin liikenteen luokitteluun ja merkkaukseen. Seuraavat kolme bittiä sisältävät toivomuksen palvelulaadusta. Kaksi viimeistä bittiä jätettiin tulevia tarpeita varten. Nykyään TOS-kenttää käytetään DiffServ:iä ja ECN:ää varten.
Kokonaispituus
Ilmoittaa IPv4-paketin kokonaispituuden (otsikko + data) okteteissa eli kahdeksan bitin mittaisissa tavuissa.
Tunnus
Pilkotut IPv4-paketit saavat pilkottaessa (fragmentointi) saman tunnuksen, jotta alkuperäisen datagrammin uudelleenkoostaminen (defragmentointi) onnistuisi vastaanottajapäässä.
Liput
Ensimmäinen bitti näistä on varattu, ja sen täytyy olla aina 0. Toinen bitti ilmaisee saako paketin pilkkoa; arvossa 1 saa, muutoin ei. Kolmas bitti ilmaisee onko pilkottu paketti sarjansa eli alkuperäisen datagrammin viimeinen; arvo 1 ilmaisee, että sarja jatkuu, ja arvo 0 ilmaisee, että kyseessä on sarjan viimeinen paketti.
Fragmentin paikka
Ilmoittaa mihin kohtaan alkuperäistä datagrammia fragmentti kuuluu. Ensimmäinen fragmentti saa arvon 0, joka tarkoittaa, että fragmentti tulee uudelleenkoostettavassa paketissa ensimmäiseksi. Protokollan mukaan paketit on paloiteltava 64-bitin monikertojen kohdilta.
Paketin elinaika (TTL, Time to live)
Ilmoittaa paketin elinajan. Alun perin kenttä ilmoitti paketin elinajan sekunteina, mutta nykyään kenttä on ns. hyppylaskuri. Kentän suurin mahdollinen arvo on 255 eli kaikki kahdeksan bittiä ovat ykkösiä. Arvoa vähennetään aina yhdellä sen kulkiessa reitittimen läpi. Kun elinajan arvo on 0, paketin vastaanottava reitin pudottaa sen liikenteestä ja lähettää usein lähettäjäasemalle ICMP elinaika ylitetty eli Time exceeded -virheilmoituksen lähetyksen epäonnistumisesta.
Protokolla
Ilmoittaa seuraavan kerroksen (kapseloidun) protokollan, jota kuljetetaan IPv4-paketin datagrammina. Esimerkiksi:
1: ICMP
2: IGMP
6: TCP
17: UDP
Tarkistussumma
Ilmoittaa otsikon tarkistussumman. Tarkistussummaa tarvitaan, jotta voidaan havaita onko IPv4-paketin otsikko muuttunut matkalla kohdeasemaan, mikä saattaa olla erittäinkin kriittistä yhteyden kannalta. Datagrammia ei lasketa tarkistuksessa mukaan ja sen oikeellisuuden tarkistus täytyy hoitaa ylemmän tason protokollalla.
Lähdeosoite
Ilmoittaa paketin lähettävän verkkosovittimen 32-bittisen IPv4-osoitteen. IP-osoitteen väärentäminen tarkoittaa, että lähdeosoitteeksi väärennetään jokin muu kuin verkkosovittimen todellinen IPv4-osoite. Jotkin reitittimet tosin hylkäävät paketteja, jos pakettien lähettäjäosoite ei kuulu niihin IPv4-aliverkkoihin, jotka reititetään verkkosovittimeen, josta paketti saapui. Toisin sanoen paketti hylätään, jos se saapuu eri paikasta, kuin mistä sen luonnollisesti pitäisi tulla. Tätä ominaisuutta kutsutaan reverse path forwarding -suodatukseksi.
Kohdeosoite
Ilmoittaa paketin kohteena olevan verkkosovittimen 32-bittisen IPv4-osoitteen.
Optiot
Ilmoittaa paketin optiot jos niitä on. Optioita käytetään nykyisin erittäin harvoin ja enimmäkseen ne ovatkin krakkerien suosiossa sillä niillä voidaan muun muassa manipuloida paketin reititystä. Mikäli optiot jäävät vajaaksi 32-bitin monikerrasta täytyy perään lisätä täytettä, koska IP-otsikon täytyy olla 32-bitin monikerran kokoinen.
Data
Sisältää IP-paketin varsinaisen datan eli datagrammin, joka yleensä alkaa seuraavan tason protokollan otsikolla.