İçerikleri sosyal medya üzerinden paylaşarak daha fazla kişiye ulaşmasına yardımcı olabilirsiniz.



Folder Security Management
Kategori: Network
Fırat Boyan 29.05.2018 0

Bitwise AND ile Network ID Hesaplama Nasıl Yapılır?

IP adresleri, Network üzerindeki cihazların birbiriyle iletişim kurmasını sağlayan temel bileşenlerdir. IPv4 protokolü 32 Bit değerinde bir adresleme alanı kullanırken IPv6, 128 Bit değerinde bir adresleme yapısı sunar. IPv4 adresleri, 4 adet 8 Bit'lik Octet'ler halinde gösterilir ve her Octet, 0 ile 255 arasında değişen bir değeri temsil eder. Bu yapı sayesinde her cihaz, belirli bir Network içerisinde tanımlanır ve bu tanımlama, veri paketlerinin doğru hedefe yönlendirilmesini mümkün kılar. İletişimin sorunsuz devam edebilmesi için, IP adreslerinin doğru yapılandırılması kritik öneme sahiptir.

Subnetting, özellikle büyük ölçekli Network'lerde IP adreslerinin daha verimli kullanılması için kullanılan temel yöntemlerden biridir. Bu işlem, geniş bir IP bloğunu daha küçük ve yönetilebilir Subnet'lere ayırarak hem adres yönetimini kolaylaştırır hem de trafik yoğunluğunu azaltır. Subnetting işlemi, IP adresinin Network ve Host bölümlerini tanımlayan bir Subnet Mask üzerinden gerçekleştirilir. Örneğin 255.255.255.0 gibi bir Subnet Mask, ilk üç Octet’in Network kısmına, son Octet’in ise Host kısmına ait olduğunu belirtir.

Bu yapı içerisinde Network ID ve Broadcast adresleri gibi kavramlar önemli rol oynar. Network ID, belirli bir Subnet'e ait cihazların tanımlandığı ilk adresi; Broadcast adresi ise aynı Subnet içindeki tüm cihazlara veri göndermek için kullanılan son adresi ifade eder. Her Subnet’in kendi Network ID ve Broadcast adresi vardır ve bu yapılar, IP aralıklarının nasıl dağıtılacağını belirler.

Bir IP adresinin hangi Subnet içinde yer aldığını anlamak, yalnızca dıştan görünen adres yapısına bakarak tespit edilebilecek bir durum değildir. Bu belirleme, hem manuel hesaplamalarla hem de işletim sistemi düzeyinde, özellikle Kernel Mode'da gerçekleşen bit düzeyinde bir işlemle yapılır.

