পাঠ্যক্রম খুলুন
প্রাথমিক পর্যায়

HTTP/1.1, HTTP/2 ও HTTP/3-এর পার্থক্য

HTTP/1.1, HTTP/2, and HTTP/3

এই পাঠের কুইজ ↓৬ মিনিট পড়াPHP 8.3+ · Laravel 12
এই পাঠের সূচিপত্র

এই পাঠে যা শিখবেন

  • HTTP/1.1 connection reuse ও HTTP/2 multiplexing
  • HTTP/3 ও QUIC-এর ভূমিকা
  • Protocol upgrade-এর বাস্তব সীমাবদ্ধতা

সমস্যা দিয়ে শুরু

একটি product page-এ CSS, images ও API data লাগে। একই server যথেষ্ট দ্রুত হলেও mobile network-এ অনেক request অপেক্ষা করে। শুধু controller optimize করলে পুরো page দ্রুত নাও হতে পারে। Transport protocol connection setup, concurrent delivery ও packet loss-এর সময় অপেক্ষার ধরন বদলায়।

সহজ করে বুঝি

HTTP semantics—method, status, headers—version বদলালেও মূলত একই থাকে। HTTP/1.1 persistent connection ব্যবহার করতে পারে; browser parallelism-এর জন্য একাধিক connection খোলে। HTTP/2 একটি TCP connection-এর stream-এ request/response multiplex করে এবং header compression ব্যবহার করে। কিন্তু TCP packet loss হলে connection-এর পরবর্তী bytes অপেক্ষা করতে পারে। HTTP/3 QUIC ব্যবহার করে; আলাদা stream-এর delivery loss isolation উন্নত করে, তবে congestion ও shared resources-এর প্রভাব থাকে। কোনো version database query magically দ্রুত করে না।

পরিচিত একটি উপমা

এক কাউন্টারের লম্বা সারি থেকে বহু token-এর service-এ যাওয়ার মতো HTTP/2। তবে সব token-এর কাগজ একই delivery van-এ আটকে গেলে সবাই অপেক্ষা করতে পারে। HTTP/3 কিছু stream-এর আটকে যাওয়া অন্য stream-এর delivery থেকে আলাদা করতে সাহায্য করে; রাস্তার মোট capacity তবু সীমিত।

নকশাটি দেখুন

Diagram লোড হচ্ছে…

Browser থেকে edge-এর connection আর edge থেকে origin-এর connection আলাদা।
Diagram-এর text flow দেখুন
flowchart TD
 B[Browser] --> E[Edge negotiates HTTP version]
 E -->|HTTP 1.1 or 2 upstream| P[Reverse Proxy]
 P --> L[Laravel PHP runtime]
 L --> D[(Database)]

Browser থেকে edge-এর connection আর edge থেকে origin-এর connection আলাদা। Public site HTTP/3 দিলেও origin Laravel server HTTP/1.1 ব্যবহার করতে পারে। Reverse proxy HTTP request decode করে application runtime-এ পাঠায়। তাই browser protocol দেখে internal network-এর protocol ধরে নেওয়া যাবে না। Response semantics ঠিক রাখা application-এরই দায়িত্ব।

PHP ও Laravel-এ প্রয়োগ

Laravel route fragment browser network tools-এ protocol যাচাইয়ের জন্য ছোট response দেয়। HTTP/2 বা HTTP/3 enable করতে edge/proxy ও certificate configuration দরকার; এই route protocol চালু করে না। এটি routes/web.php-এ রাখলে path /protocol-demo হবে।

php
use Illuminate\Support\Facades\Route;

Route::get('/protocol-demo', function () {
    return response()->json([
        'message' => 'একই HTTP semantics',
        'generated_at' => now()->toIso8601String(),
    ])->header('Cache-Control', 'no-store');
});

সুবিধা, সীমাবদ্ধতা ও trade-off

