Хэрэглэгч:A.Oyun-Erdene

Transmission Control Protocol

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

TCP дараах байгууламж нь олгодог:

Голын Data Transfer

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

Найдвартай байдал

ТСР дамжуулсан байт бүрийн дараалал томилно болон хүлээн авах ТСР нь эерэг хариу (ACK) үзэж байна. АСК нь хугацаа интервал дотор хүлээн аваагүй бол, өгөгдөл дахин дамжүүлах юм. Хүлээн авах ТСР тэд тулд гарч ирэхэд сегментийг дахин эмхлэх бөгөөд давхарлагдсан сегментүүдийг арилгах дараалал тоо ашигладаг.

Урсгалын хяналтын

Хүлээн авах ТСР буцааж илгээсэн хүнд нь АСК илгээх үед, мөн илгээсэн хүнд нь өнгөрсөн  хүлээн ТСР хэсгийн цааш хүлээн авах боломжтой байт тоо, өөрийн дотоод буферууд нь давхцал болон хальсан учруулахгүй харуулж байна.Энэ нь ямар ч асуудалгүйгээр хүлээн авах боломжтой дээд дараалал тоо хэлбэрээр АСК илгээсэн байна.

Нягтруулгын

ТСР холбооны барилга байгууламж зэрэг хэрэглэхийн тулд зөвхөн ганц хост дотор маш олон үйл явцад зөвшөөрөхийн тулд, ТСР хост бүр дотор хаяг, эсвэл портуудын багц олгодог. Интернэт холбооны давхарга нь сүлжээ болон хостын хаяг нь нийлүүлэгдсэн энэ нь сокетийг болдог. Сокет авах үйл явцад ашиглаж сокет хос тодорхойлсон байна.

Бүрэн хоёр талд нь хэвлэх

ТСР аль аль чиглэлд зэрэгцээ мэдээллийн урсгалын тухай заасан.

ТСР толгой

ТСР мэдээлэл нь IP Datagram дотор орж хайрцаглалт байна. Зураг ТСР толгой загварыг харуулж байна. Сонголт нь байгаа л бол хэвийн хэмжээ нь 20 байт юм. Салбарын бүр доор хэлэлцэх болно.

aaaa
zurag1

Source болон Destination port: 16 битийн урттай дамжуулагч програмын порт хаягийг тодорхойлно.

Дарааллын дугаар: Сегмент дахь эхний байтын дугаарыг тодорхойлох 32 битийн талбар. Холболтыг үүсгэх үед initial sequence number(ISN)-г санамсаргүй тооны үүсгүүрээр гаргадаг. Тоо нь хоёр зүгт өөр өөр байж болно.

Зөвшөөрлийн дугаар: Сегментийн хүлээн авагчийн дараа нь ирнэ гэж буй байтын дугаарыг илтгэх 32битийн талбар. Х-р байтыг хүлээж авсан бол х+1 нь acknowledgement number байна. Өгөгдлийг үүнтэй хамт илгээж болно.

Толгойн урт: ТСР толгой дахь 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-ээс ялгаатай нь ТСР-д зайлшгүй байх ёстой. ТСР pseudoheader-н хувьд протоколын талбарын утга 6 байна.

Яаралтайн заагуур: Urgent flag тавигдсан үед л хүчинтэй 16 битийн талбар. Urgent өгөгдөл байхад хэрэглэгдэнэ.

Доторлогоо: Өгөгдөл, толгой хэсгийг 32 битийн заагтай болгох зориулалттай, 0 битүүдээс тогтоно.

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

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

1.Клиент нь SYN сегмэнтийг дамжуулна. Дарааллын дугаарыг синхрончлох үүрэгтэй. Өгөгдөл байхгүй ч дарааллын нэг дугаарыг эзлэнэ.

2.Сервер нь SYN+ACK сегмэнтийг дамжуулна. Нөгөө тийш дамжуулах зориулалттай SYN сегмент, мөн өмнөх SYN-г авсан гэж acknowledge  хийх үүрэгтэй. Өгөгдөл  байж болохгүй ч нэг дарааллын дугаарыг эзлэнэ.

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

·        Simultaneous Open- Ийм тохиолдол ховор ажиглагддаг. Хоюулаа зэрэг active open болговол ТСР-нүүд нь SYN+ACK-г бие биен рүүгээ дамжуулаад ганц холболтыг үүсгэнэ.

·        SYN Flooding Attack-Серверийг SYN-үүдээр бөмбөгдөн түүний ачааллыг хэтрүүлж унагадаг denial-of-service-attack-н хэлбэр. Ингэхэд хуурмаг IP хаяг ашиглаж, сервер нь бүгдэд нь нөөцөө хуваарилдаг. Нөөц дуусахад унана. Ийм үйлдлээс зайлсхийхийн тулд cookie хэрэглэдэг.

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

·        Pushing data- Ямар нэг өгөгдлийг шууд процесс руу дамжуулж шууд хариу нэхэх хэрэгтэй бол push үйлдлийн хүсэлт тавина. Өнөө үед ийм хүсэлтийг үл тоох нь элбэг. ТСР нь энэхүү функцийг хэрэглэх эсэхээ шийддэг.

·        Urgent Data- Дамжуулагч нь өгөгдлийг дамжуулаад нөгөө процесс нь дараалал буруу ч байсан хамаагүй шууд унших шаардлагатай бол urgent байт дамжуулна. Өгөгдлийг URG гэж тэмдэглэхэд сегментийн түрүү хэсэгт тавигдаж түүнийг хүлээж авсны дараа ТСР нь сегмэнтээс urgent өгөгдлийг буруу дараалалтайгаар програм руу хүргэнэ.

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

1. Клиент ТСР нь процессоосоо хаах команд авсны дараа FIN сегмэнтийг дамжуулна. Өгөгдөл байхгүй бол нэг дарааллын дугаартай байна.

2.FIN-г авсны дараа серверийн ТСР нь FIN+ACK сегмэнтийг явуулна. Өгөгдөл байхгүй бол нэг дарааллын дугаарыг эзлэдэг.

3.FIN-г авсныг мэдэгдэхийн тулд ACK сегмэнтийг явуулна. Өгөгдөл байж болохгүй.

·        Half-Close-TCP-д нэг үзүүр нь өгөгдөл хүлээж авч байсан ч дамжуулахаа зогсоож болно.

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