Google, World Wide Web'in 30. yılını anıyor: HTTP olmasaydı İnternet olmazdı

Bugün, World Wide Web'in 30. doğum yıldönümü olan 12 Mart 2019. Bu nedenle, arama motoru devi Google, World Wide Web'in doğumunun 30. yıl dönümünü anmak için ana sayfadaki internette icat edilen logoyu değiştirdi.

Ayrıca bu sabah ünlü açık kaynak Web sunucusu satıcısı Nginx, F5 tarafından satın alındığını duyurdu. İnternetin tarihini bugün sizinle paylaşabileceğimi düşünüyorum.

Bugün internette yüzebilmemizin nedeni, İnternet'in babası Tim Berners Lee olarak bilinen İngiliz bilgisayar bilimcisi bir kişi sayesinde.

Haziran'dan Aralık 1980'e kadar Berners Lee, Cenevre'deki CERN'de (Avrupa Nükleer Araştırma Örgütü) bağımsız bir yüklenici olarak çalıştı. Bu süre zarfında, bir hiper metin sistemi oluşturmak için bir fikir buldu Projenin amacı, araştırmacıların bilgileri paylaşmalarını ve güncellemelerini kolaylaştırmaktır.

Info.cern.ch, dünyanın ilk web sitesi ve web sitesi sunucusudur. Web sitesi CERN'de bir NeXT bilgisayarda çalışmakta ve 6 Ağustos 1991'de yayına başlamıştır.

Berners Lee tarafından icat edilen Hypertext Transmission Control Protocol, bugün aşina olduğumuz HTTP protokolüdür. Şu anda, HTTP protokolünün en son sürümü, İnternet'in temel protokolü olan HTTP / 2'dir - HTTP protokolü olmadan bugün İnternet'in olmayacağı söylenebilir.

HTTP protokolü, tarayıcıdan sunucuya bir mimari olan BS mimarisini kullanır. İstemci, tarayıcı aracılığıyla sunucuya bir HTTP isteği gönderir ve sunucu, istemcinin isteğini ayrıştırır ve yanıtlar.

HTTP, TCP / IP protokolüne dayalı bir uygulama katmanı protokolüdür. OSI yedi katmanlı modelin en üst katmanında, paket iletimini içermez, esas olarak istemci ile sunucu arasındaki iletişim formatını belirtir ve varsayılan olarak bağlantı noktası 80 kullanılır.

HTTP protokolünün en eski sürümü 1991'de yayınlanan HTTP / 0.9'du. Bu sürümün yalnızca bir komutu vardır, GET. GET aracılığıyla, sunucunun kök dizinindeki index.html dosyasını istemek gibi sunucu kaynaklarını elde edebilirsiniz.

GET /index.html

Sunucu, index.html içeriğini istemciye döndürür ve istemci tarayıcısı aracılığıyla html etiketlerini işler ve ayrıştırır. Protokolün bu sürümü, sunucunun yalnızca HTML biçimindeki dizelere yanıt verebileceğini ve diğer biçimlere yanıt veremeyeceğini belirtir. Diğer bir deyişle, günümüzün görüntü ve videolar gibi multimedya kaynakları HTTP / 0.9 sürümünde aktarılamamaktadır.

< html > < vücut > Selam Dünya < /vücut > < / html >

Mayıs 1996'da HTTP / 1.0 sürümü yayınlandı ve POST komutu ve tarayıcı ile sunucu arasındaki etkileşimi zenginleştiren HEAD komutu eklendi.

Bu sürüm, metin, resim, video ve dosyalar dahil olmak üzere herhangi bir formatta HTTP protokolü aracılığıyla gönderilebilir. Bu, İnternet'in büyük gelişiminin temelini attı.

HTTP / 1.0, istek yöntemini ve dosya gönderme desteğini artırmanın yanı sıra format değişiklikleri de ekler. Veri bölümüne ek olarak, her iletişim bazı meta verileri açıklamak için başlık bilgilerini (HTTP başlığı) içermelidir. Ayrıca durum kodu, çok karakterli set desteği, çok parçalı tip, yetkilendirme, önbellek, içerik kodlama ve daha fazlası eklenmiştir.

Normal bir HTTP isteği ve yanıtı, istenen URL'yi, istek yöntemini, durum kodunu, HTTP protokol sürümünü, istek başlığını ve yanıt başlığını içerir. Örneğin, aşağıdaki şekilde gösterildiği gibi, Google'ı istemek için HTTP mesaj başlığı aşağıdaki gibidir:

Karakter kodlaması açısından HTTP / 1.0 sürümü, başlık bilgisinin ASCII kodu olması gerektiğini ve aşağıdaki verilerin herhangi bir formatta olabileceğini şart koşmaktadır. Bu nedenle, sunucu yanıt verdiğinde, istemciye verinin hangi formatta olduğunu söylemelidir.Bu, Content-Type alanının amacıdır.

