HTTP Request’in Arka Yüzü: İnternetin Görünmeyen Mekanizması

Eminkaya
Yıldız Technical University - Sky Lab
8 min readMay 26, 2024

İnternetin görünmez kahramanı HTTP, her gün milyarlarca cihazın birbiriyle konuşmasını sağlar. Bir web sitesini ziyaret ettiğinizde, online bir alışveriş yaptığınızda veya sosyal medyada bir gönderi paylaştığınızda, perde arkasında sayısız HTTP isteği gerçekleştirilir. Evlerimizde, ofislerimizde ve hatta kahve dükkanlarında bile Wi-Fi ağları sayesinde bu istekler anında yapılabilir. Peki, bu isteklerin nasıl çalıştığını hiç merak ettiniz mi?

HTTP istekleri, internetin karmaşık ağında verilerin güvenli ve doğru bir şekilde iletilmesini sağlar. Bu yazıda, HTTP isteklerinin ne olduğunu, nasıl çalıştığını ve hangi bileşenlerden oluştuğunu adım adım keşfedeceğiz. İster bir yazılım geliştirici olun, ister teknoloji meraklısı, bu makale size internetin bu hayati mekanizmasını anlamanız için gereken tüm bilgileri sağlayacak.

HTTP Doğarken

1990'ların başında internet, henüz emekleme aşamasındaydı ve araştırmacılar arasında veri paylaşımı için temel bir araç olarak kullanılıyordu. Ancak, web tarayıcıları ve sunucular arasında veri alışverişini kolaylaştıracak bir protokol eksikti. İşte bu noktada, HTTP (HyperText Transfer Protocol) devreye girdi. Tim Berners-Lee, CERN’de (Avrupa Nükleer Araştırma Merkezi) çalışırken, araştırmacıların bilgiye daha kolay ve hızlı erişebilmesi için bir çözüm arayışına girdi. Bu çözüm, HTML (HyperText Markup Language) ve URL (Uniform Resource Locator) ile birlikte HTTP’nin ortaya çıkmasını sağladı.

HTTP, ilk olarak 1989 yılında Tim Berners-Lee tarafından önerildi ve 1991'de resmi olarak yayımlandı. HTTP’nin temel amacı, web tarayıcıları ve web sunucuları arasında veri iletişimini standartlaştırmaktı. Öncelikli olarak, metin tabanlı belgelerin internet üzerinden transferini mümkün kılan bir protokol olarak tasarlandı. Ancak HTTP’nin esnekliği ve genişletilebilirliği, onun zamanla görüntü, video, ses ve diğer multimedya içeriklerinin transferi için de kullanılmasını sağladı.

HTTP’nin ortaya çıkışı, o dönemdeki en büyük problemlerden birini çözdü: İnternet üzerindeki bilgiye hızlı ve etkin bir şekilde erişim. Kullanıcılar, bir URL girerek istedikleri bilgiye anında ulaşabiliyor, web tarayıcıları aracılığıyla bu bilgiyi görüntüleyebiliyordu. Bu, web’in hızlı büyümesini ve yaygınlaşmasını sağladı, zira artık bilgiye erişim hem kullanıcılar hem de içerik sağlayıcılar için daha kolay hale gelmişti.

HTTP, basit yapısı ve metin tabanlı iletişim modeli sayesinde hızla benimsendi ve internetin temel taşlarından biri haline geldi. İlk sürümü olan HTTP/0.9, sadece basit bir GET isteğini destekliyordu. Ancak, HTTP’nin sonraki sürümleri, veri iletimi için daha fazla esneklik ve güvenlik sağlayarak protokolü geliştirdi. HTTP/1.0 ve HTTP/1.1 sürümleri, daha karmaşık işlemleri ve yüksek performansı destekleyerek, internetin evriminde kilit rol oynadı.

Sonuç olarak, HTTP’nin doğuşu, web’in bilgi paylaşımı ve erişimi üzerindeki devrim niteliğindeki etkisini başlatan kritik bir gelişmeydi. Günümüzde, HTTP ve onun güvenli versiyonu HTTPS, internet üzerindeki hemen her veri iletimi için kullanılır hale gelmiştir.

HTTP İsteklerinin Bileşenleri

İnternetin büyüleyici dünyasında, HTTP istekleri adeta bir sihir gibi işler. Web tarayıcınızla yaptığınız her tıklama, her sayfa yüklemesi bir HTTP isteğiyle başlar. Peki, bu isteklerin nasıl çalıştığını, hangi bileşenlerden oluştuğunu ve günümüzde nasıl kullanıldığını hiç merak ettiniz mi?3

URL ve URI: İnternetin Adres Defteri

