JavaRush /Java блогы /Random-KK /3-бөлім. HTTP/HTTPS протоколдары

3-бөлім. HTTP/HTTPS протоколдары

Топта жарияланған
Бұл материал «Кәсіпорынның дамуына кіріспе» сериясының бөлігі болып табылады. Алдыңғы мақалалар: Сәлеметсіз бе! Бүгін біз HTTP және HTTPS протоколдарын түсінеміз. Бірақ алдымен бір мәселені анықтап алайық: біз OSI моделінің қолданбалы деңгейінде желі арқылы деректерді беру хаттамалары туралы айтып отырмыз. Естеріңізде болса, OSI үлгісін алдыңғы мақалалардың бірінде талқылаған болатынбыз. Ал есіңізде болмаса, міне . 3-бөлім. HTTP/HTTPS протоколдары - 1

Мәліметтерді тасымалдау протоколы дегеніміз не

Бұл жалпы қабылданған келісімге берілген атау, соның арқасында әртүрлі қызметтерді әзірлеушілер ақпаратты бір пішінде жібереді. Мысалы, Google Chrome арқылы сіз Facebook пен Twitter-ден де ақпаратты ала аласыз, өйткені әзірлеушілер оны стандартты HTTP протоколы арқылы жібереді және сіздің браузеріңіз оны өңдей алады. Бірыңғай ережелер serverлік әзірлеушілердің өздері үшін де өте ыңғайлы: сіз үшін ақпаратты түрлендіретін және қажетті протоколды пайдаланып жібере алатын көптеген кітапханалар бар. HTTP бастапқыда HTML беттерін тасымалдауға арналған протокол ретінде ойластырылған. Бұл ұзақ уақыт бойы болды, бірақ қазір бағдарламашылар оның үстіне жолдарды да, медиа файлдарды да жиі тасымалдайды. Жалпы, бұл протокол жан-жақты және икемді және оны пайдалану өте оңай. Енді мұны қалай жасау керектігін анықтайық.

HTTP құрылымы

HTTP протоколы тек мәтіннен тұратынын бірден атап өткен жөн. Бізді бұл мәтіннің қай құрылымда орналасқаны қызықтырады. Әрбір хабарлама үш бөліктен тұрады:
  1. Бастапқы жол — қызмет деректерін анықтайды.
  2. Тақырыптар – хабарлама параметрлерінің сипаттамасы.
  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 - деректерді тасымалдау протоколының нұсқасы.
Содан кейін айдарлар келеді:
  • Хост — сұрау жіберілетін хост;
  • User-Agent - бұл сұрауды жіберетін клиент.
Хабарлама мәтіні жоқ. HTTP сұрауында тек бастапқы жол және хост тақырыбы қажет. Енді бәрін ретімен қарастырайық. HTTP сұрауында кейбір әдіс болуы керек. Олардың барлығы тоғызы бар: GET, POST, PUT, OPTIONS, HEAD, PATCH, DELETE, TRACE, CONNECT. Ең кең таралғандары 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 мекенжайына жіберіледі, протокол нұсқасы HTTP/1.1. Accept клиенттің қандай жауап пішімін алуды күтетінін көрсетеді, 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>
Жауаптағы бастапқы жолда протокол нұсқасы (HTTP/1.1), Күй codeы (200), Күй сипаттамасы (ОК) бар. Тақырыптар мазмұнның түрі мен ұзақтығын көрсетеді. Жауаптың негізгі бөлігінде браузер HTML бетіне түсіретін HTML codeы бар.

Жауап күйінің codeтары

Хабарламаның негізгі мәтіні мен тақырыптарымен бәрі түсінікті, бірақ күй codeтары туралы бірнеше сөз айтқан жөн. Жауап күйінің codeтары әрқашан үш саннан тұрады және codeтың бірінші саны жауап санатын көрсетеді:
  • 1xx - ақпараттық. Сұраныс алынды, server жалғастыруға дайын;
  • 2xx - сәтті. Сұраныс қабылданды, түсінілді және өңделді;
  • 3xx - қайта бағыттау. Сұрауды өңдеу үшін келесі қадамдарды орындау қажет;
  • 4xx - клиент қатесі. Сұрауда қателер бар немесе хаттамаға сәйкес келмейді;
  • 5xx - server қатесі. Сервер сұрауды өңдей алмады, бірақ ол дұрыс құрастырылған;
Кодтағы екінші және үшінші сандар жауапты егжей-тегжейлі көрсетеді. Мысалы:
  • 200 OK — сұрау алынды және сәтті өңделді;
  • 201 Құрылды — сұрау алынды және сәтті өңделді, нәтижесінде жаңа ресурс немесе оның данасы жасалды;
  • 301 Тұрақты жылжытылды - сұралған ресурс біржола жылжытылды және оған кейінгі сұраулар жаңа мекенжайда орын алуы керек;
  • 307 Уақытша қайта бағыттау - ресурс уақытша жылжытылды. Әзірге сіз оған автоматты қайта бағыттау арқылы қол жеткізе аласыз;
  • 403 Тыйым салынған - сұрау түсінікті, бірақ авторизация қажет;
  • 404 Табылған жоқ - server осы мекенжайдағы ресурсты таба алмады;
  • 501 Орындалмаған - server бұл сұрауға жауап беру мүмкіндігін қолдамайды;
  • 505 HTTP нұсқасына қолдау көрсетілмейді - server HTTP протоколының көрсетілген нұсқасына қолдау көрсетпейді.
Жауап күйінің 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ын өзгерту қажет емес. Бұл мүмкіндік сервлет контейнерлерінде қосылған, ол туралы келесі мақалаларда айтатын боламыз. Бүгінгі күннің бәрі осы. Бірақ бір minutes күте тұрыңыз. HTTP сұрауларын сезіну үшін Google Chrome ашыңыз, F12 пернесін басыңыз, Желі қойындысын таңдаңыз. Браузеріңіз жіберген/алған барлық сұраулар мен жауаптар осы жерде көрсетіледі. 4-бөлім. Maven негіздері 5-бөлім. Сервлеттер. Қарапайым веб-қосымшаны жазу 6-бөлім. Сервлет контейнерлері 7-бөлім. MVC (Model-View-Controller) үлгісін енгізу 8-бөлім. Шағын серіппелі жүктеу қосымшасын жазу
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION