Unix Soketi - İstemci Sunucu Modeli

Net Uygulamalarının çoğu, bazı bilgileri değiş tokuş etmek için birbirleriyle iletişim kuran iki işlemi veya iki uygulamayı ifade eden İstemci-Sunucu mimarisini kullanır. İki işlemden biri bir istemci işlemi olarak hareket eder ve diğer bir işlem bir sunucu görevi görür.

Müşteri Süreci

Bu, genellikle bilgi talebinde bulunan süreçtir. Yanıtı aldıktan sonra bu süreç sona erebilir veya başka işlemler yapabilir.

Exampleİnternet Tarayıcısı, bir HTML web sayfası almak için Web Sunucusuna bir istek gönderen bir istemci uygulaması olarak çalışır.

Sunucu İşlemi

Bu, istemcilerden bir talep alan süreçtir. Müşteriden bir talep aldıktan sonra, bu işlem gerekli işlemi gerçekleştirecek, istenen bilgileri toplayacak ve talep eden müşteriye gönderecektir. Tamamlandığında, başka bir müşteriye hizmet vermeye hazır hale gelir. Sunucu süreçleri her zaman tetiktedir ve gelen talepleri karşılamaya hazırdır.

Example - Web Sunucusu, İnternet Tarayıcılarından gelen istekleri beklemeye devam eder ve bir tarayıcıdan herhangi bir istek alır almaz, istenen bir HTML sayfasını alır ve o Tarayıcıya geri gönderir.

İstemcinin sunucunun adresini bilmesi gerektiğini, ancak sunucunun bağlantı kurulmadan önce istemcinin adresini veya hatta varlığını bilmesi gerekmediğini unutmayın. Bir bağlantı kurulduğunda, her iki taraf da bilgi gönderip alabilir.

2 katmanlı ve 3 katmanlı mimariler

İki tür istemci-sunucu mimarisi vardır -

  • 2-tier architecture- Bu mimaride istemci, sunucu ile doğrudan etkileşime girer. Bu tür mimarinin bazı güvenlik açıkları ve performans sorunları olabilir. Internet Explorer ve Web Sunucusu iki katmanlı mimari üzerinde çalışır. Burada güvenlik sorunları Güvenli Yuva Katmanı (SSL) kullanılarak çözülür.

  • 3-tier architectures- Bu mimaride, istemci ile sunucu arasında bir yazılım daha bulunur. Bu orta düzey yazılıma 'ara yazılım' denir. Middleware, ağır yük durumunda tüm güvenlik kontrollerini ve yük dengelemeyi gerçekleştirmek için kullanılır. Bir ara yazılım, istemciden gelen tüm istekleri alır ve gerekli kimlik doğrulamasını yaptıktan sonra bu isteği sunucuya iletir. Daha sonra sunucu gerekli işlemi yapar ve yanıtı ara yazılıma geri gönderir ve son olarak ara yazılım bu yanıtı istemciye iletir. 3 katmanlı bir mimari uygulamak istiyorsanız, Web Logic veya WebSphere yazılımı gibi herhangi bir ara yazılımı Web Sunucunuz ile Web Tarayıcınız arasında tutabilirsiniz.

Sunucu Türleri

Sahip olabileceğiniz iki tür sunucu vardır -

  • Iterative Server- Bu, bir sunucu işleminin bir istemciye hizmet verdiği ve ilk isteği tamamladıktan sonra başka bir istemciden talep aldığı en basit sunucu biçimidir. Bu sırada başka bir müşteri beklemeye devam eder.

  • Concurrent Servers- Bir işlem daha uzun sürebilir ve başka bir istemci bu kadar uzun süre bekleyemeyeceğinden, bu tür bir sunucu aynı anda birçok isteğe hizmet vermek için birden çok eşzamanlı işlem çalıştırır. Unix altında eşzamanlı bir sunucu yazmanın en basit yolu, her istemciyi ayrı ayrı ele almak için bir çocuk süreci çatallamaktır .

Müşteri Nasıl Yapılır

Bir bağlantı kurmaya yönelik sistem çağrıları, istemci ve sunucu için biraz farklıdır, ancak her ikisi de bir soketin temel yapısını içerir. Her iki işlem de kendi soketlerini oluşturur.

İstemci tarafında bir soket oluşturmanın adımları aşağıdaki gibidir -

  • İle bir soket oluşturun socket() sistem çağrısı.

  • Soketi kullanarak sunucunun adresine bağlayın. connect() sistem çağrısı.

  • Veri gönderin ve alın. Bunu yapmanın birkaç yolu vardır, ancak en basit yolu,read() ve write() sistem çağrıları.

Sunucu nasıl yapılır

Sunucu tarafında bir soket oluşturmanın adımları aşağıdaki gibidir -

  • İle bir soket oluşturun socket() sistem çağrısı.

  • Soketi kullanarak bir adrese bağlayın. bind()sistem çağrısı. İnternetteki bir sunucu soketi için bir adres, ana makinedeki bir bağlantı noktası numarasından oluşur.

  • İle bağlantıları dinleyin listen() sistem çağrısı.

  • İle bir bağlantıyı kabul edin accept()sistem çağrısı. Bu çağrı genellikle bir istemci sunucuya bağlanana kadar bağlantıyı engeller.

  • Kullanarak veri gönderin ve alın read() ve write() sistem çağrıları.

İstemci ve Sunucu Etkileşimi

Tam İstemci ve Sunucu etkileşimini gösteren şema aşağıdadır -