Tarayıcınıza https://example.com/login yazıp Enter'a bastığınız an bir saat mekanizması gibi onlarca dişli birden harekete geçer. Bu yazıyı okurken siz de tam olarak bu mekanizmanın içine girersiniz; ama çoğunlukla görmüyorsunuz. Ben de bu yazıda o görünmez dişlileri birer birer göstermeye çalışacağım.
Web uygulamaları aslında büyük bir soru-cevap oyunudur. İstemci sorar, sunucu yanıtlar. Ama bu diyaloğun kuralları son derece katıdır.
1. İstemci-Sunucu Mimarisi
Web'in tamamı bir sözleşme üzerine kuruludur: istemci (genellikle tarayıcınız) bir kaynak talep eder, sunucu (uzaktaki bir bilgisayar) o kaynağı gönderir. Bu ilişkide sunucu pasif, istemci aktiftir. HTTP protokolü prensipte durumsuz (stateless)tir — ama gerçek hayatta oturumları cookie'ler taşır.

2. DNS: Tarayıcının Rehberi
URL'yi yazdınız. Tarayıcı ilk iş olarak o domain'in hangi IP adresine karşılık geldiğini öğrenmek zorundadır, çünkü internet IP adresleri üzerinden konuşur, isimler üzerinden değil. Bu iş için DNS (Domain Name System) devreye girer.
Tarayıcı önce kendi önbelleğine bakar. Bulamazsa işletim sistemi bir DNS resolver'a sorar. Resolver da gerekirse hiyerarşiyi tırmanarak yetkili name server'a ulaşıp IP adresini alır. Tüm bu süreç genellikle milisaniyeler içinde tamamlanır.

3. TCP Bağlantısı: Güvenilir Bir Kanal Kurmak
IP adresini buldunuz. Şimdi o adresteki sunucuyla bir bağlantı kurmanız gerekiyor. HTTP için bu altta yatan katman TCP'dir. TCP bağlantısı kurmak, ünlü üç yönlü el sıkışma ile başlar.

4. TLS El Sıkışması: HTTPS'nin Sırrı
URL'niz https:// ile başlıyorsa — ki bugün neredeyse her URL başlıyor — TCP'nin hemen üstüne bir de TLS (Transport Layer Security) katmanı oturur. TLS'in görevi şifrelemedir: araya giren biri trafiği dinlese bile anlamsız bir gürültüden başka bir şey göremez.
Sunucu bir sertifika sunar; tarayıcı bunu doğrular. Taraflar bir şifreleme yöntemi ve oturum anahtarı üzerinde anlaşırlar. Bundan sonra tüm veri trafiği bu anahtarla şifreli gider.

5. HTTP İsteği: Tarayıcının Asıl Sorusu
Bağlantı kuruldu, şifreleme hazır. Şimdi tarayıcı gerçek isteğini gönderebilir. Bu istek bir metin bloğudur; içinde başlık satırı, header'lar ve isteğe bağlı olarak body bulunur.

İlk satır her şeyi özetler: hangi HTTP metodu kullanılıyor, hangi path isteniyor, hangi protokol versiyonu konuşuluyor. GET "bana bir şey ver" anlamına gelir; body taşımaz. POST ise "sana bir şey gönderiyorum" der; form verileri, JSON içerikleri taşır.

6. HTTP Yanıtı ve Durum Kodları
Sunucu isteği işler, yanıtını bir metin bloğu olarak gönderir. İlk satır durum kodu (status code)'dur ve her şeyi tek bir sayıyla özetler:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Set-Cookie: session_id=newtoken; HttpOnly; Secure
Cache-Control: no-store
Content-Length: 4821
← Boş satırdan sonra body (HTML) başlar
Yanıttaki Set-Cookie header'ına dikkat edin. Sunucu bu satırla tarayıcıya "bu çerezi sakla ve bir sonraki istekte bana geri gönder" der. HTTP'nin durumsuz yapısına karşın oturumların nasıl ayakta durduğunun sırrı budur: her istekte taşınan bir çerez, sunucunun kim olduğunuzu hatırlamasını sağlar.
7. DOM: Tarayıcının HTML'yi Anlamlandırması
Tarayıcı HTML'yi alır almaz onu satır satır ayrıştırmaya başlar ve belleğinde bir ağaç yapısı inşa eder: DOM (Document Object Model). Her HTML etiketi bu ağaçta bir düğümdür.

DOM sadece bir veri yapısı değildir; JavaScript bu ağaç üzerinden sayfayı manipüle eder. Bir güvenlik açısından bakıldığında DOM, özellikle XSS (Cross-Site Scripting) saldırılarının oynadığı alandır — ama bu başka bir yazının konusu.
8. Tam Döngü: Bir Bakışta
Tüm bu adımlar birleştirildiğinde tarayıcıdan sunucuya ve geri ekrana uzanan tam yolculuk şöyle görünür:

Tüm bu adımlar — DNS çözümlemesi, TCP bağlantısı, TLS el sıkışması, HTTP isteği, sunucu işleme, HTTP yanıtı, DOM inşası — çoğu zaman birkaç yüz milisaniye içinde tamamlanır. Bir sonraki sefer sayfanın yüklendiğini gördüğünüzde, aslında bu karmaşık koreografinin son haline bakıyorsunuzdur.
Ve bu koreografinin her adımı, bir saldırgan için potansiyel bir giriş noktasıdır. Tam da bu yüzden temelleri anlamak, güvenlik testlerine başlamadan önce tartışılmaz bir önkoşuldur.
Vaktinizi ayırıp okuduğunuz için teşekkür ederim.