Tarayıcılar her HTTP isteği için yeni TCP bağlantıları oluşturuyor mu?


23

HTTP'nin temelde sadece TCP üzerinden bir metin protokolü olduğunu ve TCP'nin durum / bağlantı tabanlı olduğunu biliyorum. Bu, tarayıcının HTTP isteği yapmadan önce TCP üzerinden bir sunucuya bağlanması gerektiği anlamına gelir. O halde soru: tarayıcılar genellikle her HTTP isteği için yeni bir TCP bağlantısı oluşturur mu?

Tarayıcılar bir TCP isteğini açabilir ve kullanıcı o sunucuda hala gezinmeye devam ettiği sürece bunu canlı tutabilir, ancak sunucuların bunu işlemek için büyük miktarda maksimum bağlantı kullanması gerekir. Ancak yine, tarayıcılar her istek için bir bağlantı oluşturuyorsa ve kullanıcı aynı sunucuda çok fazla göz atıyorsa, bu bir atık gibi görünür. Genellikle nasıl çalışır? Belki bir zamanlayıcı kullanarak?

Yanıtlar:


30

HTTP / 0.9'da (artık kullanılmıyor), her istek ayrı bir TCP bağlantısı kullandı ve yanıtın kapatılması bağlantı kapatılarak bildirildi.

HTTP / 1.0'da ayrı bağlantılar hala resmi varsayılan değerdir. Ancak, Connection: Keep-Alivesunucu destekliyorsa kalıcı bir bağlantı istemek için gayri resmi ancak çok yaygın olarak desteklenen bir " " istek üstbilgisi kullanılabilir.

HTTP / 1.1'de kalıcı bağlantılar varsayılan haline geldi ve eski tekli istek davranışı açıkça talep edilmelidir. Genellikle çoklu (2–5) kalıcı bağlantı kullanılır.

(İsteğe bağlı olarak isteklerin ardışık düzenlenmesi gerekebilir , ancak bunun uygulanması zor olduğu ve çözdüğünden daha fazla sorun oluşturduğu (satır başı engelleme vb.), Dolayısıyla hiç kimse HTTP / 1.x ardışık düzenini kullanmaz.)

HTTP / 2 (diğer adıyla SPDY ), birçok isteği aynı anda çoğaltmak için özel olarak tasarlanmıştır. Yanıtların herhangi bir sırada ve hatta aynı anda gelmesini sağlayan bir çerçeveleme / paketleme katmanı vardır.

Kaynaklar: Wikipedia makalesi ve RFC 2616 bölüm 8.1 .



6

"Bağlantı: Canlı Tut" başlığı var. Ayrıntılar için enwiki'ye bakın.

Bağlantıları yakalamak ve analiz etmek ve tüm başlıkları görmek için Wireshark'ı kullanabilirsiniz.


Neden Fiddler yerine Wireshark?
Pacerier

3
Fiddler 1'dir. Açık Kaynaklı bir yazılım değildir; 2. Yalnızca Windows.
Vi.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.