Tekrar hoş geldiniz, çocuklar.
Şimdi, yeni bir TCP sunucu tasarımını tartışacağız.
Ve bu tasarıma çoğullamalı TCP sunucusu denir.
Bu yüzden böyle bir TCP sunucusuna çoklanmış TCP sunucusu denir.
Önceki TCP sunucu tasarımında, bir TCP sunucusunun iletişim kurduğu mevcut istemciyle işi bitmediği
sürece başka bir istemciyi ağırlayamayacağı şeklindeki TCP sunucu sınırlamasından bahsetmiştik.
Doğru.
Ancak sunucuların aynı anda yalnızca bir istemciyi ağırlaması gerekmez.
Sunucunun olağan özelliği, aynı anda birden fazla istemciyi ağırlayabilmesidir.
Bu nedenle, TCP sunucusunun çoğullama ile uygulanmasını, yani aynı anda birden fazla istemciyi
ağırlayabilen ve onlarla iletişim kurabilen sunucuları anlamak önemlidir.
Dhcp sunucusunu çoğullama ile uygulamak için on adım olduğunu görebilirsiniz.
Bu on adımı daha önce uyguladığımız ve tartıştığımız TCP sunucusunun on adımıyla karşılaştırırsak,
bu on adımın tartıştığımız on adımla tamamen aynı olduğunu görebilirsiniz, değil mi?
Böylece çoklanmış Dhcp sunucu uygulamasının önceki TCP sunucu uygulamasından hangi açıdan farklı
olduğunu göreceğiz.
Bu nedenle, çoğullama ile bir TCP sunucusunun uygulanmasına ilişkin üst düzey fikri tartışmama izin verin.
Bir sunucunuz var, diyelim ki S, ve bir istemciniz olduğunu varsayalım.
C1 Başlangıçta sunucu açıldığında, yalnızca bir dosya tanımlayıcısı tutar ve bu dosya tanımlayıcısına ana soket dosya
tanımlayıcısı adı verilir.
Doğru.
Bu ana soket dosya tanımlayıcısını yeterince tartıştık.
Böylece ana soket dosya tanımlayıcısı yeni istemci bağlantı isteklerini tespit etmek için kullanılır.
Değil mi?
Yani TCP sunucumuz aslında select sistem çağrısında sadece ana soket dosya tanımlayıcısını izliyor.
Şimdi C1 istemcisinin s sunucusuna bağlantı başlatma isteği gönderdiğini varsayalım, ardından s sunucusu
istemciyle iletişimi gerçekleştirebileceği yeni bir iletişim dosyası tanımlayıcısı oluşturur.
C1 Dolayısıyla, bu noktada sunucu s iki dosya tanımlayıcısı tutmaktadır: ana soket dosya
tanımlayıcısı ve C1 istemcisinin iletişim dosya tanımlayıcısı Sağ.
Şimdi, bir zaman sonra C2 istemcisinin geldiğini ve s sunucusuna bağlantı başlatma isteği gönderdiğini varsayalım,
böylece s sunucusu C2 istemcisi için bir iletişim dosyası tanımlayıcısı oluşturacak ve istemci ile iletişimi gerçekleştirecektir.
Bu iletişim dosyası tanımlayıcısını kullanan C2.
Böylece, sunucuya her yeni istemci bağlandığında, sunucunun bir iletişim dosyası tanımlayıcısı oluşturduğunu
ve bu iletişim dosyası tanımlayıcılarının bir dizisini tuttuğunu görebilirsiniz.
Doğru.
Böylece sunucumuz aynı anda birden fazla bağlı istemciyle iletişim kurabilir çünkü sunucumuz tüm
bağlı istemcilerin iletişim dosyası tanımlayıcısını takip etmektedir.
Yani bu veri yapısı bir dizi kadar basit olabilir, değil mi?
Böylece, TCP sunucumuza her yeni istemci bağlandığında, sunucumuz söz konusu istemcinin iletişim
dosyası tanımlayıcısını oluşturacak ve bu iletişim dosyası tanımlayıcısını diziye ekleyecektir.
Doğru.
Ve TCP sunucusu tarafından her select sistem çağrısı yapıldığında, bu dizinin tamamını okuma kümesine
kopyalayacaktır.
Kopyalanacak.
Ve unutmayın, select sistem çağrısı okuma kümesinde bulunan tüm dosya tanımlayıcılarını izlemek
için kullanılır.
Doğru.
Dolayısıyla, select sistem çağrısını veya TCP sunucusunu kullanmak aslında bağlı tüm istemcilerin tüm dosya tanımlayıcılarını
izler.
Doğru.
TCP sunucumuz bu şekilde birden fazla istemci ile çoklama yapabilecektir.
Bu yüzden size sadece çoklama özelliğine sahip TCP sunucusunun C'de nasıl uygulanabileceğine dair üst düzey
bir tasarım anlatıyorum.
Bir kod yürüyüşü yaptığımızda, bu özel fikrin ağ programlamada nasıl uygulandığına dair net
bir fikre sahip olacaksınız.
Ayrıca, istemci c'nin sunucu s ile olan bağlantısını sonlandırdığını varsayalım, sunucu s ne yapacaktır?
C2 istemcisi için iletişim dosyası tanımlayıcısını diziden silecektir.
Silecek.
Doğru.
Dolayısıyla, okuma kümesinde bu dizi kopyalandığında, yalnızca bağlı istemcilerin iletişim dosyası tanımlayıcısı
mevcut olacaktır.
Doğru.
Yani bu, sunucu s'nin artık istemci C2 ile iletişim kurmayacağı anlamına gelir.
Şimdi TCP sunucusunun çoklama ile kod yürüyüşünü tartışalım ve tartıştığımız önceki TCP sunucusundan nasıl
farklı olduğunu görelim.
Artık çoğullama özellikli TCP sunucusunun gerçekte nasıl çalıştığı hakkında bir fikriniz vardır.