Ana sayfa » IPv4 ve IPv6 Arasındaki Farklar Nelerdir
Protokoller

IPv4 ve IPv6 Arasındaki Farklar Nelerdir

ipv6

IP ve IP Adresi Nedir?

IPv4 ile IPv6 arasındaki farklara bakmadan önce Internet Protocol yani IP’nin ne olduğuna teknik açıdan değinmek yerinde olacaktır. Internet Protocol(IP), adında da anlaşılacağı üzere bir protokoldür. Nasıl ARP, HTTP, SSH, TCP, UDP bir protokol ise IP’de bir protokoldür. Hemde çok ama çok önemli bir protokoldür. Öyleki şuanda IP adresi kavramını kaldırsak hiç bir cihaz birbiri ile haberleşemez ve internet denilen kavram tamamen işlevsiz bir hale gelir.

Bir tanım yapacak olursak IP, network cihazlarının(PC, Router, modem, 3. katman Switchler, Telefon…) birbirlerini çeşitli networklerde arayıp bulabilmesi ve haberleşebilmesi için gerekli olan adres bilgileri ve bileşenlerini içeren, ağ katmanında(3. katman) işletilen bir protokoldür. Ağ katmanına kadar RFC standartlarına göre donanımsal ve yazılımsal desteği olan her cihazın bir IP adresi olmak zorundadır. IP adresi olmayan bir cihaz internete çıkamaz ve kendi networkü dışındaki diğer cihazlar ile haberleşemez. Bu kuralı matematikteki 2*2=4 kuralı ile bağdaştırabilirsiniz. Bir diğer değişmez kural ise her bir cihazın mutlaka ama mutlaka benzersiz bir IP adresi olmalıdır. Yani A cihazına verilen IP adresi B cihazına verilemez. IP ve IP adresi ile ilgili daha detaylı bilgiyi google’da biraz araştırma yaparak rahatlıkla bulabilirsiniz. Giriş bilgisi olarak bunların yeterli olacağını düşünüyorum. Şimdi teknik açıdan günümüzde geçerli ve aktif bir şekilde kullanılan IPv4 protokolünün yapısını inceleyelim.

IPv4 ve IPv6 Teknik İnceleme

IPv4 Teknik İnceleme

Yukarıda da belirttiğim gibi günümüzde aktif bir şekilde kullanılan IP versiyonu IPv4’tür. Fakat yakın zamanda IPv4 yerini daha güncel olan IPv6’ya bırakacaktır. Çünkü IPv4 kapsamında oluşturulan IP adresleri 32 bittir. Bu da 2^32(4,294,967,296) adet benzersiz IP adresi anlamına gelmektedir. Artık akıllı telefonların, laptopların, televizyonların hatta buzdolaplarının bile internete çıktığı günümüzde kullanılan benzersiz IP adresi sayısı hızla azalmaktadır. Yukarıda sayısal olarak ifade ettiğim 4 milyar küsür benzersiz IP adresi yakın bir gelecekte tükenecektir.

Yalnız bu tükenmenin azalması için çeşitli yöntemler ortaya çıkmıştır. Mesela NAT gibi protokollerin kullanımı ile birçok cihaz, tek bir benzersiz IP adresi ile internete çıkabilmektedir. Mesela evlerimizde, ofislerimizde hepimizin bir iç ağ IP adresi vardır. Bu genelde 192.168.1.0/24 subneti ile(bu değişebilir) iç ağa dağıtılır. Ve bu subnete ait tüm cihazlar evlerimizdeki modemler vasıtası ile internete tek bir IP adresinden çıkarlar. Buradaki maksat evin veya ofisin içindeki her bir cihaza unique yani benzersiz IP adresi vermek lüksünden kaçmaktır. Lakin Üniversitelerde ve çeşitli büyük firmalarda her bir cihaza ayrı bir IP adresi verilmektedir. Bu durum da o kişinin internette bıraktığı izin takibini kolaylaştırmaktadır ve yazılımsal olarak iş yükünü azaltmaktadır. Neyse bu konuları ayrı bir yazı olarak zaten yazacağım. Biz şimdi bu bilgiler ışığında IPv4 formatını aşağıdaki görselden inceleyelim.

