Http Details Bangla Tutorial – এইচটিটিপি ডিটেইলস বাংলা টিউটোরিয়ালটি আপনাদের জন্যে গুরুত্বপূর্ণ একটি টিউটোরিয়াল। HTTP(Hyper Text Transfer Protocol) মূলত ডাটা পাঠানোর জন্যে (ওয়েবপেইজ ডাটা যেমনঃ এইচটিএমএল-HTML, ইমেজ, ভিডিও) ওয়েব সার্ভারের সাথে যোগাযোগ করে থাকে। এটি ৮০ নাম্বার পোর্ট ব্যবহার করে। টিম বার্নাস লি এবং তার টিম মিলে (১৯৮৯-১৯৯১) এইচটিটিপি ডেভেলপ করেন। তবে, HTTP তে ডাটার কোন পরিচয় যাচাইকরণের ব্যবস্থা নেই। তুলনামূলক ভাবে HTTP কম খুবই সিকিউর। প্রথমত HTTP এর মাধ্যমে পাঠানো ডাটা এনক্রিপশন করা থাকে না। যার কারণে কোন থার্ড পার্টি (এ্যাটার্কার, হ্যাকার) খুব সহজেই দুটি মাধ্যমের মধ্যে আদান প্রদানকৃত ডাটা গেদার(GATHER) করতে পারে।
HTTPS(Hyper Text Transfer Protocol Secure) এইচটিটিপিএস হলো HTTP এর সিকিউর বা সুরক্ষিত ভার্সন৷ HTTPS এর মাধ্যমে পাঠানো ডাটা সুরক্ষিত থাকে কেননা HTTPS ডাটা এনক্রিপশন করে থাকে(USE SSL / TSL PROTOCOL) যার কারণে কোন থার্ড পার্টি রিসিভার এবং সেন্ডার এর পাঠানো ডেটা দেখতে পারে না। এছাড়া এটি সঠিক সার্ভারের সাথেই যোগাযোগ করার নিশ্চয়তা প্রদান করে। এছাড়া ইউজারের সেনসিটিভ তথ্য যেমন- ক্রেডিট কার্ড(Credit Card), ব্যাংক নাম্বার(Bank Number), লগিন ক্রেডেনশিয়াল(Login Credentials) ইত্যাদি নিরাপদে অনলাইনে ট্রান্সমিট করার সুযোগ দেয় এইচটিটিপিএস প্রোটোকল। সার্ভারের সাথে যোগাযোগের ক্ষেত্রে ৪৪৩ নাম্বার পোর্ট ব্যবহার করে।
REQUEST AND RESPONSE
যখন আমরা কোন ওয়েবসাইটে প্রবেশ করতে যাই তখন আমাদের ইচ্ছানুযায়ী সাইটিকে (google.com) আমরা ব্রাউজারের সার্চ বক্সে লিখে যখন এন্টার প্রেস করি ঠিক তখনই আমাদের ব্রাউজার থেকে গুগল সার্ভারে একটি রিকুয়েস্ট যায় এবং পরবর্তীতে গুগল সার্ভার থেকে রেসপন্সের মাধ্যমে আমরা গুগলের পেইজ, কনটেন্ট, ছবি ইত্যাদি দেখতে পারি। কিন্তু এর পূর্বে ব্রাউজারকে অবশ্যই আমাদের জানিয়ে দিতে হয় যে আমরা কোথায় যেতে চাচ্ছি। এক্ষেত্রে URL(Uniform Resource Locator), ইউআরএল আমাদের সাহায্য করে থাকে।
URL(Uniform Resource Locator)
Http Details Bangla Tutorial টিতে আমরা ইউআরএল নিয়ে বিস্তারিত আলোচনার করার চেষ্টা করেছি। যদি আপনি ইন্টারনেট ব্যবহারকারী হয়ে থাকেন তবে অনেক পূর্বেই আপনি ইউআরএল(URL) এর নাম শুনে থাকবেন। ইউআরএল মূলত ইন্টারনেটে থাকা কোন রির্সোস(resource) কে এক্সেস (access) করার জন্যে অনুমতি দেয়।
SCHEME: HTTP, HTTPS, FTP (Protocol) এর রিসোর্স সমূহ এক্সেস (access) করার জন্যে কোন ধরণের প্রোটোকল ব্যবহার করতে হবে তা schema নির্দেশ করে।
USER: অনলাইনে কিছু সার্ভিস ব্যবহারের ক্ষেত্রে অথেনটিকেশন (authentication) অর্থাৎ লগিন/রেজিষ্ট্রেশন এর ব্যবস্থা থাকে। সেক্ষেত্রে আপনি ইউআরএলে একটি ইউজারনেইম এবং পাসওয়ার্ড ব্যবহার করে লগিন করতে পারেন।
HOST: ডোমেইন নাম কিংবা সার্ভারের আইপিই মূলত হোস্ট। PORT: অন্য কোন সার্ভারের সাথে যোগাযোগ করতে হলে ঐই সার্ভারের পোর্টের সাথে আপনাকে যোগাযোগ করতে হবে। মনে করুন, আপনার ব্রাউজার থেকে একটি HTTPS(443 no port) রিকুয়েস্ট গেছে ফেসবুকের সার্ভারে। যদি ফেসবুক সার্ভারে HTTPS(443 NO PORT) নাম্বারটি বন্ধ থাকে সেক্ষেত্রে আপনি ফেসবুক সার্ভার থেকে কোন রেসপন্স পাবেন না। ইন্টারনেট এবং নেটওয়ার্কিং জগতে পোর্ট খুবই গুরুত্বপূর্ণ ভূমিকা পালন করে যা আমরা অন্য কোন একদিন জানবো।
PATH: কোন ওয়েবসাইটের যে রিসোর্সে আপনি এক্সেস নিতে চাচ্ছেন সেটির লোকেশনই হলো পাত (PATH).
QUERY STRING: কোন একটি রিকুয়েস্ট করা (PATH) এর সাথে অতিরিক্ত কিছু তথ্য আনার জন্যে Query String কোয়ারি স্ট্রিং ব্যবহার করা হয়। একে প্যারামিটার ও বলা যায়। যেমনঃ yourpage.com/blog?id=1 (এটি দ্বারা আমরা বুঝতে পারি রিকুয়েস্ট করা (/blog) ব্লগ পাতের মধ্যে (?id=1) অর্থাৎ ১ নাম্বার (id) আইডির ব্লগটি চাওয়া হয়েছে।
FRAGMENT: এটি ওয়েব পেইজের নির্দিষ্ট একটি অবস্থানকে উল্লেখ করে। yoursite.com/blog#make-a-blog এখানে #make-a-blog একটি ফ্রাগমেন্ট। দীর্ঘ কনটেন্টযুক্ত ওয়েবপেইজে ফ্রাগমেন্ট ব্যবহার করা হয়। যখন কোন ব্যবহারকারী ঐ ওয়েব পেইজে অবস্থান করে তখনে সে এটি দেখতে পারে।
REQUEST MAKING:
মাত্র একটি লাইন ব্যবহার করে খুব সহজেই সার্ভারে রিকুয়েস্ট পাঠানো সম্ভব।
=> ”GET/HTTP/1.1”
কিন্তু ওয়েব সার্ভারের সাথে যোগাযোগের জন্যে আপনাকে অন্যান্য ডেটা ও পাঠাতে হয় যেটা হেডারের মধ্যে থাকে। মূলত হেডারে অতিরিক্ত কিছু তথ্য জমা থাকে যা সাভার্র এবং ক্লাইন্টের মধ্যে ডাটা ট্রান্সফার করে থাকে। আমরা অবশ্যই হেডার নিয়ে বিস্তারিত আলোচনা করবো।
GET / HTTP/1.1
Host: bdblog24.com
User-Agent: Mozilla/5.0 Firefox/99.0
Referer: https://bdblog24.com.com/
- Line 1: GET রিকুয়েস্টের মাধ্যমে সার্ভারে ওয়েবসার্ভারে রিকুয়েস্ট সেন্ড করা হয়েছে এবং সার্ভারকে বলা হয়েছে আমরা এইচটিটিপি প্রোটোকলের [HTTP PROTOCOL] ১.১ ভার্সন ব্যবহার করছি।
- LINE 2: ওয়েব সার্ভারকে আমরা বলেছি যে সাইটটি আমরা চাই।
- LINE 3: আমরা ওয়েব সার্ভারকে বলেছি যে, আমরা কোন ব্রাউজার থেকে সার্ভারে রিকুয়েস্ট পাঠিয়েছি।
- LINE 4: ওয়েব সার্ভারকে আমরা বলেছি যে, আমাদের এই সাইটটিতে রেফার করা হয়েছে।
- LINE 5: উপরের ছবিতে পাশাপাশি চারটি লাই থাকলে ও আরো একটি লাইন আছে যা কিনা ব্ল্যাঙ্ক অবস্থায় আছে এবং আমরা দেখতে পারছি না। সর্বদাই HTTP REQUEST একটি ব্ল্যাঙ্ক লাইনের মাধ্যমে শেষ হয়ে ওয়েব সার্ভারকে ইনফর্ম করে যে, রিকুয়েস্টটি শেষ করা হয়েছে।
HEADER RESPONSE EXAMPLE FROM SERVER:
HTTP/1.1 200 OK
Server: apache/2.4.46
Date: Sat, 14 Feb 2022 14:30:10 GMT
Content-Type: text/html
Content-Length: 58
<html>
<head>
<title>Learning HTTP Response</title>
</head>
<body>
Welcome To bdblog24
</body>
</html>
- LINE 1: HTTP 1.1 হলো HTTP PROTOCOL এর একটি ভার্সন যা কিনা সার্ভারটি ব্যবহার করছে এবং 200 OK স্ট্যাটাস কোড প্রদর্শন করছে যা দ্বারা আমরা বুঝতে পারি আমাদের রিকুয়েস্টটি সফলভাবে সম্পন্ন হয়েছে।
- LINE 2: দ্বিতীয় লাইনটি আমাদের বলছে সার্ভার নাম এবং এর ভার্সন। যা ইনফরমেশন গেদারিং এর একটি গুরুত্বপূর্ণ অংশ। কোন একটি ওয়েবসাইট কোন সার্ভার ব্যবহার করছে বা কোন সার্ভারের ভার্সন কোনটি তা সার্ভার রেসপন্সের দ্বিতীয় লাইন দ্বারা বুঝা সম্ভব।
- LINE 3: সার্ভারের নির্দিষ্ট তারিখ, সময় এবং GMT প্রদর্শন করছে।
- LINE 4: কনটেন্ট টাইপ হেডার [CONTENT TYPE HEADER] ক্লাইন্টকে বলছে কোন ধরণের ডাটা পাঠানো হচ্ছে। যেমনঃ Html file, Video, PDf, XML Etc.
- LINE 5: [CONTENT-LENGTH] ক্লাইন্টকে বলে যে, কতক্ষণ সময় ধরে রেসপন্সটি চলবে, যা দ্বারা নিশ্চিত হওয়া যায় যে, পাঠানো কোন ডাটা মিসিং নেই।
- LINE 6:এইচটিটিপি রেসপন্স [HTTP RESPONSE] একটি ব্ল্যাঙ্ক[Blank] লাইন ধারণ করে যা দ্বারা HTTP RESPONSE শেষ হয়েছে এটি সে নির্দেশ করে থাকে।
- LINE 7-14 : লাইন ৭-১৪ হলো সার্ভার থেকে পাওয়া রেসপন্সটি হোমপেইজে প্রদর্শিত হয়েছে।
HTTP METHOD
Http Details Bangla Tutorial – এইচটিটিপি ডিটেইলস বাংলা টিউটোরিয়ালের এই পর্যায়ে আমরা HTTP METHOD নিয় আলোচনা করবো। এইচটিটিপি (HTTP) এর কিছু মেথড বা রিকুয়েস্ট আছে যার দ্বারা সার্ভারের সাথে ব্রাউজার যোগাযোগ করে থাকে। কিছু ব্যবহৃত রিকুয়েস্ট(METHOD) নিয়ে আমরা আলোচনা করবো। তবে GET এবং POST খুব পরিচিত দুইটি রিকুয়েস্ট যার সাহায্যে আমরা প্রতিনিয়তই সার্ভারের সাথে যোগাযোগ করে যাচ্ছি।
GET REQUEST: এটি ব্যবহার হয় যখন আমরা সার্ভার থেকে কোন তথ্য পাবার জন্যে রিকুয়েস্ট করি। তখন গেট রিকুয়েস্টের মাধ্যমেই সার্ভারে রিকুয়েস্ট যায়।
POST REQUEST: যখন আমরা ওয়েব সার্ভারে কোন ডাটা সেন্ড করি যেমনঃ ডটা সাবমিট ফর্ম, লগিন ফর্ম ইত্যাদি। তখন যে রিকুয়েস্ট সার্ভারে যায়, সেটাই পোস্ট রিকুয়েস্ট৷
PUT REQUEST: ওয়েব সার্ভারের কোন ডাটা আপডেট করার জন্যে সার্ভারে পুট রিকুয়েস্ট পাঠানো হয়।
DELETE REQUEST: ওয়েব সার্ভার থেকে কোন ডাটা কিংবা রেকর্ড ডিলিট করার জন্যে ডিলিট রিকুয়েস্ট ব্যবহার করা হয়।
HEADER EXPLAIN IN BANGLA:
হেডার [HEADER] হলো মূলত ডাটার অতিরিক্ত একটি অংশ, যেটি আপনি সার্ভারে রিকুয়েস্ট তৈরি করার সময় পাঠাতে পারেন। যদিও [HTTP REQUEST] এইচটিটিপি রিকুয়েষ্ট তৈরি করার সময় হেডারের খুব জরুরি প্রয়োজন হয় না তবে আপনি হেডারের এই ডাটাগুলো ওয়েবপেইজে খুঁজে পাবেন না।
Common Request Header From Client Browser:
HOST: কিছু ওয়েব সার্ভার মূলত বেশি কিছু সাইট একসাথে হোস্ট করে থাকে। এক্ষেত্রে হোস্ট হেডার প্রদান করে আপনি সার্ভারকে বলতে পারেন কোন ওয়েবসাইটটিতে আপনি প্রবেশ করতে চান। অন্যথায় আপনি ঐই সার্ভারের ডিফল্টভাবে থাকা ওয়েবসাইটি পাবেন।
USER-AGENT: এটি আপনার ব্রাউজার সফটওয়্যার এবং এর ভার্সন নাম্বার নির্দেশ করে থাকে। এটি ওয়ের সার্ভারকে আপনার ব্রাউজার সম্পর্কে অবহিত করে যেন সার্ভার আপনার ব্রাউজারের জন্যে ওয়েবসাইটিকে সম্পূর্ণভাবে প্রদর্শন করতে পারে।
CONTENT-LENGTH: যখন ওয়েব সার্ভারে কোন ডাটা সেন্ড করা হয় ( যেমন- ফর্ম); Content Length ওয়েব সার্ভার কে বলে দেয় কি পরিমাণ ডাটা এই ওয়েব রিকুয়েস্টে যাবে। এর মাধ্যমে সার্ভার নিশ্চিত করতে পারে যে, এই রিকুয়েষ্টে কোন ডাটা মিসিং(missing) নেই।
ACCEPT-ENCODING: এটি ব্রাউজারকে বলে কোন টাইপ এনকোডিং পদ্ধতি রিকুয়েষ্ট তৈরি করা ব্রাউজারটি সাপোর্ট করে এবং যার প্রেক্ষিতে ডাটা ছোট ছোট অবস্থায় ইন্টারনেটে ট্রান্সমিটিং(transmitting) হয়।
COOKIE: এটি গুরুত্বপূর্ণ একটি অংশ। বিভিন্ন কাজেই Cookie এর ব্যবহার আছে তবে কোন ওয়েবসাইটে ক্লাইন্টের অথেনটিকেশন(authentication) যাচাইের ক্ষেত্রে বেশি ব্যবহার করা হয় Cookie. এটিতে কোন পরিষ্কার টেক্সট থাকে না, একটি টোকেন থাকে যা মানুষ পড়তে পারবে না বা হিউম্যান রিড
এবল ( human readable) না। আপনার লগিন ইনফো যেমন- ইউজারনেইম, পাসওয়ার্ড ইত্যাদি Cookie এর মধ্যে জমা করে রাখা থাকে।
Common Response Header From Server:
SET COOKIES: কোন ওয়েবসাইটে লগিন/রেজিস্টেশন করার পর ওই ওয়েব সার্ভার থেকে আপনাকে একটি কুকি দিবে এবং পরবর্তীতে আপনার এবং সার্ভারের মধ্যকার প্রতিটি রিকুয়েস্টেই সার্ভার হেডারের মধ্যে [SERVER HEADER] এই কুকি টি থাকবে।
CACHE-CONTROL: এটি মূলত HTTP HEADER যা ক্লায়েন্ট এবং সার্ভার উভয় ক্ষেত্রের ক্যাশিং পলিসি (Caching-Policies) নীতি মেনে চলে। কিভাবে একটি রিসোর্স ক্যাশ(Cache) করা হবে, এটি কোথায় ক্যাশ করা হবে এবং এর সময় এক্সপায়ার(EXPIRE) হবার পূৃ্র্বে এটি কত সময় ধরে থাকবে তা নির্ধারণ করে।
CONTENT-TYPE: এটি ক্লাইন্টকে বলে কোন ধরণের ডাটা সার্ভার থেকে রিটার্ন করেছে (যেমনঃ HTML, CSS, JS, IMAGES, PDF, VIDEO ETC). কনটেন্ট টাইপ হেডার [CONTENT-TYPE HEADER] ব্যবহার করেই ব্রাউজার ঠিক করে কিভাবে ডেটাটি প্রেসস করতে হবে
CONTENT-ENCODING: সার্ভার থেকে ডাটাটি কোন পদ্ধতির মাধ্যমে কমপ্রেস হয়ে ইন্টারনেটে গিয়েছে তা এটি নির্দেশ করে।
HTTP Status Code Bangla:
পূর্বে আমরা জেনেছি যে, যখন একটি ওয়েব সার্ভার [WEB SERVER] রেসপন্স করে তখন এটি সবসময়ই প্রথম লাইনে একটি স্ট্যাটাস কোড ধারণ করে থাকে যা কিনা ক্লাইন্টের রিকুয়েস্টের উপর নির্ভর করে এবং পরবর্তীতে এটি কিভাবে পরিচালিত হবে তা জানায়। এই স্ট্যাটাস কোডগুলিকে আবার পাঁচভাগে ভাগ করা হয়েছে।
STATUS CODE | RESPONSE LEVEL |
---|---|
(100-199)- Information Response | ইনফরমেশন রেসপন্স [Information Response] দ্বারা আমরা বুঝতে পারি যে, ক্লাইন্টের [CLIENT] কাছে থেকে সার্ভারে যাওয়া রিকুয়েস্টটি সার্ভার কর্তৃক গৃহীত হয়েছে। ক্লাইন্ট এখন সার্ভারে পরবর্তী রিকুয়েস্ট পাঠানো চালিয়ে যেতে পারেন। |
(200-299) – Success | সার্ভারে ক্লাইন্টের রিকুয়েস্ট সফল হয়েছে তা জানানোরা জন্য এই স্ট্যাটাস কোড [STATUS CODE] ব্যবহৃত হয়। 200 Ok খুবই পরিচিত একটি এইচটিটিপি রেসপন্স [HTTP RESPONSE] |
(300-399)- Redirection | এইচটিটিপি স্ট্যাটাস কোডের [HTTP STATUS CODE] এই সারির কোডগুলো ক্লাইন্টকে কোন একটি ওয়েবপেইজের কোন রিসোর্স কিংবা সাইটের অন্য কোন পেইজে পাঠাতে সাহায্য করে। এটা হতে পারে একই সাইটের এক পাত[PATH] থেকে অপর পাতে [PATH] যাওয়া কিংবা অন্য কোন ওয়েবসাইটে নিয়ে যাওয়া। |
(400-499) – Client Errors | ব্রাউজার থেকে সার্ভারো পাঠানো কোন রিকুয়েস্টে যখন ত্রুটি থাকে তখন এই সারির কোডগুলো ব্যবহার করে ক্লাইন্টকে তা জানানো হয়। [ 400 Bad Request, 401 Unauthorized, 403 Forbidden] পরিচিত স্ট্যাটাস কোড [STATUS CODE]. |
(500-599)- Server Errors | সার্ভার জনিত কোন সমস্যা যেটি [টেম্পোরারি কিংবা পারমানেন্ট হতে পারে] থাকলে (500-599) এই সারির কোডগুলো ব্যবহৃত হয়ে থাকে। [500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable] সার্ভার এরর [Server Error] রেঞ্জের কমন স্ট্যাটাস কোড। |
আশা করা যায়, Http Details Bangla Tutorial – এইচটিটিপি ডিটেইলস বাংলা টিউটোরিয়ালটি আপনাদের ভালো লেগেছে।