নেটওয়ার্ক প্রোগ্রামিংয়ে স্ট্রিম এবং ডেটাগ্রামের মধ্যে পার্থক্য কী?


131

সকেট (স্ট্রিম) বনাম সকেট (ডেটাগ্রাম) এর মধ্যে পার্থক্য কী? একে অপরকে কেন ব্যবহার করবেন?

উত্তর:


304

দু'জনের মধ্যে পার্থক্য বোঝানোর জন্য একটি দুর্দান্ত উপমা পড়েছিলাম। আমার মনে নেই আমি কোথায় এটি পড়েছি দুর্ভাগ্যবশত আমি ধারণার জন্য লেখককে ক্রেডিট করতে পারি না, তবে যাইহোক মূল উপমাতে আমি আমার নিজস্ব জ্ঞানও যুক্ত করেছি। সুতরাং এখানে যায়:

একটি স্ট্রিম সকেট একটি ফোন কলের মতো - একদিকে কল রাখে, অন্য উত্তর দেয়, আপনি একে অপরকে হ্যালো বলে থাকেন (টিসিপিতে এসওয়াইএন / এসি কে), এবং তারপরে আপনি তথ্য বিনিময় করেন। আপনার কাজ শেষ হয়ে গেলে, আপনি বিদায় জানান (টিসিপিতে FIN / ACK) AC যদি এক পক্ষ বিদায় না শোনে তবে তারা সাধারণত অন্যটিকে ডেকে আনবে কারণ এটি একটি অপ্রত্যাশিত ঘটনা; সাধারণত ক্লায়েন্ট সার্ভারের সাথে পুনরায় সংযোগ স্থাপন করবে। গ্যারান্টি রয়েছে যে ডেটা আপনি পাঠিয়েছেন তার চেয়ে আলাদা অর্ডারে আসবে না এবং এর যুক্তিসঙ্গত গ্যারান্টি রয়েছে যে ডেটা ক্ষতিগ্রস্থ হবে না।

একটি ডেটাগ্রামের সকেট ক্লাসে একটি নোট পাস করার মতো। আপনি যে নোটটি নোটটি দিচ্ছেন তার পাশের লোকটি যেখানে নেই তার সরাসরি বিবেচনা করুন; নোটটি ব্যক্তি থেকে অন্য ব্যক্তি ভ্রমণ করবে। এটি তার গন্তব্যে না পৌঁছতে পারে এবং এটি সেখানে পৌঁছে যাওয়ার সময় দ্বারা এটি সংশোধিত হতে পারে। যদি আপনি একই ব্যক্তিকে দুটি নোট পাস করেন তবে তারা এমন কোনও আদেশে পৌঁছতে পারে যা আপনি চান না, যেহেতু নোটগুলি ক্লাসরুমে নিয়ে যায় সে পথটি একই নাও হতে পারে, তাই একজন ব্যক্তি অন্য হিসাবে দ্রুত কোনও নোট পাস করতে পারে না ইত্যাদি। ।

যাতে আপনি যখন স্ট্রিম সকেট ব্যবহার করেন তখন তথ্যগুলি যাতে ক্রমে থাকে এবং অক্ষত থাকে তা গুরুত্বপূর্ণ। ফাইল ট্রান্সফার প্রোটোকলগুলি এখানে একটি ভাল উদাহরণ। আপনি এলোমেলোভাবে এলোমেলোভাবে ক্ষতিগ্রস্ত এবং ক্ষতিগ্রস্থ কিছু ফাইলের সাথে ফাইল ডাউনলোড করতে চান না!

আপনি যখন একটি স্ট্রিমের উচ্চতর ওভারহেডটি চান না (যখন ডিএনএস মূলত একটি ডেটাগ্রাম প্রোটোকল, তাই সার্ভারগুলি পারে অনেকগুলি, অনেক অনুরোধকে খুব তাড়াতাড়ি একবারে সাড়া দিন) বা ডেটা যদি কখনও তার গন্তব্যে পৌঁছে যায় তবে আপনি যখন খুব বেশি যত্নশীল হন না।

