Bu çalışma materyali, "Bilgisayar Ağları: Yukarıdan Aşağıya Bir Yaklaşım" (8. baskı, Jim Kurose, Keith Ross, Pearson, 2020) adlı kitabın 2. Bölümü olan Uygulama Katmanı slaytlarından ve ilgili bir ders kaydının sesli dökümünden derlenmiştir.
📚 Uygulama Katmanı: Kapsamlı Bir Çalışma Materyali
💡 Giriş ve Genel Bakış
Uygulama katmanı, bilgisayar ağlarının en üst katmanıdır ve son kullanıcıların etkileşimde bulunduğu yazılımların ağ üzerinden nasıl iletişim kurduğunu belirler. Bu katman, sosyal ağlardan e-postaya, video akışından çevrimiçi oyunlara kadar günlük hayatta kullandığımız birçok uygulamanın temelini oluşturur. Bu çalışma materyalinde, uygulama katmanının kavramsal ve uygulama yönlerini, taşıma katmanı hizmet modellerini, istemci-sunucu ve eşten eşe (P2P) paradigmalarını detaylı bir şekilde inceleyeceğiz. Ayrıca, HTTP, SMTP, IMAP ve DNS gibi popüler uygulama katmanı protokollerini ve altyapılarını ele alarak, ağ uygulamalarını programlama konusunda da bir temel oluşturmayı hedefliyoruz.
🌐 Ağ Uygulamalarının Temel Prensipleri ve Mimarileri
Ağ uygulamaları, farklı son sistemler üzerinde çalışıp ağ üzerinden iletişim kuran programlardır. Örneğin, bir web sunucusu yazılımı, tarayıcı yazılımıyla iletişim kurar. Ağ çekirdek cihazları kullanıcı uygulamalarını çalıştırmaz; bu da uygulamaların son sistemlerde hızlı bir şekilde geliştirilip yayılmasını sağlar.
1️⃣ İstemci-Sunucu Paradigması
Bu modelde, iki ana bileşen bulunur:
- Sunucu: ✅ Her zaman açık bir ana bilgisayardır, kalıcı bir IP adresine sahiptir ve genellikle veri merkezlerinde bulunur. Ölçeklenebilirlik için tasarlanmıştır.
- İstemciler: ✅ Sunucuyla iletişim kurar, aralıklı olarak bağlı olabilir ve dinamik IP adreslerine sahip olabilirler. İstemciler doğrudan birbirleriyle iletişim kurmazlar.
- Örnekler: HTTP (Web), IMAP (E-posta), FTP (Dosya Aktarımı).
2️⃣ Eşten Eşe (P2P) Mimarisi
- ✅ Her zaman açık bir sunucu yoktur.
- ✅ Keyfi son sistemler doğrudan iletişim kurar.
- ✅ Eşler, diğer eşlerden hizmet talep eder ve karşılığında hizmet sunar.
- Kendi Kendine Ölçeklenebilirlik: Yeni eşler hem hizmet kapasitesi hem de hizmet talebi getirir.
- Karmaşıklık: Eşlerin aralıklı olarak bağlı olması ve IP adreslerinin değişmesi yönetimi zorlaştırır.
- Örnek: BitTorrent gibi P2P dosya paylaşım sistemleri.
3️⃣ Süreçler Arası İletişim
- Süreç: Bir ana bilgisayar içinde çalışan programdır.
- Aynı Ana Bilgisayar İçinde: Süreçler, işletim sistemi tarafından tanımlanan süreçler arası iletişim (IPC) mekanizmalarını kullanarak haberleşir.
- Farklı Ana Bilgisayarlar Arasında: Süreçler, mesaj alışverişi yaparak iletişim kurar.
- İstemci Süreci: İletişimi başlatan süreçtir.
- Sunucu Süreci: İletişime geçilmesini bekleyen süreçtir.
- Not: P2P mimarilerinde hem istemci hem de sunucu süreçleri bulunabilir.
4️⃣ Soketler
- ✅ Bir süreç, mesajları soketler aracılığıyla gönderir ve alır.
- Analoji: Soket, bir kapı gibidir. Gönderen süreç mesajı kapıdan dışarı iter ve mesajın alıcı sürecin soketine ulaşması için taşıma altyapısına güvenir.
- Her iki tarafta da (gönderen ve alıcı) birer soket bulunur.
- Kontrol: Uygulama geliştiricisi soketi kontrol ederken, işletim sistemi taşıma, ağ, veri bağlantısı ve fiziksel katmanları kontrol eder.
5️⃣ Süreçleri Adresleme
- Mesajları almak için bir sürecin bir tanımlayıcıya sahip olması gerekir.
- Ana bilgisayarın benzersiz bir IP adresi olsa da, aynı ana bilgisayarda birden fazla süreç çalışabileceğinden, süreci tanımlamak için IP adresine ek olarak port numaraları da kullanılır.
- Örnek Port Numaraları:
- HTTP sunucusu: 80
- E-posta sunucusu: 25
- Bir web sunucusuna HTTP mesajı göndermek için hem IP adresi (örn. 128.119.245.12) hem de port numarası (örn. 80) gereklidir.
6️⃣ Uygulama Katmanı Protokolleri
Bir uygulama katmanı protokolü şunları tanımlar:
- ✅ Değiş tokuş edilen mesaj türleri (örn. istek, yanıt).
- ✅ Mesaj sözdizimi (mesajlardaki alanlar ve nasıl ayrıldıkları).
- ✅ Mesaj semantiği (alanlardaki bilginin anlamı).
- ✅ Süreçlerin mesajları ne zaman ve nasıl göndereceği ve yanıtlayacağı kuralları.
- Açık Protokoller: RFC'lerde tanımlanır, herkes erişebilir ve birlikte çalışabilirliği sağlar (örn. HTTP, SMTP).
- Tescilli Protokoller: Belirli bir şirket veya ürün tarafından geliştirilir (örn. Skype, Zoom).
📊 Uygulama İhtiyaçları ve Taşıma Hizmetleri
Uygulamaların taşıma hizmetinden beklentileri farklılık gösterir:
- Veri Bütünlüğü:
- Bazı uygulamalar (dosya aktarımı, web işlemleri) %100 güvenilir veri aktarımı gerektirir.
- Diğer uygulamalar (ses) bir miktar kayba tolerans gösterebilir.
- Zamanlama:
- Bazı uygulamalar (İnternet telefonculuğu, etkileşimli oyunlar) "etkili" olmak için düşük gecikme gerektirir.
- Verim (Throughput):
- Bazı uygulamalar (multimedya) "etkili" olmak için minimum verim miktarı gerektirir.
- Diğer uygulamalar ("esnek uygulamalar") elde ettikleri verimi kullanır.
- Güvenlik: Şifreleme, veri bütünlüğü gibi konuları kapsar.
İnternet Taşıma Protokolleri: TCP ve UDP
| Özellik | TCP (Transmission Control Protocol) …








