Протоколи TCP чӣ гуна кор мекунад?
sobes.tech AI
Ҷавоб аз AI
TCP (Transmission Control Protocol) - гэта пратакол транспартнага ўзроўню, які забяспечвае надзейную, арыентаваную на злучэнне дастаўку дадзеных.
Ключавыя аспекты працы:
-
Трохбаковае рукапожанне (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). - Злучэнне ўсталявана, можна перадаваць даныя.
-
Патокавая перадача дадзеных: Даныя перадаюцца як бесперапынны паток байтаў, а не асобныя пакеты. TCP сегментуе паток дадзеных у сегменты для перадачы.
-
Нумарацыя паслядоўнасцей (Sequence Numbers): Кожны байт у патоку дадзеных мае ўнікальны нумар. Сегменты ўтрымліваюць нумар першага байта, які ў іх знаходзіцца (sequence number), і нумар пацверджання (acknowledgement number), які паказвае на наступны байт, які адпраўнік чакае атрымаць.
-
Пацверджанні (Acknowledgements - ACK): Атрымаўшы, атрымальнік адпраўляе ACK, каб паведаміць адпраўніку, якія даныя былі паспяхова атрыманы. Калі адпраўнік не атрымлівае ACK у пэўны час (тайм-аўт), ён паўторна адпраўляе сегмент.
-
Кантроль памылак (Error Control): Выкарыстоўваюцца кантрольныя сумы (checksums) для праверкі цэласнасці дадзеных. Калі сегмент пашкоджаны, ён адкідваецца, і адпраўнік чакае тайм-аўт або дублікаты ACK для паўторнай перадачы.
-
Кантроль патоку (Flow Control): Механізм, які выкарыстоўваецца для прадухілення перапоўнення буфера атрымальніка. Атрымаўшы, атрымальнік паведамляе адпраўніку памер свайго акна атрымання (receive window) у ACK-пакетах. Адпраўнік можа адпраўляць толькі столькі дадзеных, колькі паказана ў акне.
-
Кантроль перагрузкі (Congestion Control): Механізм для вызначэння даступнай прапускной здольнасці сеткі і дынамічнага рэгулявання хуткасці перадачы дадзеных, каб пазбегнуць перагрузкі сеткі. Уключае алгарытмы, такія як павольны старт (slow start), прадухіленне перагрузкі (congestion avoidance), хуткае паўторнае перасыланне (fast retransmit) і хуткае аднаўленне (fast recovery).
-
Завяршэнне злучэння: Звычайна выкарыстоўвае чатырохбаковае рукапожанне:
- Адная бок адпраўляе 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: Больше дадзеных ад адпраўніка