JavaRush /Java блогу /Random-KY /3-бөлүк. HTTP/HTTPS протоколдору
Professor Hans Noodles
Деңгээл

3-бөлүк. HTTP/HTTPS протоколдору

Группада жарыяланган
Бул материал "Ишкананы өнүктүрүүгө киришүү" сериясынын бир бөлүгү болуп саналат. Мурунку макалалар: Салам! Бүгүн биз HTTP жана HTTPS протоколдорун түшүнөбүз. Бирок, адегенде, бир жагдайды тактап алалы: биз OSI моделинин колдонмо катмарында тармак аркылуу маалыматтарды берүү протоколдору жөнүндө болуп жатат. Эсиңиздерде болсо, OSI моделин мурунку макалалардын биринде талкуулаганбыз. Ал эми эсиңизде жок болсо, бул жерде . 3-бөлүк. HTTP/HTTPS протоколдору - 1

Маалыматтарды өткөрүү протоколу деген эмне

Бул жалпы кабыл алынган келишимге берилген аталыш, анын аркасында ар кандай кызматтарды иштеп чыгуучулар маалыматты бирдиктүү формада жөнөтүшөт. Мисалы, Google Chrome колдонуп, сиз Facebook жана Twitterден да маалымат ала аласыз, анткени иштеп чыгуучулар аны стандарттык HTTP протоколу аркылуу өткөрүп беришет жана сиздин браузериңиз аны башкара алат. Бирдиктүү эрежелер serverдик иштеп чыгуучулардын өздөрү үчүн да абдан ыңгайлуу: сиз үчүн маалыматты өзгөртүп, керектүү протоколду колдонуу менен жөнөтө турган көптөгөн китепканалар бар. HTTP башында HTML барактарды өткөрүп берүү үчүн протокол катары иштелип чыккан. Бул узак убакыт бою болгон, бирок азыр программисттер көп саптарды жана медиа файлдарды анын үстүнөн өткөрүп беришет. Жалпысынан алганда, бул протокол ар тараптуу жана ийкемдүү жана аны колдонуу чындап эле оңой. Эми муну кантип жасоо керектигин карап көрөлү.

HTTP структурасы

Дароо белгилей кетүү керек, HTTP протоколу тексттен гана турат. Ооба, бизди бул тексттин кайсы структурада турганы кызыктырат. Ар бир билдирүү үч бөлүктөн турат:
  1. Башталгыч линия—кызмат маалыматтарын аныктайт.
  2. Headers - билдирүү параметрлеринин сүрөттөлүшү.
  3. Кабардын денеси (Тенеси) - билдирүү маалыматтары. Баш саптардан бош сызык менен бөлүнүшү керек.
HTTP протоколун колдонуу менен сиз serverге суроо (суроо) жөнөтүп, serverден жооп ала аласыз (жооп). Сурамдардын жана жооптордун бир аз башкача параметрлери бар.

Жөнөкөй HTTP сурамы кандай көрүнөт

GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Башталгыч линия төмөнкүлөрдү камтыйт:
  • GET - суроо-талап ыкмасы;
  • / — суроо-талап жолу (жол);
  • HTTP/1.1 - маалыматтарды өткөрүп берүү протоколунун versionсы.
Андан кийин рубрикалар келет:
  • Хост — суроо-талап жөнөтүлгөн хост;
  • Колдонуучу-Агент - бул суроо-талапты жөнөтүүчү кардар.
Билдирүү органы жок. HTTP сурамында башталгыч сызыгы жана Хосттун аталышы гана талап кылынат. Эми баарын ирети менен карап көрөлү. HTTP сурамы кандайдыр бир ыкманы камтышы керек. Алардын жалпысынан тогузу бар: АЛУУ, ПОСТ, КОЮУ, ОПЦИЯЛАР, БАШКАЧА, ЖАМАНДОО, ӨЧҮРҮҮ, ТРЕКС, ТУШУУ. Эң кеңири таралгандары GET жана POST. Бул эки ыкма башында жетиштүү болот. GET - serverден мазмунду сурайт. Ошондуктан, GET методу менен суроо-талаптар билдирүүнүн негизги бөлүгүнө ээ эмес. Бирок, зарыл болсо, бул форматта жол аркылуу параметрлерди жөнөтө аласыз: https://cdn.javarush.com/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2 Бул жерде: javarush .com — хост, /send — суроо жолу, ? — суроо-талаптын параметрлерине ылайык келерин көрсөткөн бөлгүч. Аягында, параметрлер амперсанд менен бөлүнгөн ачкыч=маани форматында келтирилген. POST - serverде маалыматты жарыялайт. POST сурамы ар кандай маалыматты өткөрүп бере алат: ачкыч=маани форматындагы параметрлер, JSON, HTML codeу, жада калса файлдар. Бардык маалымат кабардын текстинде берилет. Мисалы:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com

{
  "Id": 12345,
  "User": "John"
}
Сурам javarush.com/user/create/json дарегине жөнөтүлөт, протоколдун versionсы HTTP/1.1. Кабыл алуу кардар кандай жооп форматын күтөрүн, Content-Type билдирүүнүн тексти кандай форматта жөнөтүлгөнүн белгилейт. Content-Length - денедеги белгилердин саны. HTTP суроо-талаптары ар кандай аталыштарды камтышы мүмкүн. Көбүрөөк маалыматты протоколдун спецификациясынан тапса болот .

HTTP жооптору

Суроо-талапты алгандан кийин server аны иштеп чыгат жана кардарга жооп жөнөтөт:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98

