13 февруари 2016 г.

Портове

Мрежовият порт е софтуерна абстракция служеща за определяне на различните крайни точки на комуникационните канали в рамките на един хостМрежовият адрес, заедно с порта, идентифицира крайната точка на един комуникационен канал в рамките на една мрежа и се нарича транспортен адрес (по OSI модела). Сборът от мрежовите адреси и портове (по един за хост) на два комуникиращи помежду си хоста, идентифицира еднозначно комуникационния канал помежду им и се нарича мрежов цокъл (или сокет). Два хоста могат да имат повече от един комуникационен канал помежду си; в този случай, комуникационните канали се различават с поне по един от портовете си.
Мрежовият порт, в най-общи линии, може да се разглежда като софтуерна аналогия на хардуерния порт. В тази аналогия, портът може да се разглежда като място на контакт между комуникиращи си процеси.
Отделният порт на един хост се идентифицира с число наречено номер на порт. Това число присъства в заглавието на съобщения на протоколи от транспортния слой. Такива протоколи са TCPUDPDCCPSCTP. Протоколът ISO-TP използва подобен идентификатор – транспортен префикс.

Дефиниция съгласно OSI модела

Портовете се използват от протоколи от транспортния слой на OSI модела. В терминологията на OSI, портът се нарича транспортен селектор (transport selector или transport suffix). Така както мрежовият слой предоставя абстракция на хоста, наречена мрежов адрес, към транспортния слой, така и транспортният слой предоставя абстракция към по-горните слоеве, идентифицираща отделния процес и наричана транспортен адрес. Транспортният адрес е съчетание от мрежовия адрес и транспортния селектор (порта).

На един хост може да се изпълняват множество процеси които да искат достъп до мрежовите функции предоставяни от операционната система. Когато до хоста пристигне информация по мрежата, операционната система трябва да реши за кой процес е предназначена тя. Именно портът позволява на ОС да вземе това решение. Всеки процес който иска да комуникира трябва да отвори определен порт (с определен номер) чрез съответното системно извикване. Така номерът на порта се асоциира от операционната мрежа със съответния процес. Когато пристигне съобщение от мрежата, в заглавната му част е посочен порта за който е предназначено. Операционната система предава това съобщение на процеса който е отворил съответния порт.


В модела на комуникация клиент-сървър, клиентският процес е инициатор на комуникацията. Той се свързва към определен процес на сървъра, предоставящ някаква услуга (уебFTP и т.н.). За целта клиентът указва номера на порта съответстващ на услугата от която се нуждае. Организацията IANA има грижата да заделя и съпоставя на различни номера на портове – различни услуги (и съответно различни протоколи от приложния и други комуникационни слоеве). На портовете се съпоставя и уникален мнемоничен код. Тъй като за номера на порт в заглавията на протоколите е заделено 16-битово поле, възможните му стойности са 0–65535.
Диапазонът на портовете от 0-1023 IANA определя като познати портове. Към тези номера са назначени често използвани услуги като уеб (HTTP), FTP,IRC и др.
Диапазонът 1024-49151 се нарича регистрирани портове. IANA назначава тези портове за ползване от частни програми (например 3724 за World of Warcraft и др.).
Портовете 49152-65535 са динамични или частни. Те се използват от клиентите в комуникационния модел клиент-сървър, както и от програми в разработка или такива за частно ползване.
Всеки протокол има собствено портово именно пространство, т.е. всеки протокол получа отделни номера на портове. Стремежът на IANA е все пак, услуги които могат да използват няколко протокола, да получават един и същи номер на порт за всичките протоколи.

Когато един потребител иска да отвори определена уебстраница, той въвежда нейния уеб адрес в браузъра си. При това, браузърът превежда уеб адреса в мрежов адрес (IP) използвайки DNS системата. След това изпраща съобщение, в заглавието на което записва своите мрежов адрес и порт, както и мрежовия адрес на сървъра, а като порт на получателя задава стойността 80. Това е портовият номер по подразбиране на уеб услугата (HTTP) назначен от IANA.
Когато сървърът получи съобщението, той знае, че е предназначено за уеб сървърната програма (да предположим – Apache), защото е указан порт 80. Операционната система предава съобщението на Apache, а той връща отговор на посочените от нас мрежов адрес и порт.
Тъй като една уебстраница обикновено съдържа голям брой файлове, клиентът (браузърът) може да инициира няколко паралелни комуникационни канала към сървъра за да тегли няколко файла едновременно. За всеки един от тези канали, браузърът трябва да отвори отделен порт.

Няма коментари:

Публикуване на коментар