Кіріспе

Интерактивті ақпарат алмасу үшін уақытша контекст

Компьютерлік ғылымда, әсіресе желілерде, сессия – екі бағытты байланыс, TCP/IP протоколының практикалық (салыстырмалы түрде жоғары) қабаты. Ол екі немесе одан көп байланыс құрылғыларының (мысалы, компьютерлер, автоматтандырылған жүйелер немесе тікелей пайдаланушылар – кіру сессиясын қараңыз) арасында интерактивті өрнек беруін және ақпарат алмасуын қамтамасыз етеді. Сессия белгілі бір уақытта орнатылады, ал кейінірек аяқталады. Орнатылған байланыс сессиясы әр бағытта бірнеше хабарды қамтуы мүмкін. Сессия әдетте күйлі болып табылады, яғни байланыс жасайтын тараптардың кемінде біреуі ағымдағы күй туралы ақпаратты сақтауға және сессия тарихы туралы мәліметтерді сақтауға мұқтаж. Бұл күйсіз байланыстан өзгеше, онда байланыс тәуелсіз сұраулар мен жауаптардан тұрады. Орнатылған сессия – қосылысқа бағытталған байланысты жүзеге асырудың негізгі шарты. Сессия сонымен қатар қосылыссыз байланыс режимдерінде деректерді берудің негізгі қадамы болып табылады. Дегенмен, бір бағытты деректерді тарату сессияны білдірмейді. Байланыс тасымалы протоколдар мен қызметтердің бір бөлігі ретінде қолданбалық қабатта, сессиялық қабатта немесе OSI моделіндегі тасымалдау қабатында іске асырылуы мүмкін.

Қолданбалық қабаттың мысалдары:
* Жеке келушілермен ақпаратты байланыстыруға мүмкіндік беретін HTTP сессиялары.
* Telnet қашықтан кіру сессиясы.

Сессиялық қабаттың мысалы:
* Сессияны бастау протоколы (SIP) негізіндегі Интернет телефон қоңырауы.

Тасымалдау қабатының мысалы:
* TCP сессиясы, TCP виртуалды тізбегіне, TCP қосылысына немесе орнатылған TCP сокетіне тең. Тасымалдау протоколдары ресми сессиялық қабатын іске асырмаған жағдайда (мысалы, UDP) немесе қолданбалық қабаттағы сессиялар әдетте қысқа мерзімді болғанда (мысалы, HTTP), сессиялар алмасылатын деректерде анықталған әдіс арқылы жоғары деңгейдегі бағдарламамен сақталады. Мысалы, браузер мен қашықтағы хост арасындағы HTTP алмасуда HTTP cookie болуы мүмкін, ол бірегей сессия идентификаторы, пайдаланушының қалаулары немесе рұқсат деңгейі туралы ақпаратты анықтайды. HTTP/1.0 тек бір веб-сессияда бір сұрау мен жауапқа ғана мүмкіндік береді деп есептелген. Протоколдың HTTP/1.1 нұсқасы Common Gateway Interface (CGI) арқылы бұл жағдайды жақсартты, веб-сессияны сақтауды жеңілдетті және HTTP cookie файлдарын мен файлдарды жүктеуді қолдады. Көптеген клиент-сервер сессиялары тасымалдау қабаты арқылы бір сессия үшін бір қосылыспен сақталады. Дегенмен, веб/HTTP сессиясының әрбір транзакциялық кезеңі жеке қосылыс құрайды. Сессияның кезеңдер арасындағы сабақтастығын сақтау үшін сессия идентификаторы қажет. Сессия идентификаторы динамикалық веб-беттердегі <A HREF> немесе <FORM> сілтемелеріне енгізіліп, CGI-ге қайтарылады. CGI транзакция кезеңдері арасындағы сессияның үздіксіздігін қамтамасыз ету үшін сессия идентификаторын пайдаланады. Фазаға бір қосылыстың бір артықшылығы – ол төмен өткізу қабілеті бар (модем) қосылымдарда жақсы жұмыс істейді.

