Transmission Control Protocol

Чөлөөт нэвтэрхий толь — Википедиагаас
Харайх: Удирдах, Хайлт

Transmission Control Protocol нь TCP/IP-ийн хамгийн чухал протоколуудын нэг бөгөөд процесс хоорондын дамжууллыг гүйцэтгэдэг. Холболтод түшиглэсэн, өгөгдлийн дарааллыг хадгалдаг, алдааг шалгадаг, найвартай байдлыг хангаж өгсөн протокол юм. OSI загварын тээвэрлэлтийн түвшинд байрладаг.

TCP-г ашигладаг дээд түвшний протоколуудын жишээ гэвэл HTTP, HTTPS, SMTP, POP3, IMAP, SSH, FTP, Telnet зэрэг юм. TCP-ийн гол онцлог болох найвартай үйлчилгээ хэрэггүй гэсэн програм хангамжууд UDP-г хэрэглэх боломжтой.

Түүхэн үүсэл[засварлах]

1974 оны 5-р сард Цахилгаан ба Цахим Инженерүүдийн Нийгэмлэг (IEEE) "Пакетан Сүлжээний Дотоодхолбооны Протокол"[1] хэмээх өгүүлэл нийтлүүлсэн. Зохиогч Винт Сэрф, Боб Кан нар өгүүлэлдээ сүлжээний зангилаа хооронд пакет-солих замаар өгөгдөл солилцох протоколыг тайлбарлан бичсэн байна. Энэ загварын төв болсон хяналтын бүрэлдэхүүн нь хост хоорондын датаграм үйлчилгээ болон холболтонд-чиглэсэн холбоосыг агуулсан Дамжуулга Хяналтын Програм (TCP) байв. Анхандаа нэг цул байсан Дамжуулга Хяналтын Програмыг дараа нь холболтонд-чиглэсэн түвшин дэх Дамжуулга Хяналтын Протокол болон дотоодсүлжээний (датаграм) түвшин дэх Интэрнет Протокол болгон хувааж хэсэг бүлэг бүтэцтэй болгосон байна. Энэхүү загвар албан бус хэлэнд TCP/IP хэмээн нэрлэгдэх болсон ба албан ёсоор Интэрнет Протоколын Бүрдэл гэдэг.

TCP-гийн үйлчилгээ[засварлах]

Урсгалаар дамжуулж хүргэх

TCP нь урсгалд түшиглэсэн протокол юм. IP нь пакетуудыг тус тусын зүйлс гэж үздэг бол TCP-г ашиглан дамжуулагч проецсс нь өгөгдлөө байтын урсгал болгон дамжуулдаг. Ингэснээр 2 проецсс нь хийсвэр "хоолой"-гоор холбогдсон мэт болдог.

Дамжуулагч, хүлээн авагч буфферууд

Дамжуулагч, хүлээн авагч процессууд нь ижил хурдтайгаар өгөгдөл бичиж, уншиж чадахгүй тул буффер ашиглан хадгалдаг. Хүлээн авагч, дамжуулагч гэсэн 2 буффер байдаг.

Сегмэнтүүд

Буфферийн тусламжтайгаар 2 үзүүрийн хурдыг тохиромжтой болгодог ч өгөгдөл дамжуулахаас өмнө нэг зүйлийг хийх хэрэгтэй. IP түвшин нь өгөгдлийг урсгал байдлаар биш пакет болгон дамжуулна. Иймд тээвэрлэлтийн түвшинд TCP нь байтуудыг багцлаад сегмэнт нэртэй пакет болгоно. Сегмэнтийг IP пакетад хийж дамжуулагддаг. Сегмэнтэд толгой хэсгийг нэмдэг. Сегмэнтүүд нь ижил хэмжээтэй байх албагүй.

Full duplex дамжуулал

TCP-д өгөгдөл нь нэгэн зэрэг, хоёр зүгт дамжих боломжтой. TCP бүр нь дамжуулагч, хүлээн авагч баффер байдаг.

Холболтод түшиглэсэн үйлчилгээ

TCP нь холболтод түшиглэсэн үйлчилгээтэй. Дараах зүй тогтолтойгоор холбоо явагдана:
  1. Хоёр төхөөрөмжүүд дээр ажиллах TCP-нүүд нь холболт үүсгэнэ.
  2. Өгөгдлийг хоёр тийш дамжуулна.
  3. Холболтыг таслана.
Энэ нь физик биш виртуаль холбоо болохыг анхаарна уу.

Найдвартай үйлчилгээ

TCP нь найдваратй тээвэрлэлтийн протокол. Acknowledgement механизм ашиглаж өгөгдлийг бүрэн бүтэн ирсэн эсэхийг шалгадаг.

TCP-н онцлогууд[засварлах]

Дугаарлалтын систем

TCP програм нь хүлээн авсан, дамжуулсан семэнтүүдийг бүртгэдэг ч сегмэнтийн дугаарын талбар нь толгой хэсэгт л байдаггүй. Оронд нь sequence number/дарааллын дугаар, acknowledgement number гэсэн хоёр талбар бий. Энэ хоёр нь сегмэнтийн биш байтын дугаарыг заана.

Байтын дугаар

Дамжуулж буй байт бүрийг TCP дугаарладаг. Эхний дугаар нь 0-ээс 2^(32-1) хүртэлх тоонуудаас санамсаргүй авсан тоо байна.

Дарааллын дугаар

Байтуудыг дугаарласны дараа сегмэнт бүрд дарааллын дугаар оноодог. Үүний утга нь тус сегмэнт дахь эхний өгөгдлийг байтын дугаар болно. Сегмэнтэд хэрэглэгчийн өгөгдөл байхгүй бол логикийн хувьд дарааллын дугаар байхгүй. Талбар байгаа ч утга нь хүчингүй гэсэн үг. Гэхдээ зарим үед acknowledgement-г хүлээж авахын тулд дарааллын дугаар шаардагдана. Ийм сегмэнтийг холболтыг үүсгэлт, таслалт, дуусгалтын үед ашигладаг.

Acknowledgment Number

Acknowledgment Number-н утга нь дараа хүлээж авах ёстой байтын дугаар юм. Acknowledgement number нь нийлбэр байдалтай.

Урсгал, алдаа, бөглөрөлтийн удирдлага

TCP нь урсгалын, алдааны, бөглөрөлтийн удирдлагатай. Урсгалын удирдлагад өгөгдлийг хүлээн авагч нь ирж буй өгөгдлийн хэмжээг зохицуулна. Байт дээр түшиглэсэн байна. Найдвартай байдлыг хангахын тулд алдааны удирдлагыг хэрэглэнэ. Бөглөрөлтийн удирдлагын хувьд дамжуулагч, сүлжээнээс хамаардаг.

TCP сегментийн бүтэц[засварлах]

TCP нь өгөгдлийн урсгалаас өгөгдөл хүлээн авч жижиглэн хуваагаад TCP толгой хэсгийг нэмж TCP сегмент үүсгэдэг. Дараа нь TCP сегментийг IP пакет болгон багцлаад цааш дамжуулдаг. TCP-гийн сегментийг албан бусаар TCP пакет гэж хэлдэг ч албан ёсоор сегмент гэнэ.

TCP сегмент нь толгой болон өгөгдлийн хэсгээс тогтоно. TCP толгой хэсэг 10 зайлшгүй талбартай ба нэг туслах өргөтгөл талбартай.

Толгой хэсгийн дараа өгөгдлийн хэсэг орж ирнэ. Өгөгдлийн хэсгийн уртыг толгойд зааж өгдөггүй бөгөөд нийт IP датаграмын уртаас (IP толгойн хэсэгт заалттай байдаг) TCP толгой ба IP пакетийн толгойн уртуудыг хасч олдог.

TCP сегментийн толгой хэсэг
Зөрүү Наймт 0 1 2 3
Наймт Бит  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 0 Үүсвэр порт Зорьсон порт
4 32 Дарааллын дугаар
8 64 Зөвшөөрлийн дугаар (хэрэв ACK байвал)
12 96 Өгөгдлийн зөрүү Нөөцөлсөн
0 0 0
N
S
C
W
R
E
C
E
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
Цонхны хэмжээ
16 128 Хяналтын нийлбэр Яаралтайн заагуур (хэрэв URG байвал)
20
...
160
...
Боломжууд (өгөгдлийн зөрүү > 5 үед. Шаардлагатай бол төгсгөлд нь "0" байтаар дүүргэнэ)
...
Үүсвэр портын хаяг
16 битийн урттай, дамжуулагч програмын порт хаягийг тодорхойлно.
Зорьсон портын хаяг
16 битийн урттай, дамжуулагч програмын порт хаягийг тодорхойлно
Дарааллын дугаар
Сегмэнт дахь эхний байтын дугаарыг тодорхойлох 32 битийн талбар. Холболтыг үүсгэх үед initial sequence number (ISN)-г санамсаргүй тооны үүсгүүрээр гаргадаг. Тоо нь хоёр зүгт өөр өөр байж болно.
Зөвшөөрлийн дугаар
Сегмэнтийн хүлээн авагчийн дараа нь ирнэ гэж буй байтын дугаарыг илтгэх 32 битийн талбар. x-р байтыг хүлээж авсан бол x+1 нь acknowledgement number байна. Өгөгдлийг үүнтэй хамт илтгээж болно.
Толгойн урт
TCP толгой дахь 4 байтын word-н тоог илтгэх 4 битийн талбар. 20-с 60 байт байж болно. Иймээс тус талбарийн утга нь 5-аас 15 байж болно.
Нөөцөлсөн
Ирээдүйд хэрэглэхээр нөөцлөгдсөн, 6 битийн талбар.
Хяналт
6 өөр удирдлагын бит/флагийг тодорхойлно. Нэг эсвэл олныг тавьж болно.
Flags
9 ширхэг 1 битийн флагийг агуулна.
  • NS (1 бит) – ECN-nonce concealment protection (RFC 3540).
  • CWR (1 бит) – Congestion Window Reduced (CWR) флагийг илгээгч хост тавьж өгсөн, өөрөөр хэлбэл ECE флагтай TCP сегментийг хүлээж авч congestion control механизмд хариу өгөхийг (RFC 3168).
  • ECE (1 бит) – ECN-Echo indicates
  • SYN флаг нь 1 бол TCP peer нь ECN-г джмэдэг
  • SYN флаг нь 0 бол Congestion Experienced флагтай пакетийг хүлээж авсан (RFC 3168).
  • URG (1 бит) – Urgent pointer талбарын утга хүчинтэй болохыг
  • ACK (1 бит) – Acknowledgment талбарын утга хүчинтэй болохыг
  • PSH (1 бит) – Push буюу Хүлээж авч буй програм руу өгөгдлийг шууд "түлхэх"
  • RST (1 бит) – Reset буюу Холболтыг дахин эхлүүлэх
  • SYN (1 бит) – Synchronize буюу Sequence number-ийг синхрончлох.
  • FIN (1 бит) – Finish буюу Илгээгчээс ирж буй өгөгдөл дууссан
Цонхны хэмжээ
Нөгөө үзүүрт байх ёстой цонхны хэмжээг байтаар тодорхойлно. Хэмжээ нь 16 бит тул цонхны дээд утга 65,536 байт юм. Үүнийг receiving window (rwnd) гэлэг ба хүлээн авагч тодорхойлно.
Хяналтын нийлбэр
Тус 16 битийн талбар нь хяналтын нийлбэрийг агуулна. UDP-ээс ялгаатай нь TCP-д зайлшгүй байх ёстой. TCP pseudoheader-н хувьд протоколын талбарын утга 6 байна.
Яаралтайн заагуур
Urgent flag тавигдсан үед л хүчинтэй 16 битийн талбар. Urgent өгөгдөл байхад хэрэглэгдэнэ.
Боломжууд
TCP-н толгой хэсэгт зайлшгүй биш 40 байт мэдээлэл байж болно.
Доторлогоо
Өгөгдөл, толгой хэсгийг 32 битийн заагтай болгох зориулалттай, 0 битүүдээс тогтоно.

TCP холболт[засварлах]

TCP нь холболтод түшиглэсэн протокол тус гурван үе шаттайгаар явагддаг: холболтийг үүсгэх, өгөгдлийг дамжуулах, холболтийг салгах.

Холболтийг үүсгэх[засварлах]

TCP-д холболтыг үүсгэхдээ three-way handshaking гэсэн аргачлалыг хэрэглэнэ. Эхлээд сервер нь өөрийн TCP-дээ холболт хийхэд бэлэн байгаагаа мэдэгдэнэ. Үүнийг passive open хийх хүсэлт гэнэ. Дараа нь клиент active open хийх хүсэлт гаргана. Энэ нь гурван үе шаттай байна:

  1. Клиент нь SYN сегмэнтийг дамжуулна. Дарааллын дугаарыг минхрончлох үүрэгтэй. Өгөгдлөл байхгүй ч дарааллын нэг дугаарыг эзлэнэ.
  2. Сервер нь SYN+ACK сегмэнтийг дамжуулна. Нөгөө тийш дамжуулах зориулалттай SYN сегмэнт, мөн өмнөх SYN-г авсан гэж acknowledge хийх үүрэгтэй. Өгөгдөл байж болохгүй ч нэг дарааллын дугаарыг эзлэнэ.
  3. Клиент гурав дахь ACK сегмэнтийг дамжуулна. Өгөгдөл байхгүй бол дарааллын дугаарыг эзлэхгүй.
  • Simultaneous Open - Ийм тохиолдол ховор ажиглагддаг. Хочулаа зэрэг active open болговол TCP-нүүд нь SYN+ACK –г бие биен рүүгээ дамжуулаад ганц холболтыг үүсгэнэ.
  • SYN Flooding Attack - Серверийг SYN-үүдээр бөмбөгдөн түүний ачаллыг хэтрүүлж унагадаг denial-of-service-attack-н хэлбэр. Ингэхэд хуурмаг IP хаяг ашиглаж, сервер нь бүгдэд нь нөөцөө хуваарилдаг. Нөөц дуусахад унана. Ийм үйлдлээс зайлсхийхийн тулд cookie хэрэглэдэг.

Өгөгдлийн дамжуулалт[засварлах]

Холболт үүсгээд хоёр талт өгөгдлийн дөмжуулалт явагдана. Дамжууллын үед ACK-үүдийг өгөгдөлтэй хамт явуулдаг.

  • Pushing data - Ямар нэг өгөгдлийг шууд процесс руу дамжуулж шууд хариу нэхэх хэрэгтэй бол push үйлдлийн хүсэлт тавина. Өнөө үед ийм хүсэлтийг үл тоох нь элбэг. TCP нь энэхүү функцийг хэрэглэх эсэхээ шийддэг
  • Urgent Data - Дамжуулагч нь өгөгдлийг дамжуулаад нөгөө процесс нь дараалал буруу ч байсан хамаагүй шууд унших шаардлагатай бол urgent байт дамжуулна. Өгөгдлийг URG гэж тэмдэглэхэд сегмэнтийн түрүү хэсэгт тавигдаж түүнийг хүлээж авсны дараа TCP нь сегмэнтээс urgent өгөгдлийг буруу дараалалтайгаар програм руу хүргэнэ.

Холболтыг салгах[засварлах]

Холболтод оролцсон хоёр этгээдл нь хоёулаа холболтыг салаж болдог ч ихэнхдээ клиент байдаг. Өнөө үед three-way handshaking ба four-way handshaking with a half-close option гэсэн 2 тохиргоо байдаг. Ихэнх хэрэгжүүлэлтэд three-way handshaking хэрэглэдэг.

  1. Клиент TCP нь процессоосоо хаах команд авчны дараа FIN сегмэнтийг дамжуулна. Өгөгдөл байхгүй бол нэг дарааллын дугаартай байна.
  2. FIN-г авсны дараа серверийн TCP нь FIN+ACK сегмэнт явуулна. Өгөгдөл байхгүй бол нэг дарааллын дугаарыг эзлэдэг.
  3. FIN-г авсныг мэдэгдэхийн тулд ACK сегмэнтийг явуулна. Өгөгдөл байж болохгүй.
  • Half-Close -TCP-д нэг үзүүр нь өгөгдөл хүлээж авч байсан ч дамжуулахаа зогсоож болно. Үүнийг хагас хаалт буюу half-close гэнэ. Ихэнхднн клиент энэ үйлдлийг хийнэ.

Боловсруулалт хийхээс өмнө бүх өгөгдөл хэрэгтэй үед хэрэглэж болно. Клиент нь бүх өгөгдлөө дамжуулсны дараа гадна зүгийн холболтыг хааж болно. Гэхдээ дотоод зүг рүүх нь нээлттэй хэвээрээ.

Урсгалын удирдлага[засварлах]

TCP-гийн sequence number, receive window нь хананы цаг шиг ажилладаг. Өгөгдлийг хүлээж авч, acknowlegment хийх бүрд receive window нь шилждэг. Түүнчлэн sequence number-ийн тоо дуусахад буцаад 0 болдог.

TCP нь урсгалын удирдлагадаа sliding window ашигладаг. TCP-н хэрэглэдэг sliding window protocol нь харин Go-Back-N ба Selective Repeat sliding window хоёрын дундаж хэлбэртэй байдаг. TCP-д sliding window protocol нь NAK хэрэглэдэггүй тул Go-Back-N-тэй төстэй; харин дутуу сегментүүд ирэх хүртлээ хүлээн авагч нь буруу дараалалтай сегментүүдийг хадгалдаг гэдгээрээ Selective Repeat-тэй төстэй. Өгөгдөл холболтын түвшинд хэрэглэсэн, энд хэрэглэж буй sliding window хоёрын хооронд хоёр том ялгаа бий. Нэгд, TCP-н sliding window нь байтад түшиглэсэн, харин өгөгдөл холболтын түвшингийнх нь фрэймд түшиглэсэн. Хоёрт, TCP-н sliding window нь хувьсах хэмжээтэй байхад өгөгдөл холболтынх нь тогтсон хэмжээтэй.

Цонх нь нээгдсэн, хаагдсан, эсвэл агшсан байна. Эдгээр гурван үйлдэл нь дамжуулагч биш хүлээн авагчийн мэдэлд (мөн сүлжээний ачааллаас шалтгаална) байна. Ийм даалгаварт дамжуулагч нь хүлээн авагчийн тушаалыг дагана.

Цонхыг нээнэ гэдэг нь баруун ханыг баруун тийш зөөнө гэсэн үг. Ингэснээр дамжуулж болох шинэ байтын тоо бафферт ихсэнэ. Хаана гэдэг нь зүүн ханыг баруун тийш зөөнө. Ингэснээр зарим байтуудыг acknowledge хийсэн, мөн дамжуулагч нь эдгээрийн талаар санаа зовох хэрэггүй болно гэсэн үг. Цонхыг агшаана гэдэг нь баруун ханыг зүүн тийш зөөх. Энэ үйлдлийг санал болгодоггүй бөгөөд зарим хэрэгжүүлэлтэд хориглосон байдаг, учир нь зарим байтын явуулагдах эрхийг цуцалдаг. Дамжуулагч нь эдгээр байтуудыг аль хэдийнээ явуулсан байвал асуудал байна. Зүүн ханыг зүүн тийш зөөвөл өмнө явуулсан acknowledgement-үүдийг цуцалдаг тул ингэж болдогүүйг анхаарна уу.

Sliding window ашиглан дамжуулалтыг илүү ашигтай болгоод, дамжуулагч нь өгөгдөлд дарагдахгүй байхаас сэргийлэн өгөгдлийн урсгалыг удирддаг. TCP-н sliding window нь байтад түшиглэсэн байна.

