tcp-ip

 TCP (Transmission Control Protocol), ağda veri iletimi için kullanılan bir protokoldür ve ağ iletişiminde güvenilirliği sağlamak için oldukça önemli bir rol oynar. Bu protokol, genellikle OSI modelinde tartıştığımız kavramlara benzer şekilde çalışır, ancak TCP/IP protokolü, dört katmandan oluşan daha özet bir yapıya sahiptir. Bu dört katman şunlardır:

  • Uygulama (Application)

  • Taşıma (Transport)

  • İnternet (Internet)

  • Ağ Arabirimi (Network Interface)

TCP protokolü, her katmanda veri ekleyerek iletilen bilgiye sahip paketleri gönderir. Bu süreç, kapsülleme (encapsulation) olarak adlandırılır ve her katman veriye ek bilgi eklerken, veriyi hedefe yönlendirmek için her katman kendi işlevini yerine getirir. Kapsülleme işleminin tam tersi ise dekapsülasyon (decapsulation) olarak bilinir.

Bağlantı Tabanlı Yapı

TCP, bağlantı tabanlı bir protokol olduğu için veri gönderilmeden önce, istemci ve sunucu arasında bir bağlantı kurulması gerekmektedir. Bu bağlantı kurulduktan sonra, TCP, gönderilen verilerin alıcı tarafından alındığını garanti eder. Bu süreç, Üç Aşamalı El Sıkışma (Three-way Handshake) olarak adlandırılır.

Üç Aşamalı El Sıkışma

Üç Aşamalı El Sıkışma, iki cihaz arasında bağlantıyı başlatmak için kullanılan özel bir iletişim protokolüdür. Bu süreçte birkaç mesaj gönderilir, bu mesajlar şunlardır:

AdımMesajAçıklama
1SYNBu, istemciden (client) sunucuya (server) gönderilen ilk paket olup, bağlantıyı başlatmak ve iki cihazı senkronize etmek için kullanılır.
2SYN/ACKSunucu, istemcinin bağlantı talebini alıp senkronize olduğunu onaylayan bir paket gönderir.
3ACKİstemci veya sunucu, veri paketlerini başarılı bir şekilde aldığını onaylamak için bir ACK (Acknowledgement) paketi gönderir.
4DATABağlantı kurulduktan sonra veri (örneğin dosya byte'ları) gönderilmeye başlanır.
5FINBağlantı sonlandırıldıktan sonra, düzgün bir şekilde bağlantıyı kapatmak için FIN (Finish) paketi gönderilir.
#RSTBağlantıyı aniden sonlandıran bir paket olup, sistemdeki hatalardan dolayı bir bağlantı sorunu olduğunda kullanılır.

TCP Paket Başlıkları

TCP paketleri, her katman tarafından eklenen başlıklarla birlikte iletilir. Bu başlıklar, verinin doğru şekilde iletilmesi için kritik bilgileri içerir. İşte önemli başlıklar:

BaşlıkAçıklama
Source PortVeriyi gönderen cihazın açtığı port numarasıdır. Bu numara rastgele seçilir.
Destination PortVeriyi alan cihazdaki hedef port numarasıdır. Bu genellikle sabittir (örneğin, web sunucusu için 80 numaralı port).
Source IPPaketi gönderen cihazın IP adresidir.
Destination IPPaketin gönderileceği cihazın IP adresidir.
Sequence NumberBağlantı başladığında ilk veri parçasına verilen rastgele numaradır. Verinin sıralı olarak iletilmesini sağlar.
Acknowledgement NumberVeri iletimi sırasında alınan her veri parçasının numarasıdır ve doğru sıralama yapılabilmesi için önemlidir.
ChecksumVerinin bütünlüğünü sağlamak için yapılan matematiksel bir hesaplamadır. Eğer veri bozulursa, bu değer farklı olur.
DataPaket içerisindeki taşıdığı veri, yani dosya byte'ları bu başlık altında bulunur.
FlagBağlantı sırasında paketin nasıl işleneceğini belirleyen bayraklar içerir. Örneğin, SYN veya ACK bayrakları.

TCP Bağlantı Kapanışı

TCP bağlantısı, her iki cihazın da tüm verileri başarıyla aldığından emin olduktan sonra kapatılır. Bu süreçte FIN (Finish) paketi gönderilir ve diğer cihaz bu paketi alıp kapatma isteğini onaylar.

Bir cihaz bağlantıyı başlatmak için FIN paketini gönderir. Alıcı cihaz bu paketi alır ve kendi FIN paketini göndererek bağlantının kapanmasını onaylar. Bu sayede sistem kaynakları serbest bırakılır ve bağlantı düzgün bir şekilde sonlandırılır.

Örnek: Alice ve Bob Arasında Bağlantı Kapanması

Örneğin, Alice ve Bob arasında TCP bağlantısının kapanmasını şu şekilde gösterebiliriz:

  1. Alice, Bob'a bir FIN paketi gönderir.

  2. Bob, Alice'in gönderdiği FIN paketini alır ve bu bağlantıyı sonlandırma isteğini kabul eder.

  3. Alice, Bob'a bu isteği kabul ettiğini belirten bir onay mesajı gönderir.

Sonuç:

TCP, verilerin güvenilir bir şekilde iletilmesini sağlamak için kullanılan güçlü bir protokoldür. Üç Aşamalı El Sıkışma süreci, cihazlar arasında bağlantı kurma ve güvenli veri iletimi sağlama amacı taşır. Ayrıca, kapsülleme işlemi ile her katman veri paketlerine başlıklar ekler ve her biri ağ üzerinden doğru şekilde iletilmesini sağlar.