ip başlık kısmı

Yukarıda detaylı bir şekilde IPv4’ün başlık formatını görüyorsunuz. İşte bilgisayarımızdan herhangi bir web sitesine gittiğimizde tüm bu gördüğünüz kısımlar network layer’da dolduruluyor. Şimdi maddeler halinde bu kısımların neler olduğunu inceleyelim. Daha sonra aynı burada yaptığımız gibi IPv6 protokolünün başlık formatını inceleyeceğiz ve aradaki farkları maddeler halinde yazacağız. IPv4 ile başlayalım incelemeye.

  • Version: Burası 4 bitlik bir kısımdır ve bu IP datagramının versiyonu belirtmektedir. Bu örnekte versiyonumuz 4 olduğu için buraya bit bazında”0100″ yazılacaktır. Routerlar bu kısma bakarak IP datagramının versiyonunu anlarlar ve ona göre işlem yaparlar.
  • Header Length: Burada IP datagramının sahip olduğu başlık kısmının boyutu yazılır. IPv4 versiyonu eğer bünyesinde herhangi bir options taşımıyorsa boyutu 20 byte’dır. Taşıyorsa taşıdığı kadar options bilgisi bu 20 byte’a eklenir.
  • Type of Service(TOS): 8 bitlik bir alana sahiptir ve ağları sahip olduğu hizmetler hakkında bilgilendirir. Bunlara öncelik, gecikme, güvenlik, verim gibi hizmetler örnek olarak verilebilir. Her biri ayrı bir sayı ile ifade edilir. Daha detaylı bilgi için bu linki inceleyebilirsiniz.
  • Total Length: Bu kısım ise IP datagramının 20 bytelık başlığı ile data kısmınının toplanıp elde edilen toplam değerin belirtildiği bölümdür. Örnek olarak 20 byte başlık ve 1480 byte’da data kısmında veri var ise toplam değer 1500 byte olur. Bu değerde bu kısımda belirtilir.
  • Identification, IP flag, Fragment Offset: Bu 3 kısım birbiri ile bağlantılıdır. Bazen IP datagramlarının toplam boyutu 1500 byte değerinden fazla olabiliyorlar. Bu sebepten dolayı bazı IP datagramlarının 1500 byte olacak şekilde parçalanması gerekir. Bu işleme IP fragmentation adı verilir. Bu konuyu da ayrı bir yazı olarak yazacağım. Lakin şimdilik bu bilgilerin onun için kullanıldığını bilmeniz yeterli.
  • Time To Live(TTL): Bu kısım sayesinde IP datagramları networklerde sonsuz olarak dolaşamazlar. Burada belirtilen değer her geçtiği routerda “1” azaltılır. En sonunda mutlaka 0 olacağı için 0 olduğu routerda veya başka bir cihazda drop edilir. Bu sayede networklerde gereksiz trafiğin oluşması engellenmiş olur. Ayrıca bu özellik kullanılarak tracert ve traceroute gibi uygulamalar geliştirilmiştir.
  • Protocol: Bu kısımda IP datagramının data kısmında barındırdığı protokole ait bilgiler bulunur. Mesela TCP segmenti var ise TCP protokolüne karşılık gelen 6 değeri buraya girilir. Eğer UDP segmenti var ise 17 değeri buraya girilir. Bu değere bakılarak bir üst katmana veriler taşınır.
  • Header Checksum: Buradaki değer ile matematiksel olarak IP datagramının bozulup bozulmadığı anlaşılır.
  • Source Adress: Burada bu datagramı oluşturan cihazın IP adresi bulunur. Yani kendi cihazınızın IP adresi bu kısma girilir.
  • Destination Adress: Burada IP datagramının iletilmesi gereken hedef IP adresi belirtilir. Mesela biz google.com sitesine bağlanıyorsak burada google.com sitesinin adresi bulunur.
  • IP Option: Bu kısım neredeyse hiç kullanılmaz. Lakin güvenlik, debugging ve çeşitli testlerde kullanıldığını bilmek göz çıkarmaz.
  • Data: Bu kısımda IP datagramının taşıdığı data bulunur.

Şimdi de IPv6 protokolünün başlık kısmını inceleyelim.

IPv6 Teknik İnceleme

Şimdi aynı IPv4’de yaptığımız gibi aşağıdaki görsel üzerinden IPv6 prokolünü teknik olarak maddeler halinde inceleyelim.

ipv6 başlık

  • Version: Burası 4 bitlik bir kısımdır ve bu IP datagramının versiyonu belirtmektedir. Bu örnekte versiyonumuz 6 olduğu için buraya bit bazında”0110” yazılacaktır. Routerlar bu kısma bakarak IP datagramının versiyonunu anlarlar ve ona göre işlem yaparlar.
  • Traffic Class: Bu kısım IPv4’deki Type of Service(TOS) kısmına tekabül etmektedir. Oradaki özellikler burada da geçerlidir.
  • Flow Label: 20 Bitlik ve IPv4’ten farklı olarak yeni tanıtılan bu alan performans garantisi isteyen yeni uygulamalar için kullanılacaktır. Burada belirtilen değere göre paket özel ağ güzergahlarından ve özel trafiklerden geçecektir. Kısaca belli paketlerin “best-effort” yani en etkin şekilde iletiminin sağlanması için geliştirilmiş bir etikettir.
  • Payload Length: 16 bitlik bu bölümde, 40 byte’lık IPv6 header boyutuna ek olarak data kısmındaki değer byte olarak hesaplanır ve bu 40 byte’a eklenir. Ortaya çıkan değer buraya girilir.
  • Next Header: Bu kısım IPv4 başlığındaki protocol kısmına benzer. IPv6 datagramı data kısmında taşıdığı segmentin türünü buraya girer. Eğer TCP segmenti ise 6, UDP ise 17 değeri girilir. IPv4’deki tanımlamalar burası içinde geçerlidir.
  • Hop Limit: Bu kısım ise IPv4 başlığındaki Time to Live(TTL) kısmına karşılık gelmektedir. O kısım için geçerli olan tanımlamalar burası içinde geçerlidir.
  • Destination Adress: Burada IPv6 datagramının gitmesi, ulaşması gereken IP adresi belirtilir.
  • Source Adress: Burada kendi cihazımının IP adresi bulunur. Lakin IPv4’den farkı burada 32 bit yerine 128 bitlik bir adres değeri bulunur. Adres kısmının farkını anlayabilmek için aşağıdaki görseli inceleyebilirsiniz.
IPv4 ve IPv6 adresleri arasındaki fark

IPv4 ve IPv6 Arasındaki Farklar

