"হাই, অ্যামিগো!"

"হাই, বিলাবো!"

"আজকে কোন নতুন কথা বলবেন?"

"অনেক কিছু। কিন্তু শুরু করার জন্য, আমি মনে করি আমরা একটি নেটওয়ার্ক এবং ইন্টারনেট নিয়ে কাজ করার বিষয়ে আলোচনা করব। আগ্রহী?"

"হ্যাঁ। গ্যালাকটিক ইন্টারনেট খুবই ভালো।"

"ঠিক আছে, তবে কিছু ইতিহাস দিয়ে শুরু করা যাক। একবিংশ শতাব্দীর শুরুতে পরিস্থিতি এমন ছিল..."

"ইন্টারনেটের সাথে সংযুক্ত প্রতিটি কম্পিউটারের একটি অনন্য নম্বর ছিল। এটি একটি সাধারণ 4-বাইট নম্বর ছিল। একে IP ঠিকানা বলা হয়।"

"কিন্তু মানুষের স্মৃতিশক্তি দুর্বল এবং 2108458776 এর মতো কিছু মনে রাখার জন্য সংগ্রাম করে, তাই তারা প্রায়শই প্রতিটি বাইট আলাদাভাবে লেখে।"

"যদি আমরা ফোর-বাইট সংখ্যা 2108458776 আলাদা বাইটে বিভক্ত করি, তাহলে আমরা 125.172.135.24 পাব। আপনি যেমন মনে করবেন, প্রতিটি বাইট 8 বিট নিয়ে গঠিত এবং 0 থেকে 255 পর্যন্ত সংখ্যা থাকতে পারে।"

"তাহলে, এইভাবে আমরা সংখ্যা লিখছি?"

"হ্যাঁ। ফোর-বাইট সংখ্যাগুলি যখন এইভাবে লেখা হয় তখন মনে রাখা সহজ (মানুষের জন্য)।"

"যেমনটি ঘটেছে, মাত্র 4 বাইট ব্যবহার করার পছন্দটি শীঘ্রই তাদের উপর একটি নিষ্ঠুর কৌশল খেলেছে। ইন্টারনেটের সাথে সংযুক্ত ডিভাইসের সংখ্যা এত দ্রুত বৃদ্ধি পেয়েছে যে শীঘ্রই তাদের সংখ্যা শেষ হয়ে গেছে।"

"তারা কিভাবে এটি কাছাকাছি পেতে?"

"মানুষ সাধারণত যা করে তা তারা করেছে।"

"তারা আইপি অ্যাড্রেসের জন্য একটি নতুন স্ট্যান্ডার্ড নিয়ে এসেছিল এবং গর্বের সাথে এটির নাম দিয়েছে IPv6।"

"একটি সাধারণ আইপি ঠিকানার বিপরীতে (আইপিভি 4 বলা হয়) যা একটি অনন্য সংখ্যা তৈরি করতে 4 বাইট ব্যবহার করে, নতুন মান 16 ব্যবহার করে।"

"শুধু চিন্তা করুন, মানুষ একটি সাধারণ সংখ্যার 10টি সংখ্যা মনে রাখতে পারে না (যেমন 2108458776), তাই তাদের তাদের 4 ভাগে ভাগ করতে হয়েছিল, কিন্তু তারপরে তারা 16 বাইট সমন্বিত সংখ্যাগুলি ব্যবহার করার কথা ভেবেছিল।"

"হ্যাঁ, মাঝে মাঝে মানুষ অদ্ভুত হয়।"

"হ্যাঁ। মানুষ তো মানুষ।"

"এটি বলেছিল, তারা তাদের দুর্দশা থেকে বেরিয়ে এসেছে।"

"তারা সংখ্যাগুলি মনে রাখতে ক্লান্ত হয়ে পড়েছিল এবং সেগুলিকে শব্দ দিয়ে প্রতিস্থাপন করার সিদ্ধান্ত নিয়েছে।"

"সেটা কেমন? আপনি কি আমাকে একটি উদাহরণ দিতে পারেন?"

"অবশ্যই, web.mail.com , google.com , new.books.amazon.com , …"

"এই ধরণের নামকে ডোমেন বলা হয়।"

"এই ইন্টারনেট সঠিকভাবে কাজ করার জন্য, তারা ডোমেন নেম সিস্টেম (DNS) নামে একটি বিশেষ টেবিল তৈরি করেছে যা প্রতিটি ডোমেন নামের আইপি ঠিকানা সংরক্ষণ করে।"

"এখানে কিভাবে এটা কাজ করে."

1)  একজন ব্যবহারকারী একটি ব্রাউজারে একটি ঠিকানা প্রবেশ করান, উদাহরণস্বরূপ, web.mail.com

2)  ব্রাউজারটি DNS অ্যাক্সেস করে এবং IP ঠিকানা পেতে ডোমেন নাম ব্যবহার করে।

3)  প্রয়োজনীয় URL সহ একটি অনুরোধ এই IP ঠিকানায় পাঠানো হয়।

"এটি খুব সহজ দেখায় না।"

"কিন্তু এই পদ্ধতির বেশ কিছু সুবিধা আছে:"