Bir HTTP isteği yapılırken, tarayıcınız belirli bir kaynağı bulmak için URL kullanır. URL, internetteki bir kaynağın adresini tanımlar. Örneğin, https://www.example.com/index.html bir URL’dir. Her gün arkadaşınıza YouTube videosu gönderirken veya bir ürünün Amazon sayfasına bakarken URL kullanırsınız. URI ise, URL’lerin de dahil olduğu daha geniş bir kavramdır ve internetteki herhangi bir kaynağı tanımlamak için kullanılır.

HTTP Metotları: İnternetin İşçi Arıları

HTTP istekleri, farklı metotlarla gerçekleştirilir. Bu metotlar, internetin işleyişinde kritik bir rol oynar. En yaygın kullanılan metotlar şunlardır:

GET: Tarayıcınıza www.example.com yazdığınızda, tarayıcınız bir GET isteği gönderir. Sunucu, istediğiniz web sayfasını geri döner. Aslında, internette gezinirken yaptığınız her tıklamada bu metodu kullanırsınız.

POST: Bir blog yazısı oluşturduğunuzda veya bir form gönderdiğinizde, POST isteği kullanılır. Mesela, sosyal medyada yeni bir gönderi paylaşırken aslında bir POST isteği gönderiyorsunuz.

PUT: Profil resminizi güncellediğinizde PUT isteği devreye girer. Örneğin, Instagram’da profil resminizi değiştirdiğinizde, bu metot kullanılır.

DELETE: Bir sosyal medya gönderisini sildiğinizde DELETE isteği iş başındadır. Facebook’ta bir gönderiyi kaldırırken bu işlemin gerçekleştiğini fark etmiş miydiniz?

HTTP Başlıkları: İletişimin Gizli Kahramanları

HTTP başlıkları, istemci (tarayıcınız) ve sunucu arasındaki iletişimi kolaylaştıran bilgileri taşır. Mesela:

Host: İstek yapılan sunucunun adını belirtir.

User-Agent: İsteği yapan cihaz hakkında bilgi verir. Tarayıcı türü, işletim sistemi gibi bilgiler içerir.

Accept: Tarayıcınızın kabul edebileceği içerik türlerini belirtir.

Content-Type: Gönderilen verinin türünü belirtir. Örneğin, JSON formatında veri gönderirken application/json kullanılır.

Bir e-ticaret sitesinde alışveriş yaparken, tarayıcınızın sunucuya hangi dilde içerik istediğini belirttiği Accept başlığını kullanır. Bu sayede, web siteleri size uygun dilde ve formatta içerik sunabilir.

HTTP İstek Gövdesi: Verilerin Taşındığı Yer

HTTP istek gövdesi, genellikle POST ve PUT isteklerinde kullanılır ve sunucuya gönderilen verileri içerir. Örneğin, bir blog platformunda yeni bir yazı oluşturduğunuzda, yazınızın içeriği, başlığı ve diğer bilgileri HTTP isteğinin gövdesinde gönderilir. Bu sayede sunucu, gönderdiğiniz verileri alır ve veri tabanına kaydeder.

Günümüzde, API’lar aracılığıyla yapılan veri alışverişlerinin çoğu JSON formatında gerçekleştirilir. Twitter’a bir tweet gönderirken veya Google Haritalar’da bir konum ararken, bu veri alışverişi hep HTTP istek gövdeleri sayesinde mümkün olur.

HTTP İsteklerinin Çalışma Mekanizması

İnternette gezindiğimizde, her tıklama ve her sayfa yüklemesi ardında büyük bir hareketlilik barındırır. HTTP istekleri, bu hareketliliğin merkezindedir. Şimdi, bu isteklerin arka planda nasıl çalıştığını ve nasıl yol aldığını keşfedelim.

DNS ve IP Adresi: İnternetin Telefon Rehberi

İnternette gezinirken farkında olmadığımız gizli bir kahraman daha var: DNS (Domain Name System). Tarayıcınıza www.example.com yazdığınızda, bilgisayarınız bu adresin hangi IP adresine karşılık geldiğini bilmek zorundadır. İşte burada DNS devreye girer. DNS, internetin telefon rehberidir ve domain isimlerini IP adreslerine çevirir. Böylece, tarayıcınız doğru sunucuya bağlanabilir.

Düşünün, arkadaşınızı telefon rehberinizde adıyla aramak gibidir bu. Siz sadece adı bilirsiniz, DNS ise bu adı IP adresine dönüştürür. İnternette bir siteye girdiğiniz her an, bu sihirli çeviri işlemi arka planda gerçekleşir.

TCP/IP ve Bağlantı Kurulumu: Üçlü El Sıkışma

