Sobes.tech
Junior

TCP protokolü nasıl çalışır?

sobes.tech yapay zeka

AI'dan gelen yanıt

TCP (Transmission Control Protocol - İletim Kontrol Protokolü), güvenilir, bağlantıya dayalı veri iletimini sağlayan bir ulaşım katmanı protokolüdür.

Çalışma ile ilgili temel noktalar:

  1. Üç yönlü el sıkışma (Three-way Handshake):

    • İstemci, başlangıç sıralama numarası (ISN) ile SYN (Synchronize) paketi gönderir.
    • Sunucu SYN'yi alır, kendi ISN'sini ve istemcinin ISN'sine onay (ACK) içeren SYN-ACK (Synchronize-Acknowledge) gönderir (acknowledgement number = client ISN + 1).
    • İstemci SYN-ACK'yi alır, sunucunun ISN'sini onaylayan ACK gönderir (acknowledgement number = server ISN + 1).
    • Bağlantı kurulur, veri iletimi başlayabilir.
  2. Akış tabanlı veri iletimi: Veriler, ayrı paketler yerine sürekli bir bayt akışı olarak iletilir. TCP, veri akışını iletim için segmentlere böler.

  3. Sıralama numaralandırması (Sequence Numbers): Her baytın benzersiz bir numarası vardır. Segmentler, içerdikleri ilk baytın numarasını (sıralama numarası) ve onay numarasını (acknowledgement number) içerir; bu, gönderenin beklediği sonraki baytı gösterir.

  4. Onaylar (Acknowledgements - ACK): Alıcı, başarılı bir şekilde alınan verileri bildirmek için ACK gönderir. Gönderici, belirli bir süre içinde ACK almazsa, segmenti tekrar gönderir.

  5. Hata kontrolü (Error Control): Verilerin bütünlüğünü kontrol etmek için toplamlar (checksums) kullanılır. Bir segment bozuksa, atılır ve gönderen, zaman aşımı veya çoğaltılmış ACK bekleyerek tekrar gönderir.

  6. Akış kontrolü (Flow Control): Alıcının tamponunun aşırı yüklenmesini önleyen mekanizmadır. Alıcı, ACK paketlerinde alım penceresinin boyutunu bildirir. Gönderici, bu pencere kadar veri gönderebilir.

  7. Ağ tıkanıklık kontrolü (Congestion Control): Ağın kullanılabilir kapasitesini belirlemek ve veri iletim hızını dinamik olarak ayarlamak için kullanılır; böylece ağ tıkanıklığı önlenir. Slow start, congestion avoidance, fast retransmit ve fast recovery gibi algoritmaları içerir.

  8. Bağlantı kapatma: Genellikle dört aşamalı el sıkışma kullanılır:

    • Bir taraf FIN (Finish) paketi gönderir.
    • Diğer taraf FIN için ACK gönderir.
    • Diğer taraf, kalan verilerini göndermeyi tamamladıktan sonra kendi FIN'ini gönderir.
    • İlk taraf bu FIN için ACK gönderir.
    • Bağlantı kapatılır.

TCP segment yapısı:

Alan Boyut (bayt) Açıklama
Kaynak Portu 2 Gönderenin portu
Hedef Portu 2 Alıcının portu
Sıralama Numarası 4 Segmentteki ilk baytın numarası
Onay Numarası 4 Bir sonraki beklenen baytın numarası
Veri Ofseti / Başlık Uzunluğu 4 bitler TCP başlığının uzunluğu
Rezerve 6 bitler Rezerve edilmiş
Kontrol Bayrakları (Flags) 6 bitler URG, ACK, PSH, RST, SYN, FIN
Pencere Boyutu 2 Alıcının pencere boyutu
Checksum 2 Başlık ve verilerin toplam kontrolü
Acil İşaretçi 2 Acil verileri gösterir (URG ayarlıysa)
Seçenekler Değişken Ek seçenekler
Dolgu (Padding) Değişken Başlığın hizalanması için
Veri Değişken Aktarılan veriler
// Kontrol Bayrakları (Flags):
// URG: Acil İşaretçi alanı anlamlı
// ACK: Onay alanı anlamlı
// PSH: İtme fonksiyonu
// RST: Bağlantıyı sıfırla
// SYN: Sıralama numaralarını senkronize et
// FIN: Artık veri yok