TCP protokolu necə işləyir?
sobes.tech Süni İntellekt
AI-dan cavab
TCP (Transmission Control Protocol) — bu, etibarlı, əlaqəyə yönəldilmiş məlumat çatdırılmasını təmin edən nəqliyyat səviyyəsi protokoludur.
Əsas iş prinsipləri:
-
Üç tərəfli əl sıxma (Three-way Handshake):
- Müştəri SYN (Synchronize) paketi göndərir və başlanğıc ardıcıllıq nömrəsini (ISN) təyin edir.
- Server SYN-ni alır, SYN-ACK (Synchronize-Acknowledge) göndərir və öz ISN-ni və müştərinin ISN-ə təsdiq (ACK) göndərir (
acknowledgement number = client ISN + 1). - Müştəri SYN-ACK-i alır, ACK göndərir və serverin ISN-ni təsdiqləyir (
acknowledgement number = server ISN + 1). - Bağlantı qurulur, məlumatlar ötürülə bilər.
-
Axın şəklində məlumat ötürülməsi: Məlumatlar ardıcıl bayt axını kimi ötürülür, ayrı-ayrı paketlər kimi deyil. TCP məlumat axınını seqmentlərə bölür.
-
Sıralama nömrələməsi (Sequence Numbers): Hər bayt unikal nömrəyə malikdir. Seqmentlər ilk baytın nömrəsini (sequence number) və təsdiq nömrəsini (acknowledgement number) ehtiva edir, bu da göndərənin növbəti almasını gözlədiyi baytı göstərir.
-
Təsdiqlər (Acknowledgements - ACK): Qəbul edən göndərənə hansı məlumatların uğurla alındığını bildirmək üçün ACK göndərir. Əgər göndərən müəyyən vaxtda (timeout) ACK almazsa, seqment təkrar göndərilir.
-
Xəta nəzarəti (Error Control): Məlumatların bütövlüyünü yoxlamaq üçün yoxlama cəmindən (checksum) istifadə olunur. Əgər seqment pozulubsa, o, rədd edilir və göndərən vaxt aşımı və ya təkrarlanan ACK gözləyir.
-
Axın idarəsi (Flow Control): Alıcının tamponunun dolmaması üçün istifadə olunan mexanizm. Alıcı, ACK paketlərində qəbul pəncərəsinin (receive window) ölçüsünü bildirir. Göndərən yalnız pəncərədə göstərilən qədər məlumat göndərə bilər.
-
Tıxacın idarə olunması (Congestion Control): Şəbəkənin mövcud ötürmə qabiliyyətini müəyyən etmək və məlumat ötürmə sürətini dinamik tənzimləmək üçün mexanizm. Slow start, congestion avoidance, fast retransmit və fast recovery kimi alqoritmləri əhatə edir.
-
Əlaqənin bağlanması: Adətən, dördbucaq əl sıxma ilə həyata keçirilir:
- Bir tərəf FIN (Finish) paketi göndərir.
- Digər tərəf FIN üçün ACK göndərir.
- Digər tərəf öz FIN-ni göndərir (öz məlumatlarının ötürülməsini tamamladıqdan sonra).
- Birinci tərəf bu FIN üçün ACK göndərir.
- Əlaqə bağlanır.
TCP seqmentinin quruluşu:
| Sahə | Ölçüsü (bayt) | Təsviri |
|---|---|---|
| Source Port | 2 | Göndərən portu |
| Destination Port | 2 | Qəbul edən portu |
| Sequence Number | 4 | Seqmentdəki ilk baytın nömrəsi |
| Acknowledgement Number | 4 | Növbəti gözlənilən baytın nömrəsi |
| Data Offset/Header Length | 4 bit | TCP başlığının uzunluğu |
| Reserved | 6 bit | Ayrılmışdır |
| Flags (Control Bits) | 6 bit | URG, ACK, PSH, RST, SYN, FIN |
| Window Size | 2 | Qəbul pəncərəsinin ölçüsü |
| Checksum | 2 | Başlıq və məlumatların yoxlama cəmi |
| Urgent Pointer | 2 | Təcili məlumatlara işarə edir (əgər URG qurulubsa) |
| Options | Dəyişkən | Əlavə seçimlər |
| Padding | Dəyişkən | Başlığın düzgün yerləşməsi üçün |
| Data | Dəyişkən | Göndərilən məlumatlar |
// Control Bits (Flaglər):
// URG: Təcili göstərici sahəsi əhəmiyyətlidir
// ACK: Təsdiq sahəsi əhəmiyyətlidir
// PSH: Göndərmə funksiyası
// RST: Bağlantını sıfırla
// SYN: Sıralama nömrələrini sinxronizasiya et
// FIN: Göndərən tərəfindən daha çox məlumat yoxdur