HTTP, TCP/IP protokolü üzerinde çalışır. Bir web sitesine erişmek istediğinizde, tarayıcınız ve sunucu arasında güvenilir bir bağlantı kurulması gerekir. Bu, üçlü el sıkışma (three-way handshake) süreci ile gerçekleştirilir. İlk adımda tarayıcınız sunucuya bir “SYN” (synchronize) mesajı gönderir. Sunucu bu mesaja “SYN-ACK” (synchronize-acknowledge) ile yanıt verir ve son olarak tarayıcınız “ACK” (acknowledge) mesajı göndererek bağlantıyı kurar.

Bu süreci, iki arkadaşın el sıkışarak tanışması gibi düşünebilirsiniz. Önce biri elini uzatır (SYN), diğeri elini uzatır ve merhaba der (SYN-ACK), ardından ilk kişi el sıkışmayı tamamlar ve tanışırlar (ACK). İşte internette her tıkladığınızda, tarayıcınız ve sunucu arasında bu el sıkışma işlemi gerçekleşir.

İstek Gönderme ve Yanıt Alma Süreci: Veri Trafiği

Bağlantı kurulduktan sonra, asıl iş başlar. Tarayıcınız, sunucuya bir HTTP isteği gönderir. Bu istek, tarayıcınızın hangi verileri istediğini belirtir. Örneğin, GET /index.html HTTP/1.1 şeklinde bir istek, sunucudan index.html dosyasını talep eder. Sunucu, bu isteği alır, işler ve yanıt verir. Yanıt, istemcinin beklediği veriyi (örneğin, bir web sayfası) içerir ve tarayıcı bu veriyi kullanıcıya gösterir.

Bu süreci bir restoranda yemek siparişi vermek gibi düşünebilirsiniz. Siz menüden bir yemek seçer (HTTP isteği), garsona siparişinizi verirsiniz. Garson mutfağa gider, şef yemeği hazırlar ve garson size yemeğinizi getirir (HTTP yanıtı). Tarayıcınızın ve sunucunun arasındaki bu işlem, aynı şekilde hızlı ve verimli bir şekilde gerçekleşir.

HTTP İsteklerinin Güvenliği

İnternetin büyülü dünyasında gezinirken, gizlilik ve güvenlik her şeyden önce gelir. Kişisel bilgilerimizi paylaşırken veya hassas veriler gönderirken, bu verilerin güvende olduğunu bilmek isteriz. İşte HTTP isteklerinin güvenliği de tam burada devreye girer. Şimdi, bu sürecin nasıl işlediğine bir göz atalım.

HTTPS ve SSL/TLS: Güvenli Tünel

HTTP’nin güvenli versiyonu olan HTTPS (HyperText Transfer Protocol Secure), web tarayıcıları ve sunucular arasındaki veri iletimini şifreleyerek güvenli hale getirir. Bu şifreleme işlemi, SSL/TLS (Secure Sockets Layer / Transport Layer Security) protokolleri kullanılarak gerçekleştirilir. Peki, bu ne anlama geliyor?

Diyelim ki, bir e-ticaret sitesinde alışveriş yapıyorsunuz ve kredi kartı bilgilerinizi giriyorsunuz. HTTPS olmadan, bu bilgiler düz metin olarak internet üzerinden gönderilir ve kötü niyetli kişiler tarafından kolayca ele geçirilebilir. Ancak HTTPS ile, bu bilgiler şifrelenir ve sadece alıcı tarafından çözülebilir hale gelir. Böylece, kredi kartı bilgileriniz internetin karanlık köşelerinde güvende kalır.

HTTPS, tarayıcı adres çubuğunda görülen küçük bir kilit simgesi ile belirtilir. Bu simge, bağlantınızın güvenli olduğunu ve verilerinizin şifreli olarak iletildiğini gösterir. Yani, online bankacılık yaparken veya sosyal medya hesaplarınızı kullanırken bu kilit simgesine dikkat etmiş miydiniz?

Kimlik Doğrulama ve Yetkilendirme: Kim Olduğunuzu Kanıtlayın

HTTP isteklerinde güvenlik, sadece verilerin şifrelenmesiyle sınırlı değildir. Ayrıca, kimlik doğrulama ve yetkilendirme mekanizmaları da devreye girer. Bu mekanizmalar, kullanıcıların kimliklerini doğrulamak ve sadece yetkili kişilerin belirli bilgilere erişmesini sağlamak için kullanılır.

En basit kimlik doğrulama yöntemlerinden biri, Temel Kimlik Doğrulama (Basic Authentication) olarak bilinir. Bu yöntemde, kullanıcı adı ve şifre, HTTP başlıklarında Base64 formatında şifrelenerek gönderilir. Ancak, bu yöntem HTTPS kullanılmadığı takdirde güvenli değildir, çünkü Base64 şifreleme kolayca çözülebilir.