Нэг үзүүр дээрх цонхны хэмжээ нь дараах хоёр утгын багаар нь тодорхойлогдоно: receiver window (rwnd) эсвэл congestion window (cwnd). Receiver window нь acknowledgement агуулсан сегментэд эсрэг талын үзүүрийн зарласан утга юм. Нөгөө үзүүрийн баффер дүүрч, өгөгдөл хаягдахаас өмнө хүлээж авах байтын тоо юм. Congestion window нь бөглөрөлтөөс сэргийлэх зорилгоор сүлжээний тодорхойлсон утга юм.

TCP sliding windows-н талаар анхаарах зүйлс:

  • Цонхны хэмжээ нь rwnd, cwnd хоёрын бага нь
  • Эх үүсвэр нь цонхыг өгөгдлөөр дүүргэх албагүй
  • Хүлээн авагч нь цонхыг нээх, эсвэл хааж чадна, гэхдээ агшааж болохгүй
  • Цонх багасахгүй тохиолдолд зорьсон газар нь хэзээ ч хамаагүй acknowledgement явуулах боломжтой.
  • Хүлээн авагч нь цонхыг түр унтрааж болно; харин цонх унтарсны дараа хүлээн авагч нь үргэлж 1 байтын сегмент явуулах боломжтой.

Алдааны удирдлага[засварлах]

TCP нь тээвэрлэлтийн түвшний найдвартай протокол. TCP рүү өгөгдлийн урсгал дамжуулагч програм нь TCP-д нөгөө талдаа өгөгдөл хүргэх үйлдлийг бүрэн даатгана.

TCP нь алдааны удирдлагын тусламжтайгаар найдвартай байдлыг хангадаг. Алдааны удирдлагад эвдэрхий сегмэнт, алдагдсан сегмэнт, дараалал алдагдсан сегмэнт, давхардсан сегмэнтийг илрүүлэх механизмүүд багтана. Мөн алдаа илэрсний дараа үүнийг засах механизмтай. TCP-д алдааны илрүүлэлт, засалт нь гурван хялбар хэрэгслийн тусламжтайгаар явагдана: checksum, acknowledgment, and time-out.

Checksum[засварлах]

Эвдэрхий сегмэнтийг илрүүлэх зорилгоор сегмэнт бүрд checksum-н талбар байдаг. Сегмэнт эвдэрсэн бол зорьсон TCP нь үүнийг хаяж, алдагдсан гэж тооцоно. TCP нь 16 битийн checksum хэрэглэх ба сегмэнт бүрд зайлшгүй байх ёстой. SCTP-д 16 битийнх хангалтгүй байдаг. Гэхдээ TCP-д солих боломжгүй, учир нь толгой хэсгийг бүтнээр нь дахин тохируулах хэрэгтэй болно.

Acknowledgment[засварлах]

Өгөгдлийн сегмэнт ирснээ батлахын тулд TCP нь acknowledgement хэрэглэдэг. Өгөгдөл байхгүй ч дарааллын дугаарыг эзлэх удирдлагын сегмэнтүүдийг ч acknowledge хийнэ. ACK сегмэнтийг acknowledge хийдэггүй.

ACK сегмэнтүүд нь дарааллын дугаарыг эзлэхгүй ба acknowledge хийхгүй.

Дахин дамжуулалт[засварлах]

Алдааны удирдлагын механизмын гол цөм нь сегмэнтийн дахин дамжуулал юм. Сегмэнт эдвэрсэн, алдагдсан, эсвэл удааширсан бол дахин дамжуулна. Орчин үеийн хэрэгжүүлэлтүүдэд сегмэнтийг 2 тохиолдолд дахин дамжуулна: дахин дамжууллын тоолуур дуусахад, эсвэл дамжуулагч 3 ижил ACK авахад.

Орчин үеийн хэрэгжүүлэлтүүдэд дахин дамжууллын тоолуур дуусахад, эсвэл дамжуулагч 3 ижил ACK авахад дахин дамжуулалт явагдана.

Дарааллын дугаарыг эзлэдэггүй сегмэнтүүдийг дахин дамжуулдаггүй. ACK сегмэнтийг дахин дамжуулахгүй.

ACK сегмэнтэд дахин дамжууллын тоолуурыг тавьдаггүй.