Бағдарламалық жасақтаманы іске асыру

TCP сеанстары әдетте бағдарламалық қамтамасызда бала процестер мен/немесе көп жіпті пайдалану арқылы іске асырылады, онда компьютер сеансты орнатқанда немесе қосылғанда жаңа процесс немесе жіп құрылады. HTTP сеанстары әдетте бір жіпке сеанс арқылы емес, әр сеанстың күйі туралы ақпарат бар деректер базасы арқылы іске асырылады. Көп процестердің немесе жіптердің артықшылығы – бағдарламалық қамтамасыздағы күрделілік азаяды, себебі әр жіп өз тарихымен және капсуладанған айнымалыларымен жеке инстанция болып табылады. Кемшілігі – жүйе ресурстарына қатысты үлкен қосымша шығындар, және жүйе қайта іске қосылса сеанс үзілуі мүмкін. Клиент серверлер кластеріндегі кез келген серверге қосыла алатын болғандықтан, серверлер сеанс күйін сақтау керек болғанда, тұрақтылықты сақтауда ерекше мәселе туындайды. Клиент сеанс бойында бір серверге бағытталуы керек немесе серверлер серверлік жақтанғы сеанс туралы ақпаратты ортақ файлдық жүйе немесе деректер базасы арқылы жіберуі керек. Әйтпесе, клиент сеансты бастаған серверден өзге серверге қайта қосылуы мүмкін, бұл жаңа сервердің ескі серверде сақталған күйге қол жеткізе алмауынан проблемалар тудыруы мүмкін.

Серверлік веб-сессиялар

Серверлік сессиялар ыңғайлы және тиімді, бірақ жүктемені теңестіру/жоғары қолжетімділік жүйелерімен бірге басқару қиынға түседі және кейбір кіріктірілген жүйелерде сақтау болмағандықтан қолдануға келмейді. Жүктемені теңестіру мәселесін ортақ сақтауды пайдалану арқылы немесе кластердегі әрбір клиент пен бір сервердің арасында міндетті түрде байланыс орнату арқылы шешуге болады, бірақ бұл жүйенің тиімділігі мен жүктемені таратуға кедерілтеу тудыруы мүмкін. Жаппай сақтаусыз жүйелерде серверлік сессияларды пайдаланудың бір жолы – сессия деректерін сақтау үшін RAM-ның бір бөлігін резервтеу. Бұл әдіс клиенттер саны шектеулі серверлерге қолданылады (мысалы, маршрутизатор немесе қолжетімділік нүктесі, бір уақытта бір клиентке сирек немесе қатынауға рұқсат етілмейтін жағдайда).

Клиент жағындағы веб-сессиялар

Клиенттік сеанстар серверде көп дерек сақталмай-ақ күйін сақтау үшін cookie файлдарын және криптографиялық техникаларды пайдаланады. Динамикалық веб-бет көрсетілген кезде сервер клиентке (веб-браузерге) ағымдағы күй туралы деректерді cookie түрінде жібереді. Клиент cookie файлын жадына немесе дискіге сақтайды. Әрбір келесі сұраумен клиент cookie файлын серверге қайтарады, ал сервер осы деректерді нақты клиент үшін қолданбаның күйін «есте сақтау» үшін пайдаланып, тиісті жауапты жасайды. Бұл механизм кейбір жағдайларда жақсы жұмыс істесе де, клиентте сақталған деректер пайдаланушының немесе клиенттік компьютерге қол жеткізе алатын бағдарламалық құралдардың араласуына осал. Клиенттік сеанстарды пайдаланғанда құпиялылық пен деректердің толықтығы қамтамасыз етілуі керек:
Құпиялылық: Серверден басқа ешкім сеанс деректерін түсіндіре алмайтын болуы керек. Деректердің толықтығы: Серверден басқа ешкім сеанс деректерін (көкпейілдікпен немесе қасақана түрде) өзгерте алмайтын болуы керек. Расту: Серверден басқа ешкім жарамды сеанстарды бастай алмайтын болуы керек. Мұны іске асыру үшін сервер сеанс деректерін клиентке жібермес бұрын шифрлауы керек, ал басқа тараптардың осы ақпаратты өзгертуіне криптографиялық тәсілдермен жол берілмеуі керек. Күйді әрбір сұраумен алмасу тек cookie көлемі шағын болғанда ғана тиімді. Негізінде, клиенттік сеанстар сервер дискісіндегі орынды әрбір веб-сұрау үшін қажет болатын қосымша өткізу қабілетімен ауыстырады. Сонымен қатар, веб-браузерлер веб-сайтта сақталатын cookie файлдарының саны мен көлемін шектейді. Тиімділікті арттыру және көбірек сеанс деректерін пайдалануға мүмкіндік беру үшін сервер cookie жасамас бұрын деректерді сығуы мүмкін, ал клиент cookie қайтарған кезде оны қайта ашуы мүмкін.

