Bilgisayar Ağları Nasıl Çalışır - Sayfa 2 PDF Yazdır e-Posta
Cuma, 25 Ağustos 2006 00:33
Makale İçeriği
Bilgisayar Ağları Nasıl Çalışır
Sayfa 2
Sayfa 3
Tüm Sayfalar
 

Veri paketleri(Frame)

Ağ kartları veriyi kablo üzerinde sinyaller halinde iletiyor dedik, peki sinyaller dolayısıyla veri, karşı tarafa nasıl ulaşıyor? 

Karşıya yollanacak veri, örneğin ağ üzerinden karşı makinaya kopyalanan bir Word dosyası, tek parça halinde gönderilmez. Sabit boyutta küçük parçalara bölünür ve bu parçaralara da bazı ek bilgiler eklenerek gönderilir. Bu veri blokları da veri paketi(frame veya ethernet frame) olarak adlandırılır.

Veriler ağ üzerinden sabit yapıda paketler(frame) halinde iletilirler dedik, aslında bu paket aktarılacak veriyi ve diğer gerekli bilgileri içeren bir sinyal bloğudur.  Ağ kartı bu veri paketlerini oluşturur, yollar ve gelen paketleri alıp işler.

İsterseniz ağ kartını aşağıdaki gibi bir karikatürle temsil edelim.  Veri paketleri burada hazırlanıp yollanıyor ve gelen paketler işleniyor. Ağ kartı içinde bu işleri yapan bir elemanımız da olsun(ismi Ethem-doğal olarak.... :) ).

İşte MAC adresi bu paketler oluşturulurken önem kazanır. Altta diğer yazılı kaynaklarda karşınıza çıkabilecek klasik bir paket tasviri görüyorsunuz. Her bir bölüm bir ve sıfırlardan oluşuyor ve paketin(frame'in) bir parçası.

Ağ kartı veri paketi (Frame) yapısı

 

1110001011011
11011011101100
110101101110110111101110001110111011
1101
Alıcının MAC adresi
Göndrenin MAC adresi
Veri
CRC

Frame'in tamamı aslında bir ve sıfırlardan, yani elektrik sinyallerinden oluşuyor.  Bu sinyaller dizesinin ilk bölümü frame'i alması gereken bilgisayarın MAC adresi, sonraki bölüm ise gönderen ağ kartının kendi MAC adresidir. Daha sonra gönderilmeye çalışılan esas veri bölümü geliyor. En sonda da CRC(Cyclic Redundancy Check) kodu bulunuyor.

Peki CRC de ne oluyor derseniz, CRC alıcının paketin yolda bozulup bozulmadığını anlaması için kullandığı bir kod. Sistem kabaca şöyle çalışıyor; yollanacak veri yollanmadan önce gönderen ağ kartı tarafından matematiksel bir işlemden geçiriliyor. İşlemin sonucu CRC kodu olarak veri ile beraber yollanıyor. Alıcı, aldığı veriyi aynı matematiksel işlemden geçiriyor, elde ettiği sonuç CRC ile aynı ise, paket yolda bir tek bit'i bile değişmeden alıcıya ulaşmış demektir.

Veri ağ kablosu üzerinden giderken çevredeki elektromanyetik alanlardan (motorlar, lambalar, mıknatıslar, elektrik kabloları vs.) etkilenip, yola 1 olarak çıkan bazı bitler 0, 0 olarak çıkan bazı bit'lerde 1 olarak karşı tarafa ulaşabilir. Sonuçta bir bit'in bile yolda bozulması sizin "mekiğin iniş hızı=250 km/s" olarak yolladğınız verinin karşı tarafta "canım yoğurtlu ıspanak çekti" şeklinde anlaşılmasına neden olabilir.

Eğer bir veri paketi bozuk olarak gelmişse, alıcı aynı paketin tekrar yollanmasını isteyecektir. Ancak bu işlem ağ kartında değil, daha üst bir yazılım katmanında gerçekleşir(protokoller ile ilgili ilerleyen sayfalarda buna değineceğiz).

Peki yolladığımız veri nasıl bir şey? Doğrusu bu ne bizi ne de ağ kartını hiç ilgilendirmiyor. Yollanan veri bir word dökümanının karşıda yazdırılacak yazıcı çıktısı olabileceği gibi, Britney Spears'ın fotografı da olabilir. Ağ kartı bununla ilgilenmez, ağ kartı, işletim sisteminde çalışan kendine ait sürücüsünün(driver) kendisine ilettiği veriyi gitmesi gereken sisteme yolar. Veri'nin ne olduğu veya karşı tarafa ulaşınca ne yapılacağı, diğer programların işidir.

Her bir veri paketi belli boyutta veriyi aktarabilir. Değişik ağ sistemlerinin kullandığı paket yapıları farklı olabilir.  Ancak ortalama olarak her bir paket 1500 Byte veri taşır. O zaman hemen şu soru akla gelebilir: Peki yollanan veri (dosya, yazıcı çıktısı, e-mail her neyse...) 1500 Byte'tan büyükse ne olur? Bu durumda yollayıcı sistemin yazılımı yollanacak veriyi paket boyutunda parçalara böler. Alıcı taraftaki yazılım ise bu paketleri birleştirerek yollanan veriyi bütün olarak elde eder. Bu parçalama ve birleştirme işi ağ kartına ait değildir. Gönderilecek veri ağ kartına üst yazılımlar tarafından parçalanmış olarak gelir. Ağ kartına gelen paket boyutundaki veri blokları birleştirirken kullanılacak sıralama bilgisini de içerdiğinden, alıcı taraftaki yazılım kendi ağ kartından gelen paketleri birleştirebilir.

   
Dikkat
 

Değişik ağların kullandığı çeşitli frame tipleri vardır. Ağ üzerindeki tüm ağ kartları aynı frame tipini kullanacak şekilde ayarlı değillerse birbirleriyle haberleşemezler. Bununla beraber tüm modern ağ kartları artık ağda kullanılan frame tipini otomatik seçebilmektedirler.

 

Ağ üzerine yollanan her paket tüm bilgisayarlara ulaşır. Her bir ağ kartı kendisine gelen bu paketi kontrol eder. Alıcı MAC adresi eğer kendisinin MAC adresi ise "demek ki bu paket bana gelmiş" der ve işleme koyar. Ancak tersi söz konusu ise, bu paketi siler. Bu nokta çok önemli olduğu için tekrar etmek istiyorum(bu ilerde çok karşımıza çıkacak çünkü) ağ üzerinden yollanan (aslında ağ üzerine bırakılan demek daha doğru) her paket(frame) tüm bilgisayarların ağ kartına ulaşır ama sadece gerçek alıcısı tarafından işlenir, diğerleri ise bu paketi kontrol edip kendilerine gelmediğini anlayınca göz ardı ederler. Bu da demek oluyor ki ethernet ağlarında aynı anda sadece bir makina veri gönderebilir. İleride bunu daha derin inceleyeceğiz.

Adım adım verinin aktarımı

Temel kavramları öğrendikten sonra isterseniz basit bir ağ iletişimi nasıl oluyor onu inceleyelim. Bir bilgisayar diğerine ulaşmak istediğinde elbette önce karşı tarafın kim olduğunu bilmesi gerekir. Biz bilgisayar kullanıcıları olarak karşı bilgisayarın ya ismini, ya da (eğer TCP/IP kullanılıyorsa) IP adresini biliyoruz demektir. Veya ağ komşularım'a girdiğimiz anda, "ağ üzerindeki tüm bilgisayarları bana göster" komutunu vererek "ağ komşularımızı" görürüz.

Kullanıcı isterse belli bir IP adresiyle, isterse de bilgisayar ismi ile iletişime geçmek istesin, ağ kartları sadece MAC adresleriyle haberleşebilirler.

Siz 192.168.0.56 IP'li bilgisayara bir dosya kopyalamak istediğinizde ne olur? Ağ kartı eğer daha önceden bu IP'ye sahip bilgisayar ile iletişim kurmuşsa zaten MAC de adresini biliyor demektir ve bunu kullanır. Bilmiyorsa (örneğin bilgisayarınız ilk açıldığı anda)  ağa bir Broadcast(Genel yayın) mesajı yollar.  Broadcast mesajı şu şekildedir "Eğer IP adresin 192.168.0.56 ise bana MAC adresini bildir.".  Bu mesaj ağdaki tüm sistemlere ulaşır. Her bir sistem Broadcast mesajını alır ve inceler, eğer kendi IP adresi sorulan IP ise, MAC adresini Broadcast'i yollayan ağ kartına bildirir.

Artık veri aktarımına geçilebilir.

  1. Ağ kartı yollanacak veriyi işletim sisteminden alır. Karşıya yollanacak paketi oluşturur. CRC kodunu oluşturur. CRC kodunu ve veriyi pakete koyar. Kendi MAC adresi ve alıcının MAC adresini pakete ekler. Paket yola çıkmaya hazırdır.
  2. Kabloda o anda başka bir veri aktarımı olup olmadığını kontrol eder, kablo boşsa paketi hub'a yollar.
  3. Hub bu paketin kopyalarını oluşturur ve her bir portuna bağlı bilgisayarlara(yani ağ kartlarına) yollar.
  4. Tüm ağ kartları paketi alır ve "alıcı MAC adresi" kendi MAC adresleri mi diye kontrol eder. Eğer paket kendisine gelmişse paketi işler, aksi halde paketi siler.

Veri ve CRC pakete ekleniyor. Pakete gönderen ve alıcı MAC adresleri yazılıyor.

Ağ'ı kullanan başka birisi var mı diye kontrol edildikten sonra paket yollanıyor.

Alıcı ağ kartı MAC gelen paketin MAC adresini kontrol ediyor, kendisine gelmişse işliyor, değilse siliyor.

Alıcı ağ kartı paketin kendisine geldiğini anlayınca önce CRC kodunu kullanarak veri yolda bozulmuş mu kontrol eder. Eğer problem yoksa, frame/paket bilgisini (MAC adresleri, CRC vs.) temizleyerek, saf veriyi işletim sistemine iletir.

Protokol

Aynı hub'a bağlı, aynı frame/paket tipini kullanan bilgisayarlar arasında veri aktarımını gördük. Peki Selin Hn. (tamam söylüyorum zayıf olanı) internete bağlanmak istediğinde ne olacak? İnternete telefon hattını kullanarak bağlanacak, oysa ne modem ne de telefon sistemi MAC adresi kullanmaz.

Demek oluyor ki; MAC adresinin ötesinde her sisteme farklı bir kimlik sağlayan, her tip ağ kartı, frame yapısı ve donanım ile çalışabilecek bir yazılıma/tanımlamaya veya kimlik bilgisine ihtiyacımız var.

Bu özel yazılıma ağ protokolü diyoruz. Ağ protokolü her sisteme tekil bir kimlik sağlamanın ötesinde, işlerin nasıl yürütüleceğini belirleyen bir kurallar dizesini de içerir. Bundan önce eğer yollanacak veri ağ paketinin boyutundan büyükse, işletim sisteminin veriyi parçalara ayrılmış halde ağ kartına yolladığını, ağ kartının verinin içeriği ve bütünlüğüyle hiç ilgilenmeden ne geliyorsa yolladığını söylemiştik. İşte verinin paketlere bölünmesi ve alıcı tarafa da birleştirilmesi gibi bir çok iş de ağ protokolünün görevidir.

Değişik ağ sistemlerinin kullandığı değişik protokol tipleri vardır.  Ancak ağ üzerindeki bilgisayarlarda aynı tip protokolün yüklü olması gerektiği sanırım gayet açık. Bu protokoller içinde öne çıkan ve en yaygın kullanıma sahip olanı şüphesiz TCP/IP(Transmit Control Protocol/Internet Protocol)'dir. TCP/IP için "protokol" kelimesi yerine "bir protokoller grubudur" demek daha doğrudur. TCP/IP'nin IP bölümü şu an bizim ilgilendiğimiz ağ protolü görevini gören kısmıdır. TCP'ye sonra bakacağız.

IP'nin görevi basitçe veri paketinin gitmesi gereken sisteme ulaşmasını sağlamaktır(ee MAC'de aynı işe yaramıyor mu?.... dur hele anlatıyo işte.) . IP bunu ağa dahil her sisteme tekil bir adres vererek yapar. İşte bir IP adresi: 192.168.0.1

