Transmission Control Protocol

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

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

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

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

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

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

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

Найдвартай үйлчилгээ
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 910111213141516171819202122232425262728293031 0 0 Үүсвэр порт  Хүлээн авагчийн порт 432 Дарааллын дугаар 864 Зөвшөөрлийн дугаар (хэрэв ACK байвал) 12 96 Өгөгдлийн зөрүү  Нөөцөлсөн0 0 0 NSCWRECEURGACKPSHRSTSYNFIN Цонхны хэмжээ 16128 Хяналтын нийлбэр  Яаралтайн заагуур (хэрэв 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 хийх хүсэлт гаргана. Энэ нь гурван үе шаттай байна:

Клиент нь SYN сегмэнтийг дамжуулна. Дарааллын дугаарыг минхрончлох үүрэгтэй. Өгөгдлөл байхгүй ч дарааллын нэг дугаарыг эзлэнэ.
Сервер нь SYN+ACK сегмэнтийг дамжуулна. Нөгөө тийш дамжуулах зориулалттай SYN сегмэнт, мөн өмнөх SYN-г авсан гэж acknowledge хийх үүрэгтэй. Өгөгдөл байж болохгүй ч нэг дарааллын дугаарыг эзлэнэ.
Клиент гурав дахь 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 хэрэглэдэг.

Клиент TCP нь процессоосоо  хаах команд авчны дараа FIN сегмэнтийг дамжуулна. Өгөгдөл байхгүй бол нэг дарааллын дугаартай байна.
FIN-г авсны дараа серверийн TCP нь FIN+ACK сегмэнт явуулна. Өгөгдөл байхгүй бол нэг дарааллын дугаарыг эзлэдэг.
FIN-г авсныг мэдэгдэхийн тулд ACK сегмэнтийг явуулна. Өгөгдөл байж болохгүй.

Half-Close -TCP-д нэг үзүүр нь өгөгдөл хүлээж авч байсан ч дамжуулахаа зогсоож болно. Үүнийг хагас хаалт буюу half-close гэнэ. Ихэнхднн клиент энэ үйлдлийг хийнэ.

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

Урсгалын удирдлага
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 баталгаажуулж өгдөг.

 Гадаад холбоос[edit] 

 RFC 
 RFC 675 – Интернэт Transmission Control Хөтөлбөрийн тодорхойлолт, December 1974 хувилбар https://tools.ietf.org/html/rfc675
 RFC 793 – TCP v4 https://tools.ietf.org/html/rfc675
 RFC 1122 –TCP зарим алдаа залруулга агуулсан https://tools.ietf.org/html/rfc1122
 RFC 1323 – TCP Өндөр гүйцэтгэл нь өргөтгөлүүд [Obsoleted by RFC 7323] https://tools.ietf.org/html/rfc1323
 RFC 1379 –Ажил гүйлгээ, Үзэл баримтлалын хувьд сунгах TCP [Obsoleted by RFC 6247] https://tools.ietf.org/html/rfc1379
 RFC 1948 –Дараалал тоо халдлагаас хамгаалах https://tools.ietf.org/html/rfc1948
 RFC 2018 – TCP Сонгомол Талархал Options https://tools.ietf.org/html/rfc2018
 RFC 5681 –TCP түгжрэл хяналт https://tools.ietf.org/html/rfc5681
 RFC 6298 – Computing TCP's Retransmission Timer https://tools.ietf.org/html/rfc6298
 RFC 6824 - Олон хаягууд нь Multipath үйл ажиллагаанд нь TCP Extensions https://tools.ietf.org/html/rfc6824
 RFC 7323 - Өндөр гүйцэтгэл нь TCP Extensions https://tools.ietf.org/html/rfc7323
 RFC 7414 –TCP Үзүүлэлт нь баримт бичгийн зураглал https://tools.ietf.org/html/rfc7414