RDT-Reliable Data Transfer (Etibarlı məlumat ötürülməsi)
Bu yazıda etibarlı məlumat ötürülməsi(RDT) problemini ümumi kontekstdə nəzərdən keçirəcəyik. Etibarlı məlumat ötürülməsi dedikdə, göndəricidən qəbulediciyə ötürülən məlumatların dəqiq və tam, səhvlər və ya çatışmazlıqlar olmadan və düzgün ardıcıllıqla çatdırılmasının təmin edilməsi prosesi başa düşülür. Bəs məlumat ötürülməsini etibarlı edən nədir? Gəlin hər şeyi işlədən əsas prinsiplərə nəzər salaq.
Səhvlərin aşkarlanması və düzəldilməsi
Etibarlı məlumat ötürülməsinin ən vacib aspektlərindən biri səhvləri aşkar etmək və düzəltmək bacarığıdır. TCP (Transmission Control Protocol) kimi protokollar ötürülən məlumatlarda səhvləri müəyyən etmək üçün checksums, parity bits, və s. kimi mexanizmləri özündə birləşdirir.
Etibarlı məlumat ötürülməsinin prinsipləri
Reliable Data Transfer (RDT) 1.0
• Bir istiqamətli uzun məlumat axını
• Tamamilə etibarlı kanal
• Bit xətası yoxdur
• Paket itkisi yoxdur
• Paketin yenidən istənilməsi yoxdur
• Tamamilə etibarlı kanal
• Bit xətası yoxdur
• Paket itkisi yoxdur
• Paketin yenidən istənilməsi yoxdur
Əvvəlcə əsas kanalın tamamilə etibarlı olduğu ən sadə işi nəzərdən keçirək. Bu protokol RDT 1.0 adlandırılır. RDT 1.0 üçün Finite State Machine aşağıdakı kimidir:

Qəbul edən tərəfdə rdt rdt_rcv(paket) vasitəsilə əsas kanaldan paket alır, extract (packet, data) vasitəsilə verilənləri paketdən çıxarır və məlumatları deliver_data(data) vasitəsilə yuxarı təbəqəyə ötürür.
Reliable Data Transfer (RDT) 2.0
Əsas kanalın daha real modeli, paketdəki bitlərin zədələnə biləcəyi bir modeldir. Belə bit xətaları adətən paketin ötürülməsi, yayılması və ya buferlənməsi zamanı baş verir. Bütün ötürülən paketlərin göndərildikləri ardıcıllıqla qəbul edildiyini güman edəcəyik.
Bu vəziyyətdə istifadəçidən ACK (təsdiq, yəni qəbul edilən paket düzgündür və zədələnməmişdir) və ya NAK (mənfi təsdiq, yəni qəbul edilmiş paket pozulmuşdur) göndərməsini tələb edirik. Checksum Field istifadə edərək xətanı aşkar edirik. Checksum paketdəki**** bitlərin sayını təmsil edən dəyərdir.
RDT 2.0 üçün Finite State Machine belədir:

RDT 2.0'ın böyük xətası var. ACK/NAK zədələnərsə və ya duplicate(təkrar) paket göndərilərsə nə olacaq?
Reliable Data Transfer (RDT) 2.1
RDT 2.1, RDT 2.0'ın təkmilləşdirilmiş versiyasıdır. Dublikat mesajların qarşısını almaq üçün hər bir paketə sequence number — ardıcıllıq nömrəsi əlavə edir. Alıcı məlumat tamdırsa, müvafiq ardıcıllıq nömrəsi ilə təsdiq mesajı göndərir və müvafiq ardıcıllıq nömrəsi ilə mənfi təsdiq mesajı göndərir. Mesaj tamamlanmadıqda göndərəndən yenidən göndərməsini xahiş edir.


Reliable Data Transfer (RDT) 2.2
RDT 2.2-də əsas dəyişiklik NAK-ın xaric edilməsidir. RDT 2.2-də göndərilən paketin ardıcıllığı ilə qəbuledici tərəfdəki ACK-də paketə yeni sahə əlavə edilir, bu, göndərənə ardıcıllıq nömrəsini müqayisə etməyə imkan verir. Ardıcıllıq nömrəsi göndərən ACK ilə uyğun gəlmirsə, qəbul edilmiş ACK paketi pozulmuş sayılır və paketi yenidən göndərir. Bu versiyada artıq NAK istifadə olunmur və göndərən və qəbul edən arasında əlaqə gücləndirilir, çünki hər biri göndərilən və qəbul edilən paketlərin qeydini aparır.

Reliable Data Transfer (RDT) 3.0
RDT 3.0, bit xətalarına əlavə olaraq paket itkisininin qarşısını almaq üçün vaxt aşımı mexanizmini təqdim edən RDT 2.2-nin təkmilləşdirilmiş versiyasıdır. Etibarlı çatdırılmanı təmin etmək və dublikat paketlərin qarşısını almaq üçün ACK və sequence numbers — ardıcıllıq nömrələrindən (0 və 1) istifadə edir. Bununla belə, yalnız pozulmuş paketlərin qarşısını alan olan RDT 2.2-dən fərqli olaraq, RDT 3.0 təkrar ötürmə taymerini tətbiq etməklə itirilmiş paketlərə də diqqət yetirir. Göndərən müəyyən müddət ərzində ACK almazsa, o, paketin və ya onun təsdiqinin itirildiyini güman edir və sonuncu paketi yenidən ötürür.



Enjoyed reading this content? Let the author know!
Your likes, comments, shares, and saves help creators reach more builders.
Loading recommendations
Loading article