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:
-
Üç 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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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