Yusuf Bülbül

An Engineer

Ağ Yığını(Network Stack) ve Uygulamaları

Genellikle bir yazıyı yazmaya başlamadan önce, yazacağım konu hakkında İnternetten genel bir araştırma yapıyorum. İnsanlar bu konular hakkında neler sormuş ve neler araştırmış diye bakıyorum.  Bu şekilde göz atarken insanların genellikle bios ayarlarındaki “Network Stack” seçeneği ile ilgili sorularıyla karşılaştım.  Konuya giriş yapmadan önce,  bu seçeneğin ne olduğundan kısaca söz edeyim.  Bios’daki bu seçenek, bilgisayarın internet üzerinden “boot” kontrolüne izin vermesine yarayan oldukça tehlikeli bir ayarı kapsıyor. Olayı birazdan biraz daha açacağım. Ağ ile ilgili çok fazla bilginiz yoksa bu yazıyı okuduktan sonra söylediklerim kafanızda daha da netleşecektir.

Aslında okumaya  başlamadan önce, bu yazıya göz atmanızı öneririm. İnternet dediğimiz olgu, içerisinde milyarlarca makina ve bilgisayarı kapsayan devasa bir iletişim platformuna verdiğimiz isimdir aslında.  Ve bu çılgınlık, belki 5G ile giderek çok daha fazla makineyi kapsayan çok daha çılgın bir platforma dönecek.  İnternet,  içerisinde birbiriyle konuşan bu kadar farklı cihazın olması nedeniyle çok sağlam iletişim protokollerine ihtiyaç duymuştur. Protokol dediğim şey, verilerin belli bir kurala göre gönderilip alınmasıdır.  Örneğin İnternet üzerinden Netflix gibi film servisleri kullanıyoruz. Aynı şekilde, Web tarayıcı kullanarak İnternet sayfalarına giriyoruz. Diğer yandan, Spotify gibi servisleri kullanarak müzik dinliyoruz ya da Skype ile telekonferans yapıyoruz.  İnternet üzerinden belki dünyanın diğer ucuna gönderip aldığımız bu veriler, oldukça farklı yapılara sahip.  Birisi içinde video verisi barındırırken diğeri yazı verisi, başka birisi ise canlı ses verisi içeriyor. Bütün bu verileri, kategorilere ayırarak, belli bir kurala göre  düzenlemeden belki binlerce “router” içerisinden geçirip dünyanın diğer ucuna göndermek imkansız. Bu verilerin birbirine karışmayıp her veri modülü ya da parçasının ilgili makina ya da bilgisayar tarafından anlaşılabilmesi için ağ yığını(Network Stack) dediğimiz yapı oluşturulmuştur. İnternet’e gönderilip İnternetten alınan verilerin  iç içe geçmiş,  başlarına ve sonlarına belirteçler ya da işaretler konulmuş bir yapıya dönüştürülmüş haline ağ yığını diyoruz.  Bu yapı aslında matruşka bebeklerine benziyor. Bilmeyenler için Matruşka, içerisinden daha küçük bebekler çıkan bebek oyuncaklar diye söyleyelim.  İnternetteki veri protokolleri de bu şekle bürünmüştür. Yığın denmesinin sebebi budur aslında. Üst üste katmanlar şeklinde olduğu için.

Yukarıda  internet  fiziksel soketinden gönderilen en alt katmandaki veri çerçevesini görüyorsunuz. İsmine fiziksel katman dediğimiz bu katman,  donanım bazında verilerin CPU ile ayarlanıp internet donanımına ya  da kablosuz ağ  ile ilgili donanıma  transferi ile ilgili protokollerle bağdaştırılır. Mesela kendi tezimden örnek verebilirim. Şu anda 802.15.13 standardını uyarlıyorum. Bu standart, verilerin optik kablosuz ağlarda nasıl transfer edileceği ile alakalı fiziksel ve  Mac katmanını kapsıyor. Yukarıdaki çerçeve tabi ki kablosuz ağlar için farklı bir standarda göre değişiyor.

Fiziksel katmanın bir üstünde Mac dediğimiz  katman bulunur. Bu katman ise cihaz ve router arasındaki en temel internet haberleşme verilerini içerir. Dikkat ettiyseniz fiziksel katman, donanımlar arasındayken Mac bir üst seviyede artık cihazla router arasındaki  kısımla ilgileniyor. İnternette herhangi bir yere veri gönderdiğinizde bu veri düzinelerce router dan geçer.  Aslında bu olayı uzaya fırlatılan füzeler gibi düşünebilirsiniz. Her katmanda füze nasıl bir parçasını bırakıyorsa verilerin de bu şekilde ilgili katmanda ilgili cihazlar tarafından ilgili parçası açılır.

 

Mac katmanından sonra artık veriler ağlar arasında dolaşmaya hazırlanmaya başlar. Bu katmana ise ip katmanı diyoruz. Artık verimiz routerdan çıkarak istenilen cihaz adresine gönderilmek üzere paketlenir. İstenilen cihaz. ağ içerisindeki bir cihaz adresi de olabilir tabi  ki. Eğer ağ dışında ise, paket NAT işlemine tabi tutulur. Bu konuyu sayfanın başında verdiğim adreste anlatmıştım.

Ip katmanının üzerinde transport katmanı dediğimiz verilerin, transfer algoritmaları doğrultusunda kontrol mekanizmalarına göre ayrılıp paketlendiği katman vardır. Bu katmanlar genellikle makinalardaki alt seviyedeki yazılımların haberleşmesinde rol alır.

Transport katmanının üzerinde ise nihayet uygulama katmanı bulunuyor. İşte bu katmanda artık veriler çeşitlerine göre ayrılır. Her uygulama kendi çeşit verisini üretir ve en üst katmanda haberleşir.

Eğer veriler bu şekilde katmanlara ayrılmasaydı, internet üzerinden milyarlarca makinanın haberleşmesi imkansız olurdu. Çünkü bu tasarımlar tamamen ihtiyaç doğrultusunda geliştirilmiştir.

Şu anda bilgisayarınıza giren ya da çıkan verileri katman katman kendiniz incelemek istiyorsanız “wireshark” ismindeki programı kullanabilirsiniz. Bu program ağı dinlemek ve verileri takip etmek için kullanılıyor. Hackerllar çoğunlukla bu tarz programlar kullanırlar.

Aslında yukarıda anlattığım sistemin bir çok güvenlik açığı bulunuyor. Bu yüzden paketler ağ üzerinde izlenerek manipüle edilebiliyor. Eğer ağ yığın yapısını iyi bir şekilde biliryorsanız, paketleri çok güzel bir şekilde manipüle edebiliyorsunuz. Neyse, bu ayrı bir yazının konusu olsun. 

Şimdilik Bios ayarlarındaki “Network Stack” ayarına dönecek olursak; bu ayar bios programını PXE protokolüne açıyor.  Büyük ağlarda genellikle bir PXE sunucusu olur. Tıpkı DHCP sunucusu gibi. Bu sunucu,  Bios’daki bu ayarları açık olan bilgisayarlara bilgisayar kapalı olsa bile çalıştırabilecek mesajlar gönderebilir. Bios, bilgisayarın ana kartındaki gömülü bir mikrodenetleyicide bulunur ve işletim sisteminin “bootloader” ını yükleyen program olduğu için bilgisayar bu program tarafından açılabilir. Yani uzaktaki bir bilgisayardan herhangi bir bilgisayara kapalıyken de açılması için PXE protokolünde komut gönderebilirsiniz. Kulağa tehlikeli geliyor değil mi?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Copyright © Tüm Hakları Saklıdır.