HTTP'nin vatansız olduğu söylenir. Yani, veri iletimi için bilgi depolamak zorunda değildir.
Ancak HTTP, durum odaklı bir TCP kullanır.
Bu durumda, HTTP nasıl vatansız hale gelir?
HTTP'nin vatansız olduğu söylenir. Yani, veri iletimi için bilgi depolamak zorunda değildir.
Ancak HTTP, durum odaklı bir TCP kullanır.
Bu durumda, HTTP nasıl vatansız hale gelir?
Yanıtlar:
HTTP, kendisini vatansız olmasına rağmen, kendisini taşımak için kullanılan alt düzey protokollerin hiçbirini umursamaz ve bunlardan bağımsızdır.
Aktarım teknolojisi TCP veya Novell'in eski SPX'i veya SCTP'si veya hayal edebileceğiniz başka herhangi bir şey olabilir ve HTTP hala aynı şekilde çalışacaktır. HTTP, akışa veya bağlantıya yönelik bir protokol gerektirir - ve URL'lerin çözülebilir olmasına bağlıdır - ancak bunun nasıl gerçekleştirildiği ile ilgilenmez.
Katmanlı model veya ağ yığınının var olmasının sebeplerinden biri de budur : Uygulama katmanının, kendisiyle daha düşük katmanlarla ilgilenmesi gerekmez.
Sadece düşük seviyeli bir protokolün durumlu olması, üzerinde bir şeyin otomatik olarak durumsal olduğu veya durumlu olması gerektiği anlamına gelmez.
HTTP'nin kendisi durumsuzdur. Bu, uygulamaların durum oluşturmak için HTTP'nin üzerine başka bir katman uygulamak zorunda oldukları anlamına gelir. Bu genellikle oturum çerezleriyle yapılır.
"HTTP durumsuzdur", her HTTP işleminin (istek-yanıt çifti) önceki istek-cevap çiftinden herhangi bir durumdan bağımsız olarak işlenebileceği anlamına gelir.
Belirli bir istek-cevap çiftini taşımak için, keyfi olarak büyük blokları ve isteğe bağlı olarak büyük blokları geri taşıyabilen ve sınırlı paket büyüklüğüne sahip bir katman üzerinde bunu yapabilmek için TCP'nin durumlu olması gerekir.
Ancak işlem sınırı boyunca, devlet yoktur. Müşteri bağlantıyı kesebilir ve bir sonraki istek için yeni bir bağlantı kurabilir. Aslında bu, ilk sürümlerde tek seçenek idi ve müşteri Connection: keep-alive
başlığı içermiyorsa yine de böyle çalışıyor .
Bir sonraki istek farklı sunucu tarafından da kolayca idare edilebilir ve müşteri asla bilemeyecektir, çünkü sunucunun herhangi bir durumu sürdürmesi gerekmemektedir (uygulama, genellikle oturum şeklinde olan HTTP'nin üzerine kendi durumunu eklemiyorsa, sonuçta ortaya çıkan komplikasyonlar) yük dengelemede, HTTP üzerinde durum bilgisi içeren protokol oluşturma cezasıdır). Yük dengeleme meşgul sunucularında bu avantaj elde edilir.
can also easily be handled by different server and the client will never know
Her ne kadar teknik olarak doğru olsa da, birçok web uygulamasında, aynı tarama oturumundan aynı sunucuya gelecek istekleri yönlendirmek için bir yük dengeleyici gerektiren yapışkan oturumlar kullandığından, bu yanıltıcıdır. Bir HTTP perspektifinden bakıldığında, oturumlar önemsizdir, ancak son cümleniz, son kullanıcı deneyiminin etkilenmeyeceği ve yapışkan oturumlarda yanlış olacağı anlamına gelir.
HTTP'nin "durumsuz" niteliği, bu katmanda, hiçbir durum bilgisinin oluşturulmadığını veya kullanılmadığını gösterir.
Bunu birkaç örnekte görebilirsiniz, örneğin, HTTP kimlik doğrulamasında, kimlik bilgileri her istekle birlikte gönderilir ve kalıcı bağlantılar gerçekten yalnızca bir optimizasyondur (örneğin, kimlik bilgileri gönderirsem, sunucu istekten sonra bunu bırakırsa bile bağlantı açık).
Buna karşılık, çerez tabanlı oturum açma mekanizmaları durumsaldır, ancak HTTP'nin bir parçası değildir.
Onu bir tane Rus bebek seti (ya da istersen kutular) içinde bir başkası taşıyan bir tane olarak anlamalısınız, fena halde böyle işler: TCP "içerden" HTTP'yi taşır ancak onunla ya da onun özellikleriyle ilgilenmez.
Resmin tamamını elde etmek için OSI Modeli ile ilgili daha net bir şekilde okuma yapmanızı öneririm .
TCP, OSI modelinde HTTP'nin birkaç katının altına oturur, her katman aslında farklı bir protokole karşılık gelir.
Bizim durumumuzda HTTP sunum ve uygulama katmanlarında ve TCP, taşıma katmanında oturur. Ya da TCP / IP Modelini kullanırsanız, hem TCP hem de IP protokolleri, uygulama ve sunum katmanlarında Ağ Bağlantısı katmanına ve HTTP'ye oturur.