HTTP сеанс токені

Сессия токені – серверден клиентке ағымдағы өзара әрекеттесу сеансын анықтау үшін жасалатын және жіберілетін бірегей идентификатор. Клиент әдетте токенді HTTP cookie ретінде сақтайды және жібереді, сондай-ақ оны GET немесе POST сұраныстарында параметр ретінде жіберуі мүмкін. Сессия токендерін пайдалану себебі – клиент тек идентификатормен жұмыс істейді, ал барлық сессия деректері осы идентификатормен байланысты серверде (әдетте клиенттің тікелей қол жеткізе алмайтын деректер базасында) сақталады. Кейбір бағдарламалау тілдері HTTP cookie-ге атау беру кезінде қолданатын атаулардың мысалдары: JSESSIONID (JSP), PHPSESSID (PHP), CGISESSID (CGI) және ASPSESSIONID (ASP).

Сессияны басқару

Адам-компьютерлік өзара әрекеттесуде сессияны басқару – пайдаланушының компьютерлік жүйемен өзара әрекеттесу сеанстары арасындағы қызметін қадағалау процесі. Десктоптық ортада сессияны басқарудың әдеттегі міндеттеріне ашық қолданбаларды және әрбір қолданба ашқан құжаттарды бақылау кіреді, осылайша пайдаланушы жүйеден шығып, кейін кіргенде сол күйді қалпына келтіруге болады. Веб-сайт үшін сессияны басқару, сессия мерзімі өткен жағдайда (яғни, пайдаланушының белсенділігісіз белгілі бір уақыт өткенде) пайдаланушыдан қайтадан кіруді сұрауды қамтуы мүмкін. Сондай-ақ, ол HTTP сұраныстары арасында серверде ақпаратты сақтау үшін де қолданылады.

Үстел сессиясын басқару

Үстел сессиясын басқарушы – қазіргі қолданыстағы терезелерді және олардың мазмұнын сақтап, қайта қалпына келтіре алатын бағдарлама. Үстел сессиясы – ашық барлық терезелер мен олардың ағымдағы күйі. Linux негізделген жүйелерде сессия басқару X сессия менеджері арқылы жүзеге асырылады. Microsoft Windows жүйелерінде сессия басқаруды Сессия Менеджері Ішкі Жүйесі (smss. exe) қамтамасыз етеді; пайдаланушы сессиясының мүмкіндіктерін twinsplay сияқты үшінші тарап бағдарламаларымен кеңейтуге болады.

Шолғыштың сеансын басқару

Сессияны басқару веб-браузерде ерекше пайдалы, онда пайдаланушы ашық барлық беттер мен параметрлерді сақтап, оларды кейінірек немесе басқа компьютерде қалпына келтіре алады (деректерді тасымалдау қараңыз). Жүйе немесе қолданба қатесінен қалпына келтіруге көмектесу үшін, беттер мен параметрлер келесі іске қосылуда қалпына келтірілуі мүмкін. Google Chrome, Mozilla Firefox, Internet Explorer, OmniWeb және Opera – сессияны басқаруды қолдайтын веб-браузерлердің мысалдары. Сессияны басқару көбінесе cookie-лерді пайдалану арқылы жүзеге асырылады.

