zeberus1234
Üye
Bilgisayar Aglarının Calısma Mantıgı[Resimli]
Bilgisayar Ağları Nasıl Çalışır
İsterseniz günümüzde hemen hemen her ofiste görebileceğiniz bir bilgisayar ağını ele alarak, bilgisayar ağlarının temel çalışma prensiplerini inceleyelim.
Firmanın ismi Ak Tic. olsun. Ofiste Windows 2000 yüklü bilgisayarlar var. Windows 2000 ağ özelliklerini sağlayan bir işletim sistemi, bu da onu OS(Operating System-İşletim Sistemi) olmanın yanısıra bir de NOS(Network Operating System-Ağ İşletim Sistemi) yapıyor. Ak Tic.’in bilgisayar ağı en popüler kablolama şekli olan Unshielded Twisted Pair(UTP) kullanıyor.
Ancak bu bölümde anlatılacaklar ne işletim sistemiyle ne de kablo tipiyle alakalı değil. Dünyada farklı ağ işletim sistemleri ve kablolamalar mevcut. Bu yazıda sadece bir bilgisayar ağını meydana getiren değişik yazılım ve donanım bileşenleri ve herbirinin işlevleri üzerinde genel bir görüş edinmenizi sağlamak istiyorum. Bu nedenle değişik ağlar değişik kablo tipleri veya işletim sistemleri kullansalar da, burada anlatılacaklar prensip olarak tüm ağ sistemlerini kapsayacaktır.
Üstte Selin Hn. ve Ayşe Hn.’ı görüyorsunuz. Tahmin edebileceğiniz gibi onlar şirket çalışanları. Ayşe ve Selin’in işleri gereği sık sık birbirlerinin bilgisayarındaki dosyaları kullanmaları gerekiyor. Örneğin Ayşe Excel’de aylık satış raporunu henüz bitirdi ve Selin’in de kontrol etmesini istiyor.
Ayşe’nin yapabileceği ilk şey, klasik yöntemi kullanmak: Dosyayı diskete kopyala, ayağa kalk, disketi Selin’e ver. Ancak bilgisayar ağı Selin’in yerinden kalkmadan Ayşe’nin bilgisayarına erişmesini ve bu dosyayı kendi bilgisayarına kopyalamasını sağlıyor. Şimdi nasıl oluyor bu işler ona bakalım...
Kablo
Ağ ilk başta bilgisayarlar arasında fiziksel bir bağlantıya ihtiyaç duyar. Böylece veri bitleri bilgisayarlar arasında aktarılabilir. Günümüzde bir çok ağ altta gördüğünüze benzer unshielded twisted pair-kaplamasız dolanmış çift (UTP) kabloyu kullanıyor. Bu tip kablo 4 veya 8 telden oluşuyor ve bu teller birbirine dolanmış çiftler halinde. Unutmayın farklı kablo tipleri, hatta kablosuz teknolojiler de kullanılabilir, burada amacımız, ağ’ın çalışabilmesi için veriyi aktaracak bir ortama ihtiyacı olduğunu kavramanız.
Hub
Bir diğer ağ bileşeni ise hub. Ağa bağlı her bilgisayardan hub’a bir kablo gidiyor. Hub bir uçtan gelen bilgiyi, gitmesi gereken uca yollamıyor, ancak tüm uçlara birden yolluyor(bu önemli bir bilgi, ilerde çok karşımıza çıkacak). Bu durumda her bilgisayar hub’dan gelen verinin kendine ait olup olmadığını tespit etmek zorunda.
Üstte bir hub görüyorsunuz. İki sarı ve bir gri kablo bilgisayarlardan geliyor. Renklerin hiçbir önemi yok. Kablolar değişik renklerde olabilir. En sağdaki siyah kablo dikkatinizi çektiyse, çekmediyse de ben çektim işte şimdi, bu kablo da hub’ın çalışmasını sağlayan elektik bağlantısı, yani adaptörden geliyor.
Hub’lar aktif cihazlardır, yani çalışmak için elektriğe ihtiyaç duyarlar.
Tekrar belirtiyorum, biz burada hub kullanan bir ağ sistemini örnek aldık, farklı ağ sistemleri de mevcut. Ancak birazdan okuyacaklarınız hepsi için geçerli.
Ağ kartı
Ağın çalışmasını sağlayan diğer bir bileşen ise Network Interface Card(NIC) - Ağ Kartı’dır. Sık sık ethernet kartı deriz, aslında ağ kartı demek daha doğru. Bu bir "generic name" haline gelmiş. Nasıl margarin yerine "sana yağ" diyorsak, ağ kartları içinde "ethernet" türü tartışmasız en yaygın tür olduğu için, ağ kartı ethernet kartına dönüşmüş. Ancak başka ağ teknolojilerinde çalışmak üzere üretilmiş ağ kartları da mevcut. Sonuç olarak ağ kartı genel bir tanım, ethernet ise bir alt tür, ama en yaygın olanı. Ağ kartları çok değişik tipte olabilirler ama Ak Tic.’in kullandıkları ve sizinde kullanacaklarınız mutemelen aşağıdakine benzeyecektir.
Peki ağ kartının görevi ne? Bilgisayarlar verileri ikilik sayı sisteminde yani 1 ve 0’lar olarak işler ve saklarlar. Ağ kartları da sayısal(dijital) veriyi elektrik, ışık veya radyo sinyalleri olarak diğer sistemlere iletme görevini yerine getirir. Elektrik sinyallerini kullanan ağ kartları en yaygın tip olduğu için isterseniz onlarla devam edelim.
Bilgisayarın devre kartları üzerinde saniyede milyonlarca küçük elektrik akımı oluşur. Örneğin sabit diskten okuma yapılırken, sabit disk’ten çıkan elektrik sinyalleri disk kablosundan ana karta girer. Oradan da CPU ve bellek modüllerine ulaşır.
Sinyaller bilgisayarın kasası içindeki devreler üzerinde nispeten problemsizce seyahat eder. Ancak bu sinyaller bilgisayarın dışına çıktıklarında ister istemez daha uzun mesafelerde yol almak zorundadır. Bu aslında oldukça zor bir iştir. Çünkü yüksek frekanstaki zayıf elektrik sinyallari dış etkenlere karşı çok hassastır. Ağ kartları işte bu verinin iletiminde oldukça iyi bir iş çıkarırlar ve sinyallerin bilgisayarın veri yollarından ağ kablosuna aktarılması(veri gönderirken) ve kablodan tekrar bilgisayarın veri yoluna aktarılması(veri alırken) işini görürler. Dolayısı ile ağ kartının ilk göze çarpan görevi bilgisayarın veri yollarındaki veriyi dış dünyaya aktarmaktır.
Ancak ağ kartlarının görevi bununla bitmez. Ağ kartları bilgisayarın ağ üzerindeki kimliğini de temsil ederler. Kimlikten ne mi kastediyorum, şu örneği düşünelim isterseniz. İki bilgisayarı üzerlerindeki seri veya paralel port’lardan bağladığımızı düşünelim. İki bilgisayarı haberleştirmenin en basit yolu budur. Böyle bir bağlantıda sadece iki bilgisayar söz konusudur. Bir bilgisayarın veri gönderim portu diğerinin alım portuna bağlıdır. Diğerinin gönderimi de ötekinin alım portuna. Ve en basit yöntemlerle bir taraf gönderilecek veriyi gönderim portuna koyar, karşı tarafta alım portundan bunu okur.
Ancak ikiden fazla bilgisayarın bağlı olduğu bir sistemde ister istemez şu soru akla gelir, bir taraf veriyi istediği bilgisayara nasıl ulaştıracak?
Değişik ağ sistemleri (ethernet, token-ring) bu soruya değişik cevap vermiştir. Örneğin Token-Ring ağlarında aradaki fiziksel bağlantı star olsa da, yani tüm makinalardan çıkan birer kablo ortadaki bir hub’a girse de, sistem çalışırken ağ üzerinde Token/Jeton adı verilen bir sinyal dolaşır. Bu sinyal sırayla tüm terminalleri dolaşır. İşte "Ring" buradan gelmektedir. Bir terminal veri göndermek istediğinde boş token sinyalinin kendine gelmesini bekler. Token gelince yollayacağı veriyi token mesajına iliştirir. Mesaj üzerinde alıcı ve gönderen makinanın ağ kartı adresi de bulunmaktadır. Dolu token sırayla terminalleri dolaşmaya devam eder. Her makina gelen dolu token’e bakar ancak sadece "alıcı" adresi kendi adresi ise veriyi alır ve geriye onay mesajını yollar. Token onay mesajını gönderen makinaya ulaştırdığında artık veri gönderilmiştir. Token boşalmıştır ve ring yapmaya devam eder. Tabii bu işlem saniyede milyonlarca kez gerçekleşir. Bu sistemde diğer makinaların nasıl kendi sıralarını beklediklerine dikkat ediniz.
Ethernet ise farklı bir çözüm sunar. Ethernet ağında ağ kartı veri göndermeden önce kabloyu kontrol eder, kimse kullanmıyorsa, alıcı ve gönderen makinanın ağ kartı adresinin yazılı olduğu veriyi kabloya salar. Bu veri tüm terminaller tarafından alınır. Ancak sadece "alıcı" adresi kendi adresi olan makina bu veriyi işler diğerleri göz ardı eder.
Token-Ring ve Ethernetin kabloyu kullanma sırası ve verinin aktarım yönteminde farklılaştığını gördük. Ancak her iki sistemde de ağ kartlarının, ağ üzerinde eşi benzeri olmayan, bir adrese sahip olduklarına dikkat ediniz. Sistemler birbirini işte bu benzersiz kimlik ile birbirinden ayırıyorlar. Ve bu adrese MAC adresi diyoruz.
MAC adresi
Her ağ kartı içinde üretilirken kaydedilmiş ve dündaya bir eşi olmayan bir numara mevcuttur. Media access control address (MAC) olarak adlandırılan bu adres 48 bit’tir.
Ağ kartları bir diğer ağ kartına veri yollarken alıcıyı diğerlerinden ayırmak için bu MAC adresini kullanır.
Ağ kartı üreten firmalar, önce IEEE (Institue of Electrical and Electronics Engineers) isimli kuruma başvurur ve 24 bit’lik bir üretici kodu(her üreticiye farklı kod veriliyor) alırlar. Sonra ürettikleri her karta ilk 24 biti üretici kodu, son 24 biti ise her kartta farklı olacak şekilde MAC adresini koyarlar.
Bir ağ kartı MAC adresi şu şekilde olabilir:
MAC Adresi
110011110110111011101111 011101111011011101110001
Üretici kodu
Kart seri numarası
Tabii bu şekilde ikili sistemdeki sayıların okunması insanlar için zor olduğundan MAC adresleri onaltılı sayı sistemine çevrilerek ifade edilir. Tipik bir MAC adresi 00-50-05-1A-00-AF şeklindedir. Hexadecimal(yani 16’lı sayı sisteminde) olan bu adreste her bir rakam (mesela B) 4 bite karşılık gelir.
Böylece 12x4=48’dir. Buna göre ilk 6 rakam yani 00-50-05 üretici kodu, son 6 rakam ise bu kartın seri numarasıdır. MAC adresi bütün olarak değerlendirildiğinde dünyada üretilen her ağ kartı farklı bir MAC adresine sahip demektir.
Ağ kartları istekte bulunan her yazılıma MAC adreslerini bildirirler. Eğer Win9x kullanıyorsanız Winipcfg programı ile ağ kartınızın MAC adresini görebilirsiniz.
Adapter Address MAC adresini gösteriyor.
MAC adresi ağ kartını satın aldığınıza zaten kartın üstündeki bir elektronik çipe kodlanmış haldedir. Bu adres normalde değiştirilemez(ancak son dönemde bu işi yapan programlar ortaya çıktı). Ancak MAC adresini değiştirmeniz, hatta ne olduğunu bilmeniz bile çoğu zaman gereksizdir.
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 World 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ı
Kod:
1110001011011****** 11011011101100******
******** (Alıcının MAC adresi) (Göndrenin MAC adresi)
**110101101110110111101110001110111011**1101
(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.
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ı...
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.
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.
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.
Böl parçala yolla-TCP
Ağ üzerinde yollanacak veri çoğu zaman bir ağ paketinin taşıyabileceğinden fazladır. Bu nedenle verinin yollanmadan önce parçalanması gerekir. Ağ protokolü daha üst katmanlardan kendisine gelen veriyi(bir dosya, web sayfası, yazdırma işi....) ağ paketi boyutunda parçalara böler, alıcının tekrar birleştirebilmesi için parçaları organize eder, yollar ve her bir paketin karşıya hatasız ulaşıp ulaşmadığını kontrol eder.
Alıcı sistemin protokolü gelen paket serisini algılar, paketleri birleştirerek esas veriyi tekrar elde eder.
TCP/IP’nin TCP(Transmit control protocol-gönderim kontrol protokülü) bu işi yapar. Nasıl mı yapar, tabii ki IP paketinin içine başka bir paket koyarak..
Bir TCP paketi aşağıdaki bölümlerden oluşur.
Alıcı sistem sıra numarasını kullanarak paketleri doğru sırada birleştirebilir(paketler yolda bozulma ve tekrar yollama sonucu farklı sırada gelmiş olsa bile).
Aynı anda birçok iş yapmak:Oturumlar
Veri paketlerini bölme ve birleştirme işini yapan bir yazılım olduğunu öğrendikten sonra sıra geldi ağların başka bir yönünü incelemeye.
Gördüğünüz gibi Ayşe’nin bilgisayarına bir yazıcı bağlı ve tüm kullanılar tarafından kullanılabiliyor. Selin Ayşe’nin Excel dosyasına bakarken, Ali’de aynı anda Ayşe’nin yazıcısını kullanıyor olabilir.
Ayşe’nin sistemi gelen bu istekleri gerekli programlara veya donanımlara ulaştırmak zorunda. Diğer taraftan istekte bulunan bilgisayarda önce karşı tarafa bağlanıp, isteğin yerine getirilip getirilemeyeceğini kontrol etmek zorunda.
Bunları yapan katmana oturum(session) katmanı diyoruz. Bu katmanın görevi bir bilgisayarın aynı anda birden fazla bilgisayarla iletişim içinde olmasını sağlamaktır.
Ortak veri biçimleri kullanalım, dost kalalım!
Eskiden her program sadece ve ancak kendi oluşturduğu dosyayı kullanabiliyordu. Örneğin A firmasında X kelime işlemcisi kullanılıyorsa, burada oluşturulmuş bir dosyayı B firmasının kullandığı Y kelime işlemcisinde açmak mümkün değildi. Yani MS Word’ün 4. versiyonu ile yazılmış bir yazı, Corel’in kelime işlemcisi ile uyumlu değildi.
Oysa bugün ister Microsoft Word kullanalım, istersek Linux altında çalışan Open Office kullanalım, eğer yazımızı DOC formatında kaydedersek karşı taraf kullandığı kelime işlemci ve işletim sisteminden bağımsız olarak bu dosyayı kullanabilir.
Ayrıca işletim sistemleri verileri kaydederken ve işlerken farklı teknikler kullanabilirler. Örneğin DOS ve Windows 95,98,ME metinleri 8 bit olarak (ASCII) kaydeder. Ancak Windows 2000, NT ve XP 16 bit Unicode sistemini kullanır. Buna göre bir Win9x makinası A harfini 01000001 olarak kayıt edecektir. Windows 2000, NT veya XP ise 0000000010000001 olarak kaydedecektir. Tabii ki bilgisayarı kullanan vatandaş sadece A harfiyle ilgilenir.
İşte ağ’ı oluşturan katmanlardan birisi olan sunum(presentation) katmanı bu noktada devreye girer. Sunum katmanının görevi değişik sistemler arasında olabilecek bu gibi farklılıkları ortadan kaldırmaktır. Ağ üzerinde eriştiğiniz bilgisayarın işletim sistemi, kullandığı dosya yapısı önemli değildir. Örneğin W9x ailesi NTFS dosya formatını okuyamaz. W9x çalışan bir makinaya NTFS formatlı ek bir disk taksanız, windows içinden bu diske ulaşamazsınız. Oysa, bir W9x makinası ağ üzerinden NTFS disk kullanan bir Windows 2000, NT veya XP makinasının diskine ulaşabilir.
Ağ programları
Bir kullanıcı ağ üzerinde çalışırken şimdiye kadar anlatılanların hiçbirisini görmez. Ağların güzel yanıda budur zaten, bu kadar karmaşık bir işlemi, bu kadar sessizce halledebilmek...
Ancak bilgisayar kullanıcısı ağın son parçasını kesinlikle görür. Kullandığı ağ programını. Ağ programı deyince "Allah Allah ben niye görmedim bunu şimdiye kadar" diye korkmayın. Ağ programına en basit örnek Windows Explorer’dir. Ya da namı diğer "Bilgisayarım". Bilgisarım’ı açıp, bir ağ sürücüsüne çift tıkladığınızda ağı kullanmış olmuyor musunuz? Aynı şekilde Web’de sörf yaparken de IE veya Netscape kullanıyoruz. E-mail için farklı bir programımız var. Sonuç olarak kullanıcılar ağ’ı bir program vasıtasıyla kullanılar. Ağı oluşturan en son bileşen bu programdır.
Ağ programları kendi içinde veri şifreleme, kullanıcı isminin kontrolü gibi özellikler barındırabilirler. Bir önceki başlık altında incelediğimiz sunum katmanının bir çok görevi bu programlar tarafından da yapılabilir.
Selin Ayşe’nin Excel dosyasını nasıl kendi bilgisayarına kopyaladı?
Bu noktaya kadar adım adım bir ağı oluşturan değişik bileşenleri inceledik. İsterseniz şimdi Selin’in Ayşe’nin bilgisayarından Excel dosyasını nasıl kendi bilgisayarına kopyaladığını adım adım görelim. Selin önce "Computers Near Me" ile ağ üzerindeki diğer bilgisayarları gördü.
Selin ve Ayşe aynı Excel versiyonunu kullandıkları için uyumsuz dosya formatı söz konusu değil. Bu ağda veri şifreleme yok ancak kullanıcı adları kontrol ediliyor. Selin Ayşe’nin bilgisayarına çift tıkladığı anda iki sistem haberleşmeye başlıyorlar. Ayşe’nin bilgisayarı kendi kullanıcı veritabanını kontrol ederek Selin kullanıcısının bu bilgisayar üzerinde ne gibi haklara sahip olduğunu kontrol ediyor. Bu esnada iki bilgisayar arasında ilk oturum açılmış oluyor. Selin dosyayı Ayşe’nin diski içinde buluyor ve sürükleyip kendi masaüstüne bırakarak kopyalama işlemini başlatıyor
Bu basit hareket arka planda bir çok işlemi tetikliyor. Önce Ayşe’nin ağ protokolü üst katmandan kendisine gelen bu dosyayı küçük parçalara ayırıyor. Her parçaya da bir numara veriyor ki, Selin’in bilgisayarı bu parçaları tekrar birleştirebilsin.
Daha sonra her bir parçaya Selin’in ve Ayşe’nin IP adresi ekleniyor.
Paketler artık Ayşe’nin ağ kartına gitmeye hazır. Ağ kartı bu IP paketlerini bu sefer kendi ağ paketinin içine koyuyor ve ağ paketinin üstüne de hem kendi MAC adresini, hem de Selin’in ağ kartının MAC adresini ekliyor. Tabii CRC kodunu her paket için oluşturup pakete dahil etmeyi de unutmuyor.
Ayşe’nin ağ kartı her bir paketi hazır hale getirdiğinde o anda kabloyu bir kullanan var mı(ağın genelinde bir trafik var mı) diye kontrol ettikten sonra kablo boşta ise paketi hub’a yolluyor.
Paket hub’a ordan da diğer tüm bilgisayarlara ulaşıyor. Ancak sadece Selin’in makinası gelen paketi işleme alıyor. CRC kodunu kullanarak "paket sağlıklı ulaştı mı" diye kontrol ettikten sonra ağ paketini açıp(yani MAC adresi ve CRC kodu gibi bilgileri temizleyip) içindeki veriyi (IP paketi) bir üst katmana yani ağ protokolüne yolluyor.
Artık Selin’in sistemi(TCP) gelen paketleri birleştirip Excel dosyasını bütün hale getirmeye başlıyor. Eğer paketlerden birisi ulaşmamışsa, Ayşe’nin bilgisayarından o paketi tekrar göndermesini istiyor.
Bu bölümde TCP’nin çalıştığını sanırım anladınız. Excel dökümanı bir bütün halinde alındıktan sonra dosya gerekli yazılıma aktarılıyor. Burada da dosya kopyalarken Selin’in kullandığı Windows Explorer’den bahsediyoruz("Computers Near Me" Windows Explorer’in bir bölümüdür).
Dosya Selin’in masaüstünde belirdiği anda ağ bileşenleri bu işlem için açılan oturumu kapatarak bir sonraki işleme hazırlanıyorlar.
Tüm bu işlemler arka planda olurken, Selin’in dosyayı kopyalanırken gördüğü tek şey havada uçan dosya animasyonu oluyor...
Son söz
Dikkat ettiyseniz yazının başında beri bu sayfada anlatılanlar genel olarak tüm ağ sistemlerinde geçerlidir demiştik. Yazı boyunca da katmanlardan, adım adım gelişen bir yapıdan bahsettik. Aslında tüm bu anlatılanlar OSI Seven Layer Model(7 katmanlı OSI modeli)’den ibaret.
Birde anlatım Windows 98 de gösterilmiştir.Fakat burda anlatılmak istenen
ağın çalışma mantığıdır..
Alıntıdır...
Bilgisayar Ağları Nasıl Çalışır
İsterseniz günümüzde hemen hemen her ofiste görebileceğiniz bir bilgisayar ağını ele alarak, bilgisayar ağlarının temel çalışma prensiplerini inceleyelim.
Firmanın ismi Ak Tic. olsun. Ofiste Windows 2000 yüklü bilgisayarlar var. Windows 2000 ağ özelliklerini sağlayan bir işletim sistemi, bu da onu OS(Operating System-İşletim Sistemi) olmanın yanısıra bir de NOS(Network Operating System-Ağ İşletim Sistemi) yapıyor. Ak Tic.’in bilgisayar ağı en popüler kablolama şekli olan Unshielded Twisted Pair(UTP) kullanıyor.
Ancak bu bölümde anlatılacaklar ne işletim sistemiyle ne de kablo tipiyle alakalı değil. Dünyada farklı ağ işletim sistemleri ve kablolamalar mevcut. Bu yazıda sadece bir bilgisayar ağını meydana getiren değişik yazılım ve donanım bileşenleri ve herbirinin işlevleri üzerinde genel bir görüş edinmenizi sağlamak istiyorum. Bu nedenle değişik ağlar değişik kablo tipleri veya işletim sistemleri kullansalar da, burada anlatılacaklar prensip olarak tüm ağ sistemlerini kapsayacaktır.
Üstte Selin Hn. ve Ayşe Hn.’ı görüyorsunuz. Tahmin edebileceğiniz gibi onlar şirket çalışanları. Ayşe ve Selin’in işleri gereği sık sık birbirlerinin bilgisayarındaki dosyaları kullanmaları gerekiyor. Örneğin Ayşe Excel’de aylık satış raporunu henüz bitirdi ve Selin’in de kontrol etmesini istiyor.
Ayşe’nin yapabileceği ilk şey, klasik yöntemi kullanmak: Dosyayı diskete kopyala, ayağa kalk, disketi Selin’e ver. Ancak bilgisayar ağı Selin’in yerinden kalkmadan Ayşe’nin bilgisayarına erişmesini ve bu dosyayı kendi bilgisayarına kopyalamasını sağlıyor. Şimdi nasıl oluyor bu işler ona bakalım...
Kablo
Ağ ilk başta bilgisayarlar arasında fiziksel bir bağlantıya ihtiyaç duyar. Böylece veri bitleri bilgisayarlar arasında aktarılabilir. Günümüzde bir çok ağ altta gördüğünüze benzer unshielded twisted pair-kaplamasız dolanmış çift (UTP) kabloyu kullanıyor. Bu tip kablo 4 veya 8 telden oluşuyor ve bu teller birbirine dolanmış çiftler halinde. Unutmayın farklı kablo tipleri, hatta kablosuz teknolojiler de kullanılabilir, burada amacımız, ağ’ın çalışabilmesi için veriyi aktaracak bir ortama ihtiyacı olduğunu kavramanız.
Hub
Bir diğer ağ bileşeni ise hub. Ağa bağlı her bilgisayardan hub’a bir kablo gidiyor. Hub bir uçtan gelen bilgiyi, gitmesi gereken uca yollamıyor, ancak tüm uçlara birden yolluyor(bu önemli bir bilgi, ilerde çok karşımıza çıkacak). Bu durumda her bilgisayar hub’dan gelen verinin kendine ait olup olmadığını tespit etmek zorunda.
Üstte bir hub görüyorsunuz. İki sarı ve bir gri kablo bilgisayarlardan geliyor. Renklerin hiçbir önemi yok. Kablolar değişik renklerde olabilir. En sağdaki siyah kablo dikkatinizi çektiyse, çekmediyse de ben çektim işte şimdi, bu kablo da hub’ın çalışmasını sağlayan elektik bağlantısı, yani adaptörden geliyor.
Hub’lar aktif cihazlardır, yani çalışmak için elektriğe ihtiyaç duyarlar.
Tekrar belirtiyorum, biz burada hub kullanan bir ağ sistemini örnek aldık, farklı ağ sistemleri de mevcut. Ancak birazdan okuyacaklarınız hepsi için geçerli.
Ağ kartı
Ağın çalışmasını sağlayan diğer bir bileşen ise Network Interface Card(NIC) - Ağ Kartı’dır. Sık sık ethernet kartı deriz, aslında ağ kartı demek daha doğru. Bu bir "generic name" haline gelmiş. Nasıl margarin yerine "sana yağ" diyorsak, ağ kartları içinde "ethernet" türü tartışmasız en yaygın tür olduğu için, ağ kartı ethernet kartına dönüşmüş. Ancak başka ağ teknolojilerinde çalışmak üzere üretilmiş ağ kartları da mevcut. Sonuç olarak ağ kartı genel bir tanım, ethernet ise bir alt tür, ama en yaygın olanı. Ağ kartları çok değişik tipte olabilirler ama Ak Tic.’in kullandıkları ve sizinde kullanacaklarınız mutemelen aşağıdakine benzeyecektir.
Peki ağ kartının görevi ne? Bilgisayarlar verileri ikilik sayı sisteminde yani 1 ve 0’lar olarak işler ve saklarlar. Ağ kartları da sayısal(dijital) veriyi elektrik, ışık veya radyo sinyalleri olarak diğer sistemlere iletme görevini yerine getirir. Elektrik sinyallerini kullanan ağ kartları en yaygın tip olduğu için isterseniz onlarla devam edelim.
Bilgisayarın devre kartları üzerinde saniyede milyonlarca küçük elektrik akımı oluşur. Örneğin sabit diskten okuma yapılırken, sabit disk’ten çıkan elektrik sinyalleri disk kablosundan ana karta girer. Oradan da CPU ve bellek modüllerine ulaşır.
Sinyaller bilgisayarın kasası içindeki devreler üzerinde nispeten problemsizce seyahat eder. Ancak bu sinyaller bilgisayarın dışına çıktıklarında ister istemez daha uzun mesafelerde yol almak zorundadır. Bu aslında oldukça zor bir iştir. Çünkü yüksek frekanstaki zayıf elektrik sinyallari dış etkenlere karşı çok hassastır. Ağ kartları işte bu verinin iletiminde oldukça iyi bir iş çıkarırlar ve sinyallerin bilgisayarın veri yollarından ağ kablosuna aktarılması(veri gönderirken) ve kablodan tekrar bilgisayarın veri yoluna aktarılması(veri alırken) işini görürler. Dolayısı ile ağ kartının ilk göze çarpan görevi bilgisayarın veri yollarındaki veriyi dış dünyaya aktarmaktır.
Ancak ağ kartlarının görevi bununla bitmez. Ağ kartları bilgisayarın ağ üzerindeki kimliğini de temsil ederler. Kimlikten ne mi kastediyorum, şu örneği düşünelim isterseniz. İki bilgisayarı üzerlerindeki seri veya paralel port’lardan bağladığımızı düşünelim. İki bilgisayarı haberleştirmenin en basit yolu budur. Böyle bir bağlantıda sadece iki bilgisayar söz konusudur. Bir bilgisayarın veri gönderim portu diğerinin alım portuna bağlıdır. Diğerinin gönderimi de ötekinin alım portuna. Ve en basit yöntemlerle bir taraf gönderilecek veriyi gönderim portuna koyar, karşı tarafta alım portundan bunu okur.
Ancak ikiden fazla bilgisayarın bağlı olduğu bir sistemde ister istemez şu soru akla gelir, bir taraf veriyi istediği bilgisayara nasıl ulaştıracak?
Değişik ağ sistemleri (ethernet, token-ring) bu soruya değişik cevap vermiştir. Örneğin Token-Ring ağlarında aradaki fiziksel bağlantı star olsa da, yani tüm makinalardan çıkan birer kablo ortadaki bir hub’a girse de, sistem çalışırken ağ üzerinde Token/Jeton adı verilen bir sinyal dolaşır. Bu sinyal sırayla tüm terminalleri dolaşır. İşte "Ring" buradan gelmektedir. Bir terminal veri göndermek istediğinde boş token sinyalinin kendine gelmesini bekler. Token gelince yollayacağı veriyi token mesajına iliştirir. Mesaj üzerinde alıcı ve gönderen makinanın ağ kartı adresi de bulunmaktadır. Dolu token sırayla terminalleri dolaşmaya devam eder. Her makina gelen dolu token’e bakar ancak sadece "alıcı" adresi kendi adresi ise veriyi alır ve geriye onay mesajını yollar. Token onay mesajını gönderen makinaya ulaştırdığında artık veri gönderilmiştir. Token boşalmıştır ve ring yapmaya devam eder. Tabii bu işlem saniyede milyonlarca kez gerçekleşir. Bu sistemde diğer makinaların nasıl kendi sıralarını beklediklerine dikkat ediniz.
Ethernet ise farklı bir çözüm sunar. Ethernet ağında ağ kartı veri göndermeden önce kabloyu kontrol eder, kimse kullanmıyorsa, alıcı ve gönderen makinanın ağ kartı adresinin yazılı olduğu veriyi kabloya salar. Bu veri tüm terminaller tarafından alınır. Ancak sadece "alıcı" adresi kendi adresi olan makina bu veriyi işler diğerleri göz ardı eder.
Token-Ring ve Ethernetin kabloyu kullanma sırası ve verinin aktarım yönteminde farklılaştığını gördük. Ancak her iki sistemde de ağ kartlarının, ağ üzerinde eşi benzeri olmayan, bir adrese sahip olduklarına dikkat ediniz. Sistemler birbirini işte bu benzersiz kimlik ile birbirinden ayırıyorlar. Ve bu adrese MAC adresi diyoruz.
MAC adresi
Her ağ kartı içinde üretilirken kaydedilmiş ve dündaya bir eşi olmayan bir numara mevcuttur. Media access control address (MAC) olarak adlandırılan bu adres 48 bit’tir.
Ağ kartları bir diğer ağ kartına veri yollarken alıcıyı diğerlerinden ayırmak için bu MAC adresini kullanır.
Ağ kartı üreten firmalar, önce IEEE (Institue of Electrical and Electronics Engineers) isimli kuruma başvurur ve 24 bit’lik bir üretici kodu(her üreticiye farklı kod veriliyor) alırlar. Sonra ürettikleri her karta ilk 24 biti üretici kodu, son 24 biti ise her kartta farklı olacak şekilde MAC adresini koyarlar.
Bir ağ kartı MAC adresi şu şekilde olabilir:
MAC Adresi
110011110110111011101111 011101111011011101110001
Üretici kodu
Kart seri numarası
Tabii bu şekilde ikili sistemdeki sayıların okunması insanlar için zor olduğundan MAC adresleri onaltılı sayı sistemine çevrilerek ifade edilir. Tipik bir MAC adresi 00-50-05-1A-00-AF şeklindedir. Hexadecimal(yani 16’lı sayı sisteminde) olan bu adreste her bir rakam (mesela B) 4 bite karşılık gelir.
Böylece 12x4=48’dir. Buna göre ilk 6 rakam yani 00-50-05 üretici kodu, son 6 rakam ise bu kartın seri numarasıdır. MAC adresi bütün olarak değerlendirildiğinde dünyada üretilen her ağ kartı farklı bir MAC adresine sahip demektir.
Ağ kartları istekte bulunan her yazılıma MAC adreslerini bildirirler. Eğer Win9x kullanıyorsanız Winipcfg programı ile ağ kartınızın MAC adresini görebilirsiniz.
Adapter Address MAC adresini gösteriyor.
MAC adresi ağ kartını satın aldığınıza zaten kartın üstündeki bir elektronik çipe kodlanmış haldedir. Bu adres normalde değiştirilemez(ancak son dönemde bu işi yapan programlar ortaya çıktı). Ancak MAC adresini değiştirmeniz, hatta ne olduğunu bilmeniz bile çoğu zaman gereksizdir.
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 World 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ı
Kod:
1110001011011****** 11011011101100******
******** (Alıcının MAC adresi) (Göndrenin MAC adresi)
**110101101110110111101110001110111011**1101
(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.
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ı...
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.
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.
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.
Böl parçala yolla-TCP
Ağ üzerinde yollanacak veri çoğu zaman bir ağ paketinin taşıyabileceğinden fazladır. Bu nedenle verinin yollanmadan önce parçalanması gerekir. Ağ protokolü daha üst katmanlardan kendisine gelen veriyi(bir dosya, web sayfası, yazdırma işi....) ağ paketi boyutunda parçalara böler, alıcının tekrar birleştirebilmesi için parçaları organize eder, yollar ve her bir paketin karşıya hatasız ulaşıp ulaşmadığını kontrol eder.
Alıcı sistemin protokolü gelen paket serisini algılar, paketleri birleştirerek esas veriyi tekrar elde eder.
TCP/IP’nin TCP(Transmit control protocol-gönderim kontrol protokülü) bu işi yapar. Nasıl mı yapar, tabii ki IP paketinin içine başka bir paket koyarak..
Bir TCP paketi aşağıdaki bölümlerden oluşur.
Alıcı sistem sıra numarasını kullanarak paketleri doğru sırada birleştirebilir(paketler yolda bozulma ve tekrar yollama sonucu farklı sırada gelmiş olsa bile).
Aynı anda birçok iş yapmak:Oturumlar
Veri paketlerini bölme ve birleştirme işini yapan bir yazılım olduğunu öğrendikten sonra sıra geldi ağların başka bir yönünü incelemeye.
Gördüğünüz gibi Ayşe’nin bilgisayarına bir yazıcı bağlı ve tüm kullanılar tarafından kullanılabiliyor. Selin Ayşe’nin Excel dosyasına bakarken, Ali’de aynı anda Ayşe’nin yazıcısını kullanıyor olabilir.
Ayşe’nin sistemi gelen bu istekleri gerekli programlara veya donanımlara ulaştırmak zorunda. Diğer taraftan istekte bulunan bilgisayarda önce karşı tarafa bağlanıp, isteğin yerine getirilip getirilemeyeceğini kontrol etmek zorunda.
Bunları yapan katmana oturum(session) katmanı diyoruz. Bu katmanın görevi bir bilgisayarın aynı anda birden fazla bilgisayarla iletişim içinde olmasını sağlamaktır.
Ortak veri biçimleri kullanalım, dost kalalım!
Eskiden her program sadece ve ancak kendi oluşturduğu dosyayı kullanabiliyordu. Örneğin A firmasında X kelime işlemcisi kullanılıyorsa, burada oluşturulmuş bir dosyayı B firmasının kullandığı Y kelime işlemcisinde açmak mümkün değildi. Yani MS Word’ün 4. versiyonu ile yazılmış bir yazı, Corel’in kelime işlemcisi ile uyumlu değildi.
Oysa bugün ister Microsoft Word kullanalım, istersek Linux altında çalışan Open Office kullanalım, eğer yazımızı DOC formatında kaydedersek karşı taraf kullandığı kelime işlemci ve işletim sisteminden bağımsız olarak bu dosyayı kullanabilir.
Ayrıca işletim sistemleri verileri kaydederken ve işlerken farklı teknikler kullanabilirler. Örneğin DOS ve Windows 95,98,ME metinleri 8 bit olarak (ASCII) kaydeder. Ancak Windows 2000, NT ve XP 16 bit Unicode sistemini kullanır. Buna göre bir Win9x makinası A harfini 01000001 olarak kayıt edecektir. Windows 2000, NT veya XP ise 0000000010000001 olarak kaydedecektir. Tabii ki bilgisayarı kullanan vatandaş sadece A harfiyle ilgilenir.
İşte ağ’ı oluşturan katmanlardan birisi olan sunum(presentation) katmanı bu noktada devreye girer. Sunum katmanının görevi değişik sistemler arasında olabilecek bu gibi farklılıkları ortadan kaldırmaktır. Ağ üzerinde eriştiğiniz bilgisayarın işletim sistemi, kullandığı dosya yapısı önemli değildir. Örneğin W9x ailesi NTFS dosya formatını okuyamaz. W9x çalışan bir makinaya NTFS formatlı ek bir disk taksanız, windows içinden bu diske ulaşamazsınız. Oysa, bir W9x makinası ağ üzerinden NTFS disk kullanan bir Windows 2000, NT veya XP makinasının diskine ulaşabilir.
Ağ programları
Bir kullanıcı ağ üzerinde çalışırken şimdiye kadar anlatılanların hiçbirisini görmez. Ağların güzel yanıda budur zaten, bu kadar karmaşık bir işlemi, bu kadar sessizce halledebilmek...
Ancak bilgisayar kullanıcısı ağın son parçasını kesinlikle görür. Kullandığı ağ programını. Ağ programı deyince "Allah Allah ben niye görmedim bunu şimdiye kadar" diye korkmayın. Ağ programına en basit örnek Windows Explorer’dir. Ya da namı diğer "Bilgisayarım". Bilgisarım’ı açıp, bir ağ sürücüsüne çift tıkladığınızda ağı kullanmış olmuyor musunuz? Aynı şekilde Web’de sörf yaparken de IE veya Netscape kullanıyoruz. E-mail için farklı bir programımız var. Sonuç olarak kullanıcılar ağ’ı bir program vasıtasıyla kullanılar. Ağı oluşturan en son bileşen bu programdır.
Ağ programları kendi içinde veri şifreleme, kullanıcı isminin kontrolü gibi özellikler barındırabilirler. Bir önceki başlık altında incelediğimiz sunum katmanının bir çok görevi bu programlar tarafından da yapılabilir.
Selin Ayşe’nin Excel dosyasını nasıl kendi bilgisayarına kopyaladı?
Bu noktaya kadar adım adım bir ağı oluşturan değişik bileşenleri inceledik. İsterseniz şimdi Selin’in Ayşe’nin bilgisayarından Excel dosyasını nasıl kendi bilgisayarına kopyaladığını adım adım görelim. Selin önce "Computers Near Me" ile ağ üzerindeki diğer bilgisayarları gördü.
Selin ve Ayşe aynı Excel versiyonunu kullandıkları için uyumsuz dosya formatı söz konusu değil. Bu ağda veri şifreleme yok ancak kullanıcı adları kontrol ediliyor. Selin Ayşe’nin bilgisayarına çift tıkladığı anda iki sistem haberleşmeye başlıyorlar. Ayşe’nin bilgisayarı kendi kullanıcı veritabanını kontrol ederek Selin kullanıcısının bu bilgisayar üzerinde ne gibi haklara sahip olduğunu kontrol ediyor. Bu esnada iki bilgisayar arasında ilk oturum açılmış oluyor. Selin dosyayı Ayşe’nin diski içinde buluyor ve sürükleyip kendi masaüstüne bırakarak kopyalama işlemini başlatıyor
Bu basit hareket arka planda bir çok işlemi tetikliyor. Önce Ayşe’nin ağ protokolü üst katmandan kendisine gelen bu dosyayı küçük parçalara ayırıyor. Her parçaya da bir numara veriyor ki, Selin’in bilgisayarı bu parçaları tekrar birleştirebilsin.
Daha sonra her bir parçaya Selin’in ve Ayşe’nin IP adresi ekleniyor.
Paketler artık Ayşe’nin ağ kartına gitmeye hazır. Ağ kartı bu IP paketlerini bu sefer kendi ağ paketinin içine koyuyor ve ağ paketinin üstüne de hem kendi MAC adresini, hem de Selin’in ağ kartının MAC adresini ekliyor. Tabii CRC kodunu her paket için oluşturup pakete dahil etmeyi de unutmuyor.
Ayşe’nin ağ kartı her bir paketi hazır hale getirdiğinde o anda kabloyu bir kullanan var mı(ağın genelinde bir trafik var mı) diye kontrol ettikten sonra kablo boşta ise paketi hub’a yolluyor.
Paket hub’a ordan da diğer tüm bilgisayarlara ulaşıyor. Ancak sadece Selin’in makinası gelen paketi işleme alıyor. CRC kodunu kullanarak "paket sağlıklı ulaştı mı" diye kontrol ettikten sonra ağ paketini açıp(yani MAC adresi ve CRC kodu gibi bilgileri temizleyip) içindeki veriyi (IP paketi) bir üst katmana yani ağ protokolüne yolluyor.
Artık Selin’in sistemi(TCP) gelen paketleri birleştirip Excel dosyasını bütün hale getirmeye başlıyor. Eğer paketlerden birisi ulaşmamışsa, Ayşe’nin bilgisayarından o paketi tekrar göndermesini istiyor.
Bu bölümde TCP’nin çalıştığını sanırım anladınız. Excel dökümanı bir bütün halinde alındıktan sonra dosya gerekli yazılıma aktarılıyor. Burada da dosya kopyalarken Selin’in kullandığı Windows Explorer’den bahsediyoruz("Computers Near Me" Windows Explorer’in bir bölümüdür).
Dosya Selin’in masaüstünde belirdiği anda ağ bileşenleri bu işlem için açılan oturumu kapatarak bir sonraki işleme hazırlanıyorlar.
Tüm bu işlemler arka planda olurken, Selin’in dosyayı kopyalanırken gördüğü tek şey havada uçan dosya animasyonu oluyor...
Son söz
Dikkat ettiyseniz yazının başında beri bu sayfada anlatılanlar genel olarak tüm ağ sistemlerinde geçerlidir demiştik. Yazı boyunca da katmanlardan, adım adım gelişen bir yapıdan bahsettik. Aslında tüm bu anlatılanlar OSI Seven Layer Model(7 katmanlı OSI modeli)’den ibaret.
Birde anlatım Windows 98 de gösterilmiştir.Fakat burda anlatılmak istenen
ağın çalışma mantığıdır..
Alıntıdır...