" 1) মানুষ এমন নাম মনে রাখা সহজ বলে মনে করে যা মৌখিকভাবে বলা যেতে পারে।"

" 2) নামের শুরুতে সাবডোমেন যোগ করে ডোমেন নামগুলিকে ক্রমানুসারে তৈরি করা যেতে পারে৷ ঠিক জাভাতে প্যাকেজ নামের মতো৷"

" 3) আপনি যদি ওয়েব সার্ভারের আইপি ঠিকানা পরিবর্তন করতে চান তবে আপনাকে শুধুমাত্র DNS রেকর্ড পরিবর্তন করতে হবে এবং সবকিছু আগের মতোই কাজ করবে - ব্যবহারকারীদের একটি নতুন ঠিকানা মনে রাখতে হবে না।"

"DNS দেখতে এরকম কিছু দেখায়:"

ডোমেন নাম আইপি ঠিকানা
mail.com 128.35.36.189
web.mail.com 145.12.17.13
new.mail.com 192.155.15.3
google.com 92.117.151.100
google.com 193.168.0.1
docs.google.com 217.12.222.1

"বুদ্ধি করে তোলে।"

"যাইহোক, একটি ডোমেন হল একটি কম্পিউটারের নাম, কিন্তু আমাদের কম্পিউটারের প্রয়োজন নেই — কম্পিউটারে যা আছে তা আমাদের প্রয়োজন। URL গুলি এর জন্য।"

"প্রাথমিকভাবে, একটি URL আসলে অন্য কম্পিউটারে একটি ফাইলের লিঙ্ক ছিল৷ উদাহরণস্বরূপ:"

উদাহরণ
http://info.codegym.cc/user/info/profile.html _ _ _ _
বর্ণনা
http  হল ক্লায়েন্ট-সার্ভার যোগাযোগের প্রোটোকল
info.codegym.cc  হল কম্পিউটারের ডোমেন নাম
user/info/profile.html  হল কম্পিউটারে ফাইলের পথ

"নেটওয়ার্ক ডেভেলপমেন্টের একেবারে শুরুতে, একটি ওয়েব সার্ভার শুধুমাত্র সেই ফাইলগুলিকে পরিবেশন করতে একটি URL ব্যবহার করতে সক্ষম হয়েছিল যা এটি কোথাও সংরক্ষণ করে। URLটি আসলে ফাইলটির একটি বিশ্বব্যাপী পথ ছিল: কম্পিউটার নাম + পথ।"

"পরে, যখন ওয়েব সার্ভারগুলি নিজেরাই ফাইল তৈরি করা শুরু করে, তখন URLগুলি কিছুটা পরিবর্তিত হয় এবং ওয়েব সার্ভারের কাছে একটি অনুরোধে পরিণত হয়৷ অনুরোধের পরামিতিগুলিও যোগ করা হয়েছিল৷"

"আজকে একটি URL এর শেষে একটি ফাইল এক্সটেনশন দেখা বিরল৷ "একটি আধুনিক URL হল প্যারামিটার সহ একটি অনন্য লিঙ্ক৷ গ্লোবাল ফাইল পাথের পরিবর্তে একটি পদ্ধতি কলের মতো।"

"একটি ক্লাসিক আধুনিক URL এর মত দেখাচ্ছে:"

URL পার্সিং
http://codegym.cc/alpha/api/contacts ? _ _ _ _ userid=13&filter=none&page=3
URL এর অংশগুলির বর্ণনা
codegym.cc  হল ডোমেইন নাম — ইন্টারনেটে একটি কম্পিউটারের অনন্য নাম (ঠিকানা)
http  হল ক্লায়েন্ট-সার্ভার যোগাযোগের প্রোটোকল
alpha/api/contacts  হল ওয়েব সার্ভারের অনুরোধ বা সার্ভারে একটি ওয়েবপৃষ্ঠার অনুরোধ
userid=13 & filter=none & page=3  হল অনুরোধের পরামিতি সহ একটি স্ট্রিং

"হ্যাঁ, আমার মনে আছে। আপনি আমাকে সম্প্রতি ইউআরএল সম্পর্কে বলেছিলেন।"

"এবং পোর্ট সম্পর্কেও। আপনি একটি অ্যাপার্টমেন্ট বিল্ডিংয়ের উদাহরণ ব্যবহার করেছেন।"

"'http' কী তা আমাকে জানালে ভালো হবে। আমি সব জায়গায় 'প্রটোকল' লেখা দেখতে পাচ্ছি, কিন্তু সেটা কী তা আমি স্পষ্ট নই।"

"ঠিক আছে। আমি আর কোনো ঝামেলা ছাড়াই তোমাকে বলবো।"

আইপি-ঠিকানা, ডোমেইন, ইউআরএল - 1

" HTTP হল H yper T ext T ransport P রোটোকল এবং হাইপারটেক্সট স্থানান্তরের জন্য।"

"হাইপারটেক্সট কি?"

"এটি HTML।"

