CodeGym/Java Blog/এলোমেলো/পার্ট 3। HTTP/HTTPS
John Squirrels
লেভেল 41
San Francisco

পার্ট 3। HTTP/HTTPS

এলোমেলো দলে প্রকাশিত
সদস্যগণ
এই উপাদানটি "এন্টারপ্রাইজ ডেভেলপমেন্টের ভূমিকা" সিরিজের অংশ। পূর্ববর্তী নিবন্ধ: পার্ট 3. HTTP/HTTPS - 1ওহে! আজ আমরা HTTP এবং HTTPS প্রোটোকল সম্পর্কে জানব। কিন্তু প্রথমে, আসুন একটি বিষয় স্পষ্ট করা যাক: আমরা OSI মডেলের অ্যাপ্লিকেশন স্তরে নেটওয়ার্কের মাধ্যমে ডেটা পাঠানোর জন্য প্রোটোকল সম্পর্কে কথা বলছি। আপনি হয়তো মনে করতে পারেন যে আমরা আগের নিবন্ধগুলির একটিতে OSI মডেলটি জেনেছি। যদি আপনার মনে না থাকে, তাহলে এটি এখানে

ডেটা কমিউনিকেশন প্রোটোকল কী?

একে আমরা সম্মত নিয়মের সেট বলি যা বিভিন্ন পরিষেবার বিকাশকারীদের এমন একটি বিন্যাসে তথ্য পাঠাতে দেয় যা অন্যরা বুঝতে পারে। উদাহরণস্বরূপ, আপনি Facebook এবং Twitter উভয় থেকে তথ্য পেতে Google Chrome ব্যবহার করতে পারেন, কারণ বিকাশকারীরা স্ট্যান্ডার্ড HTTP প্রোটোকল ব্যবহার করে এটি পাঠায়, যা আপনার ব্রাউজারকে এটি প্রক্রিয়া করার অনুমতি দেয়। সার্ভারের অংশটি বিকাশকারী ব্যক্তিদের জন্য অভিন্ন নিয়মগুলি খুব সুবিধাজনক: প্রচুর লাইব্রেরি রয়েছে যা আপনার জন্য তথ্য রূপান্তর করতে এবং উপযুক্ত প্রোটোকল ব্যবহার করে পাঠাতে পারে। এইচটিটিপি প্রাথমিকভাবে এইচটিএমএল পেজ পাঠানোর জন্য একটি প্রোটোকল হিসাবে কল্পনা করা হয়েছিল। এইভাবে এটি দীর্ঘদিন ব্যবহার করা হয়েছিল, কিন্তু এখন প্রোগ্রামাররা প্রায়শই স্ট্রিং এবং মিডিয়া ফাইল পাঠাতে এটি ব্যবহার করে। সাধারণভাবে, এই প্রোটোকলটি সর্বজনীনভাবে গৃহীত এবং বহুমুখী, এবং এটি ব্যবহার করা সত্যিই সহজ। এবং এখন আমরা এটি কীভাবে ব্যবহার করব তা তদন্ত করব।

HTTP এর গঠন

আমাদের এখনই নোট করা উচিত যে HTTP প্রোটোকল শুধুমাত্র পাঠ্য নিয়ে গঠিত। আমাদের সবচেয়ে আগ্রহের বিষয় হল এই পাঠ্যের গঠন। প্রতিটি বার্তা তিনটি অংশ নিয়ে গঠিত:
  1. স্টার্ট লাইন — এটি কিছু হাউসকিপিং ডেটা সংজ্ঞায়িত করে।
  2. শিরোনাম — এই বার্তা পরামিতি বর্ণনা.
  3. বডি - এটি বার্তার বিষয়বস্তু। একটি খালি লাইন দ্বারা শরীর শিরোনাম থেকে পৃথক করা আবশ্যক.
HTTP প্রোটোকল একটি সার্ভারে অনুরোধ পাঠাতে এবং সার্ভার থেকে প্রতিক্রিয়া পেতে ব্যবহৃত হয়। অনুরোধ এবং প্রতিক্রিয়ার পরামিতি সামান্য ভিন্ন।

এখানে একটি সাধারণ HTTP অনুরোধ কেমন দেখাচ্ছে:

GET / HTTP/1.1
Host: codegym.cc
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
শুরু লাইন নির্দেশ করে:
  • GET — অনুরোধের পদ্ধতি
  • / — অনুরোধের পথ
  • HTTP/1.1 — প্রোটোকল সংস্করণ
তারপর শিরোনাম আসা:
  • হোস্ট - যে হোস্টের কাছে অনুরোধটি সম্বোধন করা হয়
  • ব্যবহারকারী-এজেন্ট - অনুরোধ পাঠানো ক্লায়েন্ট
বার্তার অংশটি অনুপস্থিত৷ একটি HTTP অনুরোধে, শুধুমাত্র শুরু লাইন এবং "হোস্ট" শিরোনাম প্রয়োজন। এখন আসুন একবারে এক ধাপ সবকিছু দেখি। একটি HTTP অনুরোধে কিছু পদ্ধতি থাকতে হবে। তাদের মধ্যে নয়টি আছে: GET, POST, PUT, OPTIONS, HEAD, PATCH, DELETE, TRACE, Connect. সবচেয়ে সাধারণ হল GET এবং POST। এই দুটি পদ্ধতি প্রথমে যথেষ্ট হবে। GET — এই পদ্ধতি সার্ভার থেকে বিষয়বস্তুর অনুরোধ করে। তদনুসারে, GET পদ্ধতির সাথে অনুরোধের একটি বার্তা বডি নেই। কিন্তু যদি আপনার প্রয়োজন হয়, আপনি নিম্নলিখিত বিন্যাসে পথের মাধ্যমে (শুরু লাইনে) পরামিতিগুলি পাস করতে পারেন:
https://cdn.codegym.cc/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2
যেখানে codegym.cc হোস্ট, /send হল অনুরোধের পথ, এবং ? একটি বিভাজক যা নির্দেশ করে যে ক্যোয়ারী পরামিতি অনুসরণ করে। শেষে, কী-মান জোড়া ("কী=মান") তালিকাভুক্ত করা হয়, একটি অ্যাম্পারস্যান্ড দ্বারা পৃথক করা হয়। পোস্ট - এই পদ্ধতি সার্ভারে তথ্য প্রকাশ করে। একটি POST অনুরোধ বিভিন্ন ধরণের তথ্য পাঠাতে পারে: প্যারামিটারগুলি যেমন "key=value" জোড়া, JSON, HTML কোড, এমনকি ফাইল। সমস্ত তথ্য বার্তার মূল অংশে পাঠানো হয়। উদাহরণ স্বরূপ:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: codegym.cc

{
  "Id": 12345,
  "User": "John"
}
অনুরোধ পাঠানো হয়েছে codegym.cc/user/create/json, এবং প্রোটোকল সংস্করণ হল HTTP/1.1। "স্বীকার করুন" প্রতিক্রিয়া বিন্যাস নির্দেশ করে যা ক্লায়েন্ট পাওয়ার আশা করে। "কন্টেন্ট-টাইপ" অনুরোধে পাঠানো মেসেজের বডির ফরম্যাট নির্দেশ করে। "কন্টেন্ট-লেংথ" হল শরীরের অক্ষরের সংখ্যা। একটি HTTP অনুরোধে অনেকগুলি বিভিন্ন শিরোনাম থাকতে পারে। আরও তথ্যের জন্য, প্রোটোকলের স্পেসিফিকেশন দেখুন ।

HTTP প্রতিক্রিয়া

একটি অনুরোধ পাওয়ার পরে, সার্ভার এটি প্রক্রিয়া করে এবং ক্লায়েন্টকে একটি প্রতিক্রিয়া পাঠায়:
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), স্ট্যাটাস কোড (200), এবং স্ট্যাটাস বিবরণ (ঠিক আছে) রয়েছে। এর শিরোনামগুলি বিষয়বস্তুর ধরন এবং দৈর্ঘ্য অন্তর্ভুক্ত করে। রেসপন্স বডিতে এইচটিএমএল কোড থাকে যা ব্রাউজার একটি HTML পেজ হিসেবে রেন্ডার করে।

প্রতিক্রিয়া স্থিতি কোড

বার্তার মূল অংশ এবং শিরোনামগুলি সম্পর্কে সবকিছু পরিষ্কার, তবে আমাদের স্ট্যাটাস কোড সম্পর্কে কয়েকটি শব্দ বলা উচিত। প্রতিক্রিয়া স্ট্যাটাস কোড সবসময় তিন সংখ্যা হয়. কোডের প্রথম সংখ্যা প্রতিক্রিয়ার বিভাগ নির্দেশ করে:
  • 1xx — তথ্যপূর্ণ। অনুরোধ গৃহীত হয়. সার্ভারটি চালিয়ে যাওয়ার জন্য প্রস্তুত।
  • 2xx — সফল। অনুরোধ গৃহীত হয়েছে, বোঝা এবং প্রক্রিয়া করা হয়েছে.
  • 3xx — পুনঃনির্দেশ। অনুরোধটি প্রক্রিয়া করার জন্য অতিরিক্ত ক্রিয়াকলাপ সম্পাদন করতে হবে।
  • 4xx — ক্লায়েন্ট ত্রুটি। অনুরোধে ত্রুটি রয়েছে বা প্রোটোকল মেনে চলে না।
  • 5xx — সার্ভার ত্রুটি। অনুরোধটি সঠিকভাবে তৈরি করা হয়েছে, কিন্তু সার্ভার এটি প্রক্রিয়া করতে পারেনি৷
কোডের দ্বিতীয় এবং তৃতীয় সংখ্যাগুলি আরও নির্দিষ্ট প্রতিক্রিয়া নির্দেশ করে। উদাহরণ স্বরূপ:
  • 200 ঠিক আছে — অনুরোধটি গৃহীত হয়েছে এবং সফলভাবে প্রক্রিয়া করা হয়েছে।
  • 201 তৈরি করা হয়েছে - অনুরোধটি গৃহীত হয়েছে এবং সফলভাবে প্রক্রিয়া করা হয়েছে, যার ফলে একটি নতুন সংস্থান বা উদাহরণ তৈরি হয়েছে।
  • 301 স্থায়ীভাবে সরানো হয়েছে — অনুরোধ করা সংস্থানটি স্থায়ীভাবে সরানো হয়েছে। এটির পরবর্তী অনুরোধগুলি নতুন ঠিকানা ব্যবহার করে করা উচিত।
  • 307 অস্থায়ী পুনঃনির্দেশ — সংস্থানটি অস্থায়ীভাবে সরানো হয়েছে। আপাতত, এটি স্বয়ংক্রিয় ফরওয়ার্ডিং ব্যবহার করে অ্যাক্সেস করা যেতে পারে।
  • 403 নিষিদ্ধ — অনুরোধটি বোঝা গেছে, কিন্তু অনুমোদন প্রয়োজন৷
  • 404 পাওয়া যায়নি — সার্ভার এই ঠিকানায় সংস্থান খুঁজে পায়নি।
  • 501 বাস্তবায়িত হয়নি — সার্ভার অনুরোধে সাড়া দেওয়ার জন্য প্রয়োজনীয় কার্যকারিতা সমর্থন করে না।
  • 505 HTTP সংস্করণ সমর্থিত নয় — সার্ভার HTTP প্রোটোকলের নির্দিষ্ট সংস্করণ সমর্থন করে না।
প্রতিক্রিয়া স্ট্যাটাস কোড ছাড়াও, একটি স্ট্যাটাস বিবরণও পাঠানো হয়। এটি প্রতিটি নির্দিষ্ট স্থিতির অর্থ কী তা স্পষ্ট করতে সহায়তা করে। এইচটিটিপি প্রোটোকলটি খুবই ব্যবহারিক: এটি প্রচুর সংখ্যক হেডার প্রদান করে, যা আপনি একটি ক্লায়েন্ট এবং সার্ভারের মধ্যে খুব নমনীয় যোগাযোগের ব্যবস্থা করতে ব্যবহার করতে পারেন। সমস্ত অনুরোধ এবং প্রতিক্রিয়া শিরোনাম, অনুরোধের পদ্ধতি এবং প্রতিক্রিয়া স্থিতি কোডগুলির সম্পূর্ণ বিবেচনা একটি একক নিবন্ধের জন্য খুব বেশি হবে। আপনার প্রয়োজন হলে, আপনি প্রোটোকলের অফিসিয়াল স্পেসিফিকেশন পড়তে পারেন, যা সমস্ত সূক্ষ্মতা বর্ণনা করে। পোর্ট 80-এ HTTP প্রোটোকল ব্যবহার করা প্রথাগত, তাই যখন আপনি একটি URL দেখেন যা পোর্ট 80 দিয়ে শেষ হয়, আপনি আত্মবিশ্বাসী হতে পারেন যে এটি অ্যাক্সেস করার জন্য আপনাকে HTTP ব্যবহার করতে হবে। প্রযুক্তির বিকাশ এবং ব্যক্তিগত ডেটা ইন্টারনেটের মাধ্যমে পাঠানো শুরু হওয়ার সাথে সাথে ক্লায়েন্ট সার্ভারে যে তথ্য পাঠায় তার জন্য কীভাবে অতিরিক্ত সুরক্ষা প্রদান করা যায় সে সম্পর্কে চিন্তা করা প্রয়োজন হয়ে ওঠে। এই চিন্তার ফলাফল ছিল HTTPS প্রোটোকল।

HTTPS এবং HTTP এর মধ্যে পার্থক্য

সিনট্যাক্সের ক্ষেত্রে, HTTPS হল HTTP প্রোটোকলের অনুরূপ। অর্থাৎ, এটি একই স্টার্ট লাইন এবং হেডার ব্যবহার করে। শুধুমাত্র পার্থক্য হল অতিরিক্ত এনক্রিপশন এবং ডিফল্ট পোর্ট (443) । HTTPS HTTP এবং TCP এর মধ্যে এনক্রিপ্ট করা হয়, অর্থাৎ অ্যাপ্লিকেশন এবং পরিবহন স্তরগুলির মধ্যে। আপনি যদি এর অর্থ ভুলে গেছেন তবে OSI মডেলের নিবন্ধটি দেখুন । আজকের এনক্রিপশন মান হল TLS। আমরা এই বিষয়ে খুব বেশি যাব না, তবে মনে রাখবেন যে তথ্য পরিবহন স্তরে পৌঁছানোর আগে এনক্রিপশন ঘটে. এইচটিটিপিএস-এ, হোস্ট এবং পোর্ট ব্যতীত যেখানে অনুরোধ পাঠানো হয়, একেবারে সমস্ত তথ্য এনক্রিপ্ট করা হয়৷ HTTP এর পরিবর্তে HTTPS প্রোটোকল ব্যবহার করার জন্য একটি সার্ভার পরিবর্তন করার জন্য সার্ভার কোড পরিবর্তন করার প্রয়োজন হয় না। এই বৈশিষ্ট্যটি সার্লেট পাত্রে সক্ষম করা হয়েছে, যা আমরা পরবর্তী নিবন্ধে আলোচনা করব। এবং যে আজকের জন্য সব. আসলে, কিছুক্ষণ অপেক্ষা করুন। কিছু HTTP অনুরোধে আপনার হাত পেতে, Google Chrome খুলুন, F12 টিপুন এবং "নেটওয়ার্ক" ট্যাবটি নির্বাচন করুন৷ আপনার ব্রাউজার দ্বারা পাঠানো/প্রাপ্ত সমস্ত অনুরোধ এবং প্রতিক্রিয়া এখানে প্রদর্শিত হবে। পার্ট 4. মাভেন পার্ট 5 এর মূল বিষয়। সার্ভলেট এবং জাভা সার্ভলেট API। একটি সাধারণ ওয়েব অ্যাপ্লিকেশন লেখা পার্ট 6. সার্ভলেট কন্টেইনার পার্ট 7. MVC (মডেল-ভিউ-কন্ট্রোলার) প্যাটার্ন প্রবর্তন করা হচ্ছে
মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই