Published on

Derinlemesine HTTP-WEB-TCP İlişkisi

Authors
  • avatar
    Name
    Alperen Önal
    Twitter

Bir Web sayfası nesnelerden oluşur. Bu web nesneleri HTML, JPEG, Javascript, ses vb. dosyalar olabilir.

Bir Web sayfası, talep edilen nesneleri içeren HTML dosyasıdır.

Her nesnenin, bir URL adresi vardır. Bu adresler belirtilerek bu nesnelere ulaşılabilir.

Örneğin www.alperenonal.com ’daki bazı nesnelerin konumları:

Mesela www.alperenonal.com/main.dart.js URL’sindeki javascript dosyasını tarayıcımla açtığım zaman aşağıdaki bu görüntü ile karşılaşacağız.

resim-9

Veya websitemin arka planındaki gif’e ulaşmak için, http://www.alperenonal.com/assets/ImageAssets/mobile.gif URL’sindeki gif dosyasını açtığımda aşağıdaki görüntü ile karşılaşacağız.

resim-12

Tarayıcımız, HTTP protokolünü kullanarak bizim için gitmek istediğimiz web adresinde bulunan tüm bu nesneleri indiriyor ve bu nesneleri birleştirerek bize sunuyor.

Örneğin, bu nesnelerin birleştirilmiş hali:

resim-14

Peki HTTP nasıl çalışıyor?

HTTP, TCP protokolünü kullanarak çalışmaktadır.

HTTP, Application Layer protokolüdür.

Client-Server üzerinden HTTP’yi inceleyelim:

  • Client, server’a port 80 üzerinden TCP bağlantısını başlatır (soket oluşturur).
  • Server ile client arasında TCP Handshake gerçekleşir.
  • HTTP mesajları, tarayıcı(HTTP client) ve web server(HTTP server) arasında alış-veriş yapar.
  • Client’in istediği nesnelerin iletimi tamamlandığında web server TCP bağlantısını sonlandırır.

HTTP mesajları: request(istek), response(cevap)

HTTP istek mesajı: ASCII formatında.

HTTP/1.0 Metotları:

  • GET: Veri göndermek için kullanılır. Veriyi, URL’nin parçası olarak gönderim sağlandığı için güvensizdir.
  • POST: Veri göndermek için kullanılır. Veriyi HTTP mesajının body kısmına yükleyerek gönderimi sağlar. GET’e kıyasla daha güvenlidir ancak daha yavaştır.
  • HEAD: Bir kaynağın sadece başlık bilgilerini almak için kullanılır. Bu, örneğin, bir kaynağın güncellenip güncellenmediğini kontrol etmek veya sadece başlık bilgilerinin gerektiği durumlarda kullanılabilir.

HTTP/1.1 Metotları:

  • GET, POST, HEAD
  • PUT: Sunucuya yeni bir kaynak yüklemek için kullanılır. Bir PUT isteği, sunucuya belirtilen URL’de bir kaynağın oluşturulması veya güncellenmesi için bir içeriği gönderir.
  • DELETE: Belirtilen bir kaynağı sunucudan silmek için kullanılır. DELETE isteği, belirtilen URL’deki bir kaynağı silmek için kullanılır.

Aşağıdaki fotoğrafta bir HTTP yapısını görebilmekteyiz.

HTTP yapısı

HTTP STATUS CODES Nedir?

HTTP durum kodları, bir HTTP yanıtının sonucunu belirten üç haneli kodlardır. Bir istemcinin (tarayıcı gibi) bir sunucudan (web sunucusu gibi) bir istek gönderdiğinde, sunucu bu isteği işler ve bir yanıt döndürür. Bu yanıt, bir HTTP başlık kısmı ve bir HTTP durum kodu içerir.

HTTP durum kodları, istemciye (tarayıcıya) yanıtın sonucunu belirtir ve belirli bir eylemin başarıyla gerçekleştirildiğini, bir hata oluştuğunu veya başka bir durumun meydana geldiğini bildirir.

HTTP Status Codes

HTTP Örneği:

Firefox arama çubuguna “ www.alperenonal.com ” yazıp entere bastım ve wireshark ile paketleri inceledim.

Evet aşağıda gördüğümüz gibi bir çok paket var Ekrana bu kadarı sığdı. Toplamda 3 bin kadar paket oluştu.

Paketler

İlk 3 satırı incelediğimizde TCP handshake olduğunu görüyoruz. HTTP, TCP protokolü ile çalışıyordu. Bu yüzden sunucumuza bağlantı talebi gönderiyoruz ve 3lü el sıkışma işlemine başlıyoruz.

TCP Handshake
TCP Handshake Diagram

Sunucunun da SYN+ACK yolladığını yani bağlantı talebimizi onayladığını görebiliyoruz. Daha sonra kurulan bağlantı üzerinden HTTP request gönderiyoruz.

HTTP Request

Bu HTTP request paketini inceleyelim.

HTTP Request Detayı

Aşağıda son 14 paketi görüyoruz.

Son Paketler
HTTP, TCP kullandığı için aktarımın tamamlanmasından sonra bağlantının sonlandırılması gereklidir. TCP, bağlantının sonlanması için FIN flag’larını kullanarak “TCP connection termination” aşamasına geçer ve bağlantıyı tıpkı handshake’de olduğu gibi 3’lü adımda sonlandırır. TCP Connection Termination TCP Connection TerminationWrshk

Özetle:

  • TCP bağlantısı oluşturuldu (3-way Handshake).
  • Gerekli web nesneleri HTTP metotları ile sunucudan talep edildi.
  • TCP bağlantısı sonlandırıldı (TCP Connection Termination).

KAYNAKÇA:

Kurose, James F., & Ross, Keith W. (2017). “Computer Networking: A Top-Down Approach” (7th ed.). Boston: Pearson Education.