транспорт слой
Слоят транспорт. Протоколи TCP, UDP.
Всеки байт в връзка TCP имат номера, 32-битов. Ето защо, дори и в мрежата на 10 МБ / сек ще отнеме най-малко един час, за да изчерпи всички стаи. Etinomera използва за всички пакети на връзката: уведомяване, прозоръчна данни.
TCP агенти обменят сегменти данни. Всеки сегмент има глава 20 байта или повече (по желание) и тялото на произволна дължина. TCP реши колко дълго агентът може да бъде орган. Два фактора ограничават дължината на сегмента. Произход - дължина сегмент не трябва да надвишава максималната дължина на пакети ПР - 65K байта. Вторият - всяка мрежа има максимална предавателна единица MTU, и всеки сегмент трябва да бъде поставен в MTU. В противен случай, рутера ще трябва да се прилага по отношение на фрагментацията.
Основният протокол, използван от TCP агент е плъзгаща протокол прозорец. Това означава, че всеки сегмент се изпраща трябва да бъде потвърдена. В същото време изпращане на таймер сегмент се наклони. Потвърждение ще дойде или с редовни данни в обратна посока, ако има такива, или няма данни. Потвърждение ще носи поредния номер на следващия очакван сегмент. Ако таймерът изтече, преди да ще получите потвърждение, сегментът се изпраща отново.
Въпреки очевидната си простота, протоколът TCP е доста сложно и трябва да отговори на следните основни въпроси:
- възстанови реда сегменти;
- за премахване на дублиращи се сегменти в каквато и форма (фрагментация) са получени;
- определя разумен срок за времето, за да получите потвърждение в сегмента;
- Връзка, създадена и разкъсване надеждно;
- контрол на потока;
- управление на задръстванията.
- Форматът на TCP-пакет
TCP контрол предаване протокол (Transmission Control Protocol) е по избор, TCP / IP стандарт, който е описан в документа RFC 793 «Предаване контрол протокол (TCP)» и осигурява надеждна пакет предоставяне на услуги, връзката ориентирани. TCP протокол:- гарантира доставка на IP-дейтаграми;
- извършва разделяне на сегменти и монтаж на големи блокове от данни, изпратени от програми;
- Тя осигурява доставката на сегменти на данни в желания ред;
- проверява целостта на данните, предавани чрез контролна;
- Той изпраща положително потвърждение дали данните, е приета успешно. Използването на селективен признание също може да изпрати отрицателни потвърждения за данни, които не са получени;
- Той предлага предпочитан транспорт за програми, които изискват надежден пренос на данни със създаването на комуникационна сесия, като на база данни "клиент-сървър" и програми за електронна поща.
TCP се основава на връзка "от точка до точка" между два мрежови възли. TCP получава данни от програми и да ги обработва като поток от байтове. Байта са групирани в сегменти, които TCP задава номера на последователност, необходими за правилното монтиране на сегменти на възел приемник.
За два възела TCP могат да общуват, те трябва първо да установи сесия връзка един с друг. TCP сесия се инициализира чрез процес, наречен тристепенен установяване на връзка. В този процес, синхронизирани серийни номера и контрол на информация, необходими за създаване на виртуални връзки между възлите.
TCP сегменти са капсуловани и се изпращат на IP-дейтаграмата, както е показано на следващата фигура.
TCP заглавната част на сегмент съдържат много повече области, отколкото UDP заглавието, което отразява по-разширените функции на първия протокол.
порт поле източник (Source Port) заема 2 байта и определя процеса на изпращане. Голф дестинация порт (Destination Port) е 2 байта и определя в процеса на получаване. номер поле последователност (Sequence Number) (4 дължина байт) и брой потвърждение (брой потвърждение) на (4 дължина байт) са номерирани всеки изпратен или получен байт данни. Системата е въведена на неподписани числа, които се изпълняват, когато достигнат максималната стойност. Всяка страна поддържа собствен сериен номерация. област дължина Header заема 4 бита и представлява дължината на сегмента на TCP-глава, измерена в 32-битови думи. дължина глава не е фиксиран и може да се променят в зависимост от стойностите, определени в областта на параметър.
Невярно резерв (Запазена) заема 6 бита.
Полеви знамена (Code бита) отнема 6 бита и съдържа шест 1-битови флагове:
- Flag URG (Urgent Pointer - прецизност показалка) е 1, в случай на използване на поле с показалеца на спешна данните;
- ACK (потвърждение - потвърждение) флаг е настроен на 1, ако полето съдържа данни номера за потвърждение. В противен случай това поле се игнорира;
- PSH флаг (Push - изваждане) означава, че стека получаващия TCP трябва незабавно да уведоми за прилагане на получените данни, вместо да чакате, докато буферът е пълен;
- RST флаг (Reset - изчисти) се използва, за да отмените съединения: в резултат на грешки на приложения, като при неизпълнение на грешната сегмент се опитва да създаде връзка при липса на исканата услуга;
- Flag SYN (Синхронизиране - синхронизация) е установен при започване на синхронизацията на връзката и номер на последователност;
- FIN флаг (Завършен - завършване) се използва, за да се прекъсне връзката. Това показва, че подателят е завършен изпращане на данни.
размер Невярно прозорец (Window) (2 байта) дълги съдържа броя байтове, които могат да бъдат изпратени след байт, чиято подготовка вече е потвърдена.
поле за контролна (контролна) (дължина 2 байта) се използва за подобряване на надеждността. Той съдържа глава контролна, данни и псевдо показано на фиг. 3. При изчисляване на полето контролна се свежда до нула, а полето за данни се допълва от нула байт, ако дължината му е нечетно число. Контролната сума алгоритъм просто добавя всички 16-битови думи в допълнителния код, а след това изчислява добавянето към общата сума. В резултат на това, когато приемникът счита само контролна сегмент, включително областта на контролна сума, резултатът dozhzhen бъде нула.
Фиг. 2. TCP пакети структура при изчисляване на контролна сума.
Псевдо образува изключително за контролната и има следната структура.
Фиг. 3. Структурата на псевдо TCP пакет.
Алгоритъмът на плъзгащия прозорец в рамките на установената връзка в протокол TCP правилното предаване на всеки сегмент трябва да бъде потвърдена от получаването от страна на получателя. Запознат съм - това е един от традиционните методи, за да се осигури надеждна комуникация. Протоколът TCP използва специален случай на потвърждение - плъзгащата алгоритъм прозорец. При установяването на връзка, и двете страни да се споразумеят за първоначалния брой байтове, с които броячът се провеждат през цялата съединение. На всяка страна на началната си номер. Идентификатор на всеки сегмент е броят на първия си байт. Номерирането на байтове в рамките на един сегмент се извършва така, че първият байт данни веднага след заглавната част има най-малък брой, както и следните байта след него имат следните серийни номера (фиг. 5).
Фиг. 5. номерацията на байтове в TCP-сегмент.
Когато подателят изпраща TCP-сегмент, тъй като тя поставя сегмент идентификатор в поле номер пореден номер на първия байт на сегмента. Например, на фиг. 6 сегменти идентификатори са номера 32600, 34060, 36520 и т.н. Въз основа на тези TCP-приемник стаи не само отличава сегмента от друга, но също така и позиции в резултат на фрагмента по отношение на общия поток. Освен това, може да се заключи, че полученото сегмент е дубликат или липсващи данни и т.н., получени между два сегмента
Фиг. 6. Серийният номер и номера разписка.
Като получаване на получателя изпраща сегмент отговор съобщение (сегмент), в който броят на местата (брой потвърждение) на единица, надвишаващи максималния брой байтове на сегмента. За сегменти показани на Фиг. 6, получаване (номер за потвърждение), са броят на последния байт на всеки сегмент 1. Така за първи сегмент се изпраща ще бъде броят 34060 до втората - 36520, и т.н. Номер за потвърждение често се тълкува като броят на следващия очакван байт данни. Квитанция (потвърждение) в протокола за TCP се изпраща само в случай на правилното приемане на данните, отрицателно потвърждение не се изпраща. По този начин, липсата на постъпления означава загуба сегмент или приемане на изкривена или загуба на сегмента разписка.
В протокола TCP в същия сегмент може да се постави, както и данните, че заявлението изпраща на другата страна, както и получаване, който модул TCP потвърждава получаването на данните.
Протоколът TCP е двустранен, което е, в рамките на едно съединение регламентира процедурата за обмен на данни в двете посоки. Всяка от страните действа едновременно като подател и получател. Всяка страна има двойка буфери - един за съхранение на получените сегменти, а от друга - за сегмента, който трябва само да бъдат изпратени. В допълнение, има буфер за съхранение на копия на сегменти, които са били изпратени, но получаването на който все още не е на разположение.
И ако връзката е установена, и в хода на предаването на двете страни, в качеството на получател, да изпращате взаимно т.нар получите прозореца. Всяка от страните, получаващи получите прозореца, "разбира" колко байта се допуска изпращане на получаване на окончателния разписката. С други думи, изпращане получите прозореца, и двете страни се опитват да регулират потока от байтове в партията, казва му "колега" колко байта (започващи с байт номер, който вече е бил изпратен разписка), те са готови да приемат в момента.
Фиг. 7 показва поток байт, получени от по-горното ниво на TCP протокола изходния буфер. От TCP «съкращения» сегменти байт протокол модул последователност и ги подготвя да изпрати друг контакт. В този поток, можете да посочите няколко логически граници. Първият границата разделя сегментите, които вече са изпратени и които вече са дошли разписка. От другата страна на границата е с размерите на байта прозорец W. Част от байтове, включени в прозореца, се сегменти, които вече са били изпратени, но се плъзга по тях все още не са на разположение. Останалата част от прозореца - сегмент, който все още не е доставена, но могат да бъдат изпратени като част от външната страна на кутията. И накрая, последната граница показва началото на поредица от сегменти, никой от които не могат да бъдат изпратени най-дълго, докато то е обикновена разписка и на прозореца няма да се измества надясно.
Ако размера на прозореца е W, а за последен път стойността на N включва получаване, изпращачът може да изпрати нови сегменти толкова дълго, колкото на следващия байт на сегмента няма да падне с броя N + W. Този сегмент се простира извън прозореца и предаването в такъв случай трябва да бъдат спрени, докато следващата разписката.
Фиг. 7. Характеристики на алгоритъма на плъзгащия прозорец в протокола TCP. Процедурата на "бавен старт"
Когато всяка мрежа получава повече данни, отколкото могат да се справят, задръстванията в мрежата, образувана. Интернет в този смисъл, не е изключение. Така че тук ние считаме алгоритъм, разработен, за да се справят с претоварване на мрежата. Разтворът, използван в интернет, е да се признае, че има две потенциални проблеми: с ниска пропускателна способност мрежи и нисък капацитет на получателя - и в отделно решение на двата проблема. За да направите това, всеки подател има два прозореца: прозореца, предоставена от получателя, и прозореца на задръстванията. Размерът на всеки един от тях съответства на броя на байтове, че подателят има право да прехвърлите. Подателят се ръководи от минимума от тези две стойности. Например, получателят каза: "Моля, изпратете ми 8K", но подателят знае, че ако ще изпрати повече от 4 KB, кашата се формира в мрежата, така че тя изпраща едни и същи 4 KB. Ако подателят знае, че мрежата е способна да пренася и повече данни, като например 32Kbayta, той ще даде толкова, колкото иска от получателя (т.е. 8K).
Монтаж съединение подател определя размера на задръстванията прозорец равна на максималния размер, използван в сегмента на връзка. Ако потвърждение за получаване на този сегмент пристига преди да изтече периодът на изчакване, размер на прозореца се добавя към размера на сегмента, т.е. размера на прозореца на задръстванията е удвоил и вече изпрати два сегмента. В отговор на потвърждение за получаване на всеки един от сегментите на разширяване е прозорец претоварване за максимален размер на сегмент. Да приемем, п е равно на сегментите от размера на прозореца. Ако потвърди за всички сегменти идват навреме, прозорецът се увеличава с броя на байтове, съответстващи н сегменти. В действителност, потвърждение на всеки сегмент последователност води до удвояване на прозореца на претоварването.
Този процес на експоненциалния растеж продължава толкова дълго, колкото размера на приемник прозорец се достига или не ще се развива посочване сигнал задръстванията изчакване. Например, ако пакети 1024, 2048 и 4096 байта успешно стигна до получателя, както и в отговор на предаването на 8192 байта пакети се получи потвърждение в определения срок, прозорецът на задръстванията е настроен на 4096 байта. Докато размера на прозореца на претоварването е 4096 байта, по-дълги пакети са изпратени, независимо от размера на прозореца, предоставена от страна на получателя. Този алгоритъм се нарича "бавен старт".
- Форматът на UDP-пакет
UDP протокол, като протокол дейтаграма, изпълнява услугата, колкото е възможно, това означава, че не е гаранция за доставката на посланието им, и следователно по никакъв начин не компенсира ненадеждността на дейтаграма.
Data Unit UDP протокол, наречен UDP-пакети или дейтаграма потребител (User Datagram). Всяка дейтаграма носи отделен потребител съобщение. Това води до физическо ограничение: UDP дейтаграма дължина не може да надвишава областта дължина данни на IP протокол, което от своя страна ограничава размера на по-ниския слой технология рамка. Ето защо, ако UDP-буфер прелива, данните за приложение се изхвърля. UDP-глава пакет се състои от четири на два байта полета, съдържащ поле изходен порт, местоназначение пристанище, дължина UDP и контролна сума.
Фиг. 8. UDP формат пакет глава. Невярно източник порт и порт дестинация, се идентифицират предаване и приемане на процеси.
поле UDP дължина съдържа дължината в байтове на UDP пакет.
Полето контролна включва контролна UDP пакет се изчислява по цялата UDP пакет с добавена псевдо.
Фиг. 9. Структура UDP пакети изчисления на КРС.
Псевдо образува изключително за контролната и има следната структура.
Фиг. 10. Структурата на псевдо UDP пакет