Bu yazıda IPv4 Başlığındaki farklı alanlar hakkında bilgi edineceğiz.
IPv4 Başlığı
Minimum IPv4 Başlığı Boyutu: 20 Byte
Maximum IPv4 Başlığı Boyutu: 60 Byte (Options: 40 Byte)
Version
- Length: 4 Bit
- Kullanılan IP sürümünü tanımlar.
- Bu alanda 4 (0100) değeri varsa IPv4, 6 (0110) varsa IPv6'yı belirtir.
Internet Header Length (IHL)
- Length: 4 Bit
- IPv4 Başlığındaki Options alanının boyutu değişkendir. Bu nedenle IHL, başlığın toplam boyutunu belirtmek için gereklidir.
- Başlığın Boyutunu 4 Baytlık Artışlarla Tanımlar.
- IPv4 Başlığının Minimum Boyutu 20 Byte olduğundan IHL alanında en düşük 5 değerini görebiliriz (5 x 4 Byte = 20 Byte).
- Options alanı maksimum 40 Byte boyutunda olabilir, dolayısıyla Maksimum IPv4 Başlığı Boyutu 60 Byte olur. Bu nedenle IHL alanının maksimum değeri 15 olur (15 x 4 Byte = 60 Byte).
DSCP (Differentiated Services Code Point)
- Length: 6 Bit
- QoS (Quality of Service) için kullanılır. Ses ve video akışı gibi gecikmeye duyarlı trafiğe öncelik vermek için kullanılır.
ECN (Explicit Congestion Notification)
- Length: 2 Bit
- Normalde bir ağda, ağ aşırı meşgulse, tıkanıklık varsa, bu durum paketlerin düşürülmesiyle cihazlara bildirilir. ECN, sıkışık bir ağa paketleri düşürmeden sinyal göndermenin bir yolunu sağlar.
Total Length
- Length: 16 Bit
- Paketin Toplam Boyutunu Belirtir (L3 Header + L4 Segment veya L4 Datagram).
- Minimum değeri 20'dir (IPv4 Başlığında Kapsüllenen veri olmadığı anlamına gelir).
- Maksimum değeri 65.535'dir (16 Bit uzunluğunda olduğundan - 2^16 - 1 = 65.535).
Identification
- Length: 16 Bit
- Bir paket çok büyük olduğu için parçalanmışsa, parçanın hangi pakete ait olduğunu belirlemek için kullanılır. Böylece, orijinal paketi elde etmek için yeniden birleştirme yapılabilir.
- Aynı paketin tüm parçaları, bu alanda aynı değere sahip olacaktır, böylece sonradan yeniden birleştirilebilirler.
- Paketler, MTU (Maximum Transmission Unit) değerinden daha büyükse parçalanır. MTU genellikle 1500 Byte boyutundadır. Bir Ethernet Frame'inin maksimum Data Payload boyutunun 1500 Byte olduğunu söylemiştik. Bunlar birbiriyle ilişkilidir.
- Parçalar alıcı cihaz tarafında yeniden birleştirilir.
Flags
- Length: 3 Bit
- Parçaları kontrol etmek ve tanımlamak için kullanılırlar.
- Bit 0: Reserved, her zaman 0'a ayarlıdır.
- Bit 1: Don't Fragment (DF Bit), parçalanmaması gereken bir paketi belirtmek için kullanılır. 1 ayarlanırsa, paketin parçalanmaması gerektiği anlamına gelir.
- Bit 2: More Fragments (MF Bit), pakette daha fazla parça varsa 1'e, son parça için 0'a ayarlanır. Paket parçalanmamış bir paketse MF Biti her zaman 0 olur.
Fragment Offset
- Length: 13 Bit
- Parçanın Orijinal IP Paketi içindeki konumunu belirtmek için kullanılır. Parçalar karışık sırada gelse bile paketin yeniden birleştirilmesine izin verir. Alıcının parçaların orijinal sırasını bilmesini sağlar.
Time to Live
- Length: 8 Bit
- Bir Router, TTL değeri 0 olan bir paketi düşürecektir.
- Bu alan sonsuz döngüleri önlemek için kullanılır.
- Kötü bir yönlendirme yapılandırması, bir paketin sürekli olarak bir döngü içinde gönderilmesine ve hedefe asla ulaşamamasına neden olabilir. TTL, 0 değerine ulaştığında döngülü trafiğin düşmesine neden olarak bunun olmasını engeller.
- Hop Count: Paket bir Router'a her ulaştığında, TTL 1 azaltılır.
- Tavsiye edilen TTL Değeri: 64.
- Maksimum TTL Değeri: 255 (2^8 - 1).
Protocol
- Length: 8 Bit
- Kapsüllenmiş Layer 4 PDU'nun Protokolünü belirtir.
- 6 Değeri: TCP
- 17 Değeri: UDP
- 1 Değeri: ICMP
- 89 Değeri: OSPF
- 88 Değeri: EIGRP
Header Checksum
- Length: 16 Bit
- IPv4 Başlığındaki hataları kontrol etmek için kullanılan alandır.
- Router bir paket aldığında Başlığın Sağlama Toplamını (Checksum) hesaplar ve başlığın bu alanındaki değer ile karşılaştırır.
- Yeni hesaplanan Checksum ile IPv4 Başlığındaki Checksum eşleşmiyorsa, iletimde bir hata meydana geldiği ve Router'ın paketi düşürdüğü anlamına gelir.
- Bu alan sadece IPv4 Başlığındaki hataları kontrol etmek için kullanılır.
- IPv4, Kapsüllenmiş verilerdeki hataları algılamak için kapsüllenmiş protokole güvenir. Kapsüllenmiş verilerdeki hataları tespit etmek için hem TCP hem de UDP kendi Checksum alanlarına sahiptir.
Source / Destination IP Address
- Length: 32 Bit
- Source IP Address alanı, paketi gönderenin IPv4 Adresini belirtir.
- Destination IP Address alanı, paketin amaçlanan alıcısının IPv4 Adresidir.
Options
- Length: 0 - 320 Bit (0 - 40 Byte)
- Nadiren kullanılır.
- IHL Değeri 5'den büyükse Options alanının kullanıldığı anlamına gelir.
GNS3 üzerinden Wireshark ile Paket Analizi
R1'den R2'ye Ping atıyoruz.
Wireshark
Source: 192.168.1.1
Destination: 192.168.1.2
Protocol: ICMP
Info: Echo (ping) request
IPv4 bilgilerini genişletelim.
- 0100 = IPv4
- 0101 (5) = Header Length: 20 Bytes, Options Length: 0 Byte.
- DSCP ve ECN = 0 (Her ikisi de kullanılmıyor).
- Total Length: 100 (Hem IPv4 Başlığı, hem de ICMP verileri dahil olmak üzerine IP Paketinin Byte cinsinden toplam boyutunu belirtir)
- Identification: 0x0004 (4) (Paket parçalı değildir, ancak parçalanmış olsaydı, bu pakete ait diğer parçaların da buradaki değeri 4 olurdu).
- Flags:
- Reserved Bit: Not set (0)
- Don't fragment: Not set (0) (Paket parçalanabilir)
- More fragments: Not set (0) (Paket parçalanmadığı için MF Biti 1 (Set) olmaz)
- Fragment offset: 0 (Parçalanmamış pakette Fragment Offset 0'dır).
- Time to Live: 255
- Protocol: ICMP (1)
- Header Checksum: 0x3840
- Source: 192.168.1.1
- Destination: 192.168.1.2
Cisco Cihazlarında standart Ping komutu 100 Byte boyutunda Pingler gönderir. Bu nedenle yukarıda Ping parçalanmamıştır (MTU: 1500 olduğundan).
ping 192.168.1.2 size 10000 komutunu kullanarak bir kez daha Ping attık. 1500 Byte'dan çok daha büyük boyutta 10000 Byte Ping Paketleri gönderecek. Dolayısıyla bu parçalanmaya neden olacaktır.
[Reassembled in #13] -> 13. numarada yeniden birleştirildi.
Örnek İki Parça (Fragment) (Offset Alanı dışında aynılar)
- Total Length: 1500 -> 10000 Byte'lık Ping, MTU boyutuna eşit olan 1500 Byte'lık parçalara bölünmüştür.
- Identification: 0x0001
- Flags
- Reserved bit: Not set (0)
- Don't fragment: Not set (0) (Paket parçalanabilir)
- More fragments: Not set (1) (Paketteki son parça değiller, daha parça var. Not: Paketin son parçasının MF Biti 0 olur)
- Fragment Offset: 0 (İlk parçanın Offseti 0'dır. Diğer parçada Offset değeri daha büyük ve farklıdır)
DF Bitini Set (1) yaparak Pingi gönderelim.
- Don't Fragment: Set (1) (Parçalanma yapılamaz)
Ping paketinin boyutu varsayılan olarak 100 Byte olduğu için parçalanmaya izin vermemek bir sorun olmaz.
MTU'dan daha büyük Pingler gönderilirse ve DF Biti Set (1) yapılırsa Pinglerin tümü başarısız olur.
Quiz 1
Quiz 2
Quiz 3
Quiz 4
Quiz 5
Yorum Gönder
Yorum Gönder