Веб-сервердің сеансын басқару

Гипермәтіндік беру протоколы (HTTP) күйсіз болып табылады. Сессияны басқару – веб-дамытушылар қолданатын техника, ол HTTP протоколының күйсіздігін қолдау үшін сессиялық күйді қамтамасыз етеді. Мысалы, егер пайдаланушы веб-серверге аутентификациядан өткеннен кейін, оның келесі HTTP сұрауы (GET немесе POST) веб-серверге пайдаланушының тіркелгісі мен паролін қайтадан сұрауға себеп болмауы керек. Бұл мақсатқа жету үшін қолданылатын әдістер туралы ақпаратты HTTP cookie және сессия идентификаторы бөлімдерінде қараңыз.

Егер бірнеше веб-сервер сессиялық күй туралы ақпаратты бөлісуі қажет болса (мысалы, кластерлік ортадағыдай), сессиялық ақпарат веб-серверлік бағдарламалық жасақтаманы іске асыратын кластерлік түйіндер арасында бөлісуі керек. Кластердегі түйіндер арасында сессиялық күйді бөлісудің әдістеріне мыналар жатады: мүше түйіндерге сессиялық ақпаратты көптеп тарату (осы техниканың мысалы үшін JGroups-ке қараңыз), бөлінген ортақ жад немесе жадты виртуализация пайдаланып серіктес түйінмен сессиялық ақпаратты бөлісу, желілік сокеттер арқылы түйіндер арасында сессиялық ақпаратты бөлісу, бөлінген файлдық жүйе немесе жаһандық файлдық жүйе сияқты ортақ файлдық жүйеде сессиялық ақпаратты сақтау немесе сессиялық ақпаратты кластерден тыс деректер базасында сақтау. Егер сессиялық ақпарат уақытша, өзгермелі деректер болып саналса және транзакцияларды жоққа шығару үшін қажет болмаса, сондай-ақ сәйкестік аудитіне жататын деректерді қамтымаса (мысалы, АҚШ-та Денсаулық сақтандырудың тасымалдануы және есеп беру туралы заңы мен Сарбанес-Оксли заңы сияқты екі заңның мысалдары), сессиялық ақпаратты сақтаудың кез келген әдісін қолдануға болады. Дегенмен, егер сессиялық ақпарат аудиттік сәйкестікке жататын болса, сессияны сақтау, көшіру және кластерлеу үшін қолданылатын әдіске назар аудару қажет. Қызметке бағытталған архитектурада, кеңейтілген таңбалау тілі (XML) хабарламаларымен құрастырылған қарапайым объектілерге қол жеткізу протоколы (SOAP) хабарламаларын тұтынушылық қолданбалар веб-серверлерге сессия құруға себеп болуы үшін пайдалана алады.

Сессияны SMS арқылы басқару

HTTP-тің күйсіз протокол болғаны сияқты, SMS-тің де күйі жоқ. 1999 жылы SMS бәсекелес желілерде өзара үйлесімділікке ие болғанда, мәтіндік хабарламалар әлемдік деңгейде кең таралған байланыс құралына айналуға қадам басқан кезде, түрлі кәсіпорындар SMS арнасын коммерциялық мақсаттарда пайдалануға қызығушылық танытты. Алғашқы қызметтерге сессияны басқару қажет болмады, себебі олар бір жақты байланыс болды (мысалы, 2000 жылы Финляндияда SMS арқылы алғашқы мобильді жаңалықтар сервисі іске қосылды). Бүгінде бұл қолданбалар өзара байланыс (P2P) хабарламаларынан өзгеше, қолданбадан жеке тұлғаға (A2P) хабарламасы деп аталады. Интерактивті корпоративтік қолданбаларды дамыту сессияны басқаруды қажет етті, бірақ SMS GSM стандарттарымен анықталған күйсіз протокол болғандықтан, алғашқы жүзеге асырулар клиенттік жағынан басқарылды, сонда қолданушылар командаларды және қызмет идентификаторларын қолмен енгізді.