IP adresleri 0-255 arası değerler alabilecek 4 bölümden oluşur. Bölümler arasında nokta işareti bulunur. Aslında bu dört bölümün her biri 8 bitlik bir sayıdır. Bilgisayarların ikili sayı sistemi ile, yani 1 ve 0'lar ile çalıştığını tekrar hatırlayın.

Ağ üzerinde her cihaz farklı bir IP adresine sahip olmak zorundadır. IP sistemi ile, donanım ve frame tipi ne olursa olsun sistemler arasında veri aktarımı yapılabilir. Bu durumda karşımıza gönderen ve alıcının IP adreslerini içeren ikinci bir frame/paket çıkıyor. Yani paket içinde paket olayı...

   
NOT
 

Burada bir kavram kargaşasının önüne geçmek adına bir not düşmemiz gerekiyor. Şu ana kadar gördüğümüz veri paketi kavramının İngilizcesi "frame" dir. Biz bu yabancı kelime yerine "paket" kelimesini kullandık. Sık sık da bu ikisini "paket/frame" diye yanyana yazarak belirttik.

Şimdi karşımıza IP paketi kavramı çıktı. Bunun da İngilizcesi "IP Packet". Şimdi elimizde iki paket var, paketler elimizde patlamadan, isterseniz biz bunlardan birine "ağ paketi" diğerine "IP paketi" diyelim, olay kapansın...


Paket paket içinde...

Ağ protokolü daha üst katmanlardan gelen veriyi ağ kartına yollamadan önce veriyi kendi paketinin içine yerleştirir ve ağ kartına yollar. Ağ kartı açısından ağ protokolünden gelen bu IP paketi sıradan bir veriden farksızdır(hatırlayın: ağ kartları verinin içeriği ile ilgilenmezler). Ağ kartıda veriyi önceden anlatıldığı gibi kendi paketi içine yerleştirip yollar.

Aşağıda çok basit indirgenmiş bir IP paketi görüyorsunuz.

VERİ TİPİ
PAKET SAYISI
ALICININ IP ADRESİ
GÖNDERENİN IP ADRESİ
VERİ

İsterseniz IP paketini bir zarf ile temsil edelim, ağ kartının paketi eskisi gibi kalsın..

Ağ üzerinde her sistemin MAC ve IP adresi:

Şöyle bir soru akla gelebilir: paket içinde paket olayına veya IP adreslerine ne gerek var, bilgisayarları birbirinden ayırmak için MAC adresi yok mu zaten? Var olmasına var ama bakın neler oluyor...

Hatırlarsanız Selin Hn. internete bağlanacaktı, bunu yapabilmek için AK Tic.'in bilgisayar ağını internete bağlamamız gerekiyor. Bu bağlantıyı sağlayacak cihazın adı Router(Yönlendirici)'dır. 

