"Enter"a basıp içeriğe geçin

IPv4 Ağ ve Yayın Adresi Hesaplama

Bundan birkaç yıl önce üniversitede bilgisayar ağları dersi uygulama saatlerinde öğrencilere IPv4 adresleri konusuyla ilgili soru çözmeleri için basit bir program hazırlamıştım. Program her çalıştırıldığında rastgele bir IPv4 adresi ve 255.255.0.0 ile 255.255.255.240 arası bir alt ağ maskesi üretiyor ve bu iki bilgiden yola çıkarak sırayla bu IP adresinin üyesi olduğu ağın ağ adresi ile yayın adresini hesaplayarak girilmesini istiyor.

Hesaplama işleminin nasıl yapıldığını daha rahat anlayabilmek için için örnek olarak 172.25.168.36/255.255.254.0 adresini ikili tabanda alt alta görelim:

172.25.168.36 -> 10101100.00011001.10101000.00100100
255.255.254.0 -> 11111111.11111111.11111110.00000000

Alt ağ maskesinde 1’ler ile gösterilen sol bölge ağ tarafını, 0’lar ile gösterilen sağ bölge ise cihazlara verilebilecek adreslerin bölgesini gösterir. Her iki adresi mantıksal AND işleminden geçirdiğimizde bu adresin üyesi olduğu ağın adresini elde ederiz:

10101100.00011001.10101000.00000000 -> 172.25.168.0

IP adresi üzerinde, alt ağ maskesinde 0’lara denk gelen kısımların tamamını 1’e çevirdiğimizde ise, bu ağın sahip olduğu en son adres olan yayın adresini elde ederiz:

10101100.00011001.10101001.11111111 -> 172.25.169.255

Aslında ağ adresi ve yayın adresleri, bir alt ağa ait olan ilk ve son adreslerdir ancak bu adreslerin özel görevleri olduğu için ağdaki hiç bir cihaza verilmezler; cihazlar sadece bu ikisi arasında kalan adresleri alabilirler:

10101100.00011001.10101000.00000000 -> 172.25.168.0 (ağ adresi)
10101100.00011001.10101000.00000001 -> 172.25.168.1
10101100.00011001.10101000.00000010 -> 172.25.168.2
                 .
                 .
                 .
10101100.00011001.10101001.11111101 -> 172.25.169.253
10101100.00011001.10101001.11111110 -> 172.25.169.254
10101100.00011001.10101001.11111111 -> 172.25.169.255 (yayın adresi)

Kodlar GitHub hesabımda https://github.com/efeciftci/ip-subnet-exercise/ adresinde yer alıyor. C dilinde hazırladığım uygulamayı gcc gibi bir derleyiciyle derleyip bu örnek ile çalıştırırsak:

$ gcc ip-subnet-exercise.c -o ip-subnet-exercise
$ ./ip-subnet-exercise
IP address : 172.25.168.36
Subnet mask: 255.255.254.0
Network address: 172.25.168.0
Broadcast address: 172.25.169.255
Good job!

Girilen yanıtlarda hata yapılması durumunda kullanıcıya doğru yanıt da gösteriliyor:

IP address : 172.21.76.215
Subnet mask: 255.255.240.0
Network address: 172.21.76.0
Broadcast address: 172.21.76.255
Network address is incorrect! The answer is 172.21.64.0
Broadcast address is incorrect! The answer is 172.21.79.255

Ayrıca, sisteminizde PyQt5 ve PyQt5’in ihtiyaç duyduğu diğer kütüphaneler (Qt5 vs) kurulu ise (Kubuntu, Neon gibi GNU/Linux dağıtımlarında hazır kurulu geliyorlar 🙂) grafik arayüz eşliğinde de uygulamayı çalıştırmanız mümkün:

$ python3 ./pyqt5/mainApp.py
Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Time limit is exhausted. Please reload CAPTCHA.