"মোটামুটিভাবে বলতে গেলে, একটি প্রোটোকল হল যোগাযোগের নিয়মগুলির একটি সেট৷ এটি একটি ওয়েব সার্ভারে পাঠানো অনুরোধগুলি এবং কী ফর্ম্যাটে, সেইসাথে ওয়েব সার্ভারের কীভাবে প্রতিক্রিয়া জানানো উচিত তা বর্ণনা করে৷"

"সংক্ষেপে, পরিস্থিতি হল এই। সাধারণ পাঠ্য ফাইল বা, আপনি যদি চান, পাঠ্যের বড় অংশ ক্লায়েন্ট এবং সার্ভারের মধ্যে পাঠানো হয়। "

"একটি অনুরোধ সার্ভারে আসে এবং সার্ভার প্রতিটি অনুরোধের একটি প্রতিক্রিয়া প্রদান করে।"

"এরকম একটি অনুরোধ এবং প্রতিক্রিয়ার উদাহরণ এখানে রয়েছে:"

অনুরোধ
GET alpha/api/contacts HTTP/1.1
Host: codegym.cc
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
বর্ণনা
GET – request subtype
alpha/api/contacts – request to the web server
HTTP/1.1 – protocol version – HTTP/1.1
Host: codegym.cc – domain name
User-Agent: Mozilla/5 – unique browser name
Accept: text/html – requested document type: HTML
Connection: close – close the server connection after processing the request.

"প্রথম লাইনটি হল প্রকৃত অনুরোধ। নিম্নলিখিতগুলি অতিরিক্ত অনুরোধের পরামিতিগুলি, যা 'হেডার ক্ষেত্র' নামেও পরিচিত।"

"এবং এখানে একটি প্রতিক্রিয়ার উদাহরণ:"

প্রতিক্রিয়া
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: en
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
<html><body><a href="http://ample.com/about.html#contacts">Click here</a></body></html>
HTTP/1.1 200 OK - «200 OK» means everything is okay.
Date: Wed, 11 Feb 2009 - Date on which the request was processed
Server: Apache - Name of the web server
X-Powered-By: PHP - The server uses PHP
Last-Modified: Wed, 11 Feb 2009 - The time of the last update of the requested file
Content-Language: en - The language of the file
Content-Type: text/html; charset=utf-8This is an HTML-file with UTF-8 encoding
Content-Length: 1234 - The response is 1234 bytes long
Connection: close - The connection will be closed after the request is handled
<html><body><a href="http://ample - The HTML file itself.

"আমি দুটি বিষয়ে আপনার দৃষ্টি আকর্ষণ করতে চাই:"

"প্রথম, আপনি যা অনুরোধ করুন না কেন, এটি সার্ভারের কাছে একটি ফাইল অনুরোধের মতো দেখায়৷ ফাইলটি সার্ভারে আছে কিনা বা সার্ভার অনুরোধের প্রতিক্রিয়া হিসাবে এটি তৈরি করে কিনা তা বিবেচ্য নয়৷"

"দ্বিতীয়, ফাইলটি নিজেই HTTP প্রতিক্রিয়ার অংশ হিসাবে পাঠানো হয় । অন্য কথায়, আমরা সার্ভারের প্রতিক্রিয়ার শুরুতে কিছু অতিরিক্ত ডেটা দেখতে পাই, এবং তারপরে ফাইলের বডি পরিবেশন করা হচ্ছে। "

"কত আকর্ষণীয়! আমি নিশ্চিত নই যে আমি সবকিছু বুঝতে পেরেছি। আমি এটি পরে আবার পড়ব।"

"ওহ, আমি আপনাকে আরেকটি ছোট, কিন্তু আকর্ষণীয় জিনিস সম্পর্কে বলতে চাই: কুকিজ।"

"ওইগুলো কি?"

"HTTP প্রোটোকল অনুসারে, কুকি হল ছোট ছোট তথ্য যা সার্ভার ক্লায়েন্টকে ক্লায়েন্টে স্টোরেজের জন্য পাঠায়। এবং পরবর্তী অনুরোধের অংশ হিসাবে সেগুলি সার্ভারে ফেরত পাঠানো হয়। "

"এবং এর মানে কি?"

"ধরুন একজন ব্যবহারকারী একটি ওয়েবসাইটের হোম পেজে সাইন ইন করেন। সার্ভার এই ব্যবহারকারীর জন্য সার্ভারে একটি সেশন অবজেক্ট তৈরি করে, এবং একটি অনন্য সেশন নম্বর একটি কুকি হিসাবে ক্লায়েন্টকে পাঠানো হয়। ক্লায়েন্ট থেকে পরবর্তী অনুরোধের সময় সার্ভার, এই সেশন নম্বর, অন্যান্য কুকির সাথে, সার্ভারে ফেরত পাঠানো হবে। এর মানে সার্ভার সেই ব্যবহারকারীকে চিনতে পারে যে নতুন অনুরোধ পাঠিয়েছে।"

"কি চমৎকার!"

"হ্যাঁ। আপনি যখন নিজের সার্লেটগুলি লিখবেন, আমরা এই বিষয়টিকে আরও ঘনিষ্ঠভাবে দেখব। কিন্তু আপাতত, আসুন একটু বিরতি নেওয়া যাক।"

"তুমি যাই বলো।"