HTTP nima? HTTP/1.1, HTTP/2 va HTTP/3 farqlari

Assalamu Alaykum bugun HTTP va uning versiyalari haqida gaplashamiz va har bir versiyasi farqlarini gaplashamiz .

Bugungi asosiy bo`limlar:

  1. HTTP nima ?

  2. HTTP 1.0

  3. HTTP 1.1

  4. HTTP/2

  5. QUIC (HTTP/3)

HTTP nima ?

HTTP (Hyper Text Transfer Protocol) — bu mijoz va server o'rtasidagi muloqotni taminlashga yordam beradi.Mijoz (User) va Server o'rtasidagi muloqot HTTP so'rov yuborish va HTTP javoblar qabul qilish orqali bo'ladi.

Mijoz — bu ko'p holatlarda sizni brauzeringiz (Chrome ,Safari va boshqalar) .

Server — bu odatda bulutli texnologiyalar yoki siz o'zingiz yaratishingiz mumkin bo'lgan malumot manbai.

endi HTTP so'rov va HTTP javoblar qaysi qismlardan iborat ekanligini ko'ramiz.

HTTP so'rov (request)

HTTP so'rov 4 qismdan iborat :

  1. URL — siz murojat qilayotgan internetdagi manzil (google.com , egov.uz)

  2. Method nomi — GET (malumot olish uchun) POST (malumot yozish uchun) ,PUT,DELETE , PATCH va boshqalar .

  3. Headers — Siz serverga uzatayotgan kichik malumotlar qaysi hostligi cookie va boshqa narsalar.

  4. Body — bu faqat qaysidir metodlardagina bo'lib serverda o'zgartirmoqchi yoki kiritmoqchi bo'lgan malumotlaringiz.

HTTP javoblar (response)

HTTP javoblar 3 qismdan iborat :

  1. Status Code — veb-sayt serveri ushbu so’rovni bajarish mumkinmi yoki yo’qligini ko’rsatish uchun brauzerga yuboradigan xabardir. (200 success), (404 not found) , (405 method not allowed).

  2. Headers — Sizga serverdan malumot turi va boshqalar ma'lumotlar.

  3. Body — bu serverdan olinayotgan malumotlar foydalanuvchilar ro'yxati .

so'rov
so'rov
javob
javob

Server yaratish

Kompyuteringizda Nodejs orqali oddiy server yaratish kodlari :

// index.html
<!DOCTYPE html>
<html>
<head>
  <title>My Website</title>
</head>
<body>
  <h1>Welcome to My Website</h1>
  <p>This is the homepage of my website.</p>
</body>
</html>
// server.js
const http = require('http');
const fs = require('fs');
const path = require('path');

const port = 3000;

const server = http.createServer((request, response) => {
  // Set the response header
  response.setHeader('Content-Type', 'text/html');

  // Read the index.html file
  fs.readFile(path.join(__dirname, 'index.html'), 'utf8', (err, data) => {
    if (err) {
      // If there was an error reading the file, send a 500 server error
      response.statusCode = 500;
      response.end('Internal Server Error');
    } else {
      // Send the contents of the index.html file as the response
      response.end(data);
    }
  });
});

// Start the server
server.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

HTTP qanday ishlaydi ?

HTTPda siz serverga so'rov yuborasiz u 7 bo'limdan iborat OSI qismlardan o'tib kabelga undan esa kabelga ulangan serverga yana 7 qismdan qaytib tiklanadi va xuddi shu tarzda javib qaytariladi. HTTP so'rov serverga borishdan oldin connection hosil qiladi va javob kelgandan so'ng uni yopadi.

http
http

HTTPS qanday ishlaydi ?

HTTPS bu HTTP lekin xavfsizroq nega , chunki ular so'rov yuborishni boshlashdan oldin handshake(kelishuv) yani bir xil keylarni almashib olishadi va buni yordamida yuborilgan so'rovlarni client va serverdan boshqa hechkim o'qiy olmasligiga yordam beradi.

https qanday ishlaydi
https qanday ishlaydi

HTTP 1.0

HTTP 1.0 ancha oldin ishlab chiqilgan u paytda serverlar xotirasi kamligi tufayli TCP connection ushlab turish ko'p joyni olgan va shuning uchun so'rovga javob yetib kelgach connection uzilgan. Bu holatda index.html dagi har bir rasm uchun qayta connection ochib so'rov uzatish zarur bo'lgan.

http 1.0
http 1.0

HTTP 1.1

HTTP 1.1 da 1.0 dagi muammo yani har bir so'rov uchun yangi connection ochishning o'rniga keep-alive header client tomondan qo'shib yuborilgan va bu orqali TCP connection ushlab turilgan . Hamda katta hajmdagi malumotlarni stream orqali uzatish ham ishga tushurilgan. Yana pipelineing yani bir vaqtni ichida ketma ket so'rov yuborish va ularni qabul qilib olish. Bu paralell 6 ta request bilan chegaralangan.

HTTP 1.1
HTTP 1.1

HTTP/2

HTTP/2 HTTP 1.1 ni yaxshilash va tezroq qilib ishlab chiqilgan unda, multiplexing ya’ni , bir nechta so’rovlar va javoblarni bir vaqtning o’zida bitta TCP connection orqali yuborish imkonini beradi . Shuningdek bu so`rov kutilmasdan server tomondan javob yuborilishi mumkin.

HTTP/2 streamdan foydalangan holda ma'lumotlarni uzatadi va har bir uzatilgan streamga streamId toq raqami bilan belgilaydi server tomonidan yaratilganlariga esa bularga juft raqamlar bilan belgilanadi , javob esa yuborilgan streamning idsi orqali qaytadi . Bundan tashqari HTTP/2 da header ma'lumotlarni compresslab hajmini kichraytiradi, default holatda xavfsiz bo'ladi (https) va TLS jarayonida qaysi protocol ishlatishni kelisha oladi.

Muammosi

Stream orqali uzatilgani uchun so'rovlar kutib turilmaydi ammo TCP da ular baribir ketma-ketlikda belgilangani uchun birinchi so'rov to'liq tuzib olinmaguncha 2-so'rovga o'tib ketilmaydi .

HTTP/2 asosiy g'oyasi bir nechta so'rovlarni birdaniga yuborish . Agar bu sizga kerak bo'lmasa HTTP 1.1 ishlatsangiz ham bo'laveradi.

HTTP/2
HTTP/2

HTTP/3

HTTP/3: 2020-yilda chiqarilgan eng so’nggi versiya oldinga sezilarli o'shish. U oldingi versiyalar tomonidan ishlatiladigan TCP o’rniga UDP ustiga qurilgan QUIC transport protokolidan foydalanadi. HTTP/3 kengaytirilgan xavfsizlik, yaxshilangan ishlash va tarmoq tiqilib qolishini yaxshiroq boshqarishni taklif qiladi. Ammo UDP so'rov va javoblarni yetkazib berishga kafolat bermaydi.!!! . Bu ham streamlardan foydalanadi ammo UDP bo'lagani uchun ketma-ketlik muammosidan xalos bo'lamiz. Bu juda ko`p CPU oladi hamda UDP aloqa katta proxy kompaniylar orqali bloklanadi odatda .

HTTP/3
HTTP/3

HTTP versiya va u haqidagi malumotlar shular edi.

E`tiboringiz uchun rahmat !!! Xato va kamchiliklar uchun uzr.