<html>
  <head>
    <title>An Example Page</title>
  </head>
  <body>
    <p>Hello World</p>
  </body>
</html>
Жооптун баштапкы сабында протоколдун versionсы (HTTP/1.1), Статус codeу (200), Статус сүрөттөмөсү (OK). Рубрикалар мазмундун түрүн жана узундугун көрсөтөт. Жооптун негизги бөлүгү браузер HTML барагына тарта турган HTML codeун камтыйт.

Жооптун статусунун codeдору

Билдирүүнүн негизги бөлүгү жана аталыштары менен баары түшүнүктүү, бирок статус codeдору жөнүндө бир нече сөздү айтуу керек. Жооптун статусунун codeдору ар дайым үч сандан турат жана codeдун биринчи саны жооптун категориясын көрсөтөт:
  • 1xx - маалыматтык. Сурам кабыл алынды, server улантууга даяр;
  • 2xx - ийгorктүү. Сурам кабыл алынды, түшүнүлдү жана иштетилди;
  • 3xx - кайра багыттоо. Сурамды иштеп чыгуу үчүн төмөнкү кадамдарды аткаруу керек;
  • 4xx - кардар катасы. Сурам каталарды камтыйт же протоколго туура келбейт;
  • 5xx - server катасы. Сервер суроо-талапты иштете алган жок, бирок ал туура түзүлгөн;
Коддогу экинчи жана үчүнчү сандар жоопту деталдаштырат. Мисалы:
  • 200 OK — өтүнүч кабыл алынды жана ийгorктүү иштетилди;
  • 201 Түзүлгөн — сурам кабыл алынды жана ийгorктүү иштетилди, натыйжада жаңы ресурс же анын инстанциясы түзүлдү;
  • 301 Туруктуу жылдырылды - суралган ресурс биротоло жылдырылды жана ага кийинки суроо-талаптар жаңы даректе болушу керек;
  • 307 Убактылуу багыттоо - ресурс убактылуу жылдырылды. Азырынча сиз ага автоматтык багыттоо аркылуу кире аласыз;
  • 403 Тыюу салынган - суроо-талап түшүнүктүү, бирок авторизация талап кылынат;
  • 404 Табылган жок - server бул дарек боюнча ресурсту тапкан жок;
  • 501 Ишке ашырылган жок - server бул суроого жооп берүү функциясын колдобойт;
  • 505 HTTP versionсы колдоого алынbyte - server HTTP протоколунун көрсөтүлгөн versionсын колдобойт.
Жооптун статусунун codeунан тышкары, статустун сүрөттөлүшү да жөнөтүлөт, бул конкреттүү статустун эмнени билдирерин түшүнүүнү интуитивдик кылат. HTTP протоколу абдан практикалык: ал көп сандагы аталыштарды камсыз кылат, алардын жардамы менен кардар менен serverдин ортосунда ийкемдүү байланышты орното аласыз. Бардык суроо-талап жана жооп аталыштары, суроо ыкмалары жана жооп статусунун codeдору бир макалада каралышы мүмкүн эмес. Зарыл болсо, сиз окуй аласыз расмий протокол спецификациясы , бардык нюанстарды сүрөттөгөн. HTTP протоколу адатта 80-портто колдонулат, андыктан 80-портто аяктаган даректи көргөндө, ага HTTP аркылуу кирүү керек экенине шектенбесеңиз болот. Технологиянын өнүгүшү жана Интернетте жеке маалыматтардын активдүү кыймылы менен кардар serverге өткөрүп жаткан маалыматты кантип кошумча коргоону камсыз кылуу жөнүндө ойлонууга туура келди. Натыйжада HTTPS протоколу пайда болду.

HTTPS менен HTTP ортосунда кандай айырма бар

HTTPS синтаксистик жактан HTTP протоколуна окшош, башкача айтканда, ал ошол эле баштапкы саптарды жана аталыштарды колдонот. Бир гана айырмачылыктар кошумча шифрлөө жана демейки порт (443) . HTTPS HTTP жана TCP ортосунда, башкача айтканда, колдонмо жана транспорт катмарларынын ортосунда шифрленген. Эгер сиз анын эмне экенин унутуп калсаңыз, OSI модели жөнүндө макаланы караңыз . Заманбап шифрлөө стандарты TLS болуп саналат. Биз бул темага өтө терең кирбейбиз, бирок шифрлөө маалымат транспорттук катмарга жеткенге чейин болоорун унутпаңыз . HTTPS сурам жөнөтүлгөн хост жана порттон башка бардык маалыматты шифрлейт. Серверди HTTP ордуна HTTPS протоколун колдонууга которуу үчүн server codeун өзгөртүүнүн кереги жок. Бул функция сервлет контейнерлеринде иштетилген, алар жөнүндө биз кийинки макалаларда сүйлөшөбүз. Бүгүнкү күндө баары ушул. Бирок, күтө тур. HTTP сурамдарын сезүү үчүн, Google Chrome ачыңыз, F12 баскычын басыңыз, Тармак өтмөгүн тандаңыз. Браузериңиз тарабынан жөнөтүлгөн/кабыл алынган бардык суроо-талаптар жана жооптор бул жерде көрсөтүлөт. 4-бөлүк. Maven негиздери 5-бөлүк. Сервлеттер. Жөнөкөй веб-тиркеме жазуу 6-бөлүк. Сервлет контейнерлери 7-бөлүк. MVC (Модель-Көрүү-Контроллер) үлгүсүн киргизүү 8-бөлүк. Чакан жазгы жүктөө тиркемесин жазуу
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION