Networking & Web — Kapsamlı Rehber

2 Ağustos 2026 · netologist · 22 dakika, 4477 kelime ·

HTTP/1.1, HTTP/2, HTTP/3, TCP/IP, TLS, DNS, WebSocket, gRPC, REST, Reverse Proxy, Load Balancer ve Connection Pooling konularını derinlemesine ve pratik biçimde ele alan bir referans rehber.


İçindekiler

  1. TCP/IP
  2. DNS
  3. TLS
  4. HTTP/1.1
  5. HTTP/2
  6. HTTP/3
  7. REST
  8. WebSocket
  9. gRPC
  10. Reverse Proxy
  11. Load Balancer
  12. Connection Pooling
  13. Genel Geçer Best Practice’ler

1. TCP/IP

1.1 Genel Bakış

TCP/IP, internetin temel protokol paketidir ve OSI’nin 7 katmanına karşılık dört kavramsal katmanda organize edilir:

KatmanÖrneklerSorumluluk
Uygulama (Application)HTTP, DNS, gRPCUygulama düzeyinde veri alışverişi
Taşıma (Transport)TCP, UDPUçtan uca teslimat, portlar
İnternetIP, ICMPYönlendirme (routing), adresleme
Bağlantı (Link)Ethernet, Wi-FiFiziksel/çerçeve (frame) teslimatı

1.2 TCP Üçlü El Sıkışma (Three-Way Handshake)

İstemci                     Sunucu
  | ---- SYN (seq=x) ---->  |
  | <-- SYN-ACK (seq=y,     |
  |     ack=x+1) ---------  |
  | ---- ACK (ack=y+1) -->  |
  |        bağlantı açık    |

1.3 Temel TCP Mekanizmaları

1.4 TCP vs UDP

TCPUDP
BağlantıBağlantı odaklıBağlantısız
GüvenilirlikGarantili, sıralıEn iyi çaba (best-effort)
Ek yük (overhead)Yüksek (başlıklar, el sıkışma)Minimal
Kullanım alanlarıHTTP, gRPC, veritabanlarıDNS sorguları, video akışı, QUIC/HTTP3, oyun

1.5 Best Practice’ler

1.6 Sık Yapılan Hatalar


2. DNS

2.1 Genel Bakış

DNS (Domain Name System), insan tarafından okunabilir alan adlarını IP adreslerine (ve diğer kayıtlara) çeviren hiyerarşik, dağıtık bir isimlendirme sistemidir.

2.2 Çözümleme Akışı

İstemci → Recursive Resolver (ISS/8.8.8.8)
        → Root Sunucu (.)
        → TLD Sunucu (.com)
        → Yetkili (Authoritative) Sunucu (example.com)
        → Yanıt önbelleğe alınır ve döndürülür

2.3 Kayıt Türleri

KayıtAmaç
AHostname → IPv4
AAAAHostname → IPv6
CNAMEBaşka bir hostname’e takma ad (alias)
MXMail sunucuları
TXTSerbest metin (SPF, DKIM, doğrulama)
NSYetkili isim sunucuları
SOAZone yetki bilgisi
SRVServis konumu (host+port), gRPC/Kubernetes tarafından kullanılır
PTRTers arama (IP → hostname)

2.4 Önbellekleme ve TTL

2.5 Modern Pattern’ler

2.6 Best Practice’ler

2.7 Sık Yapılan Hatalar


3. TLS

3.1 Genel Bakış

TLS (Transport Layer Security), TCP (veya DTLS/QUIC aracılığıyla UDP) üzerinde gizlilik, bütünlük ve kimlik doğrulama sağlar. Güncel standart: TLS 1.3 (RFC 8446); TLS 1.0/1.1 kullanımdan kaldırılmıştır, TLS 1.2 hâlâ yaygın olarak desteklenmektedir.

3.2 El Sıkışma (TLS 1.3 — kısaltılmış, 1-RTT)

İstemci                                  Sunucu
  ---- ClientHello (key_share) ------->
                                        <-- ServerHello (key_share)
                                            + EncryptedExtensions
                                            + Certificate
                                            + CertificateVerify
                                            + Finished
  ---- Finished ---------------------->
  ==== Uygulama Verisi (şifreli) ====

3.3 Temel Kavramlar

3.4 Best Practice’ler

3.5 Sık Yapılan Hatalar


4. HTTP/1.1

4.1 Genel Bakış

HTTP/1.1 (RFC 7230–7235, 1997), TCP üzerinde metin tabanlı bir istek-yanıt protokolüdür. HTTP/2 ve HTTP/3’ün anlamsal olarak üzerine inşa edildiği temel protokoldür.

4.2 Temel Özellikler

4.3 İstek/Yanıt Yapısı

GET /users/42 HTTP/1.1
Host: api.example.com
Accept: application/json
Connection: keep-alive

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 128
Cache-Control: max-age=60

{"id":42,"name":"Ada"}

4.4 Best Practice’ler

4.5 Sık Yapılan Hatalar


5. HTTP/2

5.1 Genel Bakış

HTTP/2 (RFC 7540, 2015, Google’ın SPDY’sine dayanır), HTTP/1.1 anlamlarını (metotlar, durum kodları, başlıklar) korur ancak tel formatını tek bir TCP bağlantısı üzerinden binary, multiplexed bir protokole dönüştürür.

5.2 Temel Özellikler

5.3 Binary Framing

Tüm iletişim, bir stream ID ile etiketlenmiş ve tek bir bağlantı üzerinde multiplekslenmiş frame’lere (HEADERS, DATA, SETTINGS, WINDOW_UPDATE, RST_STREAM, PING, GOAWAY) bölünür.

Bağlantı
 ├─ Stream 1: HEADERS → DATA → DATA (yanıt gövdesi)
 ├─ Stream 3: HEADERS → DATA
 └─ Stream 5: HEADERS (istek işlemde)

5.4 Best Practice’ler

5.5 Sık Yapılan Hatalar


6. HTTP/3

6.1 Genel Bakış

HTTP/3 (RFC 9114, 2022), TCP’nin yerine Google tarafından geliştirilen ve IETF’de standartlaştırılan UDP tabanlı bir taşıma protokolü olan QUIC‘i (RFC 9000) kullanır. Amaç: HTTP/2’nin TCP düzeyindeki HOL blocking sorununu çözmek ve bağlantı kurulum gecikmesini azaltmak.

6.2 QUIC Temelleri

6.3 Karşılaştırma

HTTP/1.1HTTP/2HTTP/3
TaşımaTCPTCPQUIC (UDP)
MultiplexingHayır (pipelining kullanılmıyor)Evet, tek TCP bağlantısıEvet, bağımsız stream’ler
HOL blockingVar (bağlantı düzeyinde)Kısmi (yalnızca TCP düzeyinde)Çözüldü (stream başına)
El sıkışmaTCP + TLS (2–3 RTT)TCP + TLS (2–3 RTT)1-RTT (0-RTT devam ettirme)
Başlık sıkıştırmaYokHPACKQPACK (HOL-blocking’e karşı güvenli)
Bağlantı taşınmasıHayırHayırEvet

6.4 Best Practice’ler

6.5 Sık Yapılan Hatalar


7. REST

7.1 Genel Bakış

REST (Representational State Transfer), Roy Fielding’in 2000 tarihli tezinde tanımlanan, ağ üzerindeki API’leri tasarlamak için bir mimari stildir — bir protokol değildir — ve genellikle HTTP üzerinde uygulanır.

7.2 Kısıtlamalar (REST’in gerçek tanımı)

  1. Client-server ayrımı
  2. Durumsuzluk (statelessness) — her istek gerekli tüm bağlamı içerir; sunucu tarafında oturum durumu yoktur
  3. Önbelleklenebilirlik (cacheability) — yanıtlar açıkça önbelleklenebilir/önbelleklenemez olarak işaretlenir
  4. Tekdüze arayüz (uniform interface) — kaynaklar URI’lerle tanımlanır, temsiller (representation) aracılığıyla değiştirilir, kendini açıklayan mesajlar, HATEOAS
  5. Katmanlı sistem — istemci, doğrudan sunucuya mı yoksa bir ara katmana (proxy, gateway) mı bağlı olduğunu anlayamaz
  6. İsteğe bağlı kod (code on demand) (opsiyonel) — sunucu istemci işlevselliğini genişletebilir (örn. JS)

7.3 Kaynak ve Metot Tasarımı

MetotAnlamİdempotentGüvenli (Safe)
GETKaynağı okuEvetEvet
POSTOluştur / idempotent olmayan işlemHayırHayır
PUTKaynağı tamamen değiştirEvetHayır
PATCHKısmi güncellemeHayır*Hayır
DELETEKaynağı silEvetHayır
GET    /orders          → siparişleri listele
POST   /orders          → sipariş oluştur
GET    /orders/123      → 123 numaralı siparişi getir
PUT    /orders/123      → 123 numaralı siparişi tamamen değiştir
PATCH  /orders/123      → 123 numaralı siparişi kısmen güncelle
DELETE /orders/123      → 123 numaralı siparişi sil

7.4 Önemli Durum Kodları

7.5 Best Practice’ler

7.6 Sık Yapılan Hatalar


8. WebSocket

8.1 Genel Bakış

WebSocket (RFC 6455), bir HTTP Upgrade el sıkışmasıyla başlatılan, tek bir TCP bağlantısı üzerinden tam çift yönlü (full-duplex), kalıcı bir iletişim kanalı sağlar.

8.2 El Sıkışma

GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

101 yanıtından sonra TCP bağlantısı, WebSocket framing protokolü için yeniden amaçlandırılır — artık HTTP istek/yanıt anlamı yoktur.

8.3 Temel Özellikler

8.4 Best Practice’ler

8.5 Sık Yapılan Hatalar


9. gRPC

9.1 Genel Bakış

gRPC, Google tarafından geliştirilen, HTTP/2 ve Protocol Buffers (protobuf) üzerine inşa edilmiş, servisler arası verimli iletişim için tasarlanmış yüksek performanslı bir RPC framework’üdür.

9.2 Temel Özellikler

9.3 Örnek .proto

syntax = "proto3";

service OrderService {
  rpc GetOrder (OrderRequest) returns (Order);
  rpc StreamOrderUpdates (OrderRequest) returns (stream Order);
}

message OrderRequest { string order_id = 1; }
message Order {
  string id = 1;
  string status = 2;
  double total = 3;
}

9.4 Best Practice’ler

9.5 Sık Yapılan Hatalar


10. Reverse Proxy

10.1 Genel Bakış

Bir reverse proxy, bir veya daha fazla backend sunucusunun önünde durur, istemci isteklerini onlara iletir ve yanıtları döndürür — istemci yalnızca proxy ile konuşur, backend topolojisinden habersizdir.

İstemci → Reverse Proxy → [Backend A, Backend B, Backend C]

10.2 Yaygın Kullanımlar

10.3 Popüler Uygulamalar

AraçNotlar
NginxKanıtlanmış, config dosyası tabanlı, geniş ekosistem
EnvoyL7-farkında, xDS API ile dinamik config, gRPC-native, service mesh data plane
HAProxySon derece yüksek performanslı L4/L7 LB/proxy
TraefikOtomatik keşif (Docker/Kubernetes etiketleri), dinamik config
CaddyLet’s Encrypt ile otomatik HTTPS, basit config

10.4 Örnek (Nginx)

server {
    listen 443 ssl;
    server_name api.example.com;

    ssl_certificate     /etc/ssl/certs/api.crt;
    ssl_certificate_key /etc/ssl/private/api.key;

    location /v1/ {
        proxy_pass http://backend_pool;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout 30s;
    }
}

10.5 Best Practice’ler

10.6 Sık Yapılan Hatalar


11. Load Balancer

11.1 Genel Bakış

Bir load balancer, kullanılabilirliği, ölçeklenebilirliği ve hata toleransını artırmak için gelen trafiği birden fazla backend instance arasında dağıtır.

11.2 Katmanlar

11.3 Algoritmalar

AlgoritmaAçıklamaUygun olduğu durum
Round robinBackend’ler arasında sırayla dönerHomojen backend kapasitesi
Weighted round robinKapasite ağırlıklarıyla round robinHeterojen backend boyutları
Least connectionsEn az aktif bağlantıya sahip backend’e yönlendirirDeğişken istek süresi
Least response timeBağlantı sayısı + gecikmeyi birleştirirGecikmeye duyarlı servisler
IP hash / consistent hashingAynı istemci (veya key) → aynı backendOturum yakınlığı (session affinity), önbellek lokalitesi
Random (2 seçimli)2 rastgele backend seç, daha az yüklü olanı tercih etLeast-connections’tan basit, iyi ölçeklenir

11.4 Yüksek Kullanılabilirlik Pattern’leri

11.5 Best Practice’ler

11.6 Sık Yapılan Hatalar


12. Connection Pooling

12.1 Genel Bakış

Connection pooling, her işlem için bir bağlantı oluşturup kapatmak yerine önceden kurulmuş bir bağlantı setini (TCP, TLS, DB) yeniden kullanır — bağlantı kurulumu (TCP el sıkışma + TLS el sıkışma + kimlik doğrulama) gerçek işe kıyasla pahalı olduğu için kritiktir.

12.2 Neden Önemli

Pooling olmadan:  [bağlan][TLS][auth][sorgu][kapat]  ← her istekte tekrarlanır
Pooling ile:      [pool'dan al][sorgu][pool'a geri ver]

12.3 Temel Parametreler

ParametreAmaç
Min pool sizeBoşta olsa bile sıcak tutulan bağlantılar
Max pool sizeBackend’i aşırı yüklenmeden korumak için üst sınır
Idle timeoutN saniyeden fazla kullanılmayan bağlantıları kapat
Max lifetimeBağlantıları periyodik olarak zorla yenile (bayat/sızdırılmış durumu önle, rolling backend restart’a olanak tanı)
Acquisition timeoutÇağıranın boş bir bağlantı için hata almadan önce ne kadar bekleyeceği
Doğrulama/health checkVermeden önce bağlantının canlı olduğunu test et (örn. SELECT 1)

12.4 Best Practice’ler

12.5 Sık Yapılan Hatalar


13. Genel Geçer Best Practice’ler


Rehberin sonu. İngilizce versiyon için networking-web-guide-en.md dosyasına bakın.