text / html text / css resim / jpeg resim / png resim / svg + xml ses / mp4 video / mp4 application / javascript uygulama / pdf

Bu veri türleri topluca MIME türleri olarak adlandırılır ve her değer, eğik çizgiyle ayrılmış bir birincil tür ve ikincil tür içerir.

Ek olarak, HTTP / 1.0 da verileri sıkıştırıp iletebildiğinden, aşağıda gösterildiği gibi, veri sıkıştırma yöntemi İçerik Kodlama alanı aracılığıyla açıklanır, bu da verileri sıkıştırmak için gzip kullanılması anlamına gelir:

İçerik Kodlama: gzip

HTTP / 1.0 sürümü de mükemmel değildir.Başlıca dezavantajı, her TCP bağlantısı kurulduğunda yalnızca bir istek gönderilebilmesidir. Verileri gönderdikten sonra bağlantı kapatılır, başka kaynaklar talep etmek istiyorsanız yeni bir bağlantı oluşturmanız gerekir. Birden fazla istekte bulunulursa, sunucuya sık sık yapılan istekler kaçınılmaz olarak sunucuda daha fazla kaynak tüketimine neden olacaktır.

Bu sorunu çözmek için, bazı tarayıcılar istekte bulunurken standart olmayan bir Bağlantı alanı kullanır.

Bağlantı: canlı tutma

Bu alan, sunucunun TCP bağlantısını kapatmamasını gerektirir, böylece diğer istekler yeniden kullanılabilir. Sunucu da bu alanla yanıt verir. Ancak bu birleşik bir standart değildir.

Ocak 1997'de HTTP / 1.1 sürümü yayınlandı, bu sürüm 1.0 sürümünden yalnızca yarım yıl sonraydı. HTTP protokolünü daha da geliştirdi, bu güne kadar kullanıldı ve hala en popüler versiyon.

Bu sürümdeki en büyük değişiklik, HTTP standardına kalıcı bağlantıların eklenmesidir, yani TCP bağlantıları varsayılan olarak kapatılmaz ve Bağlantı: canlı tutma bildirilmeden birden çok istek tarafından yeniden kullanılabilir. İstemci ve sunucu, karşı tarafın bir süre aktif olmadığını anlarsa bağlantıyı aktif olarak kapatabilir. Ancak, normatif yaklaşım, istemcinin son istekte Connection: close göndermesi ve sunucudan açıkça TCP bağlantısını kapatmasını istemesidir. Ek olarak, HTTP / 1.1 sürümü ayrıca PUT, PATCH, HEAD, OPTIONS, DELETE gibi birçok yeni yöntem ekledi. Ayrıca, istemci talebinin başlık bilgilerine Host alanı, Content-Length alanı ve pipeline mekanizması gibi yeni özellikler eklenmiştir.

HTTP1.1 sürümü, TCP bağlantılarının çoğullamasına izin verse de, aynı TCP bağlantısındaki tüm veri iletişimleri sırayla gerçekleştirilir. Yalnızca sunucu bir yanıtı işledikten sonra bir sonraki yanıta geçecektir. Önceki yanıt özellikle yavaşsa, sırada bekleyen birçok istek olacaktır. Buna satır başı sıkışması denir.

Bu sorunu çözmek için 2009 yılında Google, kendi geliştirdiği SPDY protokolünü yayınladı ve bu protokolün Chrome tarayıcısında uygulanabilirliği kanıtlandıktan sonra HTTP / 2 temeli olarak kullanıldı ve ana özellikler HTTP / 2'den miras alındı.

2015 yılında HTTP / 2 yayınlandı. Standartlar komitesi alt sürümleri yayınlamayı planlamadığından HTTP / 2.0 olarak adlandırılmaz. HTTP / 2, ikili çerçeveleme, çoklama, sunucu itme ve başlık sıkıştırma gibi özellikler ekler.

HTTP / 2, verileri iletmek için HTTP 1.x'in metin biçimi yerine ikili biçim kullanır ve ikili protokol ayrıştırmak için daha verimlidir. HTTP / 1 isteği ve yanıt mesajları bir başlangıç satırı, bir başlık ve bir varlık gövdesinden (isteğe bağlı) oluşur ve her bölüm bir metin satırı sonu ile ayrılır. HTTP / 2, istek ve yanıt verilerini daha küçük çerçevelere böler ve ikili kodlamayı kullanır.

Çoğullama, orijinal diziyi ve engelleme mekanizmasını değiştirme. Tüm istekler, bir TCP bağlantısı aracılığıyla eşzamanlı olarak tamamlanır. HTTP 1.x'te, aynı anda birden çok istek göndermek istiyorsanız, birden çok TCP bağlantısı kullanmanız gerekir ve kaynakları kontrol etmek için tarayıcının ayrıca tek bir etki alanı adı için 6-8 TCP bağlantı isteği sınırı vardır.