Temel süreçte, IP adresi ile Subnet Mask Binary düzlemde bit bit AND işlemine tabi tutulur. Bu işlem sonucunda ortaya çıkan Network ID, IP paketinin Local Network (LAN) içinde mi kalacağı yoksa Routing Table (yönlendirme tablosu) üzerinden Wide Area Network (WAN) yönünde mi iletileceği kararının verilmesinde kullanılır. Bitwise hesaplama (AND'leme), yalnızca sayısal bir eşleştirme değil; veri iletim yönünün, geçiş noktalarının ve çıkış yollarının sistem tarafından belirlenmesini sağlayan temel karar mekanizmasıdır.

İşletim sistemi, bu karşılaştırmayı Kernel Mode üzerinden gerçek zamanlı olarak gerçekleştirir. Bir hedef IP adresi alındığında, sistem öncelikle bu adresin mevcut Subnet ile aynı Network ID’ye sahip olup olmadığını kontrol eder. Eşleşme durumunda paket doğrudan gönderilir; aksi durumda, Routing Table'a (yönlendirme tablosuna) başvurularak uygun çıkış yolu belirlenir. Tüm bu sürecin merkezinde, görünmeyen ama sürekli çalışan bir AND'leme işlemi yer alır.

Manuel AND'leme ise bu yapının mantığını kavramak açısından oldukça değerlidir. Özellikle çoklu Subnet içeren Network mimarilerinde, IP adreslerinin yalnızca son Octet farkıyla değil, Subnet Mask seviyesinde ayrıldığı sıklıkla göz ardı edilir. Oysa bu farklar; Broadcast Domain sınırlarından, yönlendirme politikalarına, erişim denetimlerinden adres segmentasyonuna kadar pek çok yapıyı doğrudan etkiler. Bu yüzden manuel AND'leme, sadece ait olunan Network’ü görmek için değil; aynı zamanda mimarinin nasıl yapılandırıldığını kavramak için önemli bir araçtır.

Subnetting süreci, yalnızca adresleme verimliliğini artırmakla kalmaz; aynı zamanda Network'ün performans optimizasyonuna ve güvenlik politikalarının uygulanabilirliğine doğrudan katkı sağlar. Her bir Subnet, kendi erişim kuralları ve segmentasyon yapısıyla ayrı değerlendirilebilir. Bu da genel Network yönetimini daha tutarlı, esnek ve güvenli hale getirir.

Bu makalede, hem IP adresi ile Subnet Mask arasındaki ilişkiyi manuel olarak nasıl yorumlayabileceğimizi hem de işletim sisteminin bu işlemi Kernel Mode'da nasıl yorumlayarak Routing kararlarını şekillendirdiğini detaylı biçimde ele aldım. Konuyu sadece bir IP hesaplama pratiği olarak değil, Network trafiğinin yönünü belirleyen temel karar adımlarından biri olarak değerlendirmek gerekir.

Örneğin, 192.168.10.1 /28 - 192.168.10.14 /28 IP aralığındaki 192.168.10.10 /28 IP adresinin 1. Network olan 192.168.10.0 /28 Network ID'sine ait olduğunu görelim. Bunu yaparken, AND'leme işlemine tabi tutacağımız IP adresi ile, Subnetting işleminden sonra elde ettiğimiz yeni Subnet Mask adresinin Binary değerlerini çıkartmamız gerekiyor.

Burada bahsedilen Binary değerlerini çıkartmak, IP adresini ve Subnet Mask'ı Decimal sistemden Binary sisteme çevirmek anlamına gelir. Çünkü AND'leme işlemi yalnızca Binary düzlemde çalışır. Yani bu işlemi yapabilmek için, her bir Octet’in karşılık geldiği 8 Bit'lik Binary değeri bulmamız gerekir.

Bir Octet, en fazla 8 Bit uzunluğundadır ve bu 8 Bit, 27'den 20'a kadar olan ağırlıklı değerleri temsil eder. Her Bit'in bu pozisyonel değeri, Binary sistemde sayısal karşılıkların hesaplanmasında doğrudan kullanılır. Aşağıda, bu pozisyonların hem üs olarak hem de decimal karşılıklarıyla birlikte gösterildiği daha açıklayıcı bir tablo yer almaktadır. 

Bit Pozisyonu 7 6 5 4 3 2 1 0
Değer (2n) 27 = 128 26 = 64 25 = 32 24 = 16 23 = 8 22 = 4 21 = 2 20 = 1

Bu tabloya göre, örneğin 10 sayısını Binary’ye çevirmek için şu adımları izleriz:
 

Karşılaştırma Bit Değeri Açıklama
10 içinde 128 yok 0  
10 içinde 64 yok 0  
10 içinde 32 yok 0  
10 içinde 16 yok 0  
10 içinde 8 var 1 10 - 8 = 2 kaldı
2 içinde 4 yok 0  
2 içinde 2 var 1 2 - 2 = 0 kaldı
0 içinde 1 yok 0  

 

➜ IP Adresi
192 168 10 10
➜ Binary 
11000000 10101000 00001010 00001010
➜ Subnet Mask
255 255 255 240
➜ Binary
11111111 11111111 11111111 11110000


👉 AND'leme İşlemi:

AND'leme (Bitwise AND) kuralı, sayısal mantık devreleriyle birebir örtüşen temel bir Boolean işlemi mantığına dayanır. Bu işlem, iki Bit’in aynı anda 1 olması durumunda 1 üretir; diğer tüm kombinasyonlarda sonuç 0 olur. Bu işlem, dijital elektronik devrelerde AND gate (mantıksal kapı) ile fiziksel olarak uygulanır ve bilgisayarların işlemcilerinde donanım düzeyinde yürütülür.

1 + 1 = 1
1 + 0 = 0
0 + 1 = 0
0 + 0 = 0

Elde ettiğim bu Binary değerlerini alt alta koyarak sağlamasını yapıyorum.  

IP Adresi 11000000 10101000 00001010 00001010
Subnet Mask 11111111 11111111 11111111 11110000
Sonuç 11000000 10101000 00001010 00000000
Network ID 192 168 10 0

IP adresi ve Subnet Mask'ın AND'lenmesi sonucunda Binary değerlerin Decimal karşılığı bize 192.168.10.0 /28 Network ID'sini vermektedir. Bu sağlama ile 192.168.10.10/28 IP'sinin 1. Network olan 192.168.10.0 /28 Network ID'sine ait olduğunun sağlamasını yaparak, kanıtlamış olduk.

Bu sefer de, 192.168.10.1 /28 – 192.168.10.14 /28 IP aralığında yer almayan 192.168.10.20 /28 IP adresinin, 1. Network olan 192.168.10.0 /28 Network ID’sine ait olmadığını göstermek için aynı mantıksal süreci izlememiz gerekir. Bu IP adresi ilgili aralığın dışında kaldığı için, yapılacak AND'leme işlemiyle farklı bir Network ID'ye ait olduğu Binary düzeyde net biçimde ortaya konabilir. Bunun için, IP adresi ile Subnetting işleminden sonra elde edilen Subnet Mask’in Binary karşılıklarını kullanarak AND'leme işlemini uygulamamız yeterlidir.

➜ IP Adresi
192 168 10 20
➜ Binary
11000000 10101000 00001010 00010100
➜ Subnet Mask
255 255 255 240
➜ Binary
11111111 11111111 11111111 11110000


👉 AND'leme İşlemi:

Elde ettiğim bu Binary değerlerini alt alta koyarak sağlamasını yapıyorum.

IP Adresi 11000000 10101000 00001010 00010100
Subnet Mask 11111111 11111111 11111111 11110000
Sonuç 11000000 10101000 00001010 00010000
Network ID 192 168 10 16

Şimdi bu hesaplamanın, gerçek bir IP Packet gönderimi sırasında işletim sisteminin içinde nasıl uygulandığını görmek gerek. Çünkü bu matematiksel kıyaslama, yalnızca manuel bir kontrol değil; aynı zamanda sistemin her IP paketinde otomatik olarak yaptığı bir yönlendirme kararıdır.

Bu yüzden, IP bilgileri işletim sistemi içinde nerede tutulur, bu bilgiler nasıl işlenir, AND'leme karar süreci nasıl yürütülür ve sonrasında veri gerçekten nasıl gönderilir sorularını adım adım açıklayarak, süreci Registry'den RAM'e, oradan Routing Kararına, en sonunda da NIC seviyesine kadar detaylı şekilde ele alalım.

Windows'ta Bitwise AND Hesaplama Süreci

Bitwise AND hesaplama, yalnızca bir matematiksel işlem değil; Windows işletim sisteminde bir IP Packet'in hangi yöne gönderileceğine karar veren temel mekanizmadır. Bu karar, Client’ın hedef IP Address için kendi Subnet içinde mi yoksa dışında mı bir yol izlemesi gerektiğini belirler. İşlem yüzeyde basit görünse de Windows Kernel, bu süreci sistemsel düzeyde ve gerçek zamanlı olarak yönetir.

Bir IP Packet, Windows TCP/IP Stack üzerinden çıkmadan önce, Kernel, Hedef IP doğrudan erişilebilir mi? yoksa bir Default Gateway aracılığıyla mı gönderilmeli? sorusunu net olarak yanıtlamalıdır. Bu kararın merkezinde Bitwise AND hesaplama vardır. İşletim sistemi, hedef IP Address ile yerel Subnet Mask arasında bit düzeyinde AND işlemi yapar. Aynı işlem, Client’ın kendi IP Address’i ile Subnet Mask’i arasında da uygulanır. Ortaya çıkan iki Network ID karşılaştırılır. Eşleşiyorsa hedef, aynı Subnet içindedir; paket doğrudan gönderilir. Eşleşmiyorsa Windows, bu paketi Routing Table’da tanımlı bir rota üzerinden yönlendirmeye çalışır. Tanımlı özel bir rota yoksa, karar doğrudan Default Gateway’e yönelir.

Burada dikkat edilmesi gereken nokta, Default Gateway tanımının kullanıcı arayüzünde görünen statik bir IP Address olmaktan ibaret olmamasıdır. Windows Kernel, bu adresi yalnızca varsayılan çıkış noktası olarak değil, aynı zamanda Routing Table’da tanımlı herhangi bir rota bulunmadığında başvurulacak genel rota olan 0.0.0.0/0 olarak değerlendirir. Hedef IP Address, Routing Table’daki başka bir satırla eşleşmiyorsa ya da Subnet dışındaysa, Kernel paketi doğrudan Default Gateway Interface’ine yönlendirir.

Bu karar, Windows’un Network Stack içinde Routing Decision Engine tarafından verilir ve işlem tamamlandığında paket NIC sürücüsü üzerinden çıkışa hazırlanır. Eğer fiziksel adres bilinmiyorsa, ARP süreci tetiklenir ve MAC adresi çözülür. Fakat tüm bu sürecin tetikleyicisi hala aynı yerdedir: Bitwise AND hesaplama sonucunda yapılan Subnet karşılaştırması.

Yani IP iletişiminin en temel ayrımı şudur: Paket doğrudan mı gönderilecek, yoksa Default Gateway üzerinden mi yönlendirilecek? Windows üzerinde her IP çıkışında bu karar ilk adımda verilir. Bitwise AND hesaplama bu yönüyle yalnızca bir protokol işlemi değil, aynı zamanda yönlendirme mantığının tetikleyicisidir. Bu kararın uygulanma noktası ise her zaman tanımlı olan Default Gateway Interface’idir.

1. IP ve Subnet Bilgileri İlk Olarak Registry’ye Yazılır

Kullanıcı, bir NIC'e manuel olarak IP adress, Subnet Mask ya da Default Gateway tanımladığında veya DHCP üzerinden bu bilgiler geldiğinde Windows, bu değerleri önce kalıcı olarak Registry’ye yazar. Bu kayıtlar şu yoldadır:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{GUID}

Windows'ta AND'leme Süreci

Yani burada her Network arayüzü için bir konfigürasyon saklanır. Ama bu veriler, paket iletimi sırasında aktif kullanılmaz. Registry, sadece bir depo gibidir; kararlarda söz sahibi değildir.

Aşağıdaki PowerShell komutunu kullanarak, Registry'de {GUID} altında tutulan bu IP, Subnet Mask, Default Gateway ve DNS gibi bilgileri sistem üzerinden kolayca görüntüleyebilirsiniz. Bu komut, doğrudan Registry'yi okumasa da aynı verileri TCP/IP yapılandırmasından çekerek kullanıcıya sunar.

Get-NetIPConfiguration -InterfaceAlias "Wi-Fi"; (Get-NetAdapter -InterfaceAlias "Wi-Fi").InterfaceGuid

Windows'ta AND'leme Süreci

2. Bilgisayar Açıldığında tcpip.sys Devreye Girer

Sistem açıldığında ya da ağ bağdaştırıcısı etkinleştiğinde, işletim sistemi çekirdeğinde çalışan tcpip.sys dosyası bu Registry kayıtlarını okur. Bu sürücü:

C:\Windows\System32\drivers\tcpip.sys

yolunda bulunur ama aslında bir dosya değil, bir çekirdek modülüdür. Yani çalışmaya başladığında RAM’e yüklenir ve artık canlı bir sistem bileşeni gibi davranır.

Windows'ta AND'leme Süreci

İşte tcpip.sys, bu IP ve Subnet bilgilerini Registry'den çekip RAM'de kendine ait veri yapıları içine yerleştirir. Bundan sonra sistemin vereceği tüm Routing kararları, bu RAM'deki güncel bilgilerle çalışır.

3. Bu Bilgiler RAM’de Nasıl Tutulur ve Kullanılır?

tcpip.sys, her bir NIC için bellekte özel bir yapı bloğu oluşturur. Bu yapıların içinde:

✔ IP address
✔ Subnet Mask
✔ Default Gateway
✔ Interface Index

gibi bilgiler tutulur. Bu bilgiler her paket iletiminde, diskten değil, doğrudan RAM'den çekilir. RAM üzerinde işlemek demek, bu yapıların CPU tarafından anlık olarak okunması, işlenmesi ve karar verilmesi demektir. Yani karar, CPU’da verilir.

İşlemci, RAM'deki verileri kendi Register'larına çeker; işlemi, Bitwise AND hesaplama işlemi dahil, burada yapar. Bitwise AND hesaplama, RAM’de duran source_ip ve subnet_mask gibi değerlerin CPU’da karşılaştırılmasıyla yapılır.

✅ IP address, Subnet Mask gibi bilgiler, tcpip.sys tarafından RAM'de yapılandırılmış veri bloklarında tutulur.
✅ İşlemci bu bilgileri RAM'den okur, CPU’nun kendi Register’larına çeker.
✅ Bitwise AND işlemi doğrudan CPU’da gerçekleşir.
✅ Sonuç tekrar RAM'de karşılaştırılır ya da yönlendirme kararında kullanılır.

4. Routing Kararı ve Bitwise AND İşlemi Tam Olarak Burada Başlar

Bir uygulama, bir dış IP adresine veri göndermek istediğinde sistem, önce OSI Transport Layer üzerinden gelen segmenti IP Packet haline getirir. Ardından OSI Network Layer tarafına geçilir. Tam bu aşamada işletim sistemi, bu hedef IP adresinin Network'te olup olmadığını anlamak için şu adımları izler:

1. source_ip (örnek: 10.10.10.10)
2. destination_ip (örnek: 10.10.20.5)
3. subnet_mask (örnek: 255.255.255.0)

Ardından RAM içinde bu iki Network ID karşılaştırılır:

✔ Eşitse → Paket aynı Network'e gider → ARP süreci başlar → Hedef MAC çözülür.
✔ Farklıysa → Paket başka Network’e yönlendirilir → Default Gateway MAC adresi çözülür.

Bu işlem Windows çekirdeği (Kernel) içindeki RtLookupRoute(), IppFindBestInterface() gibi fonksiyonlar aracılığıyla yürütülür ve tamamen tcpip.sys'in RAM'deki yapıları üzerinden ilerler.

5. NIC Bu Sürecin Hiçbir Yerinde Karar Verici Değildir

NIC (Network Interface Card), yukarıda anlatılan hiçbir karara dahil olmaz. O sadece işletim sisteminden aldığı Ethernet Frame’i fiziksel ortamda iletmekle sorumludur.

👉 Network Interface Card (NIC):

❌ IP bilmez
❌ Subnet Mask anlamaz
❌ Routing kararı veremez
❌ AND işlemi yapmaz

NIC'e sadece "şu hedef MAC adresine bu Frame'i gönder" denir. İşletim sistemi, NIC’e veri gönderme talimatını vermeden önce aslında çoktan onlarca teknik adımı tamamlamış olur. source_ip ve destination_ip bilgileri alınır, subnet_mask ile yapılan Bitwise AND (AND'leme) işlemiyle Network ID’ler hesaplanır, hedefin aynı Network'te olup olmadığı anlaşılır. Bu kontrol sonucuna göre ya doğrudan gönderim yapılır ya da paket önce Default Gateway’e yönlendirilir. Eğer gerekirse hedefin ya da Default Gateway MAC adresi, ARP ile çözülür ve Ethernet Frame, bu bilgilerle hazırlanır.

Tüm bu işlemler, işletim sisteminin çekirdeğinde çalışan tcpip.sys modülü tarafından gerçekleştirilir. IP bilgileri RAM üzerinde yapılandırılmış veri bloklarında tutulur. CPU, bu bloklardan verileri okur, hesaplamayı kendi içinde yapar ve sonucu yine RAM'deki yapılar üzerinde değerlendirir. Bu süreçte sabit diske dönülmez, herhangi bir dış bileşene ihtiyaç duyulmaz. Her karar çekirdek katmanda, milisaniyeler içinde alınır.

Network Interface Card (NIC), bu sürecin içinde hiçbir zaman aktif bir aktör değildir. Ne karar verir, ne kıyas yapar, ne yön belirler. NIC, sadece işletim sisteminden gelen hazır Ethernet Frame’i fiziksel ortama iletmekle görevlidir. Ona yalnızca hedef MAC adresiyle birlikte veri verilir ve o bunu taşır. Ne subnet_mask bilir, ne IP yorumu yapar, ne de Routing mantığına dair bir katkısı vardır.

Bu kadar görünmez ve hızlı ilerleyen bir süreçte bile sistem, her IP paketinde aynı kontrolü yeniden yapar. Çünkü IP iletişimi ezbere değil, her defasında yapılan hesaplamaya göre yönlendirilir. Bitwise AND hesaplama işlemi de bu karar sürecinin en temel adımıdır. Paket dış dünyaya çıkmadan önce, işletim sistemi RAM'deki verileri kullanarak hedefin nerede olduğunu hesaplar ve hangi yöne gideceğini belirler. NIC ise yalnızca bu kararın sonucunu fiziksel olarak ileten son duraktır.

Faydalı olması dileğiyle...


Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.



Yazar Hakkında

firatboyan.com


1985 yılında Alanya'da doğdum. İlk, orta ve lise öğrenimimi Alanya'da tamamladım. Liseden mezun olduktan sonra Akdeniz Üniversitesi Bilgisayar Teknolojisi Ön Lisans programına yerleştim ve bu programdan mezun oldum. Ön Lisans programından mezun olduktan bir süre sonra Dikey Geçiş Sınavı (DGS) ile İstanbul Teknik Üniversitesi (İTÜ) Bilgisayar Mühendisliği Lisans programına yerleştim.

2003 yılından beri Bilgi Teknolojileri sektöründe Sistem ve Network alanlarında çalışıyorum. Bir çok firma bünyesinde onlarca farklı projelerde yer alarak bu alanda yıllar içinde ciddi bir bilgi birikimi ve deneyimler kazandım. Bilgi Teknolojileri sektöründeki profesyonel çalışma hayatımın uzunca bir dönemini entegratör firma bazında, ağılıklı olarak Microsoft ürünleri üzerine danışman olarak sürdürüyor ve yüksek seviyeli projeler geliştiriyorum. Uzunca bir süredir de Türkiye'nin önde gelen entegratör firmalarından olan Data Market bünyesinde Senior Cloud Engineer olarak çalışıyorum.

Ek olarak, 2015 yılında Network Akademi bünyesinde Microsoft Certified Trainer (MCT) ünvanı ile Sistem ve Network Uzmanlık eğitimleri vermeye başladım. Sistem ve Network Uzmanlığı alanındaki eğitmenlik serüvenime Network Akademi bünyesinde devam etmekteyim.

YORUMLAR
Bu makaleye henüz yorum yapılmadı! İlk yorum yapan sen ol.
Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.


750 karakter yazabilirsiniz.
Captcha
Güvenlik kodunu BÜYÜK harflerle giriniz.
* Yorumlar, onaylandıktan sonra yayınlanmaktadır.
* E-posta, yorum onay bildirimi için gereklidir. Yayınlanmaz.