Тема 19.

Транспортно ниво - процедури за съединенията.


страницата се нуждае от дописване/преглеждане


IP протоколът, както се знае, е connectionless и unreliable - няма механизъм нито за установяване на сесии, нито за надеждно предаване на трафика (best effort - пакетът я пристигне, я не). Единствената възможност за известяване на източника, че информацията не е достигнала целта си, е протоколът ICMP: когато не може да се намери път за съобщението до хоста, или когато хостът не може да приеме съобщението, е възможно да се изпрати ICMP съобщение за грешка. Но, първо, такова може и да не се изпрати, и, второ, честа практика е ICMP трафикът да се блокира по съображения за сигурност. В такъв случай, IP хостът-изпращач не знае нищо за съдбата на изпратената дейтаграма.

Роля на транспортното ниво

Несигурността на предаване е част от предназначението на IP - неговата цел е максимално бързодействие при минимално натоварване на комуникационната подмрежа. За надеждността на комуникацията се грижи хостът (ако му е необходимо). Тази функционалност е работа на транспортното ниво. От негова гледна точка, няма значение какво се е случило на по-ниските нива. То просто праща информацията, и ако протоколът осигурява надеждност, слуша за отговор от отсрещното ниво 4. Ако отговор не последва, се счита, че информацията е загубена, и обичайното действие в такъв случай е нейното препращане. За транспортното ниво информация (дейтаграми) се губи не поради грешки на предавателя, а поради логистическа грешка.1
Протоколите от транспортното ниво работят по два начина на работа: без установяване на връзка (съединение) - connectionless, и със съединение - connection-oriented.2

Connectionless

Транспортните протоколи, които не установяват връзки (съединения), изпращат данните към получателя директно, без предварителни уговорки за установяване на транспортна сесия и нейните параметри. Тяхното предназначение е, подобно на IP, да осигуряват бърза и лека комуникация. Затова, обикновено те пращат възможно най-малко сервизна информация в хедъра си - например source и destination port. Информацията се праща:

  • без предварително известие
  • без следене на нейното приемане и без положително / отрицателно потвърждаване
  • без фиксиран ред на получаване - отново, както в IP, се разчита на best effort delivery и дейтаграмите могат да пристигнат в разбъркан ред.

Крайното приложение, което получава информацията, се грижи за нейната цялост. То толерира загуба на данни и/или извлича липсващата информация от наличната. Типичен пример за употреба на ненадеждни транспортни протоколи e аудио / видеоизлъчването (streaming), където моментните грешки при преноса на информация се проявяват като дефекти в звука / изображението и се замазват от приемащия софтуеър. Други примери включват IP телефонията, различни мрежови услиги (DNS, RIP, etc.) и компютърни игри (Starcraft).
Протоколите без установяване на съединение се наричат също stateless, тъй като комуникацията не преминава пре различни етапи, а е непосредствена. Пример за протокол без съединение е UDP.

Connection-oriented

Тези протоколи първо договарят установяват връзка (съединение) с получателя и чак тогава започват да прехвърлят данни. Чрез установяването на връзка (сесия) се осъществява контрол върху предаването - могат да се следят получаването и потвърждаването на информацията, редът на нейното получаване, натоварването на връзката, а също и сигурността на комуникацията3.
Договорката фиксира дадени параметри на комуникацията - например, максималната дължина на съобщението, което е важно за приемащата страна. Договорката минава през няколко фази: излъчващият хост подава оферта, на която приемащият отговаря със съгласие или заявка за промяна на праметрите (но задължително отговаря, освен ако този вид комуникация не е забранен, например от firewall).
Пример за договорка е 3-way handshake.
94_syn_fig1_lg.jpg
Предаващият хост пуска заявка за комуникация, след което чака за отговор до time-out (опитите продължават до няколко тайм-аута) или до получаване на такъв. Ако адресатът приеме предложението, той пуска положителен отговор. При неговото приемане, изпращачът заделя буфер за комуникацията и пуска потвърждение от своя страна. Когато адресатът получи потвърждението, той също заделя буфер. Следва преносът на данни. Ресурси (буфери) не се заделят, преди да е ясно, че желанието за общуване е двустранно.
При загуба на потвърждението от страна на предавателя, получателят ще се досети при получаване на първото съобщение от потока данни, че е извършил договорка с изпращача, и ще започне да приема. Съществуват още много какво ще стане, ако… при различни ситуации на приемане или загуба на различни служебни съобщения. За всяка от тях в протокола има предвидено решение - досега случилите се събития определят в какво състояние се намира протоколът. Затова често протоколите със съединение се описват като stateful.
Пример за такъв протокол е TCP. Повече за него и неговите състояния - в следващия епизод.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License