CCNA: Ağlar Arası İletişim Modelleri
Bir ağ topluluğunda yer alan bilgisayarlar genelde aynı cihazlardan oluşur, yani Dell , HP , IBM marka tercih etmiş bir firma herşeyini ordan alır ama böyle bir kural olmasın diye de OSI modeli çıkarılmıştır 🙂
Yani elinizde 100 tane Dell , 10 HP marka bilgisayar varsa bunları birleştirip sorunsuz bir ağ topluluğu oluşturabilirmiyiz, Evet OSI(Open Systems Interconnection) modeli ortadaki tüm sınırlamayı kaldırmıştır. Rahatlıkla modele uygun bağlantılar sonrasında istediğiniz yapıyı birlikte kullanabilirsiniz.
OSI modeli için ilk yazımda [2. katman] , [3. katman] gibi terimler kullanmıştım, şimdi bunları öğrenelim.
OSI’ye Göre Katman Nedir?
Birden fazla makinayla ağ topluluğu kurarken haberleşmenin nasıl olacağının kararlaştırıldığı kavramsal bir tasarıma ihtiyaç vardır, verimli haberleşme için gerekli tüm işlemleri adresler ve bu işlemleri , katman denilen mantıksal gruplara böler.
Tanım anlamsız geldiyse şunu düşünün bir otel var ilk kapıda bir görevli , girince bir görevli, arka müdür odasında, üst katta ve yemek odasında ayrı görevlilier bulunuyor. İşte bunların her biri birer katmandır ve bir takım işleri yaparlar. Her birinin birbirinden haberdar olması gerekmez ama sonuçta müşteri herşeyi tam ve bütün olarak görür.
Biraz daha iyi bir örnek vermek gerekirse; bir program yazmanız gerektiğini düşünün hemde katman2’de olsun. Siz sadece katman 2 ile ilgilenirsiniz ve diger katmanları düşünmeniz de gerekmez. Diğer katman ve protokoller diğer işleri halledeceklerdir. Buna binding denilmektedir, yani aynı işi gören işlemler aynı katmanda yer alırlar , bu şekilde bir tasarım yapılmıştır.
Neden Böyle Bir Referans Modeli Kullanılmış?
– Her zaman büyük bir yapı ile uğraşmak yerine küçük bir yapı ile işi çözmek daha kolaydır.
– Bir sorun çıktığında küçük parçalarda sorun tespiti daha kolay olur
– İletişim için farklı ağ , donanım ve yazılıma izin verir.
– Bir katman diğerini engellemez böylelikle bir katmanı geliştirip diğerlerine dokunmadan işlem yapabilirsiniz.
– Belirli bir standart olduğu ve bunlar uyumlu olduğu için üretici sayısının artması uyumsuzluk yaratmaz.
bu tip faydalarını çoğaltabiliriz.
Artık OSI’yi anlatalım, anlayalım da biz de ağ kurarken hangi katman ne iş yapıyor , nerede yanlış yapıyoruz kolayca anlayalım :)))
OSI(Open Systems Interconnection) Referans Modeli
Bizim farklı makinalarla veri transferi yapmamıza olanak sağlamak OSI’nin en güzel fonksiyonlarından biridir. Kısaca windowsunuzla linux server’ı yönetebilirsiniz, veri alışverişi yapabilirsiniz.
Yine de OSI’yi fiziksel bir model olarak düşünmeyin, OSI bir kural bütünüdür aslında. Mesela bir ağ tasarımı yaparken bu kuralları göz önünde bulundurarak tasarım yaparsınız, aslında bu kuralların üzerine inşa edersiniz.
OSI 2’ye ayrılmış 7katmandan oluşan bir kurallar topluluğudur.
7 katmanı 3 ve 4 katman olarak ikiye böleriz, ilk 3 katman kullanıcı ile uygulamaların birbirleriyle anlaşabildikleri katmanlardır.
Sonraki 4 katman da verinin uçtan uca nasıl aktarılacağını açıklar.
Bu resimde gayet güzel anlatılmış 2 makina birbiriyle bu şekilde iletişim kuruyor.(System Interconnection)
Host A ve Host B yazan kısımlarda bir bilgisayar ekranı olduğunu düşünün ve karşısına bir sandalye koyup oturun. Bu durumda A kişisi ekranda ne yazarsa ekranın arkasındaki renklerden aşağı kadar bilgi iniyor sonra kablolardan B kişisinin tarafına geçiyor ve en alttaki renkten başlayıp yukarı kadar geçiyor ve ekranda görünüyor. Sanırım böyle daha somut bir örnek oldu.
ilk 3 katman kullanıcı ve programların iletişimde kullandığı katmanlar demiştik bunlar; - Application - Session - Presentation
Sonraki 4 katman verilerin karşıya iletilmesiyle alakalı; - Transport - Network - Data Link - Physical
Tüm bu katmanları kullanan ağ cihazları şunlardır;
– Network Management Station (NMS)
– Web ve Uygulama sunucuları
– Gateway’ler
– Ağ hostları
Tüm OSI katmanlarından bahsedelim daha fazla aklımızda birşeyler oluşsun;
Application Katmanı
Bu katman kullanıcının uygulamarda arayüzden yaptığı işlemler sonucunda eğer uzak bir işlem gerektiriyorsa kullanılacaktır. Mesela bir Firefox açtınız ve anasayfanız çağrıldı, işte o çağırma işlemi yapıldığında mevcutta bulunmayan bir kaynaktan bilgi istendiği için Application Layer http için çağrılmış oldu.
Bir de internetinizin kesildiğini düşünelim, bu durumda Firefox bir application katmanında mıdır?
Tabiki hayır çünkü uzak bir yere bağlantı yapmak istediğinde interneti olmadığı için bir baglantı kuramayacak yani Application Layer’ından yanıt alamayacak işler karışacaktır.
Bu durumda aslında Firefox internetsiz çalıştığı ve uzak makinaya ihtiyaç duymadığı durumlarda application layer’a ihtiyaç duymadan çalışır.
Diğer yandan masa üstündeki bir çok ftp, http, scp yapan uygulamalarımız aslında sadece masaüstü kullanımı dışında arka planlarında bilgi alışverişi de yaparlar bu durumda Application layer’a ihtiyaç duyarlar..
Örnekleri çoğaltmak gerekirse putty, winscp , thunderbird , outlook gibi transfer ve eposta araçları Application Layer’ı kullanırlar.
Presentation Katmanı
Adından da anladığımız gibi bir sunuş, sunma olayı mevcut ancak kim kime neyi sunuyor o önemli. Application Layer’dan sonra gelen bir katman bence mutlaka onunla alakalı olmalıdır.
Presentation Layer bilginin çvrilmesi kodlanlası işini üstlenir Application Layer’dan gelen veriyi alır kendi standardına göre çevirir. Mesela ASCII’ye çevirse gelen kodu hangi bilgisayar bunu okuyamaz ki değil mi sonuçta bir standarttır ASCII.
Çevirme işleminin dışında gelen veriyi yine çevirir ve Application katmanına sunar. Sonuçta bir makinadan bir makinaya gönderilen veri bu katmanda kodlanır , şifrelenir , çözülür sonuç olarak Application katmanının anladığı şekilde sunulur.
Session Katmanı
Bu katman da Presentation’dan sonra geldiğine göre kesin onunla alakalı bir işlem yapıyordur diye düşünüyorum 🙂
Session katmanı adından da anlaşılacağı gibi oturum katmanıdır. Kısaca şöyle anlatıyım, Presenstation katmanı verileri işler , şifreler , çözer gayet güzel ancak her zaman sadece 1 iş mi yapar?
Tabiki hayır birden fazla işlemi aynı anda yapmak zorunda kalır bu durumda da her bir işlem için bir oturum oluşturan katman işte Session katmanıdır. Böyle tüm işlemler kendi çerçevesinde güven içinde tamamlanmış olur.
3 Farklı modu vardır - Simplex - Half Duplex - Full Duplex
Bu modlardan birini kullanarak sistem ve hizmetler arasındaki iletişimi koordine eder ve düzenler.
Buraya kadar gördüğümüz 3 katman daha önce de bahsettiğim kullanıcı taraflı katmanlardı, kullanıcı ve programlar iletişim için kullanırlardı, asıl bundan sonraki katmanlar daha komplex ve daha detaylı bilgi içeren katmanlardır.
Transport Katmanı
Transport katmanı adından da anlaşılacağı gibi bir alışverişten sorumlu katmandır. Verinin boyutu herzaman değişebileceği içinde kendince bir bölme ve tekrar birleştirme yani segmentleme ve birleştirme işlemi yapar. Bir noktadan diğerine veri aktarım servisleri sağlar, ağ topluluğunda gönderici ve hedef arasında mantıksal bir bağlantı kurabilir. Transport katmanı, üst-katman uygulamalarının çoklanması (multiplexing), oturumların oluşturulması ve sanal devrelerin kapatılması için mekanizmalar sağlamaktan sorumludur. Ayrıca, transparan veri trafiği sağlayarak network ile ilgili bilgilerin detaylarını üst katmanlardan gizler.
Transport katmanı connectionless ya da connection-oriented olabilir. Özellikle Cisco’da oriented olan kısımla ilgilenir. Çünkü önemli olan güvenli iletişim sağlamaktır ve Connection-oriented güvenli bir bağlantıdır. Güvenli ağ transport katmanında kullanılıdır bu da acknowledgment , sequencing ve akış kontrolü kullanılacak anlamına gelmektedir.
Güvenli bir veri aktarımı için veri bütünlüğünden, akış kontrolü yapılarak aynı zamanda kullanıcıların sistemler arası güvenli bağlantı istemelerine izin vererek olur. Akış kontrolü veri kaybına yol açılmasın diye aşırı yüklenmenin önüne geçer, iki taraftan herhangi birinde aşırı yüklenme olduğunda mutlaka veri kaybı oluşur bir makina gelen veriyi alamayacağı için veriler kaybolur.
Güvenli veri aktarımı için Connection-oriented iletişim oturumları açılır ve ilgili protokollerle bir dize güvenlik önlemlerinin alındığından emin olurlar. Bunlar:
Taşınan Segmentler(parçalar) alındıklarında , gönderici onaylanır. Onaylanmayan bir segment tekrar aktarılmaz. Seğmentler hedeflerine varınca yeniden düzgün bir şekilde sıralanırlar. Aşırı yüklemeden kaçmak için yönetilebilir bir veri akımı sağlanır.
Book: Computer Networking – A Top-Down Approach sixth edition 32Bit Ubuntu için Cisco Packet Tracer
C# üzerinde soket programlama ile yazılım geliştiriyorum. Client ve Server olmak üzere iki ayrı programım var. Bu programlar aynı ağ üzerinde haberleşebiliyor. Ancak Farklı ağlar üzerinde haberleşemiyor. Farklı ağlar üzerinde haberleşmeyi nasıl yapabilirim?
Öncelikle karşılıklı haberleşebilmeleri için portların açık olması ve Server’ın sabit ip’ye sahip olması gerekir.
Siz bunu en iyi server’ı Virtual Machine kurarak kendi makinanızdan erişilir hale getirip yapabilirsiniz.