Հաղորդագրության url http hsm. Վերահղումներ HTTP-ում

  • Ծրագրավորում
  • Յուրաքանչյուր կիսամյակի սկզբում հավաքվում են ակադեմիական համալսարանի (Սանկտ Պետերբուրգ) MiIT բաժնի մագիստրատուրայի ուսանողները և գործընկեր ընկերությունների ներկայացուցիչներ։ Ներկայացուցիչները խոսում են նախագծերի մասին, որոնց վրա պետք է աշխատել, իսկ ուսանողներն ընտրում են դրանք:

    Parallels Labs-ում կատարված նախագծերից մեկում մեր ուսանողը ուսումնասիրեց վիրտուալ Hardware Security Module (HSM) ներդրման հնարավորությունը: Արդյունքում նա ավելացրեց իր VHSM իրականացումը բաց կոդով OpenVZ նախագծին: Կարդացեք ավելին նրա լուծման մասին կտրվածքի տակ:

    Ինչ է HSM-ը

    Եկեք պատկերացնենք մի ծրագիր, որը ստորագրում է սերվերին ուղարկված տվյալները՝ օգտագործելով մասնավոր բանալի: Թող այս բանալու կորուստը անընդունելի լինի տիրոջ համար։ Ինչպե՞ս պաշտպանել նման արժեքավոր բանալին համակարգի հեռակա կոտրման արդյունքում արտահոսքից: HSM մոտեցումը առաջարկում է, որ մենք ընդհանրապես չպետք է թույլ տանք համակարգի խոցելի հատվածին մուտք գործել բանալու պարունակություն: HSM-ը ֆիզիկական սարք է, որն ինքն է պահում թվային բանալիներ կամ այլ գաղտնի տվյալներ, կառավարում է դրանք, գեներացնում դրանք, ինչպես նաև դրանց միջոցով իրականացնում է գաղտնագրման գործողություններ: Բոլոր գործողությունները տվյալների վրա կատարվում են HSM-ի ներսում, և օգտագործողին հասանելի է միայն այդ գործողությունների արդյունքները: Սարքի ներքին հիշողությունը պաշտպանված է ֆիզիկական մուտքից և կոտրումից։ Ներթափանցելու փորձի ժամանակ բոլոր զգայուն տվյալները ոչնչացվում են:

    HSM-ի օգտագործումը սկսելու համար օգտագործողը պետք է ինքնությունը հաստատի: Եթե ​​նույնականացումը կատարվում է HSM հաճախորդի հավելվածի միջոցով, որն աշխատում է համակարգի խոցելի մասում, ապա հնարավոր է, որ հարձակվողը կալանավորի HSM գաղտնաբառը: Գաղտնագրված գաղտնաբառը թույլ կտա հարձակվողին օգտագործել HSM-ն՝ առանց այնտեղ պահվող գաղտնի տվյալները ստանալու: Այսպիսով, նպատակահարմար է նույնականացում կատարել՝ շրջանցելով համակարգի խոցելի մասը, օրինակ՝ PIN ֆիզիկապես մուտքագրելով:

    HSM-ների օգտագործման հիմնական խոչընդոտը դրանց բարձր արժեքն է: Կախված սարքի դասից՝ գինը կարող է տատանվել $10-ից (USB նշաներ, խելացի քարտեր) մինչև $30,000+ (ապարատային ծածկագրման արագացումով սարքեր, հաքերային պաշտպանություն, բարձր հասանելիության գործառույթներ)։ Ամպային լուծումներ մատակարարողները չեն անտեսել HSM շուկան: Օրինակ, Amazon-ը վաճառում է իր ամպային HSM-ը ամսական $1,373 միջին գնով:

    HSM-ի հիմնական առանձնահատկություններից մեկը համակարգի խոցելի մասի մեկուսացումն է, որն օգտագործում է գաղտնագրման ծառայությունները HSM-ից, որն իրականացնում է այդ ծառայությունները: Նկատի ունեցեք, որ ամպի առանձին օրինակները (վիրտուալ մեքենաներ, կոնտեյներներ և այլն) մեկուսացված են միմյանցից, հետևաբար, եթե HSM գործառույթները տեղափոխենք խոցելի օրինակից դուրս արտաքին աշխարհից մեկուսացված մեկ այլ օրինակ, մենք բավականին ճշգրիտ կվերարտադրենք ֆունկցիոնալությունը: ֆիզիկական HSM. Այս մոտեցումը մենք անվանում ենք վիրտուալ HSM (VHSM): Եկեք նայենք, թե ինչպես է այն իրականացրել մեր ուսանողը OpenVZ նախագծի համար:

    Ինչ է OpenVZ-ը

    OpenVZ-ը Linux-ի մեկ միջուկի վրա մի քանի մեկուսացված Linux օպերացիոն համակարգերի գործարկման տեխնոլոգիաներից մեկն է: Միաժամանակ ասում են, որ յուրաքանչյուր Linux OS աշխատում է առանձին կոնտեյներով։ Չափազանց պարզեցնելու համար, Linux միջուկն իրականում ունի ներկառուցված գործառույթ, որը թույլ է տալիս տարբեր կոնտեյներներին վերագրված հավելվածներին մեկուսացնել այնպես, որ նրանք տեղյակ չլինեն միմյանց գոյության մասին: Հավելվածները չեն կարող փոխել իրենց կոնտեյները: Ավելի լավ մեկուսացման և անվտանգության համար արգելվում է IPC օգտագործող տարբեր կոնտեյներների հավելվածների միջև հաղորդակցությունը: Սա սովորաբար արվում է ցանցային կապերի միջոցով: Արդյունքում մենք տեսնում ենք բեռնարկղերի նմանությունը «սովորական» վիրտուալ մեքենաների հետ: OpenVZ-ը և դրա վրա հիմնված տեխնոլոգիաները տարածված են հոսթինգ պրովայդերների շրջանում՝ VPS ստեղծելու համար: Ակադեմիական համալսարանն արդեն իրականացրել է կոնտեյներների վիրտուալացման հետ կապված նախագծեր։ Օրինակ . Parallels-ը OpenVZ-ի գլխավոր մշակողն է: Միանգամայն բնական էր VHSM-ի ներդրումը հատուկ OpenVZ-ի համար:

    Վիրտուալ HSM ճարտարապետություն

    • Client VE-ն OpenVZ կոնտեյներ է, որտեղ գործարկվում են օգտատերերի հավելվածները, որոնք պահանջում են գաղտնագրման ծառայություններ, ինչպիսիք են կոդավորումը, ստորագրումը և այլն: Կոնտեյները հասանելի է թվային բանալիներ գողանալու համար հեռահար հարձակումների համար:
    • VHSM վիրտուալ միջավայրը (VHSM VE) OpenVZ կոնտեյներ է, որում աշխատում է VHSM սերվերը՝ դեյմոն, որը հրամաններ է ստանում Client VE հավելվածներից և կատարում դրանք: VHSM VE-ում աշխատող այլ հավելվածներ չկան: VHSM VE-ն մեկուսացված է սովորական օգտագործողների կոնտեյներներից՝ օգտագործելով OpenVZ: Բեռնարկղը չունի ցանցային միջերեսներ և հասանելի չէ ցանցի միջոցով:
    • Transport-ը Linux միջուկի մոդուլ է, որը նախատեսված է Client VE-ից հաղորդագրությունները VHSM VE և հակառակը փոխանցելու համար:
    • VHSM API-ն գրադարան է, որն իրականացնում է ստանդարտ PKCS #11 ինտերֆեյսի մի մասը HSM-ի համար, փոխանցում է հավելվածի հրամանները ClientVE-ից դեպի VHSM սերվեր՝ օգտագործելով տրանսպորտը և հրամանի արդյունքը վերադարձնում է ClientVE հավելվածին:
    Դիտարկենք յուրաքանչյուր բաղադրիչ ավելի մանրամասն:

    VHSM վիրտուալ միջավայր

    VHSM սերվերը պատասխանատու է օգտատերերի նույնականացման, գաղտնի տվյալների պահեստի հետ փոխգործակցության և գաղտնագրման գործողություններ կատարելու համար: Բացի VHSM սերվերից, VHSM VE-ն պարունակում է Secure Storage՝ տվյալների բազա, որը պահում է կարևոր տեղեկատվությունը գաղտնագրված ձևով: Յուրաքանչյուր VHSM օգտվող ունի իր սեփական հիմնական բանալին, որով նրա տվյալները կոդավորված են: Հիմնական բանալին ստեղծվում է օգտագործողի գաղտնաբառից՝ օգտագործելով PBKDF2 ֆունկցիան: Աղը, որը փոխանցվում է դրան որպես մուտքագրում, պահվում է տվյալների բազայում չգաղտնագրված: Այսպիսով, VHSM-ը չի պահում օգտագործողի հիմնական բանալին տվյալների բազայում, և PBKDF2-ի օգտագործումը զգալիորեն նվազեցնում է օգտատիրոջ սկզբնական գաղտնաբառի կոպիտ պարտադրման արագությունը, երբ տվյալների բազան գողացվում է:

    Օգտագործողը գրանցված է VHSM-ում ադմինիստրատորի կողմից, որի դերը կարող է լինել կա՛մ անձ, կա՛մ ծրագիր: Երբ օգտվողը գրանցվում է, VHSM-ը ստեղծում է 256-բիթանոց նույնականացման բանալի և գաղտնագրում այն ​​հիմնական բանալիով, օգտագործելով AES-GCM: Հաջորդը, նախքան VHSM-ն օգտագործելը, օգտատերը ինքնությունը հաստատում է մուտք-գաղտնաբառ զույգով: Նույնականացման ընթացքում գաղտնաբառից և աղից ձևավորված հիմնական բանալին օգտագործվում է օգտատիրոջ նույնականացման բանալին վերծանելու համար: GCM-ի օգտագործումը թույլ է տալիս ստուգել հիմնական բանալի ճիշտությունը վերծանման ժամանակ: Հիմնական բանալին ստացվում է օգտագործողի գաղտնաբառից, և, հետևաբար, դրա ճշգրտությունը ստուգելը թույլ է տալիս ստուգել նույնականացման ընթացքում փոխանցված օգտվողի գաղտնաբառը: Հաջող նույնականացումից հետո գաղտնագրման ծառայությունները, որոնք օգտագործում են VHSM-ում պահվող օգտատիրոջ թվային բանալիները, հասանելի են դառնում օգտվողին:

    VHSM-ը պահանջում է բեռնարկղերի հստակ ընտրություն, որոնցից որոշակի օգտվող կարող է գործել VHSM-ով: Կոնտեյների մասին տեղեկատվությունը, որից ստացվում է օգտատիրոջ հրամանը, տրամադրվում է OpenVZ-ի կողմից:

    VHSM API

    Սա C գրադարան է, որը տեղակայված է օգտագործողների բեռնարկղերում և իրականացնում է ստանդարտ PKCS#11 ինտերֆեյսի մի մասը HSM-ի համար, որը թույլ է տալիս կառավարել բանալիները, տվյալները, նիստերը, թվային ստորագրությունները, կոդավորումը և այլն: Եկեք նայենք VHSM API-ի օգտագործման կոնկրետ օրինակին.
    1. Հատուկ բեռնարկղում գտնվող հավելվածը պետք է ստորագրի իր ուղարկած հաղորդագրությունը:
    2. Օգտագործելով VHSM API-ն, հավելվածը ստեղծում է հանրային-մասնավոր բանալիների զույգ, ստանում է մասնավոր բանալու ID-ն և հանրային բանալին:
    3. Հավելվածը փոխանցում է հաղորդագրությունը VHSM API-ին՝ անհրաժեշտ ID-ով անձնական բանալիով ստորագրելու համար: VHSM API-ն վերադարձնում է ստորագրված հաղորդագրությունը:
    4. Ստորագրված հաղորդագրությունը և հանրային բանալին ուղարկվում են հաղորդագրության ստացողին: Այս դեպքում մասնավոր բանալին հասանելի չէ հաճախորդի կոնտեյներին:
    Ծրագրի հաճախորդը նաև ներդրեց OpenSSL շարժիչ և PAM մոդուլ, որը թույլ է տալիս աշխատել VHSM-ի հետ գոյություն ունեցող հավելվածներում, որոնք օգտագործում են OpenSSL և PAM: Այնուամենայնիվ, նախագծի այս հատվածը թույլ է մշակված և ավելի շատ հայեցակարգի ապացույց է:

    VHSM տրանսպորտ

    Ինչպես նշվեց վերևում, տարբեր կոնտեյներներում աշխատող հավելվածները չեն կարող շփվել միմյանց հետ՝ օգտագործելով Linux IPC մեխանիզմները: Հետևաբար, հաճախորդներից հաղորդագրությունները սերվեր և հետ փոխադրելու համար ներդրվել է բեռնվող Linux միջուկի մոդուլ: Մոդուլը գործարկում է Netlink սերվերը միջուկում, և VHSM հաճախորդները և VHSM սերվերը միանում են դրան: Netlink սերվերը պատասխանատու է հաղորդագրությունները աղբյուրից (VHSM հաճախորդ) դեպի նպատակակետ (VHSM սերվեր) և հետ ուղարկելու համար: Հաղորդագրությունների հետ մեկտեղ կցվում է հաղորդագրության աղբյուրի կոնտեյների ID-ն, որպեսզի, օրինակ, սերվերը կարողանա մերժել կոնտեյներների հարցումները, որոնցից որոշակի օգտվողին արգելվում է օգտագործել VHSM:

    Եզրակացություն

    VHSM-ի ստեղծման հիմնական նպատակն էր վերացնել օգտվողների կոնտեյներով աշխատող օգտատերերի հավելվածների հիշողությունից գաղտնի բանալիներ գողանալու հնարավորությունը։ Այս նպատակը իրագործվեց, քանի որ գաղտնի տվյալները հասանելի են միայն մեկուսացված կոնտեյներով (VHSM VE): Մեկուսացումն իրականացվում է OpenVZ-ի կողմից:

    VHSM VE-ից տվյալների բազայի արտահոսքը չի հանգեցնի գաղտնի տվյալների անհապաղ կորստի, քանի որ դրանք պահվում են կոդավորված ձևով: Գաղտնագրման բանալին չի պահվում տվյալների բազայում, այլ ստեղծվում է նույնականացման ընթացքում փոխանցված օգտագործողի գաղտնաբառից:
    Ինչպես ցանկացած տեղեկատվական անվտանգության տեխնոլոգիա, ներկայացված լուծումը ևս մեկ խոչընդոտ է հարձակվողի համար և չի ապահովում ամբողջական տեղեկատվության պաշտպանություն:

    Անգլերենում այն ​​նշանակում է Uniform Resource Locator, որը ռուսերեն թարգմանաբար նշանակում է «միասնական ռեսուրսների որոնիչ»: Ռուսերենում այս հապավումը սովորաբար արտասանվում է որպես «u-er-el», «yu-ar-el» կամ պարզապես «url»: Փորձենք ավելի մանրամասն հասկանալ, թե ինչ է URL-ը: Ինտերնետում յուրաքանչյուր փաստաթուղթ (վեբ էջ) ունի որոշակի տեղ, որը կարելի է ճշգրիտ նշել: Օգտագործելով URL, նշվում է կոնկրետ վեբ էջ տանող ճշգրիտ ուղին: Ճիշտ այնպես, ինչպես դուք նշում եք ձեր համակարգչի ցանկացած ֆայլի ուղին, URL-ը կառուցվում է ըստ որոշակի օրինաչափության, որը սովորաբար այսպիսի տեսք ունի.

    http://name.ru/papka/document.html

    Այնտեղ, որտեղ http - ցույց է տալիս արձանագրության տեսակը, որի միջոցով փոխանցվում են տվյալները, name.ru - նշանակում է կայքի տիրույթի անունը, papka-ն թղթապանակ է, իսկ document.html-ը հատուկ էջ է, որին տանում է այս URL-ը:

    Քանի որ մեր http://name.ru/papka/document.html URL-ը ֆիկտիվ է, տրված է միայն որպես օրինակ և, համապատասխանաբար, չի տանում դեպի որևէ վեբ էջ, ապա եթե փորձենք սեղմել դրա վրա, մենք կլինենք. տեղափոխվել է սխալի մասին տեղեկատվություն պարունակող էջ: Այն կարող է տարբեր տեսք ունենալ, բայց մենք անպայման կտեսնենք «404-ը չի գտնվել» մակագրությունը: «Չգտնվեց» թարգմանության մեջ նշանակում է «չի գտնվել», իսկ 404 էջի հայտնվելը նշանակում է, որ վեբ էջի URL հասցեն մուտքագրվել է թերի, սխալ (սխալով կամ տառասխալով), կամ պահանջվող էջն այլևս գտնվում է հասցեում։ այս հասցեն, քանի որ այն ջնջվել կամ վերանվանվել է:

    404-ի սխալը հաճախ տեղի է ունենում, երբ սեղմում եք մեկ այլ էջում գտնված հղման վրա, և հղումը հնացած է: Կայքի հեղինակը կարող էր տեղափոխել մեզ անհրաժեշտ փաստաթուղթը, վերանվանել այն կամ ջնջել: Ի՞նչ անել, եթե անցման ժամանակ հայտնվի 404 էջ: Նախ, ստուգեք, որ URL-ը ճիշտ է, եթե մենք գիտենք այն: Ուղղեք ցանկացած սխալ կամ տառասխալ և նորից փորձեք: Եթե ​​անծանոթ ռեսուրսի հղմանը հետևելիս առաջանում է 404 սխալ, դուք պետք է փորձեք գնալ գլխավոր էջ և օգտագործել կայքի որոնումը. հնարավոր է, որ անհրաժեշտ տեղեկատվությունը դեռ գտնվի:

    Ի դեպ, վեբկայքերի շատ ծրագրավորողներ համոզված են, որ իրենց կայքի 404 էջը սարսափելի անհույս տեսք չունի: Այստեղ տեղադրված է զվարճալի նկարով հումորային տեքստ՝ կորցրած օգտատիրոջը ուրախացնելու համար, ինչպես նաև հղումներ դեպի հիմնական կայքը, որոնման տողը կամ կայքի քարտեզը։ Եթե ​​404 էջը անբարյացակամ է թվում, և դրան հետևելու հղումներ չկան, կարող եք փորձել ձեռքով կրճատել URL-ը, թողնելով միայն կայքի անունը. մեր օրինակում այն ​​կլինի http://name.ru/ և այդպիսով փորձել ստանալ դեպի կայքի գլխավոր էջ, որտեղից կարող եք գնալ դեպի ձեր փնտրած էջը։

    URL(URL, անգլերեն Uniform Resource Locator-ից) - Ինտերնետում կայքի տեղադրման ինդեքս: URL-ը պարունակում է տիրույթի անունը և դեպի էջի ուղին, ներառյալ այդ էջի ֆայլի անունը:

    Թիմ Բերներս-Լին (Ժնևի Միջուկային պատերազմի եվրոպական խորհրդի անդամ) 1990 թվականին հորինել է URL-ը, որն այն ժամանակ պարզապես համակարգում ֆայլեր պահելու հասցե էր։

    Մեծ առավելությունների հետ մեկտեղ (ինտերնետ նավիգացիայի առկայություն) էջի URL-ն ունի նաև թերություն՝ այն աշխատում է միայն լատինական տառերով, թվերով և որոշ նշաններով։ Եթե ​​Ձեզ անհրաժեշտ է օգտագործել, օրինակ, կիրիլիցա, ապա URL-ը պետք է վերակոդավորվի հատուկ ձևով..ru/wiki/%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0 %BA%D0%BE %D0%B5-url/: Նման կոդավորումը տեղի է ունենում երկու քայլով. նախ՝ յուրաքանչյուր նիշը վերածվում է երկու բայթից բաղկացած հաջորդականության, այնուհետև յուրաքանչյուր բայթ վերագրվում է տասնվեցական:

    Որքա՞ն է նշանակում կայքի URL-ն SEO-ում:

    Որոնման համակարգերը հաշվի են առնում URL-ներում հիմնական արտահայտությունների առաջացումը: Ամենամեծ ազդեցությունը գործադրվում է տիրույթի հասցեում և ենթադոմեյններում տեղի ունեցող երևույթները և էջի ֆայլի անվանումը ավելի քիչ, բայց դեռևս շատ կարևոր դեր են խաղում: Այդ կապակցությամբ համացանցում ակտիվորեն զարգանում է եկամուտների մի տեսակ, որը կոչվում է կիբերսքվատինգ։ Դրա էությունն այն է, որ գրանցվեն դոմենային անուններ շուկայական արժեքով` հետագա ուռճացված գնով վերավաճառքի նպատակով:

    HTTP-ը բաշխված համակարգերի միջև հիպերտեքստի փոխանցման արձանագրություն է: Փաստորեն, http-ը ժամանակակից վեբի հիմնարար տարրն է: Որպես ինքն իրեն հարգող վեբ մշակողներ, մենք պետք է հնարավորինս շատ իմանանք դրա մասին:

    Եկեք այս արձանագրությանը նայենք մեր մասնագիտության ակնոցով։ Առաջին մասում մենք կանդրադառնանք հիմունքներին և կանդրադառնանք հարցումներին/պատասխաններին: Հաջորդ հոդվածում մենք կանդրադառնանք ավելի մանրամասն առանձնահատկություններին, ինչպիսիք են քեշավորումը, կապի մշակումը և իսկությունը:

    Նաև այս հոդվածում ես հիմնականում կանդրադառնամ RFC 2616 ստանդարտին. Hypertext Transfer Protocol - HTTP/1.1:

    HTTP հիմունքներ

    HTTP-ն հնարավորություն է տալիս հաղորդակցվել բազմաթիվ հոսթների և հաճախորդների միջև և աջակցում է ցանցի մի շարք պարամետրեր:

    Հիմնականում TCP/IP-ն օգտագործվում է հաղորդակցության համար, բայց սա միակ հնարավոր տարբերակը չէ։ Լռելյայնորեն, TCP/IP-ն օգտագործում է 80 նավահանգիստը, բայց մյուսները կարող են օգտագործվել:

    Հոսթի և հաճախորդի միջև հաղորդակցությունը տեղի է ունենում երկու փուլով՝ հարցում և պատասխան: Հաճախորդը ստեղծում է HTTP հարցում, որին ի պատասխան սերվերը տալիս է պատասխան (հաղորդագրություն): Մի փոքր ուշ, մենք ավելի մանրամասն կանդրադառնանք աշխատանքի այս սխեմային:

    HTTP արձանագրության ներկայիս տարբերակը 1.1 է, որում ներդրվել են որոշ նոր հնարավորություններ։ Իմ կարծիքով, դրանցից ամենակարևորներն են՝ անընդհատ բաց կապի աջակցություն, տվյալների փոխանցման նոր մեխանիզմ՝ մասնատված փոխանցման կոդավորում, նոր վերնագրեր՝ քեշավորման համար։ Այս հոդվածի երկրորդ մասում մենք կանդրադառնանք դրանցից մի քանիսին:

    URL

    Վեբ հաղորդակցության առանցքը հարցումն է, որն ուղարկվում է Uniform Resource Locator (URL) միջոցով: Համոզված եմ, որ դուք արդեն գիտեք, թե ինչ է URL-ը, բայց ամբողջականության համար որոշեցի մի քանի բառ ասել. URL-ի կառուցվածքը շատ պարզ է և բաղկացած է հետևյալ բաղադրիչներից.

    Արձանագրությունը կարող է լինել կա՛մ http՝ սովորական կապերի համար, կա՛մ https՝ տվյալների ավելի անվտանգ փոխանակման համար: Լռելյայն նավահանգիստը 80 է: Դրան հաջորդում է դեպի սերվերի ռեսուրսի ուղին և պարամետրերի շղթան:

    Մեթոդներ

    Օգտագործելով URL, մենք սահմանում ենք այն հոսթի ճշգրիտ անունը, որի հետ ցանկանում ենք շփվել, բայց այն գործողությունը, որը մենք պետք է կատարենք, կարող է հաղորդվել միայն HTTP մեթոդի միջոցով: Իհարկե, կան մի քանի տեսակի գործողություններ, որոնք մենք կարող ենք ձեռնարկել: HTTP-ն իրականացնում է ամենաանհրաժեշտները, որոնք հարմար են հավելվածների մեծ մասի կարիքներին:

    Առկա մեթոդներ.

    ՍՏԱՆԱԼՄուտք գործեք գոյություն ունեցող ռեսուրս: URL-ում նշվում են բոլոր անհրաժեշտ տեղեկությունները, որպեսզի սերվերը կարողանա գտնել և վերադարձնել պահանջվող ռեսուրսը որպես պատասխան:

    ՓՈՍՏՕգտագործվում է նոր ռեսուրս ստեղծելու համար: POST հարցումը սովորաբար պարունակում է բոլոր անհրաժեշտ տեղեկությունները նոր ռեսուրս ստեղծելու համար:

    ԴՆԵԼԹարմացրեք ընթացիկ ռեսուրսը: PUT հարցումը պարունակում է թարմացվող տվյալները:

    ՋՆՋԵԼՕգտագործվում է գոյություն ունեցող ռեսուրսը ջնջելու համար:

    Այս մեթոդները ամենատարածվածն են և առավել հաճախ օգտագործվում են տարբեր գործիքների և շրջանակների կողմից: Որոշ դեպքերում PUT և DELETE հարցումներն ուղարկվում են POST ուղարկելով, որի բովանդակությունը ցույց է տալիս այն գործողությունը, որը պետք է կատարվի ռեսուրսի վրա՝ ստեղծել, թարմացնել կամ ջնջել:

    HTTP-ն աջակցում է նաև այլ մեթոդների.

    ԳԼՈՒԽ GET-ի նման: Տարբերությունն այն է, որ այս տեսակի հարցումով ոչ մի հաղորդագրություն չի փոխանցվում: Սերվերը ստանում է միայն վերնագրերը: Օգտագործվում է, օրինակ, որոշելու համար, թե արդյոք ռեսուրսը փոփոխվել է:

    ՀԵՏՔՀաղորդման ընթացքում հարցումն անցնում է բազմաթիվ մուտքի կետերի և պրոքսի սերվերների միջով, որոնցից յուրաքանչյուրը մուտքագրում է իր տեղեկատվությունը՝ IP, DNS: Օգտագործելով այս մեթոդը, դուք կարող եք տեսնել բոլոր միջանկյալ տեղեկությունները:

    ՏԱՐԲԵՐԱԿՆԵՐՕգտագործվում է որոշակի ռեսուրսի համար սերվերի հնարավորությունները, կարգավորումները և կազմաձևումը որոշելու համար:

    Կարգավիճակի կոդերը

    Հաճախորդի խնդրանքին ի պատասխան՝ սերվերը պատասխան է ուղարկում, որը պարունակում է նաև կարգավիճակի կոդը: Այս կոդը ունի հատուկ նշանակություն, որպեսզի հաճախորդը կարողանա ավելի հստակ հասկանալ, թե ինչպես մեկնաբանել պատասխանը.

    1xx: Տեղեկատվական հաղորդագրություններ

    Այս կոդերի հավաքածուն ներկայացվել է HTTP/1.1-ում: Սերվերը կարող է ուղարկել ձևի հարցում՝ սպասել՝ 100-շարունակել, ինչը նշանակում է, որ հաճախորդը դեռ ուղարկում է հարցումի մնացած մասը: HTTP/1.0 աշխատող հաճախորդները անտեսում են այս վերնագրերը:

    2xx: Հաջողության հաղորդագրություններ

    Եթե ​​հաճախորդը ստացել է կոդը 2xx շարքից, ապա հարցումը հաջողությամբ ուղարկվել է: Ամենատարածված տարբերակն է 200 OK: GET հարցումով սերվերը պատասխան է ուղարկում հաղորդագրության հիմնական մասում: Կան նաև այլ հնարավոր պատասխաններ.

    • 202 ԸնդունվածՀարցումն ընդունված է, բայց պատասխանում կարող է չպարունակել ռեսուրս: Սա օգտակար է սերվերի կողմից ասինխրոն հարցումների համար: Սերվերը որոշում է՝ ուղարկե՞լ ռեսուրսը, թե՞ ոչ:
    • 204 Բովանդակություն չկաՊատասխանող մարմնում հաղորդագրություն չկա:
    • 205 Վերականգնել բովանդակությունըՀանձնարարում է սերվերին վերականգնել փաստաթղթի ներկայացումը:
    • 206 Մասնակի բովանդակությունՊատասխանը պարունակում է բովանդակության միայն մի մասը: Լրացուցիչ վերնագրերը որոշում են բովանդակության և այլ տեղեկատվության ընդհանուր երկարությունը:

    3xx: Վերահղում

    Մի տեսակ հաղորդագրություն հաճախորդին ևս մեկ գործողություն կատարելու անհրաժեշտության մասին: Ամենատարածված օգտագործման դեպքը հաճախորդին այլ հասցե վերահղելն է:

    • 301 Մշտապես տեղափոխվել էՌեսուրսը այժմ կարելի է գտնել մեկ այլ URL-ում:
    • 303 Տե՛ս ԱյլՌեսուրսը ժամանակավորապես կարելի է գտնել մեկ այլ URL-ում: Տեղադրության վերնագիրը պարունակում է ժամանակավոր URL:
    • 304 ՉփոփոխվածՍերվերը որոշում է, որ ռեսուրսը չի փոփոխվել, և հաճախորդը պետք է օգտագործի պատասխանի քեշավորված տարբերակը: Տեղեկատվության ինքնությունը ստուգելու համար օգտագործվում է ETag (Entity Tag hash);

    4xx. Հաճախորդի սխալներ

    Այս հաղորդագրության դասը օգտագործվում է սերվերի կողմից, եթե նա որոշի, որ հարցումն ուղարկվել է սխալմամբ: Ամենատարածված կոդը 404 Not Found է: Սա նշանակում է, որ ռեսուրսը չի գտնվել սերվերում: Այլ հնարավոր կոդերը.

    • 400 Վատ խնդրանքՀարցը սխալ է ձևավորվել։
    • 401 ՉլիազորվածՀարցում կատարելու համար անհրաժեշտ է նույնականացում: Տեղեկատվությունը փոխանցվում է Թույլտվության վերնագրի միջոցով:
    • 403 ԱրգելվածՍերվերը թույլ չի տվել մուտք գործել ռեսուրս:
    • 405 մեթոդը չի թույլատրվումՌեսուրս մուտք գործելու համար օգտագործվել է անվավեր HTTP մեթոդ:
    • 409 Հակամարտությունսերվերը չի կարող ամբողջությամբ մշակել հարցումը, քանի որ փորձում է փոխել ռեսուրսի ավելի նոր տարբերակը: Սա հաճախ տեղի է ունենում PUT հարցումների դեպքում:

    5xx: Սերվերի սխալներ

    Կոդերի մի շարք, որոնք օգտագործվում են հարցումը մշակելիս սերվերի սխալը հայտնաբերելու համար: Ամենատարածվածը՝ 500 ներքին սերվերի սխալ: Այլ տարբերակներ.

    • 501 Չի իրականացվելՍերվերը չի աջակցում պահանջվող ֆունկցիոնալությանը:
    • 503 Ծառայությունն անհասանելի էՍա կարող է տեղի ունենալ, եթե սերվերը սխալ ունի կամ գերբեռնված է: Սովորաբար այս դեպքում սերվերը չի արձագանքում, և պատասխանի համար տրված ժամանակը սպառվում է:

    Հարցման/պատասխանի հաղորդագրության ձևաչափեր

    Հետևյալ նկարում կարող եք տեսնել հաճախորդի կողմից հարցում ուղարկելու, սերվերի կողմից պատասխանի մշակման և ուղարկման սխեմատիկ գործընթաց:

    Եկեք նայենք HTTP-ի միջոցով փոխանցված հաղորդագրության կառուցվածքին.

    Հաղորդագրություն = *() CRLF [ ] = Request-Line | Status-Line = Field-Name ":" Field-Value

    Հաղորդագրության վերնագրի և հիմնականի միջև պետք է լինի դատարկ գիծ: Կարող են լինել մի քանի վերնագրեր.

    Արձագանքման մարմինը կարող է պարունակել ամբողջ տեղեկատվությունը կամ դրա մի մասը, եթե համապատասխան հատկանիշը միացված է (Փոխանցում-կոդավորում՝ chunked): HTTP/1.1-ն աջակցում է նաև Transfer-Encoding վերնագիրը:

    Ընդհանուր վերնագրեր

    Ահա վերնագրերի մի քանի տեսակներ, որոնք օգտագործվում են ինչպես հարցումներում, այնպես էլ պատասխաններում.

    General-header = Cache-Control | Միացում | Ամսաթիվ | Պրագմա | Տրեյլեր | Փոխանցում-Կոդավորում | Թարմացում | միջոցով | Զգուշացում

    Այս հոդվածում մենք արդեն անդրադարձել ենք որոշ բաների, մի քանիսը ավելի մանրամասն կքննարկենք երկրորդ մասում:

    Via վերնագիրը օգտագործվում է TRACE հարցումում և թարմացվում է բոլոր պրոքսի սերվերների կողմից:

    Պրագմա վերնագիրն օգտագործվում է հատուկ վերնագրերը թվարկելու համար: Օրինակ, Pragma: no-cache նույնն է, ինչ Cache-Control: no-cache: Այս մասին ավելի շատ կխոսենք երկրորդ մասում:

    Ամսաթիվ վերնագիրն օգտագործվում է հարցումը/պատասխանի ամսաթիվը և ժամը պահելու համար:

    Upgrade վերնագիրն օգտագործվում է արձանագրությունը փոխելու համար:

    Transfer-Encoding-ը նախատեսված է պատասխանը մի քանի կտորների բաժանելու համար՝ օգտագործելով Transfer-Encoding. chunked: Սա նոր հնարավորություն է HTTP/1.1-ում:

    Կազմակերպության վերնագրեր

    Կազմակերպության վերնագրերը փոխանցում են բովանդակության մասին մետա տեղեկատվություն.

    Entity-header = Թույլատրել | Բովանդակություն-Կոդավորում | Բովանդակություն-Լեզու | Բովանդակություն-Երկարություն | Բովանդակություն-Գտնվելու վայրը | Բովանդակություն-MD5 | Բովանդակության միջակայք | Բովանդակություն-Տեսակ | Սպառվում է | Վերջին փոփոխված

    Բովանդակության նախածանցով բոլոր վերնագրերը տեղեկատվություն են տրամադրում հաղորդագրության կառուցվածքի, կոդավորման և չափի մասին:

    Expires վերնագիրը պարունակում է կազմակերպության գործողության ժամկետը և ամսաթիվը: «Երբեք չի սպառվում» արժեքը նշանակում է ժամանակ + 1 կոդ ընթացիկ պահից: Վերջին փոփոխությունը պարունակում է կազմակերպության վերջին փոփոխության ժամանակը և ամսաթիվը:

    Օգտագործելով այս վերնագրերը, կարող եք նշել ձեր առաջադրանքների համար անհրաժեշտ տեղեկատվությունը:

    Հարցման ձևաչափ

    Հարցումն այսպիսի տեսք ունի.

    Request-Line = Մեթոդ SP URI SP HTTP-Տարբերակ CRLF մեթոդ = «OPTIONS» | «ԳԼԽԱՎՈՐ» | «ԳԵՏ» | «ՓՈՍՏ» | «ՊՈՒՏ» | «ՋՆԵԼ» | «ՀԵՏՔ»

    SP-ն բաժանարարն է նշանների միջև: HTTP տարբերակը նշված է HTTP-տարբերակում: Փաստացի հարցումն այսպիսի տեսք ունի.

    GET /articles/http-basics HTTP/1.1 Հոսթ՝ www.articles.com Միացում՝ keep-live Cache-Control՝ առանց քեշի Պրագմա՝ առանց քեշի Ընդունել՝ text/html,application/xhtml+xml,application/xml; q=0.9,*/*;q=0.8

    Հնարավոր հարցումների վերնագրերի ցանկ.

    Request-header = Ընդունել | Ընդունել-Charset | Ընդունել-կոդավորում | Ընդունել-Լեզու | Թույլտվություն | Ակնկալվում է | Սկսած | Հյուրընկալող | Եթե-Համապատասխանություն | Եթե-Փոփոխված-Քանի որ | Եթե-Չհամապատասխանում | Եթե-Ռեյնջ | Եթե-Չփոփոխված-Քանի որ | Մաքս-Հարձակվողներ | Վստահված անձ-Լիազորում | Շրջանակ | Ուղղորդող | TE | Օգտատեր-Գործակալ

    Ընդունել վերնագիրը նշում է աջակցվող մնջախաղի տեսակները, լեզուն և նիշերի կոդավորումը: From, Host, Referer և User-Agent վերնագրերը պարունակում են տեղեկատվություն հաճախորդի մասին: Եթե- նախածանցները նախատեսված են պայմաններ ստեղծելու համար: Եթե ​​պայմանը չի անցնում, 304 Not Modified սխալ կառաջանա:

    Արձագանքման ձևաչափ

    Պատասխանի ձևաչափը տարբերվում է միայն կարգավիճակից և վերնագրերի մի շարքից: Կարգավիճակն ունի հետևյալ տեսքը.

    Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

    • HTTP տարբերակ
    • Կարգավիճակի կոդը
    • Մարդու կողմից ընթեռնելի կարգավիճակի հաղորդագրություն

    Նորմալ կարգավիճակը նման է հետևյալին.

    HTTP/1.1 200 OK

    Պատասխանների վերնագրերը կարող են լինել հետևյալը.

    Արձագանք-վերնագիր = Ընդունել միջակայքերը | Տարիքը | ETag | Գտնվելու վայրը | Proxy-Authenticate | Կրկին փորձ - Հետո | Սերվեր | Տարբերակել | WWW-Նույնականացում

    • Տարիքը վայրկյաններով այն ժամանակն է, երբ հաղորդագրությունը ստեղծվել է սերվերում:
    • ETag MD5 սուբյեկտներ՝ պատասխանում փոփոխություններ և փոփոխություններ ստուգելու համար:
    • Տեղադրությունը օգտագործվում է վերահղման համար և պարունակում է նոր URL:
    • Սերվերը նշում է սերվերը, որտեղ ստեղծվել է պատասխանը:

    Կարծում եմ՝ այսօրվա համար դա բավական տեսություն է։ Այժմ եկեք տեսնենք այն գործիքները, որոնք կարող ենք օգտագործել HTTP հաղորդագրությունները վերահսկելու համար:

    HTTP տրաֆիկի հայտնաբերման գործիքներ

    Կան բազմաթիվ գործիքներ HTTP տրաֆիկի մոնիտորինգի համար: Ահա դրանցից մի քանիսը.

    Ամենատարածվածը Chrome Developers Tools-ն է.

    Եթե ​​մենք խոսում ենք վրիպազերծողի մասին, կարող եք օգտագործել Fiddler-ը.

    HTTP տրաֆիկը վերահսկելու համար ձեզ հարկավոր է curl, tcpdump և tshark:

    Գրադարաններ HTTP-ի հետ աշխատելու համար՝ jQuery AJAX

    Քանի որ jQuery-ն այդքան տարածված է, այն նաև ունի գործիքներ՝ AJAX հարցումների համար HTTP պատասխանները մշակելու համար: jQuery.ajax(settings) մասին տեղեկությունները կարելի է գտնել պաշտոնական կայքում:

    Անցնելով կարգավորումների օբյեկտ և օգտագործելով BeforeSend callback ֆունկցիան, մենք կարող ենք սահմանել հարցումների վերնագրերը՝ օգտագործելով setRequestHeader() մեթոդը:

    $.ajax(( url՝ «http://www.articles.com/latest», տիպ՝ «GET», նախքան Ուղարկելը՝ ֆունկցիա (jqXHR) ( jqXHR.setRequestHeader ("Accepts-Language", "en-US,en" ");))));

    Եթե ​​ցանկանում եք մշակել հարցման կարգավիճակը, կարող եք դա անել այսպես.

    $.ajax(( statusCode: ( 404: function() ( alert("էջը չի գտնվել"); ) ) ));

    Ներքեւի գիծ

    Ահա այն, HTTP արձանագրության հիմունքների շրջայց: Երկրորդ մասում կլինեն ավելի հետաքրքիր փաստեր և օրինակներ։

    Համացանցում աշխատող գրեթե յուրաքանչյուր օգտատեր հանդիպում է հղումների URL, URL-ներ, հղումներ մտնելու և հղումն օգտագործելու հրավերներ: Նրանց համար, ովքեր անծանոթ են կամ նոր են այս հասկացություններին, ես որոշեցի գրել նյութ, որտեղ ես ձեզ կասեմ, թե ինչ է URL-ը, ինչպես օգտագործել URL-ը, ինչ մասերի է բաժանված URL-ը, ինչպես նաև կբացատրեմ, թե ինչպես գտնել ճիշտ հղումը ինտերնետում:

    URL- սա հասցե է, որը ցույց է տալիս ինտերնետ ռեսուրսի ուղին, որի վրա գտնվում են տարբեր տեսակի ֆայլեր (փաստաթղթեր, նկարներ, տեսանյութեր, աուդիո և այլն): Հապավման URL-ը նշանակում է «Uniform Resource Locator», ռուսերենում այն ​​սովորաբար արտասանվում է որպես «url», «yu-ar-el», «u-er-el», հաճախ պարզապես օգտագործվում է «link» բառը:

    Հիշում եմ, որ որոշ ժամանակ առաջ փնտրեցի, թե ինչ է URL հասցեն, որպեսզի գրագետ պատմեմ եղբորս հայեցակարգի բոլոր նրբությունները: Եվ ես ինքս հետաքրքրվեցի, երբ հայտնվեց այս տերմինը։

    URL-ի հայեցակարգի հեղինակը բրիտանացի Թիմ Բեռնս-Լին է, և հենց գյուտը (1990թ.) որակական թռիչք է գրանցել ինտերնետ տեխնոլոգիաների զարգացման գործում։ Այժմ URL-ը ցանցի գրեթե բոլոր ռեսուրսների հասցեների նույնացուցիչն է, մինչդեռ URL տերմինն ինքնին աստիճանաբար փոխարինվում է ավելի ընդարձակ URI տերմինով (Uniform Resource Identifier):

    Սոցիալական լրատվամիջոցների հրապարակումների URL-ները


    Ի՞նչ մասերի է բաժանված URL-ը:

    URL-ի դասական օրինակը նման է հետևյալին.

    http://site_address/folder/page.html

    Ինչպես տեսնում եք, URL-ը բաժանված է մի քանի մասի.

    Առաջին մաս (http://)սահմանում է օգտագործվող արձանագրությունը: Պարզ ասած, այն խոսում է այն մեթոդի մասին, որը կօգտագործվի ցանկալի ռեսուրսից օգտվելու համար:

    Այս URL-ում օգտագործվող «HTTP» արձանագրությունը նշանակում է «HyperText Transfer Protocol» և այն օգտագործվում է դեպքերի ճնշող մեծամասնությունում: Բայց դուք կարող եք գտնել URL-ներ՝ օգտագործելով այլ արձանագրություններ, օրինակ՝ FTP (File Transfer Protocol), HTTPS (HyperText Transfer Protocol Secure – HTTP-ի անվտանգ, կոդավորված տարբերակ), mailto (էլ․ հասցե) և այլն։

    Ընդհանուր առմամբ, կան URL արձանագրությունների մի քանի տասնյակ տեսակներ՝ ftp, http, rtmp, rtsp, https, gopher, mailto, news, nntp, smb, prospero, telnet, wais, xmpp, ֆայլ, տվյալներ և այլն, բայց սովորաբար մի քանիսը: Օգտագործված են իմ կողմից մի փոքր ավելի բարձր թվարկված հիմնականները։

    Երկրորդ մաս(Կայքի հասցեն) տիրույթի անունն է: Տեխնիկապես դա ընդամենը նշանների, տառերի կամ բառերի համակցություն է, որը թույլ է տալիս մարդկանց հեշտությամբ հիշել իրենց սիրելի էջի հասցեն: Հակառակ դեպքում, ռեսուրսների հղումները նման կլինեն http://192.168.384..

    Երրորդ մաս (թղթապանակ/page.html)սովորաբար մատնանշում է ինչ-որ ռեսուրսների էջ, որը օգտվողը ցանկանում է մուտք գործել: Այն կարող է լինել պարզապես անվան տեսքով, կամ թղթապանակների հավաքածուի միջոցով դեպի կոնկրետ ֆայլ տանող ճանապարհի տեսքով, վերջիններս սովորաբար բաժանվում են կտրատող (/): Ինտերնետ էջերի ընդլայնումը կարող է տարբեր լինել՝ php, htm, html, shtml, asp և մի շարք այլ:

    Այս բացատրությունները տեսողականորեն կարելի է տեսնել տեսանյութում.

    Դոմենի անունից առաջ օգտագործվող հապավումները www(World Wide Web) պարտադիր չէ, առանց դրա էլ կարող եք օգտագործել կայքի հասցեն, կայքը անպայման կբացվի։

    URL հասցեի օգտագործման առանձնահատկությունները

    Եթե ​​օգտագործողի կողմից նշված URL-ը ճիշտ չէ, ապա համակարգը մեզ ցույց կտա 404 սխալ՝ «Էջը չի գտնվել» նշումով: Սա նշանակում է, որ օգտատերը մուտքագրել է կամ սխալ կամ հնացած էջի հասցեն, հետևաբար հասցեն մուտքագրելիս անհրաժեշտ է ճշգրտություն, ճշգրտություն և ուշադրություն: URL մուտքագրելիս խորհուրդ կտայի օգտագործել , պատճենել էջի հասցեն՝ օգտագործելով «copy/paste» գործառույթները: Կարող եք նաև փորձել մուտքագրել կրճատված URL՝ միայն կայքի հիմնական անվան տեսքով (առանց թղթապանակների և էջերի), իսկ կայքի գլխավոր էջում փնտրել մեզ անհրաժեշտ էջի հղումը։

    URL-ների թերությունները

    Նկարագրելուց հետո, որ սա URL հղում է, եկեք դիտարկենք URL-ի բոլոր թերությունները: Ինտերնետում նավարկելու հեշտացման առավելությունների հետ մեկտեղ URL-ները ունեն իրենց թերությունները: Սա աշխատում է միայն թվերի, լատինատառերի և որոշ նշանների հետ, կիրիլիցայի այբուբենը սովորաբար պետք է վերակոդավորվի (URL կոդավորում) երկու փուլով, որոնցից առաջինում յուրաքանչյուր կիրիլյան նիշը վերածվում է երկու բայթի, այնուհետև բայթերից յուրաքանչյուրը վերագրվում է՝ օգտագործելով։ տասնվեցական համակարգ.

    Բացի այդ, խորհուրդ է տրվում հասցեում օգտագործել հիմնականում փոքր տառեր (որոշ Unix համակարգեր իրենց մեծատառ տարբերակները կընկալեն որպես տարբեր նիշեր, ինչը կարող է հանգեցնել էջը բացելու սխալի), ինչպես նաև արգելվում է URL հասցեներում բացատներ օգտագործել։

    Ինչպես գտնել URL հասցե: Էջանիշեր.

    Պահանջվող URL հասցեն գտնելու համար կարող եք օգտագործել որոնման համակարգերը, որոնցում պետք է մուտքագրեք ձեր որոնման հիմնաբառերը: Օրինակ, եթե Ձեզ անհրաժեշտ է ֆիլմ, ապա մուտքագրեք դրա անունը, կամ դերասանների անունները, եթե երաժշտություն՝ կատարողների անունները և կոմպոզիցիայի անվանումը: Սեղմելով «Որոնում» դուք կստանաք բազմաթիվ կայքեր URL հասցեներով, որոնց վրա սեղմելով կարող եք գտնել ցանկալի արդյունքը:

    Էջի URL-ը, որում դուք ներկայումս գտնվում եք, գտնվում է ձեր դիտարկիչի հասցեագոտու վերևում:

    Ձեզ անհրաժեշտ էջի URL-ը հիշելու համար օգտագործեք ձեր բրաուզերի էջանիշերի տողը: Օրինակ՝ հայտնի Mozilla Firefox բրաուզերում աստղանիշի տեսքով էջանիշների պատկերակը գտնվում է վերևի աջում՝ հասցեի տողի մակարդակում: Սեղմելով դրա վրա՝ դուք կկարողանաք մուտքագրել ձեր էջանիշի անունը, ինչպես նաև թղթապանակ, որտեղ տեղադրեք էջանիշները (ես սովորաբար օգտագործում եմ հատուկ էջանիշների վահանակ, որը թույլ է տալիս մուտք գործել դրանցից որևէ մեկին մեկ սեղմումով):

    Եզրակացություն

    URL-ների օգտագործումը զգալիորեն հեշտացրել է համացանցում զննումը, ինչը թույլ է տալիս շատ օգտատերերի հեշտությամբ և արագ մուտք գործել իրենց անհրաժեշտ կայքեր: Եթե ​​դուք դեռ ունեք հարցեր «Ի՞նչ է URL հասցեն» հոդվածը կարդալուց հետո, գրեք դրանք հոդվածի մեկնաբանություններում:

    Այսօր անհրաժեշտ է ընդամենը մուտքագրել կայքի անվանումը և դրա ընդլայնումը հասցեագոտում, որից հետո օգտատերը ստանում է գրեթե ակնթարթային մուտք դեպի ռեսուրս։ Եվ այս ամենը, առանց եռանիշ թվերի բավականին բարդ շարքը հիշելու անհրաժեշտության, ամեն ինչ արվում է հեշտությամբ, արագ, արդյունավետ, ընդհանրապես, այն, ինչ անհրաժեշտ է, այնպես չէ՞:

    հետ շփման մեջ



    Կիսվել