Multiplexing বহু small request-এ সহায়ক হতে পারে। Header compression repeated metadata কমায়। তবে proxy compatibility, CPU, connection limits ও network loss profile মেপে সিদ্ধান্ত নিন। HTTP/3-এর জন্য UDP reachability দরকার; client fallback থাকতে পারে। Security middleware, authorization ও rate limiting transport upgrade-এর বিকল্প নয়।

সাধারণ ভুল

  • HTTP/2 enable করেই N+1 query ঠিক হয়েছে বলা।
  • Browser থেকে origin পর্যন্ত একটিমাত্র connection ভাবা।
  • HTTP/3 হলেই সব client একই performance পাবে ধরে নেওয়া।

আরও একটু গভীরে

HTTP/2 stream concurrency unlimited নয়। Server settings, flow-control windows এবং resource limits কার্যকর থাকে। Header compression state ও connection reuse endpoint security policy-এর সঙ্গে যুক্ত। TLS-এ ALPN HTTP/2 negotiation-এ ব্যবহৃত হয়; HTTP/3 discovery deployment অনুযায়ী Alt-Svc বা DNS records ব্যবহার করতে পারে। নতুন connection আর warm reused connection আলাদা করে মাপুন, নইলে handshake improvement ও application latency গুলিয়ে যাবে।

মনে রাখুন

HTTP version transport efficiency বদলায়, business contract নয়। Edge ও origin আলাদা করে observe করুন। Warm connection, packet loss ও representative mobile network-এ পরীক্ষা করে লাভ বিচার করুন।

নিজে চেষ্টা করুন

একটি staging page-এর browser Network panel-এ protocol column চালু করুন। HTML, image ও API request-এর negotiated version লিখুন। তারপর disable cache দিয়ে cold load ও warm reload-এর waterfall তুলনা করুন; সংখ্যাকে universal benchmark হিসেবে প্রকাশ করবেন না।

নিজের বোঝা যাচাই করুন

1. HTTP/2 কী multiplex করে?

এক connection-এর একাধিক stream-এ message exchange করে। এতে HTTP/1.1-এর connection scheduling-এর কিছু সীমা কমে, কিন্তু TCP loss-এর shared অপেক্ষা থাকে।

2. HTTP/3 কি UDP মানেই unreliable?

না। QUIC UDP-এর ওপর reliability, stream ordering ও congestion control বাস্তবায়ন করে। Raw UDP-এর guarantee সরাসরি HTTP/3-এর guarantee নয়।

3. Laravel route-এ version switch করব?

সাধারণ deployment-এ edge বা reverse proxy negotiate করে। Route response version-independent semantics বজায় রাখে।

4. HTTP/2-এ unlimited request?

না। Concurrent streams, memory ও application worker limits থাকে। Multiplexing backend capacity বাড়িয়ে দেয় না।

5. কী মাপব?

Cold/warm connection, request waterfall, transferred bytes, errors ও user latency। আলাদা protocol-এর client population ভিন্ন হলে সেই bias লিখুন।

আরও পড়ুন

এই পাঠের কুইজ

এই পাঠ থেকে ২টি প্রশ্ন। উত্তর দিয়ে ব্যাখ্যা দেখুন; অধ্যায়ের কুইজ আলাদাভাবে দিতে হবে।

এই পাঠের ২টি প্রশ্নের উত্তর দিন। পাস করতে দুটিই সঠিক হতে হবে।

জমা দেওয়ার পর সঠিক উত্তর ও ব্যাখ্যা দেখবেন। ফলাফল এই ব্রাউজারে সংরক্ষিত থাকবে। অনুশীলনের ফল অধ্যায় সম্পন্নের হিসাবে যোগ হয় না।

সব বিষয় মিলিয়ে অনুশীলন করুন →

অগ্রগতি এই ব্রাউজারে সংরক্ষিত থাকে। শুধু পাঠ খুললে সম্পন্ন হয় না।