ভিওআইপি / গেমের ক্ষেত্রে প্রসারিত করার জন্য, এই জাতীয় প্রোটোকলগুলিতে তাদের নিজস্ব ডেটা-অর্ডারিং প্রক্রিয়া অন্তর্ভুক্ত রয়েছে। তবে যদি কোনও প্যাকেট ক্ষতিগ্রস্ত হয় বা হারিয়ে যায় তবে আপনি পুনরায় প্রেরণের অনুরোধ জানাতে স্ট্রিম প্রোটোকলের (সাধারণত টিসিপি) অপেক্ষা করতে চান না - আপনাকে দ্রুত পুনরুদ্ধার করা দরকার। টিসিপি পুনরুদ্ধার করতে কয়েক মিনিট সময় নিতে পারে, এবং গেমিং বা ভিওআইপির মতো রিয়েলটাইম প্রোটোকলের জন্য এমনকি তিন সেকেন্ড অগ্রহণযোগ্য হতে পারে! ইউডিপির মতো একটি ডেটাগ্রাম প্রোটোকল ব্যবহার করে সফটওয়্যারটি হারানো ডেটা উপেক্ষা করে বা টিসিপি'র চেয়ে শীঘ্রই পুনরায় অনুরোধ করার মাধ্যমে এই জাতীয় ইভেন্টটি খুব দ্রুত পুনরুদ্ধার করতে দেয়।

ভিওআইপি হ'ল সহজেই হারিয়ে যাওয়া ডেটা উপেক্ষা করার জন্য ভাল প্রার্থী - একটি পক্ষ কেবলমাত্র একটি ছোট ব্যবধান শুনতে পাবে, যার সাথে সেলফোনে কারো সাথে কথা বলার সময় যেমন হয় না যখন তারা খুব কম অভ্যর্থনা জানায়। গেমিং প্রোটোকলগুলি প্রায়শই কিছুটা জটিল হয়, তবে গৃহীত পদক্ষেপগুলি সাধারণত হয় নিখোঁজ হওয়া ডেটা উপেক্ষা করে (যদি পরবর্তীকালে প্রাপ্ত ডেটাগুলি যে হারিয়ে যাওয়া ডেটাটিকে সুপারসাইড করে), অনুপস্থিত তথ্যকে পুনরায় অনুরোধ করে বা সম্পূর্ণ রাষ্ট্র আপডেটের জন্য অনুরোধ করে ক্লায়েন্টের অবস্থা সার্ভারের সাথে সিঙ্কে রয়েছে তা নিশ্চিত করুন।


3
SYNACK এর বিশদ অন্তর্ভুক্ত করার জন্য কেবল দুর্দান্ত।
LazerSharks

2
এই উদাহরণটি বা খুব অনুরূপ একটি লিনাক্স প্রোগ্রামিং ইন্টারফেসের is 2010 সংস্করণ পৃষ্ঠাগুলি 1155 এবং 1159. এই উদাহরণ রয়েছে
জোশ

30

স্ট্রিম সকেট:

  • উত্সর্গীকৃত এবং সার্ভার এবং ক্লায়েন্টের মধ্যে চূড়ান্ত শেষে চ্যানেল।
  • ডেটা ট্রান্সমিশনের জন্য টিসিপি প্রোটোকল ব্যবহার করুন।
  • নির্ভরযোগ্য এবং ক্ষতিহীন।
  • অনুরূপ ক্রমে ডেটা প্রেরণ / প্রাপ্ত।
  • হারিয়ে যাওয়া / ভুল হওয়া তথ্য পুনরুদ্ধারের জন্য দীর্ঘ সময়

ডেটাগ্রাম সকেট:

  • সার্ভার এবং ক্লায়েন্টের মধ্যে ডেডিকেটেড এবং শেষ থেকে শেষ চ্যানেল নয়।
  • ডেটা সংক্রমণের জন্য ইউডিপি ব্যবহার করুন।
  • 100% নির্ভরযোগ্য নয় এবং ডেটা হারাতে পারে।
  • অর্ডার প্রেরিত / প্রাপ্ত অর্ডার একই নাও হতে পারে।
  • হারিয়ে যাওয়া / ভুল হওয়া ডেটা যত্ন করে বা দ্রুত পুনরুদ্ধার করবেন না।