Şimdi ise bu özellikleri göz önünde bulundurarak IPv4 ve IPv6 arasındaki farkları ve bu farklardan meydana gelen yenilikleri maddeler halinde inceleyelim.

  • Fragmentation/Reassembly: IPv6 başlığında dikkat ettiyseniz IPv4’te olan Identification, IP flag, Fragment Offset kısımları artık yok. Ne var bunda diyebilirsiniz. Fakat bu kısımların kaldırılmasının bize ve router üreticilerine o kadar önemli ve olumlu katkıları varki, bunlara iç madde olarak değinelim.
    • Yukarıda IP fragmentation olarak bahsettiğim olay, routerlarda gerçekleşir. Mesela 4,000 byte’lık bir verinin router’ın input kısmına geldiğini varsayalım. Bu 4,000 byte’lık veri output kısmından en fazla 1500 byte’lık parçalar halinde çıkmalıdır. Bunun sebebi bir alt katman olan data-link katmanındaki protokollerde belirtilen maksimum transfer unit(MTU) değeri ile alakalıdır. Datagram networklerde bu değer 1500 byte ile sınırlıdır. İşte bu 4,000 byte’lık verinin 1480-1480-1020 byte’lık(20 bytelık header kısımları hariç) datagramlar şeklinde parçalanması router içinde gerçekleşmektedir. İşte bu olay IPv6 teknolojisi ile ortadan kalkacak. Bu durum sayesinde routerlar bir hayli performans tüketen IP fragmentation işinden kurtulacaklar. Dolayısıyla bu da trafik akışı için daha iyi performans demektir. Peki IPv6 protokolü tanımlı bir routera 4,000 bytelık veri gelirse ne olacak? İşte o zamanda bir ICMPv6 paketi oluşturulup, kaynak cihaza “File too big” mesajı yollanacak. Bu mesajı alan bilgisayarımız paketi parçalayıp tekrar yollayacaktır. Aşağıda IPv4 protokolündeki fragmentation olayı görsel olarak verilmiştir.ip parçalama
  • Header Checksum: IPv6 headerında bu kısmın olmadığını da görmüşsünüzdür. Zaten bir paket ister TCP olsun ister UDP isterse ethernet frame’i olsun bu katmanlarda checksum işlemi yapılıyor. Eğer bir sıkıntı olursa paket tekrar isteniyor. IPv4 yapısında bulunan header checksum kısmı her router’da hesaplanmak zorunda olduğu için ayrıca bir yük olarak fragmentation yanında hesaba katılabilir. Bu durumları göz önünde bulunduran mühendisler, IPv6 protokolünde, gereksiz iş yükü oluşturan bu kısmı kaldırmışlardır.
  • Options: Bu kısımda IPv6 başlığından kaldırılan bir kısımdır. Bu kısmın kaldırılması ile IPv6 başlık dosyası 40 byte’a sabitlenmiştir.

Aşağıdaki görselde IPv4 ve IPv6 arasındaki farkı anlamak açısından faydalı olacaktır.

ipv4 ve ipv6 farkı

Kırmızı kısımlar IPv6’da çıkartılan yerleri göstermektedir.

IPv4’ten IPv6’ya Geçiş ve Tunneling Tekniği

Şuanda neredeyse birçok network cihazı IPv4 protokolüne göre işlem yapıyor. Lakin IPv6 protokolünün kullanılmasının tam manası ile başlamasıyla birlikte tüm cihazların IPv6 protokolüne göre işlem yapması gerekmektedir. Günümüzde üretilen birçok cihaz fabrika çıkışı itibariyle IPv6 protokolünü bünyesinde barındırmaktadır. Lakin bazı cihazlar bu protokolü işletecek yazılım ve donanıma sahip değildir. Bu durum da IPv6 protokolüne geçiş sürecini ciddi manada baltalamaktadır. Bu geçiş sürecini çözmek ortaya çeşitli fikirler atılmıştır. Bunlar sırası ile;

  • Flag Day: Dünya genelinde belirlenen bir günde eş zamanlı olarak tüm iletişimin kapatılması ve 24 saat içinde tüm network cihazlarının IPv6 uyumlu hale getirilmesi. Tabiki bu fikrin ne kadar zahmetli ve zararlı olabileceğini düşündüğünüz vakit anlayacaksınız. Bu sebepten bu fikir direkt olarak taça çıkmaktadır.
  • Dual-Stack Approach: En mantıklı yaklaşım olan bu seçenek ise; dünya genelindeki tüm cihazların zaman içerisinde hem IPv4 protokolünü hemde IPv6 protokolünü destekleyecek şekilde revize edilmesini öngörür. Zaten günümüzde üretilen tüm cihazlar IPv6 protokolüne uygun olacak şekilde üretilir. Bu yaklaşımda her cihazın kendine ait 1 adet IPv4 1 adet de IPv6 adresi olmak zorundadır. Eğer iki cihaz haberleşecek ve bu iki cihazda IPv6 protokolünü destekliyorsa, iletişim bu protokole göre yapılır. Peki kaynak host, hedef hostun IPv6 desteğine sahip olduğunu nasıl anlayacak? İşte bu sorunun cevabı ise DNS protokolünde gizli. DNS protokolü sayesinde hostlar birbirlerinin kullandığı IP versiyonlarını öğrenebilecekler.