Yönlendiriciler faklı "ağ paketi yapısı" kullanan iki ağı birbirine bağlamaya yararlar. Tipik bir yönlendiricinin iki bağlantı noktası bulunur. Bu bağlantılardan birisi yerel ağa yapılacak bağlantıdır. Bu bağlantı noktası aslında yönlendirici içine yerleştirilmiş bildiğimiz bir ağ kartıdır. Diğer bağlantı noktası ise yönlendiriciyi telefon hattına bağlamaya yarar. Yani bu bağlantı noktası da aslında yönlendirici içine gömülü bir modem'dir.

   
NOT
 

Yönlendiriciler ile ilgili bu noktada söylenmesi gereken 2 şey var:

  1. Bazı yönlendiriciler, yukarıda bahsedildiği gibi gömülü modem içermezler, ama modem'e bağlanırlar.
  2. Yönlendirici ayrı bir cihaz olmak zorunda değildir. İki ağ kartı veya bir ağ kartı ve bir modem'i olan her bilgisayar yönlendirici olarak görev yapabilir.

 

Yönlendiriciler faklı "ağ paketi yapısı" kullanan iki ağı birbirine bağlamaya yararlar demiştik. Şimdi Selin Hn.'ın yerel ağı ethernet sistemini kullanıyor. Oysa Selin Hn.'ın bilgisayarından çıkan veri paketi bu yerel ağın ötesine geçip, telefon hatlarından internete ulaşmak zorunda. Oysa telefon hatları ve ötesindeki internet yapısında MAC adresi veya ethernetin frame yapısı geçerli değil. İşte bu noktada IP adresi devreye giriyor.

Yönlendirici "ağ paketi" içinde bir "IP paketi" aldığında, "ağ paketini" kırpar(MAC adresleri CRC vs.). Geriye kalan IP paketini ise telefon şebekesinin kullandığı paket yapısı içine yerleştirir ve yollar.

İşte bu noktada IP paketinin ve IP adresinin ne işe yaradığını görüyoruz. Yönlendirici ağ paketi bilgilerini yok edince, veriyi yollayan ve alacak olan sistemleri tanımlayacak ayrı bir bilgiye ihtiyaç duyulur. Evet, evet, IP bilgisine...

Eğer internetle işimiz yoksa, basit bir yerel ağ kuracaksak TCP/IP kullanmak zorunda mıyız? Hayır. Kullanabileceğiniz farklı protokoller var. Hatta bazı protokoller hiç bir ayar yapmadan her bilgisayara yüklediğiniz anda çalışır (NETBeui protokolü mesela). Oysa TCP/IP kullandığımızda en başta IP adreslerinin girilmesi gibi daha bir çok ayar yapmamız gerekecektir. Diğer protokollerin tek problemleri internet üzerinde çalışmamalarıdır. Yani internet kullanacaksanız (veya sadece yerel ağ üzerinde olsa bile IP ile çalışan programlar kullanacaksanız) TCP/IP'ye ihtiyacınız var demektir.

Günümüzde hemen hemen her ağ'da internet bağlantısı gerekiyor. Bu durumda ister istemez TCP/IP yükleniyor. Onu bir kere yükledikten sonra ikinci bir protokolü yüklemenin ise anlamı kalmıyor.

   
Dikkat
 

MAC adresleriyle ilgili ilk bölüm sanki ağ sistemi protokol olmadan da çalışırmış gibi bir izlenim bıraktıysa, çok yanlış, çook çok...

Her hangi bir ağ'ın çalışabilmesi için en az bir protokolün, daha doğrusu aynı protokolün, her bilgisayarda yüklü olması gerekiyor.

Çünkü ağ kartları verinin paketlere ayrılması ve tekrar birleştirilmesi gibi işleri yapmazlar. Bu işlemler için protokole ihtiyacımız var.



Son Güncelleme: Cumartesi, 12 Eylül 2009 02:24
 
Make Text Bigger Make Text Smaller Reset Text Size

Aktif Ziyaretçiler

Şu anda 53 konuk çevrimiçi

Üye Girişi

Bilgisayar ağları ve Windows Hakkında Bilgiler...