İstemci-Sunucu Mimarisi
Önceki Beej'in Ağ Programlama Kılavuzu Sonraki
İstemci-Sunucu Mimarisi
İçindekiler
1. Basit Bir Veri Akış Sunucusu
2. Basit Bir Veri Akış İstemcisi
3. Veri Paketi Soketleri
İstemci-sunucu dünyasında yaşıyoruz, bunu kabul et dostum. Ağ ortamındaki hemen her süreç ya da uygulama öyle ya da böyle sunucu süreçleriyle konuşup aldıkları cevaplara göre iş yapıyor ya da tersi oluyor. Mesela telnet programını ele alalım. Siz uzaktaki bir konağın 23 numaralı portuna telnet (istemci) ile bağlandığınızda o konakta da telnetd (sunucu) isimli bir program soluk alıp vermeye başlar. Bu program gelen telnet bağlantılarını dinler, size bir "login:" istemi gönderir, vs. vs.
Şekil 5.1. Sunucu-İstemci Etkileşimi
İstemci ile sunucu arasındaki bilgi alışverişi Şekil 5.1'de özetlenmiştir.
Dikkat etmeniz gereken noktalardan biri de şudur: istemci-sunucu çifti birbirleri ile SOCK_STREAM, SOCK_DGRAM veya başka bir tarzda konuşuyor olabilirler (yeter ki aynı dili konuşsunlar). İstemci-sunucu çiftlerine birkaç meşhur örnek vermek gerekirse: telnet/telnetd, ftp/ftpd veya bootp/bootpd. Yani ne zaman bir ftp programı çalıştırsanız diğer tarafta ftpd gibi size hizmeti sunan bir süreç vardır.
Genellikle sunucu makinada ilgili hizmet için tek bir sunucu program çalışır ve bu program kendisine bağlanan birden fazla istemciye fork() işlevi aracılığı ile hizmet eder. Süreci özetlemek gerekirse: Sunucu bir bağlantı isteği için bekleyecek, accept() işlevi ile bunu kabul edecek ve fork() işlevi ile bir çocuk süreç yaratıp veri alışverişini bu sürece devredecek. Bir sonraki bölümde inceleyeceğimiz örnek sunucu yazılımın yaptığı iş tam da yukarıda anlatıldığı gibidir.
Önceki Üst Ana Başlık Sonraki
DNS -- Sen "whitehouse.gov" de, ben de "198.137.240.92" diyeyim Başlangıç Basit Bir Veri Akış Sunucusu
Bir Linux Kitaplığı Sayfası