Daha güvenli bir yöntem olan OAuth, kullanıcıların kimliklerini doğrulamak ve yetkilendirmek için kullanılır. Örneğin, bir uygulamanın sizin adınıza Twitter hesabınıza erişmesine izin verirken OAuth kullanılır. Bu yöntem, kullanıcı adı ve şifre yerine, token adı verilen özel anahtarlar kullanarak kimlik doğrulama yapar.

İnternetin Geleceği: Sınırları Zorlayan Bir Vizyon

Düşünün ki, internet sadece bilgi alışverişi yaptığımız bir araç olmaktan çıkar ve günlük hayatımızın her anını etkileyen bir ekosisteme dönüşür. Gelecekte, HTTP protokollerinin sağladığı hız ve güvenlik, yapay zekâ, kuantum bilgisayarlar ve hatta beyin-bilgisayar arayüzleri (BCI) ile birleşerek interneti tamamen dönüştürebilir. Sizi geleceğe götürecek ufkunuzu genişletecek fikirlerle tanıştırıyoruz.

Sanal Gerçeklik (VR) ve Artırılmış Gerçeklik (AR) Evreni: Hyper-Connected Universe

Gelecekte, HTTP protokolleri VR ve AR teknolojileri ile birleşerek hiper-bağlantılı bir evren yaratabilir. Düşünün, sadece bir gözlük takarak sanal dünyalara adım atıyorsunuz. Bu dünyalarda alışveriş yapabilir, arkadaşlarınızla buluşabilir ve hatta iş toplantılarına katılabilirsiniz. HTTP/3 ve QUIC protokolleri, bu sanal evrenlerin hızlı ve kesintisiz çalışmasını sağlar.

Örneğin, sanal bir mağazaya girdiğinizde, gerçek zamanlı olarak ürünleri inceleyebilir, deneme odalarında kıyafetleri üzerinizde görebilirsiniz. Bu sanal deneyim, HTTP/3'ün düşük gecikme süresi ve yüksek bant genişliği sayesinde sorunsuz bir şekilde gerçekleşir. Alışverişinizi tamamladığınızda, ödeme işlemi güvenli bir şekilde yapılır ve ürünleriniz fiziksel dünyadaki adresinize gönderilir.

Sentient Web: Bilinçli ve Kendi Kendine Öğrenen İnternet

Bir adım daha ileri giderek, HTTP protokollerinin yapay zekâ ile birleştiğini düşünün. Gelecekte, internet sadece veri alışverişi yapılan bir ağ olmaktan çıkar ve kendi kendine öğrenen, bilinçli bir varlık haline gelir. Bu “Sentient Web” (Duyarlı Web), kullanıcılarının ihtiyaçlarını ve davranışlarını analiz ederek kişiselleştirilmiş deneyimler sunar.

Örneğin, bir gününüzü planladığınızda, Sentient Web sizin rutinlerinizi, ilgi alanlarınızı ve hatta ruh halinizi analiz ederek size önerilerde bulunur. Sabah kahvenizi içmek için ideal kafeyi, spor salonunda yapmanız gereken egzersizleri ve iş toplantılarınız için en uygun zamanı belirler. Bu bilinçli internet, sizinle etkileşime geçer ve hayatınızı kolaylaştırmak için sürekli öğrenir ve gelişir.

Sonuç

HTTP’yi siz okurlarımıza anlatabilmişizdir. Bu yazıda çok teknik konulara girmedik, genel olarak herkesin anlayabileceği şekilde HTTP’yi anlatmaya çalıştık. HTTP’yi öğrendikten sonra artık vazgeçilemez bir şey olduğunu hatta olmasaydı biz ne olurduk gibi şeyler söylediğinizi duyar gibiyim. Teknolojimiz üssel olarak gelişmekte. Bundan 40 yıl önce endüstriyel makineler yaygın, robotik ve otomasyon çok yaygın değilken şu an IoT evlerimizde ve cebimizde diyebiliriz. Tüm dünyanın nefes tutarak takip ettiği yapay zeka dil işleme modelleri, kuantum bilgisayarları, uzay çalışmaları gibi birçok teknoloji gelişiyor, doğuyor. Bundan 40 yıl önce akıllı telefon teknolojisinin olabileceğini bilen sayılı insan vardı, şimdi ise tüm dünyanın bir bağımlılığı oldu. İnsanın en büyük yeteneği uyum sağlamasıdır. Umarız artık bir web sitesine baktığınızda bu yazı aklınıza gelir ve kolay gibi görünen her gün girdiğiniz şeyin bile ne kadar derin bir arka yüzü olduğunu hatırlarsınız.

KAYNAKÇA:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview

https://www.geeksforgeeks.org/http-full-form/

https://www.w3schools.com/whatis/whatis_http.asp

https://www.freecodecamp.org/news/what-is-http/

https://www.w3schools.com/tags/ref_httpmethods.asp

--

--