Sıfırdan HTTP sunucusu yazmak
Python soketleriyle HTTP/1.1 ayrıştırıcısı, yönlendirici, statik dosya sunucusu ve eşzamanlı bağlantı yönetimi yazarak protokolü en alt düzeyde kavrarsın.
Seviye 501 · 15 ders · 12 pratik lab
Dersler
Soketten istek ayrıştırmaya
- TCP soket sunucusu: dinlemek ve kabul etmek
- İstek satırını ve başlıkları ayrıştırmak
- Gövdeyi okumak: Content-Length ve parçalı aktarım
- Doğru biçimli yanıt üretmek
- Kısa görev: isteği geri yansıtan sunucu
Gerçek bir sunucuya doğru
- Statik dosya sunmak ve dizin dışına çıkmayı önlemek
- Yönlendirici ve işleyiciler
- Kalıcı bağlantılar (keep-alive)
- Eşzamanlılık: iş parçacıkları ve asyncio
- Boyut sınırları ve zaman aşımları
- Kısa görev: sunucunu curl ve tarayıcıyla sına
Sağlamlaştırma
- Bozuk girdiye dayanmak: rastgele girdiyle sınama
- Günlük ve basit bir ölçüm uç noktası
- Yük testi ve darboğazı bulmak
- Bitirme görevi: kendi sunucunla bir siteyi yayınla
Pratik lablar
- İsteği aynen geri döndür: Python soketiyle gelen isteğin satırlarını gövde olarak geri gönderen küçük bir sunucu yaz.
- Başlıkları sözlüğe ayrıştır: Büyük-küçük harf, katlanmış satır ve tekrar eden başlıkları doğru işleyen bir ayrıştırıcı yaz ve testlerden geçir.
- Parçalı gövdeyi oku: Transfer-Encoding: chunked gövdeleri birleştiren ve uzunluk hatalarında 400 dönen kodu ekle.
- Statik dosya sun: Sunucuna public klasöründeki dosyaları doğru Content-Type ile sunma özelliği ekle.
- Dizin aşmayı engelle: ../ ve kodlanmış %2e%2e içeren isteklerle sunucunu dene ve kök dışına çıkışı kapat.
- Yönlendiriciye parametreli yollar ekle: /urunler/:id gibi yolları eşleyen, 404 ve 405 ayrımını doğru yapan bir yönlendirici yaz.
- Kalıcı bağlantıyı destekle: Aynı bağlantıda art arda üç isteği yanıtlayan keep-alive desteğini ekle ve curl ile doğrula.
- Aynı anda çok istemciye hizmet ver: Tek iş parçacıklı sunucuyu asyncio'ya taşı ve 100 eşzamanlı istekte süreyi karşılaştır.
- Yavaş istemci saldırısına karşı koy: Başlıkları damla damla gönderen istemcileri zaman aşımı ve boyut sınırlarıyla kes, sunucunun yanıt vermeye devam ettiğini göster.
- Metrik uç noktası ekle: İstek sayısı ve ortalama süreyi /metrics adresinde düz metin olarak veren uç noktayı yaz.
- Bozuk girdiyle sunucunu boz: Rastgele bozulmuş isteklerle bulanık test yap, çökmeye yol açan girdiyi bul ve düzelt.
- Darboğazı yük testinde bul: Yük testi aracıyla saniyedeki isteği ölç, profil çıkarıp en pahalı fonksiyonu iyileştir ve yeniden ölç.
Kurs hakkında
Python soketleriyle HTTP/1.1 ayrıştırıcısı, yönlendirici, statik dosya sunucusu ve eşzamanlı bağlantı yönetimi yazarak protokolü en alt düzeyde kavrarsın.
Ne öğreneceksin
- Soketten istek ayrıştırmaya
- Gerçek bir sunucuya doğru
- Sağlamlaştırma
Ön koşullar
Aynı yolun 401 düzeyine kadar olan konularında deneyimli olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 501 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.