HTTP protokolü. http ve https veri aktarım protokolleri hakkında her şey

  • 26.08.2019

Makale, HTTP protokolünün çalışmasının özünü ortaya koyuyor, ayrıca çalışmasının farklı şemalarını anlatıyor. Tarayıcı ve sunucu arasındaki etkileşimin özüne özellikle dikkat edilir.

HTTP'nin nasıl çalıştığının özü

Her şeyden önce, sunucu ile kullanıcının tarayıcısı arasındaki etkileşim sürecini anlamalısınız. Sitenin bir sayfasını ekranda görüntülemek için, tarayıcı sunucuya bir istek ile bir sinyal gönderir, ardından sitenin kodlanmış içeriği sunucudan gelir ve sitenin tanıdık görünümüne dönüştürülür. Bir web geliştiricisi için bu süreci incelemek önemlidir çünkü sürecin özünü anlayarak kaynağınızın performansını hızlandırabilirsiniz.

Sunucu ve tarayıcı arasındaki veri alışverişi gerçekleşir HTTP protokolü. Tarayıcının kendisi programlama açısından HTTP istemcisi, çünkü istek gönderirken ve yanıt verilerini alırken bu protokolü kullanır.

Şimdi HTTP protokolü kavramının özünü ortaya çıkaralım

HTTP (Köprü Metni Aktarım Protokolü)- World Wide Web'de her türlü bilgi alışverişinin gerçekleştirildiği süreç.

Web geliştiricileri olarak bizler yalnızca bilgi alışverişi ve görüntüleme süreciyle ilgileniyoruz.

Senkronize Protokol

Veri alışverişi "istemci-sunucu" şemasına göre gerçekleştirilir. Bu şemada, bir istemci, bazı bilgileri sağlamak için bir istek gönderen bir cihazdır ve bir sunucu, bir isteği alan, işleyen ve istemciye bir yanıt gönderen bir sistemdir. Etkileşim sürecinin kendisi iki aşamaya ayrılabilir: HTTP isteği gönderme ve HTTP yanıtı alma.

İstekler ve yanıtlar aynı anda iletilemez, sürecin senkronizasyonu sağlanmalıdır. Yani, yanıtın iletilmesi ancak talebin gönderilmesinin tamamlanmasından sonra başlayacak, farklı bir prensip üzerinde çalışmak mümkün değil. Daha açık hale getirmek için, otobüsle bir benzetme yapalım: Durağa gelene kadar onu kullanamayacaksınız.

Talep nasıl yapılır?

Sunucuya istek gönderme işlemi birkaç bileşene ayrılabilir:

  1. Her şeyden önce, site adresini URI biçiminden IP'ye (URI adresinin sayısal biçimi) dönüştürmesi gereken bir DNS sorgusu gerçekleştirilir. Bu, World Wide Web'de kullanılan adres biçimidir.
  2. IP belirlendikten sonra sunucu ile HTTP istemcisi arasında bağlantı kurulur.
  3. Bir istek iletme.
  4. Sunucuya bilgi göndermeyi, işlemeyi ve bir isteğe yanıt göndermeyi içeren gecikme. Programcılar bu süreyi yanıt bekleyen olarak adlandırırlar.
  5. Bir isteğe yanıt alma.

Tüm bu adımları tarayıcınızdaki web geliştirici panelini kullanarak takip edebilirsiniz.

Tüm aşamaların listesinin ilki oldukça uzun. Erken protokol geliştirme HTTP gerekli talebe bir yanıt alındıktan sonra bağlantının kesilmesini sağlayan eski bir veri işleme şeması kullandı. Bu, İnternet alanında çalışma sürecini büyük ölçüde yavaşlattı. Ancak, protokolün yeni bir standardizasyonundan sonra HTTP sürüm 1.1, yeni bir bağlantı modu kullanıma sunuldu - hayatta kal, buna göre bağlantı ayrılmaz hale geldi. Sonuç olarak, ilk istek işlendikten sonra tekrar birinci aşamaya geçilmesi gerekmez, hemen ikinci aşamaya geçilir.

Not

Bağlantı yalnızca aynı web kaynağı içinde korunur. Başka bir ana bilgisayara geçerken bağlantı kopar ve ilk aşama yeniden istek işleme sürecinin ayrılmaz bir parçası olur.

Protokolün işleyişindeki en uzun süreç yanıt beklemektir. Bu durumda, spesifikasyonun güncellenmesi işlem süresini azaltmak için hiçbir şey yapmaz. Ayrıca bu işlem, kaynağın çekildiği cihazın gücünden etkilenmez. Bilgisayarlar sürece ancak son aşamada, cevap geldiğinde ve işlenmesi gerektiğinde girerler.

Bu çalışma şekli, sitelerin masaüstü uygulamaları ile rekabet etme şansını sıfıra indirmektedir. Bu, siteyi hızlandırmanın ilk yolunun ortaya çıktığı yerdir - kodda belirtilen sunucuya yapılan çağrı sayısını en aza indirmeniz gerekir.

Paralel HTTP bağlantısı

Yüksek gecikme ve ana bilgisayarla iletişimin kesilmesi sorununu çözmek için istemci ve sunucu arasında paralel bir iletişim şeması oluşturuldu. Başka bir deyişle, aynı anda birden fazla ana bilgisayara bağlanabilirsiniz. Standart geliştiriciler HTTP 1.1 Aynı anda 2'den fazla bağlantı kanalının bağlanması tavsiye edilmez. Ancak, spesifikasyonun eski dinozorların günlerinde ortaya çıktığı akılda tutulmalıdır. Artık tarayıcılar varsayılan olarak aynı anda 4 kanalla iletişimi kolayca destekliyor ve istemci ayarlarına girerseniz bu rakam 8'e çıkarılabilir.

Her kanal eski bağlantı şemasına göre çalışır, ancak sayılarının artması kaynak yükleme süresi açısından önemli değişikliklere yol açmıştır.

Ardışık HTTP bağlantısı

Teknolojinin gelişmesiyle birlikte sunucu ve tarayıcı arasındaki etkileşim süreci de önemli ölçüde gelişmeye başlamıştır. Bu konuda önemli bir atılım, sunucuya istek göndermek için bir boru hattı şemasının oluşturulmasıydı (orijinalinde - HTTP ardışık düzeni). Bu şemaya göre, yanıt beklemeden bir kanaldan birkaç istek göndermek mümkün hale geldi. Sırayla, sunucu sırayla her isteğe yanıt göndermeye başladı.