HTTP / 2'de ikili çerçeveleme ile HTTP / 2 artık çoklu akış paralelliği uygulamak için TCP bağlantılarına güvenmiyor. HTTP / 2'de:

  • Aynı alan adı altındaki tüm iletişimler tek bir bağlantıda tamamlanır;
  • Tek bir bağlantı, herhangi bir sayıda çift yönlü veri akışı taşıyabilir;
  • Veri akışı bir mesaj şeklinde gönderilir ve mesaj bir veya daha fazla çerçeveden oluşur Çoklu çerçeve sıra dışı gönderilebilir çünkü bunlar çerçeve başlığındaki akış tanımlayıcısına göre yeniden birleştirilebilirler.

Bu özellik, performansı büyük ölçüde artırır:

  • Aynı etki alanı adının yalnızca tek bir TCP bağlantısını işgal etmesi gerekir, bu da birden çok TCP bağlantısının neden olduğu gecikmeyi ve bellek tüketimini ortadan kaldırır;
  • İstekler ve yanıtlar tek bir bağlantıda birbirine karışmadan paralel olarak serpiştirilebilir;
  • HTTP / 2'de, her istek 31 bitlik bir öncelik değeri taşıyabilir, 0 en yüksek öncelik anlamına gelir, değer ne kadar büyükse öncelik o kadar düşüktür. Bu öncelik değeri ile, istemci ve sunucu farklı akışları işlerken farklı stratejiler benimseyebilir ve akışları, mesajları ve çerçeveleri en uygun şekilde gönderebilir.

Sunucu, tarayıcının karşılık gelen konuma ayrıştırmasını beklemek yerine, HTML sayfasını gönderirken diğer kaynakları etkin bir şekilde itebilir, bir istek başlatabilir ve ardından yanıt verebilir. Örneğin, sunucu, istemcinin HTML ayrıştırırken bu istekleri göndermesine gerek kalmadan JS ve CSS dosyalarını istemciye etkin bir şekilde gönderebilir.

Sunucu aktif olarak itebilir ve istemcinin bunu alıp almayacağını seçme hakkı vardır. Sunucu tarafından itilen kaynak tarayıcı tarafından önbelleğe alınmışsa, tarayıcı bir RST_STREAM çerçevesi göndererek bunu reddedebilir. Aktif itme aynı zamanda aynı kaynak ilkesiyle uyumludur ve sunucu üçüncü taraf kaynaklarını istemciye rasgele itmeyecektir.

HTTP / 3, HTTP protokolünün gelecek üçüncü ana sürümüdür.

HTTP / 3'te, TCP protokolü terk edilecek ve bunun yerine UDP protokolüne dayalı QUIC protokol uygulaması kullanılacaktır. QUIC protokolü, Google tarafından geliştirilen bir dizi protokoldür ve IETF'deki QUIC çalışma grubu, QUIC aktarım protokolünü oluşturmayı taahhüt eder. QUIC, UDP'ye dayalı bir protokoldür ve TCP'nin yerini almak için kullanılır. QUIC protokolü başlangıçta Google tarafından başlatılan bir projeydi ve daha sonra HTTP / 2-UDP üzerinden şifrelenmiş protokol haline geldi.

Endişelenmeyin, telefonunuzdaki APP'yi kapatmak güç tasarrufu sağlamaz! Pek sayılmaz!
önceki
Java ve Python, blockchain için ana geliştirme dilleri haline geldi mi? !
Sonraki
Yongshun Kasabası, Tongzhou, Pekin, en güzel aileyi takdir ediyor
Kelime günü, insanları kandırmak için P model fotoğraflarını kullanırsanız, en az 37500 euro para cezasına çarptırılırsınız.
Wang Yi bu kelimeleri yüksek sesle söyledi
Java 8-Stream'de koleksiyonları işlemek için zarif duruş
"Yıldız kulaklık", yerleşik üreticilerden daha iyi nerede? Gerçek sebep burada!
Seyirci 4 milyonu aştı ve Pekin rol modelleri de bu sergiyi ziyarete geldi.
Boeing 737 sürekli çöktü, AI yapmak zorunda mı?
Bu sadece doymuş yiyecek ve içecek hissi değil
Kaydırılacak! WeChat yakında bu harika özellikleri kullanıma sunacak!
Terry Gou "Patlamalar" Microsoft; Tencent Uygulaması birden fazla flaşı yasaklıyor | Geek Başlıkları
Düşük madeni paralar iyi paraları çıkarır. Görkemli görev hakimiyeti Tencent Games'in rütbesini düşürdü!
İstasyon vagonuna biraz vahşilik katın, Alltrack golfünün ilk atışını yapın
To Top