RTO-н дараах дахин дамжуулалт
TCP-н сүүлийн үеийн хэрэгжүүлэлтэд бүх outstanding (явуулсан ч acknowledge хийгдээгүй) сегмэнтийн хувьд нэг retransmission time-out (RTO) тоолуурыг тавьдаг. Тоолуур эхлээд нилээд хугацаа үргэлжилсний дараа ACK хүлээж аваагүй бол (удааширсан сегмэнт, удааширсан ACK, алдагдсан acknowledgement зэргээс үүдэж болох байсан ч) анхны outstanding сегмэнтийг дахин дамжуулна. Зөвхөн acknowledgement агуулсан сегмэнтэд time-out тоолуур тавигддаггүй, иймд энэ сегмэнтийг дахин дамжуулдаггүй гэдгийг анхаархна уу. TCP-д RTO-н утга нь динамик бөгөөд сегмэнтүүдийн бүтэн тойроод ирэх хугацаа (round-trip time, RTT)-наас хамаараад шинэчлэгддэг. RTT гэдэг нь сегмэнт зорьсон цэгтээ хүрээд acknowledgement ирэхэд шаардлагатай хугацааг хэлнэ. Back-off аргачлал хэрэглэдэг.
Гурван хуулбар ACK сегмэнтийн дараа дахин дамжуулах
RTO-н утга нь маш том биш үед өмнөх дүрэм хангалттай байдаг. Гэвч заримдаа нэг сегмэнт алдагдаж, хүлээн авагч нь хадгалах боломжгүй хэмжээний дараалал алдагдсан сегмэнтийг хүлээж авдаг (хязгаарлагдмал бафферийн хэмжээ). Ийм байдлыг арилгахын тулд өнөөгийн хэрэгжүүлэлтүүд нь гурван хуулбар ACK-н дүрмийг баримталж, алдагдсан сегмэнтийг шууд дамжуулдаг. Үүнийг хурдан дахин дамжуулалт гэнэ.

Дараалал алдагдсан сегмэнтүүд[засварлах]

Өгөгдөл нь дараалал алдагдсан байдлаар ирж, хүлээн авагч TCP нь түр хадгалж болох ч процесс руугаа очихдоо дараалланхаа дагуу очихыг TCP баталж өгдөг.

Сегмэнт нь удааширсан, алдагдсан, эсвэл хаягдсан үед тэрхүү сегмэнтийн дараах сегмэнтүүдийн дараалал алдагдаж ирнэ. TCP нь анх дараалал алдагдсан бүх сегментийг хаяж, бүгдийг нь дахин дамжуулдаг байсан. Өнөөгийн ихэнх хэрэгжүүлэлтүүд нь дараалал алдагдсан сегмэнтүүдийг хаядаггүй. Дараалал алдагдсан гэж тэмдэглээд дутуу сегмэнт ирэх хүртэл түр хадгалдаг. Дараалал алдагдсан сегмэнтүүд нь процесст хүргэгддэгүйг анхаарна уу. Процесс руу өгөгдөл нь дарааллын дагуу очихыг TCP баталгаажуулж өгдөг.

Гадны холбоос[засварлах]

RFC[засварлах]

  • RFC 675 – Specification of Internet Transmission Control Program, December 1974 Version
  • RFC 793 – TCP v4
  • RFC 1122 – includes some error corrections for TCP
  • RFC 1323 – TCP-Extensions
  • RFC 1379 – Extending TCP for Transactions—Concepts
  • RFC 1948 – Defending Against Sequence Number Attacks
  • RFC 2018 – TCP Selective Acknowledgment Options
  • RFC 4614 – A Roadmap for TCP Specification Documents
  • RFC 5681 – TCP Congestion Control
  • RFC 6298 – Computing TCP's Retransmission Timer
  • RFC 6824 - TCP Extensions for Multipath Operation with Multiple Addresses

Лавлагаа[засварлах]

  1. Vinton G. Cerf, Robert E. Kahn, (May 1974). "A Protocol for Packet Network Intercommunication". IEEE Transactions on Communications 22 (5): 637–648. DOI:10.1109/tcom.1974.1092259.