প্রোটোকল
আমরা ইন্টারেনটের সংক্ষিপ্ত ইতিহাস থেকে জেনেছি, ১৯৬৯ সালে আরপানেটে চারটি হোস্ট কম্পিউটার সংযুক্ত ছিল। পরবর্তী বছরগুলোতে আরপানেটে আরো কম্পিউটার সংযুক্ত করা হতে থাকে। তখন গবেষকেরা দুটি কম্পিউটারের মধ্যে যোগাযোগে জন্য নীতিমালা বা প্রোটোকল প্রণয়ন করতে থাকেন এবং হোস্ট-টু-হোস্ট প্রোটোকল নামে একটি প্রোটোকল প্রণয়ন করা হয়।
১৯৭২ সালে ইন্টারনেট ব্যবহার করে ইলেকট্রনিক মেইল বা ইমেইল পাঠানোর ব্যবস্থা প্রণয়ন করা হয়। তখন এই একটি নেটওয়ার্ক নিয়েই ছিল সমগ্র ইন্টারনেট। এখন পর্যন্ত যেহেতু একটিই নেটওয়ার্ক ছিল তাই এটি ছিলো বেশ আদিম প্রকৃতির, এতে ভূলত্রুটি সনাক্তকরণ বা সংশোধন (Error Control) এর কোনো ব্যবস্থা ছিল না। ইন্টারনেটের মৌলিক ধারনাই ছিল বিভিন্ন (অর্থাৎ, একাধিক) স্বাধীন নেটওয়ার্ক যেনো একটি সাধারন পথ ব্যবহার করে ইন্টারনেটের অন্যান্য নেটওয়ার্কের সঙ্গে সংযুক্ত হয়ে তথ্য আদান প্রদান করতে পারে। অর্থাৎ, যে কেউই চাইলে নিজের মত নেটওয়ার্ক ডিজাইন ও তৈরী করে ইন্টারনেটে যেনো সংযুক্ত হতে পারে।
তাই পরবর্তীতে রবার্ট কান (Robert E. Kahn) ওপেন-আর্কিটেকচার নেটওয়ার্কের সংযোগ ব্যবস্থার জন্য একটি নীতিমালা বা প্রোটোকল প্রণয়ন করেন। প্রোটোকল শব্দের অর্থ হচ্ছে নিয়মনীতির সমস্টি যা আলোচনার ভিত্তিতে তৈরী করা হবে এবং যা পরবর্তীতে সবাই মেনে চলবে। রবার্ট কানের প্রণীত এই প্রোটোকলই পরে ট্রান্সমিশন কন্ট্রোল প্রোটোকল বা ইন্টারনেট প্রোটোকল (Transmission Control Protocol / Internet Protocol; TCP/IP) নামে পরিচিত হয়। ইন্টারনেট প্রোটোকল হচ্ছে দুটি কম্পিউটার ঠিক কীভাবে ডেটা পাঠাবে, সেই ডেটাগুলো বিভিন্ন নেটওয়ার্ক থেকে বিভিন্ন নেটওয়ার্কে কীভাবে চলাচল করবে, ডেটা কোন পথে পাঠাতে হবে, তার গন্তব্যস্থান কীভাবে খুঁজে পাওয়া যাবে, কোনো ডাটা প্যাকেট পথিমধ্যে হারিয়ে গেলে বা বাধাগ্রস্থ হলে কী করা হবে এই সব প্রশ্নের একটি সর্বাধিক গ্রহনযোগ্য সমাধান।
টিসিপি / আইপি প্রোটোকল
রবার্ট কানের প্রস্তাবিত টিসিপি / আইপি প্রোটোকল চারটি মূল নীতির উপর ভিত্তি করে তৈরী করা হয়-
- প্রতিটি আলাদা আলাদা নেটওয়ার্ক স্বাধীনভাবে তৈরী ও রক্ষনাবেক্ষন করতে পারতে হবে। কোনরকম আভ্যন্তরীন পরিবর্তন ছাড়াই তারা যেন সরাসরি ইন্টারনেটের সঙ্গে যুক্ত হতে পারে তা নিশ্চিত করতে হবে।
- যোগাযোগ নিশ্চিত করা হবে “বেস্ট এফোর্ট” (Best Effort) ভিত্তিতে। অর্থাৎ, কোনো ডেটা প্যাকেট যদি গন্তব্যে সঠিকভাবে পৌছাতে না পারে (যদি গন্তব্য খুঁজে না পায় অথবা, কোনোভাবে সংযোগটি ক্ষনিকের জন্য বাধাগ্রস্থ হয়), তবে উৎস থেকে পুনরায় ডেটা প্যাকেটটি পাঠানো হবে।
- প্রতিটি নেটওয়ার্ককে একটি ব্ল্যাকবক্স (Blackbox) হিসেবে চিন্তা করতে হবে। অর্থাৎ, নেটওয়ার্কটি একটি সাধারন গেটওয়ে বা রাউটার ব্যবহার করে মূল ইন্টারনেটের সঙ্গে সংযুক্ত হবে। একটি গেটওয়ের মধ্য দিয়ে যেসব ডেটা প্যাকেট যাওয়া আাসা করতে তার কোনরকম তথ্য ওই গেটওয়েতে সংরক্ষণ করা হবে না। যাতে করে তথ্য আদানপ্রদান ব্যহত হলে বা অন্য কোনরকম সমস্যা হলে জটিলতা পরিহার করা যায়।
- অপারেশন বা কার্যক্রমের ক্ষেত্রে কোনো বৈশ্বিক কেন্দ্রীয় নিয়ন্ত্রন (Global Central Control) থাকবে না।
এই চারটি মূলনীতি ছাড়াও যোগাযোগের ক্ষেত্রে আরো কিছু গুরুত্বপূর্ণ বিষয়ের ভূমিকা ছিল-
- উৎস থেকে গন্তব্যে পাঠানো ডেটা প্যাকেট হারিয়ে গেলে যোগাযোগ সম্পূর্ণ বিচ্ছিন্ন করে পুনরায় সংযোগ চালু করে পুনরায় ডেটা প্যাকেট পাঠানোর যথাযথ অ্যালগরিদম তৈরী করা।
- যদি অন্তর্বতী নেটওয়ার্ক অনুমতি দেয় তবে, উৎস থেকে গন্তব্যে সরাসরি হোস্ট-টু-হোস্ট পাইপলাইন তৈরী করা, যাতে করে একই পথ বা রুট (Route) ব্যবহার করে অন্য কাউকে অবহিত করা ছাড়াই দুটি হোস্টের মধ্য একাধিক ডেটা প্যাকেট আদান-প্রদান করা যায়।
- গেটওয়েতে কিছু ফাংশনালিটি তৈরী করা যাতে করে গেটওয়ে একটি প্যাকেটকে ছোট ছোট খন্ডে ভেঙ্গে তার হেডার (Header) তথ্য পড়ে বুঝতে পারে কোন প্যাকেটটিকে নিজে রাখতে হবে, কোন প্যাকেটটিকে অন্য নেটওয়ার্ক গেটওয়েতে ফরওয়ার্ড করতে হবে ইত্যাদি।
- চেকসাম (Checksum) ব্যবহার করা যাতে করে প্যাকেট গ্রহনের পর প্যাকেটটি সঠিক আছে কিনা (অর্থাৎ পথিমধ্যে বাহ্যিক কোনো প্রভাবে বা সংযোগ সংক্রান্ত ত্রুটি বা যান্ত্রিক ত্রুটির কারনে পরিবর্তিত হয়ে গেলো কি না) বা, একই প্যাকেট দুইবার এলো কিনা তা বুঝতে পারা যায়।
- বৈশ্বিক একটা অ্যাড্রেসিং সিস্টেম বা ঠিকানা ব্যবস্থা তৈরী করা, যাতে করে একটি নেটওয়ার্ক অপর একটি নেটওয়ার্ককে সেই ঠিকানা ব্যবহার করে সহজে খুঁজে পেতে পারে।
- হোস্ট-টু-হোস্ট ফ্লো কন্ট্রোল করা অর্থাৎ, একটি হোস্ট থেকে অন্য হোস্টে কত গতিতে তথ্য পাঠানো হবে তা নির্ণয় করা। কারন, সকল যন্ত্রের তথ্য প্রসেসিংয়ের ক্ষমতা এক নয়, আবার সকল নেটওয়ার্কের ব্যান্ডউইডথও সমান নয়।
- ভিন্ন ভিন্ন অপারেটিং সিস্টেমে মধ্যে ইন্টারফেসিং করা।
যোগাযোগের ক্ষেত্রে এই বিষয় গুলো নিয়ে তখন গবেষকরা চিন্তা করতে থাকেন এবং কীভাবে কোন সমস্যাটি সমাধান করা হবে সেই বিষয়ে তারা আলোচনা করতে থাকেন। কান স্ট্যানফোর্ড বিশ্ববিদ্যালয়ের ভিন্ট কার্ফ (Vint Kerf) এর সঙ্গে দলবদ্ধ হয়ে ১৯৭৩ সালে ইন্টারন্যাশনাল নেটওয়ার্ক ওয়ার্কিং গ্রুপ (INWG) এর একটি সভায় প্রথম এই নীতিমালা টিসিপি / আইপি নামে উপস্থাপন করেন। এই সভায় আরো কিছু সমাধান প্রস্তাব করা হয়।
- দুটি কম্পিউটার প্রসেসের মধ্যে তথ্য আদানপ্রদান করা হবে বাইট স্ট্রিম (Byte Stream) হিসেবে। ইংরেজি স্ট্রিম শব্দের অর্থ হচ্ছে প্রবাহ। সাধারনত পানির প্রবাহ বুঝাতে এই শব্দটি ব্যবহার করা হয়। বাইট স্ট্রিম মানে হচ্ছে ধারাবাহিক অনেকগুলো বাইটের প্রবাহ। বাইটকে কখনো অকটেট (Octet) বলা হয়ে থাকে। তাই বাইটস্ট্রিমকে কখনো কখনো অকটেটস্ট্রিম নামে অভিহিত করা হয়।
- যেই দুটি হোস্টের মধ্যে তথ্য আদান প্রদান করা হবে তাদের প্রসেসিংয়ের গতি বা নেটওয়ার্কের গতি বাস্তবে অসমান হতে পারে। তাই তথ্য আদান প্রদানের ক্ষেত্রে ফ্লো কন্ট্রোল করা হবে। অর্থাৎ, ধীর গতির হোস্টের গতি অনুযায়ী তথ্য প্রবাহ হবে। এজন্য স্লাইডিং উইন্ডো (Sliding Window) নামে এক ধরনের অ্যালগরিদম ব্যবহার করা হবে। তথ্য প্রাপ্তি নির্দেশ করার জন্য অ্যাকনলেজমেন্ট (Acknoeledgement) বা অ্যাক (Ack) সিগন্যাল পাঠানো হবে, যাতে প্রেরক বুঝতে পারে কোন ডেটা প্যাকেটগুলো প্রাপক ঠিকঠাকমতো পেয়েছে।
- হোস্ট ও ক্লায়েন্টকে নেটওয়ার্কের মধ্যে খুঁজে পাওয়ার জন্য কিছু ঠিকানা অ্যাড্রেসিং পদ্ধতি ব্যবহার করা হবে। যেটাকে পরবর্তীতে আইপি অ্যাড্রেস (IP Address) নামকরন করা হয়।