Основи на действието на TCP (Transmission Control Protocol). Създаване и унищожаване на връзки. Тристранно ръкостискане. Мултиплексиране. Контрол на реда на следване.
Основи на действието на TCP (това може да си го съкратите, ако искате) TCP осигурява двупосочна комуникационна „тръба“ между процеси на отдалечени хостове, идентифицирани с помощта на портове. TCP контролира комуникациите между тези процеси като осигурява:
- Създаване и унищожаване на връзки
- Мултиплексиране
- Трансфер на данни
- Контрол на потока
- Надеждност
- Приоритет и сигурност.
TCP гарантира доставянето на пакети. TCP все пак остава по-бавен от UDP (който не осигурява никаква надеждност). Постигането на такъв висок стандарт на доставяне става с цената на голямо натоварване под формата на изграждане, поддържане и прекратяване на сесии между хостове. За разлика от протоколите без установяване на връзка, TCP не разчита на по-горни слоеве да следят данните. TCP не се ограничава само с идентифициране на процесите на изпращащия и приемащия хост, подавайки данните по кабела, а се грижи те да пристигнат до своето местоназначение без никакви забележки. TCP използва контрол на реда на следване и потвърждения, за да осигури гарантирано доставяне на пакети.
За разлика от своята противоположност – UDP, когато ТСР приеме поток от данни (съобщения), той разбива потока на сегменти и задава поредни номера на всеки байт в дейтаграмата, преди да започне доставяне с помощта на IP. Тези поредни номера изискват да бъдат връщани съответните потвърждения от местоназначението, за да се гарантира, че то е приело от изпращащата страна всеки сегмент от дейтаграмата. TCP поддържа копие на сегментите, съдържащи се в буфер на хоста, познат като ТСВ (блок за контрол на предаването). Ако не получи потвърждение, протоколът приема, че дейтаграмата е изгубена и я предава отново.
Създаване и унищожаване на връзки
За да осигури надеждно доставяне на данни между процеси, TCP трябва първо да изгради връзка, за да могат приложенията от по-горен слой да обменят някакви смислени данни. За да постигне това, TCP първо изгражда връзка, наречена логическа верига (logical circuits), между портовете на отдалечените хостове. Тази връзка свързва портовете или процесите, изпълнявани на всеки от хостовете. TCP поддържа тази връзка по време на целия разговор и я унищожава (разпада) когато вече не е нужна. След като IP научи логическия адрес на хоста-местоназначение, TCP създава сесия, която осигурява надеждна основа за доставянето на данни, което извършват протоколите от по-горен слой. Когато потребителят или един от хостовете поиска да затвори дадена сесия, TCP разпада сесията.
Тристранно ръкостискане
Запитванията и потвържденията при обмена на кадри са известни като трикратно ръкостискане (three–way handshake). Тъй като ТСР има способността за пълна дуплексна комуникация, той се нуждае само от три кадъра, вместо от четири, за да изпълни този процес. Когато местоназначението приеме първото SYN запитване от изпращащата страна, местоназначението отговаря с потвърждение на изпращащата страна с негово собствено SYN запитване в същия кадър.
Мултиплексиране
Възможността за мултиплексиране позволява на ТСР (Transmission Control Protocol) да създава и поддържа едновременно множество комуникационни пътища между два хоста. Мултиплексирането позволява също на един хост да разграничава и поддържа сесии с множество хостове едновременно. Хостовете трябва да притежават тази способност, защото обикновено те изпълняват множество приложения или услуги като Telnet, FTP (File Transfer Protocol) или други услуги. TCP трябва да разграничава един процес от друг и да управлява и поддържа комуникациите между тези процеси. За да постигне това, TCP използва портове, за да разграничава комуникациите и да ги управлява. Има два главни типа портове: сървърни и клиентски. Сървърните портове идентифицират главни приложения или услуги; например Telnet (порт 23), SMTP (порт 25) и FTP (портове 20, 21).
Контрол на реда на следване (това не съм много убеден, съкратих го въжмоно най-много)
Крайъгълният камък на ТСР услугите е осигуряването на най-надеждното предаване на данни. За да гарантира доставянето на дейтаграми, TCP (Transmission Control Protocol) отчита реда на следване на всеки предаван от него байт с данни. Това може да изглежда като престараване, защото много протоколи проследяват реда на следване на всяка дейтаграма, независимо от размера в байтове; въпреки това гарантира, че всички изпратени данни биват проследявани. Проследяването на всички изпращани данни дава възможност за откриване и коригиране на изгубени данни, дублирани данни и данни, доставени в неподредено състояние. Всеки път, когато даден хост предава данни, ТСР задава пореден номер на всеки байт и чака за положително АСК потвърждение на зададените поредни номера от другата страна, в рамките на зададено количество от време. Ако приемащата страна не отговори в рамките на конкретно количество от време, изпращащият хост предава данните отново. Приемащата страна използва същите поредни номера, за да потвърди приемането на данни, за да открие липсващи, неподредени или дублирани данни, изпратени от другата страна. След като приемащата страна има последователните данни, тя може да подреди отново тези сегменти в потоци от данни (съобщения), които да бъдат подадени за обработка към процес или приложение от по-горен слой. Приемащият хост буферира входящите TCP сегменти, преди да подаде тази информация нагоре към приложението и използва поредни номера, за да открива дали е приел данните неподредени. Тъй като дейтаграмите могат да преминават по най-различни пътища преди да достигнат до техните местоназначения, може да възникне значително закъснение за някои от тези сегменти. Приемащият хост потвърждава данните, приети в последователен ред. Например, ако изпращащият хост изпраща поредни номера 1, 2, 3 и 4, но местоназначението получава само 1, 2 и 4, приемащата страна потвърждава само сегмент 1 и 2 като изпраща АСК = 3.



