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 жана CLIENTтин ишенимдүү номери (ACK) менен (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) пакетин жиберет.
    • Экинчи тарап FIN үчүн ACK жиберет.
    • Экинчи тарап өзүнүн FINин жиберет (өзүнүн калган маалыматтарын өткөргөндөн кийин).
    • Биринчи тарап бул FIN үчүн ACK жиберет.
    • Байланыш жабылат.

TCP сегментинин түзүмү:

талаа өлчөмү (байт) сүрөттөө
Баштапкы порт 2 Жөнөтүүчү порту
Максаттуу порт 2 Алып жаткан порту
Үрлөө номери 4 Сегменттеги биринчи байттын номери
Тастыктама номери 4 Кийинки күтүлүп жаткан байттын номери
Дата офсети/Баштапкы узундук 4 бит TCP баштапкы өлчөмү
Запас (Reserved) 6 бит Запас (бош орун)
Башкаруу белгилери (Flags) 6 бит URG, ACK, PSH, RST, SYN, FIN
Терезе өлчөмү 2 Алып жаткан тараптын терезе өлчөмү
Текшерүү суммасы 2 Баштапкы жана маалыматтын текшерүү суммасы
Штурм көрсөтүүчүсү (Urgent Pointer) 2 Штурм маалыматтарына көрсөтүү (эгер URG белгиленсе)
Опциялар өзгөрмө кошумча опциялар
Тушпара (Padding) өзгөрмө баштапкы өлчөмүн тууралоо үчүн
Маалыматтар өзгөрмө өткөрүлүүчү маалыматтар
// Башкаруу белгилери (Control Bits):
// URG: Штурм көрсөтүүчүнүн маанилүү болушу
// ACK: Тастыктама маанилүү
// PSH: Push функциясы
// RST: Байланышты кайра баштоо
// SYN: Үрлөө номери синхрондоштуруу
// FIN: Жөнөтүүчүдөн башка маалымат жок