একই ক্রমে ডেটা পাঠানো হয় না (কেবল "অনুরূপ" নয়)? অর্থাত। স্ট্রিম সকেটে কোনও প্যাকেট অর্ডার মেকানিজম তৈরির অর্থ হবে না
ম্যাথু ডি স্কোলফিল্ড

একটি স্ট্রিম যোগাযোগের প্যাকেটগুলি "অনুরূপ" অর্থে প্রেরণ করা হয় এবং অর্থে পাঠানো হয় যে প্যাকেটগুলি নিজেরাই ক্রমবর্ধমান হোস্টকে সরবরাহ করার গ্যারান্টিযুক্ত নয়, তবে টিসিপি তার ত্রুটিগুলি খুঁজে বের করে, প্যাকেটগুলি উপস্থিত হওয়ার সাথে সাথে পুনরায় সাজিয়ে কিছু অনুরোধ করে মনে হচ্ছে পথটি হারিয়ে গেছে।
আলেজান্দ্রো ব্লাস্কো

এটা বোধগম্য. সম্ভবত এটি তখন একটি পার্থক্য হিসাবে অপসারণ করুন এবং এটি নীচে রাখুন (যেহেতু আমি যদি এটি সঠিকভাবে বুঝতে পারি তবে প্যাকেটগুলি কেবল যে আদেশে প্রেরণ করা হয় সেদিকেই উল্লেখ করা হয়, উভয় ক্ষেত্রেই ডেটা প্রেরণ / প্রাপ্ত অর্ডার নাও হতে পারে) একই).
ম্যাথু ডি। শোলফিল্ড

@ রিক আরও স্পষ্টতই, সকেটগুলি শেষ থেকে শেষের পয়েন্ট হিসাবে পরিচিত কারণ ট্রান্সপোর্ট প্রোটোকলগুলি এক বা একাধিক নেটওয়ার্ক এন্ডপয়েন্টগুলিতে বার্তা দেওয়ার জন্য দায়বদ্ধ।
আলেজান্দ্রো ব্লাস্কো

0

যদি এটি নেটওয়ার্ক প্রোগ্রামিং হয় তবে আমি মনে করি সকেট থেকে শুরু করা ভাল শুরু হবে।
সকেট = আইপি + পোর্ট
তিন প্রকারের সকেট
স্ট্রিম রয়েছে (টিসিপি, অর্ডার এবং বিতরণের গ্যারান্টিযুক্ত, কোনও সদৃশ নয়, ডেটা, সংযোগ-ভিত্তিক, নির্ভরযোগ্য, একযোগিতাপত্রের জন্য কোনও দৈর্ঘ্য বা চারি সীমানা)
ডেটাগ্রাম (ইউডিপি, প্যাকেট ভিত্তিক, সংযোগহীন, ডেটাগ্রাম) আকার সীমা, ডেটা হারিয়ে যেতে পারে বা নকল করা যেতে পারে, গ্যারান্টিযুক্ত নয়, নির্ভরযোগ্য নয়)
কাঁচা (লোয়ার লেয়ার প্রোটোকল আইপিতে সরাসরি অ্যাক্সেস, আইসিএমপি)
ট্রান্সপোর্ট প্রোটোকলের ধরণের কোনও কঠোর নিয়ম আমি দেখতে পাই না সকেট কী পরিবহন প্রোটোকল ব্যবহার করতে পারে এবং নির্ভরযোগ্যতা ভুল করা উচিত নয় কারণ উভয় প্রান্ত সক্রিয় থাকে ক্ষেত্রে যদি ইউডিপি বাস্তবায়িত হয়।
নির্ভরযোগ্যতা ডেলিভারির নির্ভরযোগ্যতার মতোই বোঝায় যেহেতু টিসিপি ব্যবহার করে ট্রান্সপোর্ট প্রোটোকল হিসাবে ইউডিপিতে নেই sequ এটি নেটওয়ার্ক প্রোটোকল বিশ্লেষক যেমন ওয়্যারশার্ক টিসিপিডাম্প ইত্যাদি ব্যবহার করে আপনার সফ্টওয়্যারটি ঠিক কী করছে তা আরও ভাল is আপনার কাজের সাথে ক্রিয়াকলাপ বা কাগজটিতে মার্জিং তত্ত্বের ধরণ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.