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.

None
Şekil 1 — Her web etkileşiminin temeli: tek yönlü istek-yanıt döngüsü.

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.

None
Şekil 2 — DNS çözümleme hiyerarşisi: Tarayıcıdan root name server'a oradan yetkili NS'e kadar.

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.

None
Şekil 3 — TCP üç yönlü el sıkışma. Bağlantı ancak bu üç adımın tamamlanmasıyla güvenilir sayılır.

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.

None
Şekil 4 — Ağ katmanları. Her katman alttakini sararak güvenlik ve güvenilirlik ekler.

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.

None

İ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.

None
Şekil 5 — GET ve POST metotlarının temel farkı: verinin nerede taşındığı.

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
None
Şekil 6 — HTTP durum kodu aileleri. Güvenlik testinde bu kodlar kritik sinyaller verir.

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.

None
Şekil 7 — DOM ağacı. JavaScript bu ağaç üzerinden sayfayı dinamik olarak manipüle eder — XSS saldırıları da tam burada devreye girer.

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:

None
Şekil 8 — Enter'dan ekrana: tüm adımların özet akışı. Bu döngünün her noktası, bir saldırgan için potansiyel giriş noktasıdı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.