Bu yenilik aynı zamanda sayısını azaltmayı mümkün kıldı. TCP/IP paketleri. Böylece, birkaç koymak mümkündür HTTP istekleri. Sonuç olarak, sadece protokolün işleyişi iyileşmeyecek, aynı zamanda İnternet'in bir bütün olarak işleyişinin verimliliği de artacaktır.

Özetleme

Bugüne kadar şartname HTTP 1.1 eskimiş bir kurallar bütünüdür. Modernizasyonu üzerinde oldukça uzun bir süredir çalışmalar devam ediyor, bunun canlı bir örneği HTTP-NG Ve SPDY. Geliştirmek HTTP bu mümkün ve sitelerin programlama dilini geliştirerek HTML5. Tüm bu işlemler protokolün çalışmasını hızlandıracaktır, ancak kaynağın hızını artıracak olan sunucuya erişimi en aza indirme kuralı her zaman geçerli olacaktır.

HTTP, dağıtılmış sistemler arasında bir köprü metni aktarım protokolüdür. Aslında http, modern Web'in temel bir unsurudur. Kendine saygılı web geliştiricileri olarak, bu konuda mümkün olduğunca çok şey bilmeliyiz.

Bu protokole mesleğimizin merceğinden bakalım. İlk bölümde, temelleri inceleyeceğiz, isteklere / yanıtlara bakacağız. Bir sonraki makalede, önbelleğe alma, bağlantı işleme ve kimlik doğrulama gibi daha ayrıntılı yongaları analiz edeceğiz.

Ayrıca bu yazıda ağırlıklı olarak RFC 2616: Köprü Metni Aktarım Protokolü -- HTTP/1.1'e değineceğim.

HTTP Temelleri

HTTP, birden çok ana bilgisayar ve istemci arasında iletişimi sağlar ve bir dizi ağ ayarını destekler.

Temel olarak, iletişim için TCP / IP kullanılır, ancak bu mümkün olan tek seçenek değildir. Varsayılan olarak, TCP/IP 80 numaralı bağlantı noktasını kullanır, ancak diğerleri kullanılabilir.

Ana bilgisayar ve istemci arasındaki iletişim iki aşamada gerçekleşir: istek ve yanıt. İstemci, sunucunun yanıt (mesaj) verdiği yanıt olarak bir HTTP isteği oluşturur. Biraz sonra, bu çalışma planını daha ayrıntılı olarak ele alacağız.

HTTP protokolünün şu anki sürümü, bazı yeni özellikler sunan 1.1'dir. Bence bunlardan en önemlileri: kalıcı olarak açık bir bağlantı desteği, veri aktarımı için yeni bir mekanizma, yığınlanmış aktarım kodlaması, önbelleğe alma için yeni başlıklar. Bunlardan bazılarını bu makalenin ikinci bölümünde ele alacağız.

URL

Web iletişiminin kalbi, Tekdüzen Kaynak Bulucu (URL) aracılığıyla gönderilen istektir. URL'nin ne olduğunu zaten bildiğinize eminim, ancak tam olması adına yine de birkaç kelime söylemeye karar verdim. URL yapısı çok basittir ve aşağıdaki bileşenlerden oluşur:

Protokol, normal bağlantılar için http veya daha güvenli veri alışverişi için https olabilir. Varsayılan bağlantı noktası 80'dir. Bunu, sunucudaki kaynağa giden yol ve bir parametre zinciri izler.

yöntemler

URL'yi kullanarak, iletişim kurmak istediğimiz ana bilgisayarın tam adını belirtiriz, ancak gerçekleştirmemiz gereken eylem yalnızca HTTP yöntemi kullanılarak iletilebilir. Elbette, yapabileceğimiz birkaç tür eylem var. HTTP, çoğu uygulamanın ihtiyaçlarına uygun, en gerekli olanı uygular.

Mevcut yöntemler:

ELDE ETMEK: Mevcut bir kaynağa erişin. URL, sunucunun istenen kaynağı bulup yanıt olarak geri gönderebilmesi için gerekli tüm bilgileri listeler.

İLETİ: yeni bir kaynak oluşturmak için kullanılır. Bir POST isteği, genellikle yeni bir kaynak oluşturmak için gereken tüm bilgileri içerir.

KOYMAK: Mevcut kaynağı güncelleyin. PUT isteği, güncellenmiş verileri içerir.

SİLMEK: Mevcut bir kaynağı silmek için kullanılır.

Bu yöntemler en popüler olanlardır ve çeşitli araçlar ve çerçeveler tarafından en sık kullanılanlardır. Bazı durumlarda, PUT ve DELETE istekleri, içeriği kaynakla yapılacak eylemi gösteren bir POST gönderilerek gönderilir: oluşturma, güncelleme veya silme.

HTTP ayrıca diğer yöntemleri de destekler:

KAFA: GET'e benzer. Aradaki fark, bu tür bir istekle hiçbir mesajın iletilmemesidir. Sunucu yalnızca başlıkları alır. Örneğin, bir kaynağın değiştirilip değiştirilmediğini belirlemek için kullanılır.

İZ: iletim sırasında istek, her biri kendi bilgisine katkıda bulunan birçok erişim noktasından ve proxy sunucusundan geçer: IP, DNS. Bu yöntem ile tüm ara bilgileri görebilirsiniz.

SEÇENEKLER: Belirli bir kaynak için sunucunun yeteneklerini, seçeneklerini ve yapılandırmasını belirlemek için kullanılır.

Durum kodları

İstemciden gelen bir isteğe yanıt olarak, sunucu, diğer şeylerin yanı sıra bir durum kodu içeren bir yanıt gönderir. Bu kodun özel bir anlamı vardır, böylece müşteri yanıtı nasıl yorumlayacağını açıkça anlayabilir:

1xx: Bilgi mesajları

Bu kodların bir seti HTTP/1.1'de tanıtıldı. Sunucu aşağıdaki gibi bir istek gönderebilir: Beklenti: 100-devam, bu da istemcinin isteğin geri kalanını göndermeye devam ettiği anlamına gelir. HTTP/1.0 istemcileri bu başlıkları yok sayar.

2xx: Başarı mesajları

