Зурвасын url http hsm. HTTP дахь дахин чиглүүлэлтүүд

  • Програмчлал
  • Семестр бүрийн эхэнд Эрдмийн их сургуулийн (Санкт-Петербург) МИИТ-ийн тэнхимийн магистрын хөтөлбөрийн оюутнууд болон түнш компаниудын төлөөлөгчид цуглардаг. Төлөөлөгчид дээр ажиллах төслүүдийн талаар ярьж, оюутнууд тэднийг сонгодог.

    Parallels Labs-д хийсэн төслүүдийн нэгэнд манай оюутан виртуал техник хангамжийн аюулгүй байдлын модулийг (HSM) хэрэгжүүлэх боломжийг судалж үзсэн. Үүний үр дүнд тэрээр нээлттэй эхийн OpenVZ төсөлд өөрийн VHSM хэрэгжилтийг нэмсэн. Зүссэн доор түүний шийдлийн талаар дэлгэрэнгүй уншина уу.

    HSM гэж юу вэ

    Хувийн түлхүүр ашиглан сервер рүү илгээсэн өгөгдөлд гарын үсэг зурдаг програмыг төсөөлье. Энэ түлхүүрийг алдах нь эзэмшигчийн хувьд хүлээн зөвшөөрөгдөхгүй байг. Системийг алсаас хакердсаны үр дүнд ийм үнэ цэнэтэй түлхүүрийг алдагдахаас хэрхэн хамгаалах вэ? HSM арга нь системийн эмзэг хэсэгт түлхүүрийн агуулгад хандах эрхийг огт өгөх ёсгүй гэж үздэг. HSM нь дижитал түлхүүр эсвэл бусад нууц өгөгдлийг хадгалах, тэдгээрийг удирдах, үүсгэх, мөн тэдгээрийг ашиглан криптографийн үйлдлүүдийг гүйцэтгэдэг физик төхөөрөмж юм. Өгөгдөл дээрх бүх үйлдлүүд HSM дотор хийгддэг бөгөөд хэрэглэгч зөвхөн эдгээр үйлдлийн үр дүнд хандах эрхтэй. Төхөөрөмжийн дотоод санах ой нь физик хандалт болон хакердахаас хамгаалагдсан. Нэвтрэх гэж оролдох үед бүх нууц мэдээлэл устах болно.

    HSM-г ашиглаж эхлэхийн тулд хэрэглэгч өөрийгөө баталгаажуулах ёстой. Хэрэв системийн эмзэг хэсэгт ажиллаж байгаа HSM клиент програмаар дамжуулан баталгаажуулалт хийвэл халдагчид HSM нууц үгийг таслах боломжтой. Саатсан нууц үг нь халдагчид HSM-д хадгалагдсан нууц мэдээллийг авахгүйгээр ашиглах боломжийг олгоно. Тиймээс системийн эмзэг хэсгийг тойрч гарах, жишээлбэл, ПИН кодыг физик байдлаар оруулах замаар баталгаажуулалтыг хийхийг зөвлөж байна.

    HSM-ийг ашиглахад тулгарч буй гол бэрхшээл нь тэдний өндөр өртөг юм. Төхөөрөмжийн ангиллаас хамааран үнэ нь $10 (USB жетон, ухаалаг карт)-аас $30,000+ (техник хангамжийн криптограф хурдасгах, хакердахаас хамгаалах, өндөр хүртээмжтэй функцтэй төхөөрөмжүүд) хооронд хэлбэлзэж болно. Үүл шийдлийн үйлчилгээ үзүүлэгчид HSM зах зээлийг үл тоомсорлосонгүй. Жишээлбэл, Amazon Cloud HSM-ээ сард дунджаар 1373 доллараар зардаг.

    HSM-ийн гол онцлогуудын нэг нь криптографийн үйлчилгээг ашигладаг системийн эмзэг хэсгийг эдгээр үйлчилгээг гүйцэтгэдэг HSM-ээс тусгаарлах явдал юм. Үүлэн дэх бие даасан инстансууд (виртуал машин, контейнер гэх мэт) бие биенээсээ тусгаарлагдсан байдаг тул эмзэг тохиолдлын гадна байгаа HSM функцийг гадаад ертөнцөөс тусгаарлагдсан өөр нэг инстанц руу шилжүүлбэл бид эдгээрийн функцийг нэлээд нарийвчлалтай хуулбарлах болно гэдгийг анхаарна уу. физик HSM. Бид энэ аргыг Virtual HSM (VHSM) гэж нэрлэдэг. Үүнийг манай оюутан OpenVZ төсөлд хэрхэн хэрэгжүүлснийг харцгаая.

    OpenVZ гэж юу вэ

    OpenVZ нь нэг Линукс цөм дээр олон тусгаарлагдсан Линукс үйлдлийн системийг ажиллуулах технологийн нэг юм. Үүний зэрэгцээ Линукс үйлдлийн систем бүр тусдаа саванд ажилладаг гэж тэд хэлдэг. Хэт хялбаршуулахын тулд Линуксийн цөм нь үнэндээ өөр өөр контейнерт хуваарилагдсан програмуудыг тусгаарлах боломжийг олгодог суурилуулсан функцтэй бөгөөд тэдгээр нь бие биенийхээ оршин тогтнолыг мэдэхгүй байх боломжийг олгодог. Аппликейшн нь контейнерээ өөрчлөх боломжгүй. Илүү сайн тусгаарлах, аюулгүй байдлыг хангахын тулд IPC ашиглан өөр өөр контейнер дээрх програмуудын хооронд харилцахыг хориглоно. Энэ нь ихэвчлэн сүлжээний холболтыг ашиглан хийгддэг. Үүний үр дүнд бид "ердийн" виртуал машинтай контейнеруудын ижил төстэй байдлыг харж байна. OpenVZ ба түүн дээр суурилсан технологиуд нь VPS үүсгэх хостинг үйлчилгээ үзүүлэгчдийн дунд түгээмэл байдаг. Эрдмийн их сургууль нь контейнер виртуалчлалтай холбоотой төслүүдийг аль хэдийн хэрэгжүүлсэн. Жишээлбэл . Parallels бол OpenVZ-ийн гол хөгжүүлэгч юм. OpenVZ-д зориулж VHSM-ийг тусгайлан хэрэгжүүлэх нь зүйн хэрэг байв.

    Виртуал HSM архитектур

    • Client VE нь шифрлэлт, гарын үсэг зурах гэх мэт криптографийн үйлчилгээ шаарддаг хэрэглэгчийн програмуудыг гүйцэтгэдэг OpenVZ контейнер юм. Уг контейнер нь дижитал түлхүүр хулгайлах алсын халдлагад зориулагдсан.
    • VHSM виртуал орчин (VHSM VE) нь VHSM сервер ажиллаж байгаа OpenVZ контейнер бөгөөд Client VE дээрх программуудаас командуудыг хүлээн авч, гүйцэтгэдэг дэмон юм. VHSM VE дээр ажиллаж байгаа өөр програм байхгүй байна. VHSM VE нь OpenVZ ашиглан ердийн хэрэглэгчийн контейнерээс тусгаарлагдсан байдаг. Уг контейнер нь сүлжээний интерфэйсгүй бөгөөд сүлжээгээр нэвтрэх боломжгүй.
    • Тээвэрлэлт нь Client VE-ээс VHSM VE руу мессеж дамжуулахад зориулагдсан Линуксийн цөмийн модуль юм.
    • VHSM API нь HSM-д зориулсан стандарт PKCS #11 интерфэйсийн хэсгийг хэрэгжүүлдэг номын сан бөгөөд 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

    Энэ нь хэрэглэгчийн чингэлэгт байрладаг Си номын сан бөгөөд HSM-д зориулсан стандарт PKCS#11 интерфейсийн хэсгийг хэрэгжүүлдэг бөгөөд энэ нь танд түлхүүр, өгөгдөл, сесс, тоон гарын үсэг, шифрлэлт гэх мэтийг удирдах боломжийг олгодог. VHSM API ашиглах тодорхой жишээг харцгаая:
    1. Захиалгат саванд байгаа програм нь илгээсэн зурвастаа гарын үсэг зурах шаардлагатай.
    2. VHSM API ашиглан програм нь нийтийн хувийн түлхүүрийн хослолыг үүсгэж, хувийн түлхүүрийн ID болон нийтийн түлхүүрийг хүлээн авдаг.
    3. Аппликешн нь шаардлагатай ID бүхий хувийн түлхүүрээр гарын үсэг зурахын тулд мессежийг VHSM API руу дамжуулдаг. VHSM API нь гарын үсэг зурсан мессежийг буцаана.
    4. Гарын үсэг зурсан мессеж болон нийтийн түлхүүрийг мессеж хүлээн авагч руу илгээнэ. Энэ тохиолдолд хувийн түлхүүр нь үйлчлүүлэгчийн контейнерт байхгүй байна.
    Төслийн үйлчлүүлэгч хэсэг нь OpenSSL хөдөлгүүр болон PAM модулийг хэрэгжүүлсэн бөгөөд танд OpenSSL болон PAM ашигладаг одоо байгаа програмуудад VHSM-тэй ажиллах боломжийг олгодог. Гэсэн хэдий ч төслийн энэ хэсэг нь муу боловсруулагдсан бөгөөд үзэл баримтлалын нотолгоо юм.

    VHSM тээвэрлэлт

    Дээр дурдсанчлан, өөр өөр контейнерт ажиллаж байгаа програмууд нь Линукс IPC механизмыг ашиглан хоорондоо холбогдож чадахгүй. Тиймээс үйлчлүүлэгчээс мессежийг сервер рүү болон буцааж зөөхийн тулд ачаалах боломжтой Линуксийн цөмийн модулийг хэрэгжүүлсэн. Модуль нь цөм дэх Netlink серверийг ажиллуулдаг бөгөөд VHSM клиентүүд болон VHSM серверүүд түүнтэй холбогддог. Netlink сервер нь эх сурвалжаас (VHSM клиент) очих газар (VHSM сервер) болон буцах зурвасыг дамжуулах үүрэгтэй. Мессежийн хамт мессежийн эх сурвалжийн контейнерийн ID-г хавсаргасан бөгөөд жишээлбэл, тухайн хэрэглэгч VHSM ашиглахыг хориглосон контейнерийн хүсэлтийг сервер татгалзах боломжтой.

    Дүгнэлт

    VHSM-ийг бий болгох гол зорилго нь хэрэглэгчийн контейнерт ажиллаж байгаа хэрэглэгчийн програмуудын санах ойноос нууц түлхүүрүүдийг хулгайлах боломжийг арилгах явдал байв. Учир нь энэ зорилгодоо хүрсэн нууц өгөгдөлд зөвхөн тусгаарлагдсан саванд (VHSM VE) хандах боломжтой. Тусгаарлах ажлыг OpenVZ гүйцэтгэдэг.

    VHSM VE-ээс мэдээллийн сан алдагдсан нь нууц мэдээллийг шууд алдахад хүргэхгүй, учир нь тэдгээр нь шифрлэгдсэн хэлбэрээр хадгалагддаг. Шифрлэлтийн түлхүүр нь мэдээллийн санд хадгалагдаагүй боловч баталгаажуулалтын явцад дамжуулагдсан хэрэглэгчийн нууц үгээс үүсгэгддэг.
    Мэдээллийн аюулгүй байдлын аливаа технологийн нэгэн адил танилцуулсан шийдэл нь халдагчдад саад болж байгаа бөгөөд мэдээллийн бүрэн хамгаалалтыг хангадаггүй.

    Англи хэлэнд энэ нь Uniform Resource Locator гэсэн үг бөгөөд орос хэл рүү орчуулбал "нэгдмэл нөөц байршуулагч" гэсэн утгатай. Орос хэл дээр энэ товчлолыг ихэвчлэн "у-эр-эль", "ю-ар-эль" эсвэл зүгээр л "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/. Ийм кодчилол нь хоёр үе шаттайгаар явагдана: эхлээд тэмдэгт бүрийг хоёр байт дараалал болгон хувиргаж, дараа нь байт бүрийг арван арван тоот тоогоор дахин бичнэ.

    SEO дээр вэбсайтын URL нь хэр их утгатай вэ?

    Хайлтын системүүд нь URL дахь түлхүүр хэллэгүүдийн тохиолдлыг харгалзан үздэг. Домэйн болон дэд домайнуудын хаяг дахь тохиолдлууд хамгийн их нөлөө үзүүлдэг бөгөөд хуудасны файлын нэр нь бага боловч маш чухал үүрэг гүйцэтгэдэг. Үүнтэй холбогдуулан цахим орчинд цахим хуудсууд хэмээх орлогын төрөл идэвхтэй хөгжиж байна. Үүний мөн чанар нь дараа нь өндөр үнээр зарах зорилгоор домэйн нэрийг зах зээлийн үнээр бүртгэх явдал юм.

    HTTP нь тархсан системүүдийн хооронд гипертекстийг дамжуулах протокол юм. Үнэн хэрэгтээ http бол орчин үеийн вэбийн үндсэн элемент юм. Өөрийгөө хүндэлдэг вэб хөгжүүлэгчид бид энэ талаар аль болох ихийг мэдэх ёстой.

    Энэ протоколыг мэргэжлийнхээ нүдээр харцгаая. Эхний хэсэгт бид үндсэн ойлголтуудыг судалж, хүсэлт/хариултуудыг харна. Дараагийн өгүүллээр бид кэш хийх, холболт боловсруулах, баталгаажуулах гэх мэт илүү нарийвчилсан функцуудыг авч үзэх болно.

    Мөн энэ нийтлэлд би RFC 2616 стандартыг голчлон дурдах болно: Hypertext Transfer Protocol -- HTTP/1.1.

    HTTP үндэс

    HTTP нь олон хостууд болон үйлчлүүлэгчдийн хоорондын харилцаа холбоог идэвхжүүлж, олон төрлийн сүлжээний тохиргоог дэмждэг.

    Үндсэндээ TCP/IP нь харилцаа холбоонд ашиглагддаг боловч энэ нь цорын ганц боломжит сонголт биш юм. Анхдагчаар TCP/IP нь 80 портыг ашигладаг боловч бусад портуудыг ашиглаж болно.

    Хост болон үйлчлүүлэгчийн хоорондын харилцаа холбоо нь хүсэлт, хариу үйлдэл гэсэн хоёр үе шаттайгаар явагддаг. Үйлчлүүлэгч HTTP хүсэлтийг үүсгэдэг бөгөөд үүний хариуд сервер хариу (мессеж) өгдөг. Хэсэг хугацааны дараа бид энэ ажлын схемийг илүү нарийвчлан авч үзэх болно.

    HTTP протоколын одоогийн хувилбар нь 1.1 бөгөөд зарим шинэ боломжуудыг нэвтрүүлсэн. Миний бодлоор тэдгээрийн хамгийн чухал нь: байнгын нээлттэй холболтыг дэмжих, өгөгдөл дамжуулах шинэ механизм, хэсэгчилсэн дамжуулах кодчилол, кэш хийх шинэ толгойнууд. Бид энэ өгүүллийн хоёрдугаар хэсэгт эдгээрийн заримыг авч үзэх болно.

    URL

    Вэб харилцааны гол цөм нь Нөөцийн Нөөц Байршуулагч (URL)-ээр дамжуулан илгээгддэг хүсэлт юм. Та URL гэж юу болохыг аль хэдийн мэдэж байгаа гэдэгт би итгэлтэй байна, гэхдээ бүрэн дүүрэн байхын тулд би хэдэн үг хэлэхээр шийдсэн. URL бүтэц нь маш энгийн бөгөөд дараах бүрэлдэхүүн хэсгүүдээс бүрдэнэ.

    Протокол нь ердийн холболтын хувьд http эсвэл илүү найдвартай өгөгдөл солилцохын тулд https байж болно. Анхдагч порт нь 80. Үүний дараа сервер дээрх нөөц рүү очих зам болон параметрийн хэлхээ орно.

    Арга зүй

    URL-г ашиглан бид харилцахыг хүсч буй хостын яг нэрийг тодорхойлдог боловч бид ямар үйлдэл хийх ёстойг зөвхөн HTTP аргыг ашиглан дамжуулах боломжтой. Мэдээжийн хэрэг, бид хэд хэдэн төрлийн арга хэмжээ авах боломжтой. HTTP нь ихэнх програмуудын хэрэгцээнд тохирсон хамгийн хэрэгцээтэйг нь хэрэгжүүлдэг.

    Одоо байгаа аргууд:

    АВАХ: Одоо байгаа нөөцөд хандах. URL нь шаардлагатай бүх мэдээллийг жагсаасан бөгөөд ингэснээр сервер хүссэн эх сурвалжийг олж, хариу болгон буцааж өгөх боломжтой болно.

    POST: Шинэ нөөц үүсгэхэд ашигладаг. POST хүсэлт нь ихэвчлэн шинэ нөөц үүсгэхэд шаардлагатай бүх мэдээллийг агуулдаг.

    PUT: Одоогийн нөөцийг шинэчлэх. 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 олдсонгүй. Энэ нь сервер дээр нөөц олдоогүй гэсэн үг юм. Бусад боломжит кодууд:

    • 400 буруу хүсэлт: Асуултыг буруу үүсгэсэн байна.
    • 401 Зөвшөөрөлгүй: Хүсэлт гаргахын тулд баталгаажуулалт шаардлагатай. Мэдээллийг Зөвшөөрлийн толгойгоор дамжуулдаг.
    • 403 хориотой: Сервер нь нөөцөд хандахыг зөвшөөрөөгүй.
    • 405 аргыг зөвшөөрөхгүй: Нөөцөд хандахын тулд хүчингүй HTTP аргыг ашигласан.
    • 409 Зөрчилдөөн: учир нь сервер хүсэлтийг бүрэн боловсруулж чадахгүй байна нөөцийн шинэ хувилбарыг өөрчлөхийг оролддог. Энэ нь ихэвчлэн PUT хүсэлтэд тохиолддог.

    5xx: Серверийн алдаа

    Хүсэлтийг боловсруулах үед серверийн алдааг илрүүлэхэд ашигладаг цуврал кодууд. Хамгийн түгээмэл: 500 дотоод серверийн алдаа. Бусад сонголтууд:

    • 501 Хэрэгжээгүй: Сервер нь хүссэн функцийг дэмждэггүй.
    • 503 Үйлчилгээ боломжгүй: Энэ нь серверт алдаа гарсан эсвэл хэт ачаалалтай байгаа тохиолдолд тохиолдож болно. Ихэвчлэн энэ тохиолдолд сервер хариу өгөхгүй, хариу өгөх хугацаа дуусдаг.

    Хүсэлт/хариултын мессежийн формат

    Дараах зурган дээр та үйлчлүүлэгчийн хүсэлтийг илгээх, серверийн хариуг боловсруулах, илгээх схемийн үйл явцыг харж болно.

    HTTP-ээр дамжуулж буй мессежийн бүтцийг харцгаая:

    Мессеж = *() CRLF [ ] = Хүсэлт-Мөр | Статус-мөр = Талбар-Нэр ":" Талбар-утга

    Зурвасын толгой ба үндсэн хоёрын хооронд хоосон мөр байх ёстой. Хэд хэдэн гарчиг байж болно:

    Хэрэв харгалзах функц идэвхжсэн бол хариултын хэсэг нь мэдээллийг бүхэлд нь эсвэл хэсэгчлэн агуулж болно (Шилжүүлгийн кодчилол: хэсэгчилсэн). HTTP/1.1 нь Transfer-Encoding толгой хэсгийг бас дэмждэг.

    Ерөнхий гарчиг

    Хүсэлт болон хариултын аль алинд нь ашигладаг хэд хэдэн төрлийн толгойнууд энд байна:

    Ерөнхий толгой = Cache-Control | Холболт | Огноо | Прагма | Чиргүүл | Дамжуулах-кодлох | Шинэчлэх | Via | Анхааруулга

    Энэ нийтлэлд бид аль хэдийн заримыг нь авч үзсэн бөгөөд заримыг нь хоёрдугаар хэсэгт илүү дэлгэрэнгүй авч үзэх болно.

    Дамжуулах толгой хэсгийг TRACE хүсэлтэд ашигладаг бөгөөд бүх прокси серверүүд шинэчилдэг.

    Прагма толгой нь захиалгат толгойнуудыг жагсаахад хэрэглэгддэг. Жишээлбэл, Pragma: no-cache нь Cache-Control: no-cache-тэй адил юм. Энэ талаар бид хоёрдугаар хэсэгт дэлгэрэнгүй ярих болно.

    Огноо толгой нь хүсэлт/хариуны огноо, цагийг хадгалахад ашиглагддаг.

    Upgrade гарчиг нь протоколыг өөрчлөхөд ашиглагддаг.

    Дамжуулах-кодчилол нь Дамжуулах-кодлох: chunked ашиглан хариуг олон хэсэг болгон хуваахад зориулагдсан. Энэ бол HTTP/1.1 дээрх шинэ боломж юм.

    Аж ахуйн нэгжийн толгой

    Аж ахуйн нэгжийн толгой хэсэг нь агуулгын талаархи мета мэдээллийг дамжуулдаг:

    Entity-header = Зөвшөөрөх | Агуулгын кодчилол | Агуулга-хэл | Агуулгын урт | Агуулга-Байршил | Агуулга-MD5 | Агуулгын хүрээ | Агуулгын төрөл | Хугацаа дууссан | Хамгийн сүүлд өөрчилсөн

    Агуулгын угтвартай бүх толгой хэсэг нь мессежийн үндсэн бүтэц, кодчилол, хэмжээ зэрэг мэдээллийг өгдөг.

    Дуусах гарчиг нь тухайн байгууллагын дуусах хугацаа, огноог агуулна. "Хэзээ ч дуусахгүй" гэсэн утга нь одоогийн мөчөөс хойшхи цаг + 1 кодыг хэлнэ. Сүүлд өөрчилсөн нь тухайн байгууллагын хамгийн сүүлд өөрчлөгдсөн цаг, огноог агуулна.

    Эдгээр толгойг ашиглан та даалгавартаа шаардлагатай мэдээллийг зааж өгч болно.

    Хүсэлтийн формат

    Хүсэлт нь иймэрхүү харагдаж байна:

    Хүсэлт-Мөр = Арга SP URI SP HTTP-хувилбар CRLF арга = "СОНГОЛТ" | "ТОЛГОЙ" | "АВАХ" | "POST" | "PUT" | "Устгах" | "МӨР"

    SP нь токенуудын хоорондох тусгаарлагч юм. HTTP хувилбарыг HTTP-хувилбарт зааж өгсөн болно. Бодит хүсэлт дараах байдалтай байна.

    GET /articles/http-basics HTTP/1.1 Хост: www.articles.com Холболт: амьд байлгах Кэш-Хяналт: кэшгүй Прагма: кэшгүй Зөвшөөрөх: text/html,application/xhtml+xml,application/xml; q=0.9,*/*;q=0.8

    Боломжит хүсэлтийн толгойн жагсаалт:

    Хүсэлт-толгой = Зөвшөөрөх | Зөвшөөрөх-Charset | Зөвшөөрөх-кодлох | Зөвшөөрөх хэл | Зөвшөөрөл | Хүлээж байна | -аас | Хөтлөгч | Хэрэв-Тоглолт | Хэрэв-Өөрчлөгдсөн-Одоо | Хэрэв-Үгүй-Тохирохгүй бол | If-Range | Хэрэв-Өөрчлөөгүй-Одоо | Макс-Форвард | Proxy-Authorization | Хүрээ | Referrer | TE | Хэрэглэгч-агент

    Зөвшөөрөх толгой хэсэг нь дэмжигдсэн MIME төрөл, хэл, тэмдэгтийн кодчиллыг зааж өгдөг. From, Host, Referer, User-Agent гэсэн гарчиг нь үйлчлүүлэгчийн талаарх мэдээллийг агуулна. If- угтвар нь нөхцөлийг бий болгох зорилготой. Хэрэв нөхцөл хангагдаагүй бол 304 Өөрчлөгдсөнгүй алдаа гарна.

    Хариултын формат

    Хариултын формат нь зөвхөн статус болон хэд хэдэн толгойн хэсэгт ялгаатай. Статус дараах байдлаар харагдаж байна.

    Status-Line = HTTP-Хувилбар SP Статус-Код SP Шалтгаан-Өгүүлбэр 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(тохиргоо)-ын талаарх мэдээллийг албан ёсны вэбсайтаас олж болно.

    Тохиргооны объектыг дамжуулж, beforeSend дуудлагын функцийг ашигласнаар бид setRequestHeader() аргыг ашиглан хүсэлтийн толгой хэсгийг тохируулах боломжтой.

    $.ajax(( url: "http://www.articles.com/latest", төрөл: "GET", beforeSend: функц (jqXHR) ( jqXHR.setRequestHeader("Accepts-Language", "en-US,en" ");)))

    Хэрэв та хүсэлтийн статусыг боловсруулахыг хүсвэл дараах байдлаар хийж болно.

    $.ajax((statusCode: ( 404: function() ( alert("хуудас олдсонгүй"); ) ) ));

    Доод шугам

    Энэ бол HTTP протоколын үндэс суурьтай танилцах аялал юм. Хоёр дахь хэсэгт илүү сонирхолтой баримт, жишээнүүд багтах болно.

    Интернет дээр ажилладаг бараг бүх хэрэглэгч лавлагаатай тулгардаг URL, URL-ууд, холбоос руу очиж холбоосыг ашиглах урилга. Эдгээр ойлголтыг мэдэхгүй эсвэл шинэ хүмүүст зориулж би URL гэж юу болох, URL-г хэрхэн ашиглах, URL нь ямар хэсгүүдэд хуваагддаг, мөн хэрхэн олох талаар тайлбарлах материал бичихээр шийдсэн. Интернет дэх зөв холбоос.

    URL- энэ нь янз бүрийн төрлийн файлууд (баримт бичиг, зураг, видео, аудио гэх мэт) байрладаг интернетийн эх сурвалж руу хүрэх замыг зааж буй хаяг юм. URL товчлол нь "Нэгдмэл нөөцийн байршлыг тогтоогч" гэсэн үг бөгөөд орос хэл дээр ихэвчлэн "url", "ю-ар-эль", "у-эр-эль" гэж дуудагддаг бөгөөд ихэвчлэн "холбоос" гэдэг үгийг ашигладаг.

    Хэсэг хугацааны өмнө би ахдаа ойлголтын бүх нарийн ширийн зүйлийг чадварлаг хэлж өгөхийн тулд URL хаяг гэж юу болохыг хайж байснаа санаж байна. Энэ нэр томъёо гарч ирэхэд би өөрөө сонирхож эхэлсэн.

    URL гэсэн ойлголтын зохиогч нь Британийн иргэн Тим Бернес-Ли бөгөөд шинэ бүтээл нь өөрөө (1990) интернет технологийн хөгжилд чанарын үсрэлт хийсэн юм. Одоо URL нь сүлжээн дэх бараг бүх нөөцийн хаягийн тодорхойлогч болж байгаа бол URL гэдэг нэр томъёо нь аажмаар URI (Нэгдмэл нөөцийн тодорхойлогч) нэр томъёогоор солигдож байна.

    Олон нийтийн мэдээллийн хэрэгслийн URL хаягууд


    URL нь ямар хэсгүүдэд хуваагддаг вэ?

    URL-ийн сонгодог жишээ нь иймэрхүү харагдаж байна:

    http://site_address/folder/page.html

    Таны харж байгаагаар URL нь хэд хэдэн хэсэгт хуваагдана:

    Эхний хэсэг (http://)ашиглах протоколыг тодорхойлно. Энгийнээр хэлэхэд, энэ нь хүссэн эх сурвалжид хандахад ашиглах аргын тухай өгүүлдэг.

    Энэ URL-д ашигласан "HTTP" протокол нь "HyperText Transfer Protocol" гэсэн үг бөгөөд ихэнх тохиолдолд үүнийг ашигладаг. Гэхдээ та бусад протоколуудыг ашиглан URL-уудыг олох боломжтой, жишээлбэл, FTP (Файл дамжуулах протокол), 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.. шиг харагдах болно.

    Гурав дахь хэсэг (фолдер/хуудас.html)ихэвчлэн хэрэглэгчийн хандахыг хүссэн зарим эх сурвалжийн хуудсыг заадаг. Энэ нь зүгээр л нэр хэлбэрээр эсвэл хавтаснуудаар дамжуулан тодорхой файл руу орох зам хэлбэрээр байж болно, сүүлийнх нь ихэвчлэн налуу зураасаар тусгаарлагдсан (/). Интернет хуудасны өргөтгөл нь өөр байж болно - php, htm, html, shtml, asp болон бусад хэд хэдэн.

    Эдгээр тайлбарыг видеоноос нүдээр харж болно:

    Домэйн нэрний өмнө ашигласан товчлолууд www(World Wide Web) заавал байх албагүй, та сайтын хаягийг түүнгүйгээр ашиглаж болно, сайт гарцаагүй нээгдэх болно.

    URL хаягийг ашиглах онцлог

    Хэрэв хэрэглэгчийн заасан URL буруу байвал систем нь "Хуудас олдсонгүй" гэсэн тэмдэглэл бүхий 404 алдааг харуулах болно. Энэ нь хэрэглэгч буруу эсвэл хуучирсан хуудасны хаягийг оруулсан гэсэн үг тул хаягийг бичихдээ нарийвчлал, нарийвчлал, анхаарал шаарддаг. URL бичихдээ "хуулбарлах/хуулах" функцийг ашиглан хуудасны хаягийг хуулахыг зөвлөж байна. Та мөн товчилсон URL-г зөвхөн сайтын үндсэн нэр хэлбэрээр (хавтас, хуудасгүй) бичиж үзээрэй, мөн сайтын үндсэн хуудаснаас бидэнд хэрэгтэй хуудасны холбоосыг хайж олох боломжтой.

    URL-ийн сул талууд

    Энэ нь URL холбоос гэдгийг тайлбарласны дараа URL-ын бүх сул талыг харцгаая. Интернэтээр аялахад хялбар болгох давуу талуудын зэрэгцээ URL нь өөрийн гэсэн сул талуудтай. Энэ нь зөвхөн тоо, латин үсэг болон зарим тэмдэгтүүдтэй ажилладаг бөгөөд кирилл цагаан толгойг ихэвчлэн хоёр үе шаттайгаар дахин кодлох (URL кодчилол) хийх шаардлагатай бөгөөд эхний шатанд кирилл үсэг бүрийг хоёр байт болгон хувиргаж, дараа нь байт тус бүрийг ашиглан дахин бичдэг. арван зургаатын систем.

    Нэмж дурдахад, хаягт ихэвчлэн жижиг үсгүүдийг ашиглахыг зөвлөж байна (зарим Unix системүүд том үсгийн хувилбаруудыг өөр тэмдэгт гэж хүлээн зөвшөөрдөг бөгөөд энэ нь хуудсыг нээхэд алдаа гаргахад хүргэдэг), мөн URL хаягуудад хоосон зай ашиглахыг хориглодог.

    URL хаягийг хэрхэн олох вэ. Хавчуурга.

    Шаардлагатай URL хаягийг олохын тулд та хайлтынхаа түлхүүр үгсийг оруулах шаардлагатай хайлтын системийг ашиглаж болно. Жишээлбэл, хэрэв танд кино хэрэгтэй бол түүний нэр, жүжигчдийн нэр, хөгжим бол жүжигчдийн нэр, найруулгын нэрийг оруулна уу. "Хайх" товчийг дарснаар та URL хаягтай олон сайтуудыг авах бөгөөд түүн дээр дарснаар та хүссэн үр дүнг олох боломжтой болно.

    Таны одоо байгаа хуудасны URL нь таны хөтчийн хаягийн талбарын дээд хэсэгт байрладаг.

    Танд хэрэгтэй хуудасны URL-г санахын тулд хөтчийнхөө хавчуургын мөрийг ашиглана уу. Жишээлбэл, алдартай хөтөч Mozilla Firefox дээр одоор хэлбэртэй хавчуургын дүрс нь хаягийн мөрөнд баруун дээд буланд байрладаг. Үүн дээр дарснаар та хавчуурганыхаа нэр, хавчуургыг байрлуулах хавтсыг оруулах боломжтой болно (би ихэвчлэн нэг товшилтоор аль нэгэнд нь хандах боломжийг олгодог тусгай хавчуургын самбар ашигладаг).

    Дүгнэлт

    URL ашиглах нь интернетийг ихээхэн хялбаршуулж, олон хэрэглэгчдэд хэрэгтэй сайт руугаа хялбар, хурдан нэвтрэх боломжийг олгосон. Хэрэв танд "URL хаяг гэж юу вэ?" гэсэн нийтлэлийг уншсаны дараа асуулт байвал нийтлэлийн сэтгэгдэл дээр бичээрэй.

    Өнөөдөр шаардлагатай бүх зүйл бол сайтын нэр, түүний өргөтгөлийг хаягийн мөрөнд оруулах явдал бөгөөд үүний дараа хэрэглэгч нөөцөд шууд хандах боломжтой болно. Энэ бүхэн нь гурван оронтой тоонуудын нэлээд төвөгтэй цувралыг санах шаардлагагүйгээр бүх зүйл амархан, хурдан, үр дүнтэй хийгддэг - ерөнхийдөө юу хэрэгтэй байна, тийм биш гэж үү.

    -тай холбоотой



    Хуваалцах