Sobes.tech
Junior

Протоколи TCP чӣ гуна кор мекунад?

sobes.tech AI

Ҷавоб аз AI

TCP (Transmission Control Protocol) - гэта пратакол транспартнага ўзроўню, які забяспечвае надзейную, арыентаваную на злучэнне дастаўку дадзеных.

Ключавыя аспекты працы:

  1. Трохбаковае рукапожанне (Three-way Handshake):

    • Кліент адпраўляе SYN (Synchronize) пакет з пачатковым нумарам паслядоўнасці (ISN).
    • Сервер атрымлівае SYN, адпраўляе SYN-ACK (Synchronize-Acknowledge), які ўтрымлівае свой ISN і пацверджанне (ACK) ISN кліента (acknowledgement number = client ISN + 1).
    • Кліент атрымлівае SYN-ACK, адпраўляе ACK, які пацвярджае ISN сервера (acknowledgement number = server ISN + 1).
    • Злучэнне ўсталявана, можна перадаваць даныя.
  2. Патокавая перадача дадзеных: Даныя перадаюцца як бесперапынны паток байтаў, а не асобныя пакеты. TCP сегментуе паток дадзеных у сегменты для перадачы.

  3. Нумарацыя паслядоўнасцей (Sequence Numbers): Кожны байт у патоку дадзеных мае ўнікальны нумар. Сегменты ўтрымліваюць нумар першага байта, які ў іх знаходзіцца (sequence number), і нумар пацверджання (acknowledgement number), які паказвае на наступны байт, які адпраўнік чакае атрымаць.

  4. Пацверджанні (Acknowledgements - ACK): Атрымаўшы, атрымальнік адпраўляе ACK, каб паведаміць адпраўніку, якія даныя былі паспяхова атрыманы. Калі адпраўнік не атрымлівае ACK у пэўны час (тайм-аўт), ён паўторна адпраўляе сегмент.

  5. Кантроль памылак (Error Control): Выкарыстоўваюцца кантрольныя сумы (checksums) для праверкі цэласнасці дадзеных. Калі сегмент пашкоджаны, ён адкідваецца, і адпраўнік чакае тайм-аўт або дублікаты ACK для паўторнай перадачы.

  6. Кантроль патоку (Flow Control): Механізм, які выкарыстоўваецца для прадухілення перапоўнення буфера атрымальніка. Атрымаўшы, атрымальнік паведамляе адпраўніку памер свайго акна атрымання (receive window) у ACK-пакетах. Адпраўнік можа адпраўляць толькі столькі дадзеных, колькі паказана ў акне.

  7. Кантроль перагрузкі (Congestion Control): Механізм для вызначэння даступнай прапускной здольнасці сеткі і дынамічнага рэгулявання хуткасці перадачы дадзеных, каб пазбегнуць перагрузкі сеткі. Уключае алгарытмы, такія як павольны старт (slow start), прадухіленне перагрузкі (congestion avoidance), хуткае паўторнае перасыланне (fast retransmit) і хуткае аднаўленне (fast recovery).

  8. Завяршэнне злучэння: Звычайна выкарыстоўвае чатырохбаковае рукапожанне:

    • Адная бок адпраўляе FIN (Finish) пакет.
    • Іншая бок адпраўляе ACK для FIN.
    • Іншая бок адпраўляе свой FIN (пасля завяршэння перадачы сваіх астатніх дадзеных).
    • Первая бок адпраўляе ACK для гэтага FIN.
    • Злучэнне закрыта.

Структура TCP сегмента:

Поле Памер (байты) Апісанне
Source Port 2 Порт адпраўніка
Destination Port 2 Порт атрымальніка
Sequence Number 4 Нумар першага байта дадзеных у сегменце
Acknowledgement Number 4 Нумар наступнага чаканага байта
Data Offset/Header Length 4 біт Даўжыня загалоўка TCP
Reserved 6 біт Зарэзервавана
Flags (Control Bits) 6 біт URG, ACK, PSH, RST, SYN, FIN
Window Size 2 Памер акна атрымальніка
Checksum 2 Кантрольная сума загалоўка і дадзеных
Urgent Pointer 2 Паказвае на тэрміновыя даныя (калі URG усталявана)
Options Зменная Дадатковыя опцыі
Padding Зменная Для выраўноўвання загалоўка
Data Зменная Перадаваемыя даныя
// Флаги (Control Bits):
// URG: Значнае поле тэрміновых указальнікаў
// ACK: Значнае поле пацверджання
// PSH: Функцыя Push
// RST: Скінуць злучэнне
// SYN: Сінхранізацыя нумароў паслядоўнасці
// FIN: Больше дадзеных ад адпраўніка