İstemci 2xx serisinden bir kod aldıysa, istek başarılı olmuştur. En yaygın seçenek 200 OK'dir. Bir GET isteği ile sunucu, mesajın gövdesinde bir yanıt gönderir. Başka olası cevaplar da var:

  • 202Kabul edildi: İstek kabul edildi, ancak yanıtta kaynağı içermeyebilir. Bu, zaman uyumsuz sunucu tarafı istekleri için kullanışlıdır. Sunucu, kaynağın gönderilip gönderilmeyeceğini belirler.
  • 204 İçerik yok: Yanıtın gövdesinde mesaj yok.
  • 205 İçeriği sıfırla: Sunucuya belge görünümünü sıfırlamasını söyleyin.
  • 206 Kısmi içerik: Yanıt içeriğin yalnızca bir kısmını içerir. Ek başlıklar, içeriğin ve diğer bilgilerin toplam uzunluğunu tanımlar.

3xx: Yönlendirme

Müşteriye bir işlem daha gerçekleştirme ihtiyacı hakkında bir tür mesaj. En yaygın kullanım durumu, istemciyi başka bir adrese yönlendirmektir.

  • 301 Kalıcı Olarak Taşındı: Kaynak artık farklı bir URL'de bulunabilir.
  • 303 Diğer Gör: Kaynak geçici olarak farklı bir URL'de bulunabilir. Konum başlığı geçici bir URL içerir.
  • 304 Değiştirilmedi: Sunucu, kaynağın değiştirilmediğini ve istemcinin yanıtın önbelleğe alınmış sürümünü kullanması gerektiğini belirler. Bilginin kimliğini kontrol etmek için ETag kullanılır (Entity Tag hash);

4xx: İstemci hataları

Bu ileti sınıfı, isteğin yanlışlıkla gönderildiğine karar verirse sunucu tarafından kullanılır. En yaygın kod 404 Bulunamadı. Bu, kaynağın sunucuda bulunmadığı anlamına gelir. Diğer olası kodlar:

  • 400 Hatalı İstek: soru yanlış oluşturulmuş.
  • 401 Yetkisiz: İstekte bulunmak için kimlik doğrulaması gerekiyor. Bilgiler, Yetkilendirme başlığından geçirilir.
  • 403 yasak: Sunucu kaynağı kullanılabilir hale getirmedi.
  • 405 Yönteme İzin Verilmiyor: Kaynağa erişmek için geçersiz bir HTTP yöntemi kullanıldı.
  • 409 Çatışma: Sunucu isteği tam olarak işleyemiyor çünkü kaynağın daha yeni bir sürümünü değiştirmeye çalışır. Bu genellikle PUT istekleriyle olur.

5xx: Sunucu hataları

Bir istek işlenirken bir sunucu hatasını tespit etmek için kullanılan bir dizi kod. En yaygın: 500 Dahili Sunucu Hatası. Diğer seçenekler:

  • 501 Uygulanmadı: Sunucu istenen işlevi desteklemiyor.
  • 503 Hizmet Kullanılamıyor: Bu, sunucuda bir hata varsa veya aşırı yüklenmişse olabilir. Genellikle bu durumda sunucu yanıt vermez ve yanıt için verilen süre sona erer.

İstek/Yanıt Mesaj Formatları

Aşağıdaki resimde, istemci tarafından bir istek gönderme, sunucu tarafından bir yanıt işleme ve gönderme sürecinin bir şemasını görebilirsiniz.

HTTP üzerinden iletilen mesajın yapısına bakalım:

mesaj = *()CRLF[ ] = Talep Hattı | Durum satırı = Alan Adı ":" Alan Değeri

İletinin başlığı ve gövdesi arasında boş bir satır olmalıdır. Birkaç başlık olabilir:

Yanıt gövdesi, karşılık gelen özellik etkinleştirilirse bilgilerin tamamını veya bir kısmını içerebilir (Aktarım-Kodlama: yığınlanmış). HTTP/1.1, Transfer-Encoding başlığını da destekler.

Genel başlıklar

Hem isteklerde hem de yanıtlarda kullanılan çeşitli başlık türleri vardır:

Genel başlık = Önbellek Kontrolü | bağlantı | tarih | pragma | römork | aktarım kodlaması | yükseltme | aracılığıyla | Uyarı

Bu yazıda zaten bir şey düşündük, ikinci bölümde daha ayrıntılı olarak bir şeye değineceğiz.

Via üstbilgisi bir TRACE isteğinde kullanılır ve tüm proxy'ler tarafından güncellenir.

Pragma başlığı, özel başlıkları numaralandırmak için kullanılır. Örneğin, Pragma: önbellek yok, Önbellek Kontrolü: önbellek yok ile aynıdır. İkinci bölümde bunun hakkında daha fazla konuşacağız.

Tarih başlığı, isteğin/yanıtın tarihini ve saatini saklamak için kullanılır.

Yükseltme başlığı protokolü değiştirmek için kullanılır.

Aktarım Kodlaması, yanıtı Aktarım Kodlama: yığınlanmış kullanarak birden çok parçaya bölmeyi amaçlar. Bu, HTTP/1.1'de yenidir.

Varlık başlıkları

Varlık üstbilgileri, içerik meta bilgilerini iletir:

Varlık başlığı = İzin Ver | İçerik Kodlama | içerik dili | içerik uzunluğu | İçerik Konumu | İçerik-MD5 | içerik aralığı | içerik türü | Sona Eriyor | Son düzenleme

İçerik ön ekine sahip tüm başlıklar, mesaj gövdesinin yapısı, kodlaması ve boyutu hakkında bilgi sağlar.

Expires başlığı, varlığın sona erdiği saati ve tarihi içerir. "Asla sona ermez" değeri, geçerli andan itibaren zaman + 1 kodu anlamına gelir. Last-Modified, varlığın en son değiştirildiği saati ve tarihi içerir.

Bu başlıkları kullanarak görevleriniz için ihtiyaç duyduğunuz bilgileri belirleyebilirsiniz.

Talep Formatı

İstek şuna benzer:

İstek Satırı = Yöntem SP URI SP HTTP Sürümü CRLF Yöntemi = "SEÇENEKLER" | "KAFA" | "AL" | "POSTA" | "PUT" | "SİL" | İZ

SP, jetonlar arasındaki ayırıcıdır. HTTP sürümü, HTTP Sürümünde belirtilir. Gerçek istek şöyle görünür:

GET /articles/http-basics HTTP/1.1 Ana Bilgisayar: www.articles.com Bağlantı: canlı tutma Önbellek Kontrolü: önbellek yok Pragma: önbellek yok Kabul: text/html,application/xhtml+xml,application/xml; q=0.9,*/*;q=0.8

Olası istek başlıklarının listesi:

İstek başlığı = Kabul | kabul karakter kümesi | kabul kodlama | Kabul Et-Dil | yetkilendirme | Beklenti | Kimden | ev sahibi | eşleşirse | If-Modified-Since | Eşleşme Yok ise | eğer aralığı | Eğer-Değiştirilmemiş-Since | Maksimum Forvet | Proxy Yetkilendirmesi | aralık | yönlendiren | TE | Kullanıcı aracısı

Kabul başlığı, desteklenen mime türlerini, dili ve karakter kodlamasını tanımlar. Kimden, Ana Bilgisayar, Yönlendiren ve Kullanıcı Aracısı üstbilgileri, istemci hakkında bilgiler içerir. If- önekleri koşul oluşturmak içindir. Koşul başarısız olursa, 304 Değiştirilmedi hatası oluşur.

Yanıt biçimi

Yanıt biçimi yalnızca durum ve bir dizi başlık bakımından farklılık gösterir. Durum şuna benziyor:

Durum Satırı = HTTP Sürümü SP Durum Kodu SP Nedeni Cümlesi CRLF

  • HTTP sürümü
  • Durum kodu
  • İnsan tarafından okunabilir durum mesajı

Tipik bir durum şuna benzer:

HTTP/1.1 200 TAMAM

Yanıt başlıkları şunlar olabilir:

Yanıt başlığı = Kabul Aralıkları | yaş | ETag | konum | Proxy Kimlik Doğrulaması | Sonra Tekrar Dene | sunucu | Değişken | WWW-Kimlik Doğrula

  • İletinin sunucuda oluşturulduğu saniye cinsinden yaş süresi.
  • Yanıttaki değişiklikleri ve modifikasyonları kontrol etmek için ETag MD5 varlıkları.
  • Konum, yönlendirme için kullanılır ve yeni URL'yi içerir.
  • Sunucu, yanıtın oluşturulduğu sunucuyu belirtir.

Sanırım bugünlük bu kadar teori yeter. Şimdi HTTP mesajlarını izlemek için kullanabileceğimiz araçlara bir göz atalım.

HTTP trafiğini algılamak için araçlar

HTTP trafiğini izlemek için birçok araç vardır. İşte bunlardan birkaçı:

En yaygın kullanılanı Chrome Geliştirici Araçları'dır:

Bir hata ayıklayıcıdan bahsetmişken, Fiddler'ı kullanabilirsiniz:

HTTP trafiğini izlemek için curl, tcpdump ve tshark'a ihtiyacınız var.

HTTP Kitaplıkları - jQuery AJAX

jQuery çok popüler olduğu için, AJAX isteklerinden gelen HTTP yanıtlarını işlemek için bir araç takımına da sahiptir. jQuery.ajax(ayarlar) hakkında bilgi resmi sitede bulunabilir.

settings nesnesini geçirerek ve BeforeSend geri çağırma işlevini kullanarak, istek başlıklarını setRequestHeader() yöntemini kullanarak ayarlayabiliriz.

$.ajax(( url: "http://www.articles.com/latest", şunu yazın: "GET", BeforeSend: function (jqXHR) ( jqXHR.setRequestHeader("Kabul Edilen Dil", "en-US,tr) "); ) ));

Bir isteğin durumunu işlemek istiyorsanız, bunu şu şekilde yapabilirsiniz:

$.ajax(( statusCode: ( 404: function() ( alert("sayfa bulunamadı"); ) ) );

Sonuç

İşte, HTTP protokolünün temelleri hakkında bir tur. İkinci bölümde daha da ilginç gerçekler ve örnekler olacak.

HTML belgeleri gibi çeşitli kaynaklar elde etmenizi sağlar. HTTP protokolü, İnternet üzerindeki iletişimin temelini oluşturur. HTTP, bir istemci-sunucu iletişim protokolüdür; bu, sunucuya yapılan isteklerin, genellikle bir web tarayıcısı olan alıcı tarafından başlatıldığı anlamına gelir. Ortaya çıkan nihai belge, örneğin ayrı olarak elde edilen metin, belge yapısı açıklaması, resimler, video dosyaları, komut dosyaları ve çok daha fazlası gibi çeşitli alt belgelerden yeniden oluşturulacaktır.

İstemciler ve sunucular (bir veri akışı yerine) bireysel mesaj alışverişi yaparak iletişim kurarlar. Genellikle bir web tarayıcısı olan bir istemci tarafından gönderilen mesajlara denir. Araştırma, ve sunucu tarafından gönderilen mesajlar çağrılır Yanıtlar.

HTTP 1990'ların başında geliştirilmiş olmasına rağmen, genişletilebilirliği nedeniyle zaman içinde gelişmiştir. HTTP, mesajlarını göndermek için çoğunlukla başka bir protokolün - TCP (veya TLS - güvenli TCP) - özelliklerini kullanan bir uygulama katmanı protokolüdür, ancak bu tür mesajları iletmek için teorik olarak herhangi bir başka güvenilir aktarım protokolü kullanılabilir. Genişletilebilirliği nedeniyle, yalnızca istemciye köprü metni belgeleri veya görüntüler ve videolar almak için değil, aynı zamanda örneğin HTML formlarını kullanarak içeriği sunuculara aktarmak için kullanılır. HTTP, istek üzerine bir web sayfasını güncellemek amacıyla bir belgenin yalnızca bölümlerini almak için de kullanılabilir.

HTTP Tabanlı Sistemlerin Bileşenleri

HTTP bir istemci-sunucu protokolüdür, yani istekler bir taraf tarafından gönderilir - kullanıcı aracısı (kullanıcı aracısı) (veya bunun yerine bir proxy). Çoğu zaman, kullanıcı aracısı bir web tarayıcısıdır, ancak arama motorları için web sayfası indeksleme verilerini yenilemek ve güncellemek için Web'de gezinen bir robot gibi herkes olabilir.

Her bireysel istek istek) onu işleyen ve bir yanıt döndüren sunucuya gönderilir. tepki). Bu istekler ve yanıtlar arasında, çeşitli işlemleri gerçekleştiren ve örneğin ağ geçidi veya önbellek görevi gören vekil adı verilen çok sayıda aracı vardır.

Gerçekte, tarayıcı ve sunucu arasında, isteğin işlenmesinde rol oynayan daha birçok aracı cihaz vardır: yönlendiriciler, modemler vb. Ağın bir etkileşim seviyeleri (katmanları) sistemi temelinde inşa edilmesinden dolayı, bu aracılar ağ ve taşıma seviyelerinde "gizlenir". Bu katman sisteminde HTTP, "uygulama" (veya "uygulama" katmanı) olarak adlandırılan en üst katmanı işgal eder. Sunum, oturum, aktarım, ağ, bağlantı ve fiziksel gibi ağ katmanları bilgisi, ağ çalışmasını anlamak ve olası sorunları teşhis etmek için gerekli olmakla birlikte, HTTP'yi tanımlamak ve anlamak için gerekli değildir.

Müşteri: kullanıcı aracısı

Kullanıcı aracısı, bir kullanıcı adına hareket eden herhangi bir araç veya cihazdır. Bu rol öncelikle web tarayıcısına aittir; bazı durumlarda kullanıcı aracıları, mühendisler ve web geliştiricileri tarafından uygulamalarında hata ayıklamak için kullanılan programlardır.

Tarayıcı her zaman isteği başlatan varlıktır. Sunucu bunu asla yapmaz (her ne kadar web'de yıllar boyunca sunucudan gelen istekleri simüle edebilen mekanizmalar oluşturulmuş olsa da).

Bir web sayfasını görüntülemek için tarayıcı, sayfanın HTML belgesini almak için bir ilk istek gönderir. Bundan sonra, tarayıcı bu belgeyi ayrıştırır ve web sayfasının içeriğini görüntülemek için gerekli ek dosyaları ister (yürütülebilir komut dosyaları, sayfa düzeni bilgileri - CSS stil sayfaları, resim ve video dosyaları şeklinde ek kaynaklar). Ayrıca, tarayıcı tüm bu kaynakları kullanıcıya tek bir belge - bir web sayfası şeklinde görüntülemek için bağlar. Tarayıcının kendisi tarafından yürütülen komut dosyaları, web sayfasının işlenmesinin sonraki aşamalarında ağ üzerinden ek kaynaklar alabilir ve tarayıcı, kullanıcının bu sayfaya bakışını buna göre günceller.

Bir web sayfası bir hiper metin belgesidir. Bu, görüntülenen metnin bazı bölümlerinin, yeni bir web sayfası elde etmek ve buna göre görüntülemek için etkinleştirilebilen (genellikle bir fare düğmesine tıklanarak) bağlantılar olduğu anlamına gelir. Bu, kullanıcının Web'de gezinirken kullanıcı aracısına rehberlik etmesine olanak tanır. Tarayıcı bu "trafik talimatlarını" HTTP isteklerine çevirir ve ardından HTTP yanıtlarını kullanıcı dostu bir şekilde yorumlar.

Web sunucusu

İletişim kanalının diğer tarafında hizmet veren bir sunucu (İng. servis) kullanıcının talep etmesi halinde kendisine belgeler sunması. Son kullanıcının bakış açısından, sunucu her zaman bir belgeyi tamamen veya kısmen oluşturan bir tür sanal makinedir, ancak aslında yükün dengelendiği bir grup sunucu olabilir, yani istekler. farklı kullanıcılar yeniden dağıtılır veya diğer bilgisayarları yoklayan karmaşık yazılımlar (önbelleğe alma sunucuları, veritabanı sunucuları, e-ticaret uygulama sunucuları ve diğerleri gibi).

Sunucunun mutlaka aynı makinede bulunması gerekmez ve bunun tersi de geçerlidir - aynı makinede birkaç sunucu bulunabilir (barındırılabilir). HTTP/1.1 sürümüne göre ve Host başlığına sahip oldukları için aynı IP adresini bile paylaşabilirler.

vekil

Web tarayıcısı ve sunucu arasında HTTP mesajlarını ileten çok sayıda ağ düğümü vardır. Katmanlı yapı nedeniyle, çoğu aynı zamanda aktarım ağında veya fiziksel katmanda da çalışır, HTTP katmanında şeffaf hale gelir ve potansiyel olarak performansı düşürür. Bu uygulama katmanı işlemleri denir vekil . Şeffaf olabilirler veya olmayabilirler (değiştirme istekleri geçemez) ve çeşitli işlevleri yerine getirebilirler:

  • önbelleğe alma (önbellek, tarayıcı önbelleği gibi genel veya özel olabilir)
  • filtreleme (antivirüs taraması, ebeveyn denetimleri, ...)
  • yük dengeleme (birden çok sunucunun farklı istekler sunmasına izin verin)
  • kimlik doğrulama (farklı kaynaklara erişimi kontrol etme)
  • günlüğe kaydetme (işlemlerin geçmişini saklama izni)

HTTP'nin temel yönleri

HTTP - basit

HTTP mesajlarının çerçeveler içine alınmasıyla HTTP/2'de sunulan daha büyük karmaşıklıkla bile, HTTP genellikle basit ve insan tarafından okunabilir. HTTP mesajları insanlar tarafından okunabilir ve anlaşılabilir, bu da yeni kullanıcılar için daha kolay geliştirici testi ve daha az karmaşıklık sağlar.

HTTP - genişletilebilir

HTTP/1.0'da HTTP başlıklarının tanıtılması, protokolün genişletilmesini ve denenmesini kolaylaştırdı. Yeni işlevsellik, istemci ve sunucu arasında yeni başlığın semantiği hakkında basit bir anlaşmayla bile tanıtılabilir.

HTTP durumsuzdur, ancak bir oturumu vardır

HTTP durumsuzdur: Aynı bağlantı üzerinden sırayla yürütülen iki istek arasında hiçbir ilişki yoktur. Bu, örneğin bir elektronik mağazada alışveriş sepeti kullanırken olduğu gibi, sırayla belirli bir sayfayla etkileşime girmeye çalışan bir kullanıcı için sorun olasılığını hemen gösterir. Ancak HTTP çekirdeği durumsuz iken, çerezler durum bilgisi olan oturumlara izin verir. Üstbilgi genişletilebilirliği kullanılarak, oturumun her HTTP isteğinde bir bağlam veya durum paylaşmasına izin vererek, çalışan iş parçacığına çerezler eklenir.

HTTP ve bağlantılar

Bağlantı, aktarım düzeyinde yönetilir ve bu nedenle temelde HTTP'nin ötesine geçer. HTTP, temel alınan aktarım protokolünün bağlantı tabanlı olmasını gerektirmezken, yalnızca güvenilirlik veya kayıp mesaj yok (yani en azından bir hatayı temsil ediyor). En yaygın iki İnternet aktarım protokolü arasında TCP güvenilirdir, UDP ise güvenilir değildir. HTTP, daha sonra, bağlantı her zaman gerekli olmasa da, bağlantı tabanlı olan TCP standardına dayanır.

HTTP/1.0, her istek/yanıt alışverişi için iki önemli dezavantajla bir TCP bağlantısı açtı: Bir bağlantının açılması birden çok mesaj alışverişi gerektirir ve bu nedenle yavaştır, ancak birden çok mesaj gönderildiğinde veya mesajlar düzenli olarak gönderildiğinde daha verimli hale gelir: ılık bileşiklerden daha etkilidir. soğuk.

Bu eksiklikleri azaltmak için HTTP/1.1, ardışık düzen (uygulanmasının zor olduğu kanıtlandı) ve kalıcı bağlantıları tanıttı: temeldeki TCP bağlantısı, Bağlantı başlığı aracılığıyla kısmen kontrol edilebilir. HTTP/2, basit bir bağlantı üzerinden mesaj çoğullama özelliğini ekleyerek bir adım daha ileri götürdü ve bağlantının daha sıcak ve daha verimli olmasına yardımcı oldu.

HTTP için daha uygun daha iyi bir aktarım protokolü geliştirmek için deneyler yapılıyor. Örneğin Google, daha güvenilir ve verimli bir aktarım protokolü sağlamak için UDP'ye dayalı QUIC ile denemeler yapıyor.

HTTP ile neler kontrol edilebilir?

HTTP'nin doğal genişletilebilirliği, zaman içinde Web'in daha fazla denetimine ve işlevselliğine izin verdi. Önbellek ve kimlik doğrulama yöntemleri, HTTP tarihindeki ilk özelliklerdi. Buna karşılık, orijinal kısıtlamaları gevşetme yeteneği 2010'larda eklendi.

Aşağıda, HTTP ile yönetilen ortak özellikler listelenmiştir.


  • Sunucu, proxy'lere ve istemcilere neyi ne kadar süreyle önbelleğe alacakları konusunda talimat verebilir. İstemci, proxy ara önbelleklerine saklanan belgeleri yok sayma talimatı verebilir.
  • Rahatlatıcı Kaynak Kısıtlamaları
    Casus yazılımları ve diğer gizlilik izinsiz girişlerini önlemek için web tarayıcısı, web siteleri arasında katı bir ayrım uygular. Yalnızca sayfalar aynı kaynak web sayfasındaki bilgilere erişebilir. Bu tür kısıtlamalar sunucuya bir yük getirse de, HTTP başlıkları sunucu tarafındaki katı ayrımı zayıflatabilir ve belgenin (güvenlik nedenleriyle) farklı etki alanlarından gelen bilgilerin bir parçası olmasına izin verebilir.
  • kimlik doğrulama
    Bazı sayfalar yalnızca özel kullanıcılar tarafından kullanılabilir. Temel kimlik doğrulama, WWW-Authenticate başlığı ve benzerleri kullanılarak veya tanımlama bilgileri kullanılarak özel bir oturum ayarlanarak HTTP üzerinden sağlanabilir.
  • Proxy ve tünel oluşturma
    Sunucular ve/veya istemciler genellikle bir intranette bulunur ve gerçek IP adreslerini diğerlerinden gizler. HTTP istekleri, bu ağ engelini aşmak için bir proxy üzerinden geçer. Tüm proxy'ler HTTP proxy'leri değildir. Örneğin SOCKS protokolü daha düşük bir seviyede çalışır. Ftp gibi diğerleri bu proxy'ler tarafından işlenebilir.
  • Oturumlar
    HTTP tanımlama bilgisi kullanmak, bir isteği sunucudaki bir durumla ilişkilendirmenize olanak tanır. Bu, HTTP çekirdeği durumsuz bir protokol olmasına rağmen bir oturum oluşturur. Bu, yalnızca çevrimiçi mağazalardaki alışveriş sepetleri için değil, aynı zamanda kullanıcının çıktıyı özelleştirmesine olanak tanıyan herhangi bir site için de yararlıdır.

HTTP akışı

Bir istemci, ister hedef sunucu ister ara proxy olsun, bir sunucuyla etkileşim kurmak istediğinde aşağıdaki adımları atar:

  1. Bir TCP bağlantısı açma: Bir istek veya istek göndermek ve bir yanıt almak için TCP bağlantısı kullanılacaktır. İstemci yeni bir bağlantı açabilir, mevcut olanı yeniden kullanabilir veya sunucuya birden çok TCP bağlantısı açabilir.
  2. HTTP mesajı gönderme: HTTP mesajları (HTTP/2 öncesi) -- insan tarafından okunabilir. HTTP/2 ile başlayarak, basit mesajlar çerçeveler içinde kapsüllenir, bu da onların doğrudan okunmasını imkansız hale getirir, ancak temelde aynı kalır. GET / HTTP/1.1 Ana Bilgisayar: site Kabul-Dil: fr
  3. Sunucudan gelen yanıtı okuyun: HTTP/1.1 200 Tamam Tarih: Cts, 09 Ekim 2010 14:28:02 GMT Sunucusu: Apache Son Değiştirilme Tarihi: Sal, 01 Aralık 2009 20:18:22 GMT ETag: "51142bc1-7449-479b075b2891b" Kabul Etme Aralıkları: bytes İçerik Uzunluğu: 29769 İçerik Türü: metin/html
  4. Daha fazla istek için bağlantıyı kapatır veya yeniden kullanır.

HTTP ardışık düzeni etkinleştirilirse, ilk tam yanıtın alınmasını beklemeden birden çok istek gönderilebilir. HTTP işlem hattı, eski yazılım parçalarının modern sürümlerle bir arada bulunduğu mevcut ağlara yoğun bir şekilde yerleştirilmiştir. HTTP ardışık düzeni, HTTP/2'de bir çerçevedeki daha güvenilir çoğullama istekleriyle değiştirildi.

HTTP mesajları

HTTP/1.1 ve önceki HTTP mesajları insan tarafından okunabilir. HTTP/2 sürümünde, bu mesajlar, başlık sıkıştırma ve çoğullama gibi optimizasyonlara izin veren yeni bir ikili yapıya, çerçeveye gömülüdür. Bu HTTP sürümünde orijinal HTTP mesajının bir kısmı gönderilse bile, her mesajın anlamı değişmez ve istemci orijinal HTTP isteğini (neredeyse) yeniden oluşturur. HTTP/2 mesajlarını HTTP/1.1 formatında anlamak için de kullanışlıdır.

Web sayfaları için ana protokol HTTP'dir. Bu protokol, yeni bir siteyi her ziyaret ettiğinizde, site metin, resim görüntülediğinde, bağlantıları tıkladığınızda kullanılır.

Çoğu kullanıcı, HTTP'nin normal yaşamlarında ne kadar popüler olduğundan şüphelenmese bile, İnternet'in tamamı HTTP'ye dayanmaktadır.

HTTP, Köprü Metni Aktarım Protokolüdür.

Bu protokol, tarayıcınızın ve sunucunuzun bilgi ile etkileşimine dayanmaktadır. Sadeliği nedeniyle, tarayıcı ve sunucu çok hızlı bir şekilde bağlanır. Ancak protokolün tüm ayrıntılarını araştırmak zorunda değiliz, sadece işleyişinin temel prensibini açıklayacağız.

İnternette kullanılabilecek birçok protokol vardır, HTTP, hedefleri olan kendi görevleri olan birçok protokolden sadece biridir.

O kadar basit ki, HTTP ile çalışmak için gereken yazılımı zaten biliyorsunuz - bu sizin tarayıcınız.

Tarayıcı adından bağımsız olarak, protokol adı her zaman varsayılan olarak adres çubuğuna eklenir: "http://". Tarayıcı gizlerse bu yazıyı göremeyebilirsiniz. Ancak sitenin adını kopyaladığınız anda, HTTP protokolü onunla birlikte doğru yere eklenecektir.

- Site adından önceki "http://" öneki ne anlama geliyor?
- Bu, kaynağa HTTP protokolü aracılığıyla eriştiğiniz anlamına gelir.

HTTP protokolü neden oluşturuldu?

Yardımıyla, köprü metni belgeleri veya daha basit olarak ihtiyacımız olan sitelerdeki sayfalar iletilir.

İstemci (tarayıcı) web sayfalarını alır ve sunucu sayfaları verir. Bu teknolojiye - istemci-sunucu teknolojisi denir.

HTTP, web sayfalarının İnternette iletilmesini mümkün kıldı. Ancak sunucu tarafından bize gönderilen sayfaların kendisinde neler var? Tarayıcıya giren, yalnızca alınan bilgileri doğru bir şekilde yorumlaması ve size bitmiş siteyi göstermesi gereken sıradan bir HTML kodu.

2006'da, Kuzey Amerika'nın HTTP trafiğinin neredeyse yarısı ses ve video akışından oluşuyordu.

HTTP Nasıl Çalışır?

  1. Tarayıcı, istenen sunucu sayfasını isteyen bir istek gönderir.
  2. Sunucu isteği alır ve sayfayı aramaya başlar.
  3. Tarayıcı, isteğin sonuçlarıyla birlikte sunucudan bir yanıt alır:
    • İstenen sayfanın kodu ve hizmet bilgisi - sayfa bulunursa.
    • Arıza durumunda hata kodu ve servis bilgileri.

Bir tarayıcı bir dosya için istekte bulunduğunda, istek özel bir HTTP komutu içerir. İstenen dosya gerçekten sunucuda mevcutsa dosya gönderilir. Ancak alıcı sayfa, dosyayı ekranda gösterip göstermeyeceğine, diske kaydedip kaydetmeyeceğine veya sonuçla birlikte başka bir şey yapıp yapmayacağına zaten karar vermelidir.

Ağdaki kaynakları tanımlamak için HTTP protokolü global URI'leri kullanır. HTTP ve diğer protokoller arasındaki fark, durumunu kaydetmemesidir. Yani, istek-yanıt çifti arasında hiçbir durum kaydedilmez.

HTTP, İnternette kullanılan tek protokol değildir. Ayrıca kullanılır:

  • FTP (Dosya Aktarım Protokolü), bir dosya aktarım protokolüdür.
  • POP (Postane Protokolü) ve SMTP (Basit Posta Aktarım Protokolü) - e-posta mesajlaşması için.
  • SHTTP (Güvenli Köprü Metni Aktarım Protokolü), HTTP'nin şifreli bir şeklidir. Bu protokol üzerinden iletilen bilgiler kodlanır. Genellikle, hassas verileri paylaşırken güvenlik önemlidir.

Ve tek bir iyi özelliği olan diğer protokoller - hepsi sizin ve benim için fark edilmeden çalışır.

Mart 1991 - Tim Berners-Lee, HTTP kullanılmasını önerdi.

İnternet ile ilgili tüm ilk şeyleri geliştiren Berners-Lee'ydi: tarayıcı, sunucu, köprüler, ilk site (info.cern.ch) Bağlantıdan ilk sitenin nasıl göründüğünü görebilirsiniz.

HTTP sürümleri, HTTP 1.1'in popüler hale gelmesiyle zaman içinde gelişti ve sunucu-tarayıcı bağlantısını uzun süre açık bırakmanıza izin vererek protokolü daha verimli hale getirdi.

2015 yılında, ikili hale gelen HTTP / 2 ortaya çıktı, bilgilerin parçalara ayrılma biçimleri değişti.

HTTP protokolü güvenliği

HTTP'nin kendisi bilgilerin şifrelenmesi anlamına gelmez. Ancak, verileri SSL veya TLS protokolüne paketleyebilen protokolün bir uzantısı vardır.

HTTPS (S - Secure), iletilen bilgilerin ele geçirilmesine izin vermeyen ve bilgileri ortadaki adam MITM saldırılarından veya aracı saldırılarından koruyan popüler bir çözümdür.

MITM, esasen bilgilerin kasıtlı olarak değiştirildiği bozuk bir telefondur. Ne istemci ne de sunucu ikame hakkında bilgi sahibi değildir.

HTTP neyden yapılmıştır?

Sunucunun ve istemcinin istek gönderip aldığından çok bahsettik. Peki bu taleplerde neler var? Her HTTP mesajının üç bölümü vardır:

  1. İleti türünü belirten bir başlangıç ​​dizesi.
  2. İleti gövdesini karakterize eden başlıklar.
  3. Gerekli verileri içeren iletinin gövdesi.

HTTP'nin özellikleri sayesinde arama motorları, forumlar, çevrimiçi mağazalar oluşturmayı başardılar. İnternete ticaret gelmiş, internet sağlayıcıları ve internet üzerinde faaliyet gösteren diğer firmalar ortaya çıkmaya başlamıştır. Ve hepsi artık aşina olduğunuz HTTP protokolü sayesinde.

Google'ın güvenli HTTPS bağlantı protokolünü kullanan siteleri tercih ettiğini muhtemelen birçok kez duymuşsunuzdur. Bu doğru mu? Bu yazıda protokolleri ele alacağız. HTTP ve HTTPS , aralarındaki fark nedir ve sitenizi HTTPS'ye geçirmeye değer mi?

HTTP – bir uygulama protokolü olarak web sitelerinden veri almak için kullanılır. HTTPS – SSL ve TLS protokollerini destekleyen bir HTTP protokolü uzantısı. Gördüğünüz gibi, HTTP ve HTTPS farklı protokoller değildir ve HTTPS yalnızca güvenli bir bilgi alışverişi süreci ve ek güvenlik gerektiren sunucuların yetkilendirilmesi için kullanılan bir şifreleme eklentisidir.

Köprü Metni Aktarım Protokolü (HTTP), öncelikle HTML sayfalarına erişmek için kullanılır. Protokol, önceki kullanıcı oturumuyla ilgili bilgileri saklamaz, bu nedenle daha az veri gönderir ve bu nedenle daha hızlı çalışır.

Güvenli HTTPS, yetkilendirme ve güvenli işlemler için kullanılır. HTTP ile aynı şekilde çalışır, ancak ek bir şifreleme veri koruma katmanı kullanır - SSL protokolü. Teknik açıdan, her iki protokol de iletişim için iki farklı bağlantı noktası kullanır: HTTP'nin aksine, güvenli muadili TCP bağlantı noktası 443'ü kullanır. SSL sayesinde veri alışverişi güvenli bir seviyede gerçekleştirilir ve bu banka kartı verileri gibi gizli müşteri bilgilerini saklayan siteler için oldukça önemlidir.

Google arama motorunun, ziyaretçilerin güvenliğinden endişe duyan sitelere daha fazla güvenmesi hiç de garip değil, bu nedenle HTTPS'li projeler daha üst sıralarda yer alıyor. “Güvenli moda” geçmek, kullanıcıların kişisel verileri hakkında endişelenmesi gerekmeyen siteler için bile faydalı olacaktır. Bu tür siteler, düzenlemede avantaj elde edecek ve buna bağlı olarak sayfalarına daha fazla ziyaretçi çekecektir.

TLS'nin (Taşıma Katmanı Güvenliği) temelini hangi teknik yönler oluşturur? :

  • iletiminin güvenliğini artırmak için bilgileri kodlamak;
  • iletim sırasında değişmeyen ve bozulmayan verilerin bütünlüğünün korunması;
  • ziyaretçinin tam olarak ihtiyaç duyduğu siteye ulaşmasını sağlayan kimlik doğrulama.

Arama motoru HTTPS'ye sahip siteleri daha yüksek sıralasa da, şu ana kadar bu faktörün, kaliteli içerik gibi dikkat ettiği diğerlerine kıyasla çok az ağırlığı var.

Aşağıdakiler açısından HTTPS'ye geçişin faydaları :

  1. güvenli kullanıcı yönlendirme verilerinin saklanması;
  2. aramadaki artan pozisyonlar (bu faktör hala çok az ağırlıkta olsa da, gelecekte kesinlikle değerini artıracaktır);
  3. gizlilik: tüm iletişimlerin şifrelenmesi, üçüncü şahıslara erişilememesi, kişisel bilgilerin korunması.

Ancak yukarıdaki tüm avantajlara ek olarak, birçok web yöneticisinin korktuğu böyle bir geçişin dezavantajları da vardır. Örneğin, uzmanların tavsiyelerine uymazsanız, HTTPS'ye geçmek sitenin yüklenme hızını biraz düşürür. Ayrıca, arama motoru için HTTP ve HTTPS üzerindeki site iki farklı kaynaktır, bu nedenle sistemin bunun aynı site olduğunu anlaması ve bunları birbirine yapıştırması zaman alır. Ayrıca, güvenli moda geçmek için, fiyat aralığı türüne göre değişen bir SSL sertifikası satın almanız gerekir.

Geçiş sırasında sorun yaşamamak için aşağıdaki kurallara uymalısınız:

  • kaynağınız için gerekli sertifikayı seçin: bir alan, çoklu veya joker karakter için;
  • 2048 bit anahtarlı sertifikaları kullanın;
  • HTTPS sayfalarının robots.txt dosyasında dizine eklenmesini kapatmayın;
  • "robots" meta etiketinde noindex kullanmaktan mümkün olduğunca kaçınmaya çalışın;
  • Google Web Yöneticisi Araçları'nda HTTP'den HTTPS'ye geçişleri analiz edin;
  • diğer tüm etki alanları vb. için bir protokol belirtmeden göreli URL'leri kullanın.

Bu ipuçlarını izlerseniz, güvenli HTTPS protokolüne güvenle geçebilirsiniz. İnanın bana, ziyaretçileriniz ve müşterileriniz bunu takdir edecek. Sonuçta, kullanıcılarının verilerinin güvenliğini önemseyen bir siteye çok daha fazla güvenilir. HTTPS'ye geçin: SSL'yi Ücretsiz Kurun! Detaylar .

HyperHost'ta online projeniz için gerekli olan SSL sertifikasını satın alarak HTTPS'ye geçiş yapabilirsiniz. Teknik desteğimiz, gerekli tüm ayarları yapmanıza ve tüm sorularınızı yanıtlamanıza yardımcı olacaktır. Bir önceki makalede bir SSL sertifikasının avantajları ve türleri hakkında bilgi edinebilirsiniz:. HTTPS'ye geçmenin faydaları daha ayrıntılı olarak açıklanmıştır.

5075 kez bugün 5 kez görüntülendi