Şimdi ise Dual-Stack yaklaşımın en büyük sorununu ve çözümünü anlatıp konuyu bitirelim. Sorun şu; IPv6 protokolüne göre haberleşecek olan iki cihaz mutlaka routerlardan geçmek zorunda. Eğer hedefe giden bir IPv6 datagramı sadece IPv4 destekleyen bir routera denk gelirse ne olacak? Nasıl geçecek bu veri? Burada 2 farklı çözüm var bunlar da sırası ile şöyle;

  1. Exchanging
  2. Tunneling

Şimdi aşağıdaki görseli inceleyerek bu iki kavramı açıklamaya çalışalım.

dual-stack-approach

Buradaki senaryo şu; B routerına gelen IPv6 datagramı C ve D routerlarından geçip hedef olan F routerına nasıl gidecek? İlk yaklaşım olan exchanging ile IPv6 datagramındaki data kısmı IPv4 datagramının data kısmına kopyalanır. Daha sonra version, next hop, payload length, next header bilgileri muadili olan IPv4 datagramındaki kısımlara kopyalanır. Bir nevi IPv4 datagram formatına benzetme işlemi yapılır. Daha sonra ise paket gönderilir. Lakin burada flow-label kısmı kaybolur. Bu kısmın kaybolması da verinin sağlıklı bir şekilde iletilmesi için bir engeldir. Bu tarz bir yaklaşım bu sebeplerden ötürü çok tercih edilmemektedir. İşte bu yönteme ek olarak Tunneling yöntemi geliştirilmiştir.

Tunneling yöntemi ile IPv6 datagramı bir bütün halinde hiç değiştirilmeden bir IPv4 datagramının data kısmına kopyalanır. Data kısmında IPv6 datagramını taşıyan IPv4 datagramı C ve D routerlarını hiç bir sıkıntı çekmeden geçecektir. E routerına geldiğinde ise data kısmından IPv6 datagramı çıkarılacak ve yoluna hiç bir sıkıntı olmadan devam edecektir. Aşağıdaki görseli inceleyelim.

ipv6-tunneling

Yukarıdaki görselde incelendiği vakit tunneling işleminin çok daha mantıklı olduğu gözükmektedir. Buradan çıkarılması gereken bir ders var. Gördüğünüz gibi network katmanında yapılacak bir değişiklik tüm dünyayı etkilemektedir ve bu değişimin mevcut sisteme adapte edilmesi ise yılları alabilmektedir. Bu işlemin ne kadar zor olduğunun bu örneklerden de anlaşıldığını ümmit ediyorum. Umarım IPv4 ve IPv6 arasındaki farkları teknik bir şekilde anlatabilmişimdir. Bir sonraki yazımda görüşmek üzere.

Yazar Hakkında

Hakan İlbiz

Siber güvenlik, linux, programlama ve network gibi bilgisayar bilimlerini kapsayan alanlarda yaptığı çalışmalardan edindiği tecrübeleri, kurucusu olduğu kodputer.com adlı web sitesinde okurlarına sunan ve bundan büyük bir haz duyan Sakarya Üniversitesi Bilgisayar Mühendisliği öğrencisi.

Yorum Ekle

Yorum Yazmak İçin Tıkla