বাইনারি প্রোটোকল বনাম পাঠ্য প্রোটোকল


94

বাইনারি প্রোটোকল কী তার জন্য কি কারওর একটি ভাল সংজ্ঞা আছে? এবং আসলে একটি পাঠ্য প্রোটোকল কী? এগুলি তারে প্রেরিত বিটের ক্ষেত্রে কীভাবে একে অপরের সাথে তুলনা করে?

বাইনারি প্রোটোকল সম্পর্কে উইকিপিডিয়া যা বলেছে তা এখানে:

বাইনারি প্রোটোকল হ'ল একটি প্রোটোকল যা মানুষের চেয়ে বরং কোনও মেশিন দ্বারা পড়া বা প্রত্যাশিত ( http://en.wikedia.org/wiki/Binary_protocol )

উহু চলো!

আরও স্পষ্ট করে বলার জন্য, আমার কাছে যদি জেপিজি ফাইল থাকে তবে কীভাবে এটি বাইনারি প্রোটোকলের মাধ্যমে পাঠানো হবে এবং কোনও পাঠ্যের মাধ্যমে কীভাবে হবে? অবশ্যই তারে প্রেরণ বিট / বাইটস এর ক্ষেত্রে।

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


উত্তর:


169

বাইনারি প্রোটোকল বনাম পাঠ্য প্রোটোকল কীভাবে বাইনারি ব্লবগুলি এনকোড করা হয় তা সম্পর্কে সত্যই নয়। পার্থক্যটি হ'ল প্রোটোকলটি ডেটা স্ট্রাকচারের আশেপাশে বা পাঠ্য স্ট্রিংগুলির আশেপাশে রয়েছে। আমি একটি উদাহরণ দিন: HTTP। এইচটিটিপি একটি পাঠ্য প্রোটোকল, যদিও এটি কোনও জেপিগ চিত্র প্রেরণ করে, এটি কেবল কাঁচা বাইটগুলি প্রেরণ করে, সেগুলির কোনও পাঠ্য এনকোডিং নয়।

তবে এইচটিটিপিকে টেক্সট প্রোটোকলটি কী তৈরি করে তা হ'ল জেপিজিটি পেতে এক্সচেঞ্জটি দেখতে এরকম দেখাচ্ছে:

অনুরোধ:

GET /files/image.jpg HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.01 [en] (Win95; I)
Host: hal.etc.com.au
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8

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

HTTP/1.1 200 OK
Date: Mon, 19 Jan 1998 03:52:51 GMT
Server: Apache/1.2.4
Last-Modified: Wed, 08 Oct 1997 04:15:24 GMT
ETag: "61a85-17c3-343b08dc"
Content-Length: 60830
Accept-Ranges: bytes
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: image/jpeg

<binary data goes here>

মনে রাখবেন যে এটি খুব সহজেই এমন কাঠামোর মধ্যে আরও দৃ tight়ভাবে প্যাক করা যেতে পারে যা দেখতে (সি তে) দেখতে পছন্দ করবে

অনুরোধ:

struct request {
  int requestType;
  int protocolVersion;
  char path[1024];
  char user_agent[1024];
  char host[1024];
  long int accept_bitmask;
  long int language_bitmask;
  long int charset_bitmask;
};

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

struct response {
  int responseType;
  int protocolVersion;
  time_t date;
  char host[1024];
  time_t modification_date;
  char etag[1024];
  size_t content_length;
  int keepalive_timeout;
  int keepalive_max;
  int connection_type;
  char content_type[1024];
  char data[];
};

যেখানে ক্ষেত্রের নামগুলি একেবারে প্রেরণ করতে হবে না এবং যেখানে উদাহরণস্বরূপ, responseTypeপ্রতিক্রিয়া কাঠামোটিতে তিনটি অক্ষর '2' '0' '0' এর পরিবর্তে 200 মানের সাথে একটি অন্তর্নিহিত। এটি একটি পাঠ্য ভিত্তিক প্রোটোকল যা: বিভিন্ন ধরণের কাঠামোগত ডেটা না করে পাঠ্যের লাইন (সাধারণত মানব-পঠনযোগ্য) এর সমতল ধারা হিসাবে যোগাযোগ করার জন্য ডিজাইন করা এক one


19
1-লাইনারের সংজ্ঞার জন্য +1 "পার্থক্যটি হ'ল প্রোটোকলটি ডেটা স্ট্রাকচারের আশেপাশে বা পাঠ্য স্ট্রিংগুলির আশেপাশে রয়েছে কিনা" "
ফ্র্যাঙ্ক শিয়েরার

4
টাইলার, উত্তরের জন্য ধন্যবাদ, বরং আমার বলা উচিত deep গিকের দৃশ্য যা কেবলমাত্র 0 এবং 1 এর তারে ভ্রমণ করে আমরা সকলে যে বিষয়ে একমত হই তার উপরে নির্ভর করে। আপনি কি বলুন এটি ক্যাপচার করে কিনা তা আমাকে বলুন। বলুন আমি নেটওয়ার্কের উপরে 15 নম্বর (ডিসেম্বর) প্রেরণ করতে চাই (আপনার নেটওয়ার্কের উপর 2 টি অভিন্ন কম্পিউটার রয়েছে, কোনও বড় / ছোট ভারতীয় বিশৃঙ্খলা ইত্যাদি নেই)। আমি যদি বাইনারি প্রোটোকল ব্যবহার করতে যাচ্ছি (বলুন আমি এটি টিসিপি সকেটের মাধ্যমে প্রেরণ করেছি) এটি তারে 00001111 হিসাবে চলে যাবে তবে আমি যদি কোনও পাঠ্য প্রোটোকল ব্যবহার করতে যাচ্ছি তবে এটি 00110001 (চর 1 এর জন্য ASCII) হিসাবে যাবে এবং 00110101 (চরের জন্য ASCII 5) সত্য বা বকা? :)
der_grosse

4
এটাই সঠিক. পাঠ্য উপায়ে এটি করার সুবিধাটি হ'ল মানব পাঠযোগ্যতা নয়, তবে আপনার সংখ্যাগুলি যদি একাধিক বাইট বেশি দীর্ঘ হয় তবে এন্ডিয়নেস সম্পর্কে চিন্তা করতে হবে না।
টাইলার ম্যাকহেনারি

4
আমি ১-লাইনের সংজ্ঞার সাথেও সম্মত নই, চার্চ 15 প্রেরণের উদাহরণের সাথেও পার্থক্যগুলি দেখতে, যেমন আমি আমার উত্তরটি রেখেছি, আপনাকে পুরো চরসেট এবং ডিলিটার / প্রোটোকলটি জানতে হবে, আপনি বলতে পারবেন না প্রোটোকলটি যদি পাঠ্য ভিত্তিক বা বাইনারি ভিত্তিক হয় তবে একক ডেটা উদাহরণের উপর ভিত্তি করে। আপনি কেবলটির দিকে "তাকিয়ে" থাকতে পারেন এবং একটি 65 (চর 'এ') দেখতে পান এবং আপনি এখনও এটি কোনও পাঠ্য ভিত্তিক বা বাইনারি প্রোটোকল বলতে পারবেন না। একটি চরের জন্য উভয়েরই একই প্রতিনিধিত্ব থাকতে পারে বা নাও হতে পারে, তবে এটি মৌলিক নয়।
হার্নান এচে

25

এখানে এক ধরণের কপ-আউট সংজ্ঞা দেওয়া হয়েছে:

আপনি এটি দেখতে পেলেই তা জানতে পারবেন।

এটি এমন একটি ক্ষেত্রে যেখানে একটি সংক্ষিপ্ত সংজ্ঞা পাওয়া যায় যা সমস্ত কোণার কেসগুলিকে অন্তর্ভুক্ত করে find তবে এটি এমন একটি ক্ষেত্রে যেখানে কর্নার কেসগুলি সম্পূর্ণ অপ্রাসঙ্গিক, কারণ এগুলি কেবল বাস্তব জীবনে ঘটে না।

বাস্তব জীবনে আপনি যে সমস্ত প্রোটোকলগুলির মুখোমুখি হবেন তা হ'ল এটির মতো দেখাবে:

> fg,m4wr76389b zhjsfg gsidf7t5e89wriuotu nbsdfgizs89567sfghlkf
>  b9er t8ß03q+459tw4t3490ß´5´3w459t srt üßodfasdfäasefsadfaüdfzjhzuk78987342
< mvclkdsfu93q45324äö53q4lötüpq34tasä#etr0 awe+s byf eart

[সেখানে আরও এক টন অন্যান্য মুদ্রনযোগ্য ছাঁটাই কল্পনা করুন। পাঠ্য এবং বাইনারি মধ্যে পার্থক্য জানাতে একটি চ্যালেঞ্জ হ'ল আপনাকে পাঠ্যতে পৌঁছে দিতে হবে :-)]

বা এই মত:

< HELLO server.example.com
> HELLO client.example.com
< GO
> GETFILE /foo.jpg
< Length: 3726
< Type: image/jpeg
< READY?
> GO
< ... server sends 3726 bytes of binary data ...
> ACK
> BYE

[আমি সবেমাত্র এটি ঘটনাস্থলে তৈরি করেছি]]

এখানে খুব একটা অস্পষ্টতা নেই।

আরেকটি সংজ্ঞা যা আমি মাঝে মাঝে শুনেছি তা হ'ল

একটি পাঠ্য প্রোটোকল হ'ল এটি ব্যবহার করে আপনি ডিবাগ করতে পারেন telnet

হয়তো আমি আমার nerdiness এখানে দেখাচ্ছে, কিন্তু আমি করেছি আসলে লিখিত এবং SMTP এর এবং POP3 মাধ্যমে ই-মেইল পড়া, ব্যবহার HTTP এর মাধ্যমে NNTP মাধ্যমে ইউজনেট নিবন্ধ এবং দেখা ওয়েব পেজ পড়া telnet, অন্য কোন কারণে চেয়ে কিনা এটা আসলে কাজ করবে দেখতে।

আসলে, এই লেখার সময়, আমি আবার জ্বরটি ধরলাম:

bash-4.0$ telnet smtp.googlemail.com 25
Trying 74.125.77.16...
Connected to googlemail-smtp.l.google.com.
Escape character is '^]'.
< 220 googlemail-smtp.l.google.com ESMTP Thu, 15 Apr 2010 19:19:39 +0200
> HELO
< 501 Syntactically invalid HELO argument(s)
> HELO client.example.com
< 250 googlemail-smtp.l.google.com Hello client.example.com [666.666.666.666]
> RCPT TO:Me <Me@Example.Com>
< 503 sender not yet given
> SENDER:Me <Me@Example.Com>
< 500 unrecognized command
> RCPT FROM:Me <Me@Example.Com>
< 500 unrecognized command
> FROM:Me <Me@Example.Com>
< 500-unrecognized command
> HELP
< 214-Commands supported:
< 214 AUTH HELO EHLO MAIL RCPT DATA NOOP QUIT RSET HELP ETRN
> MAIL FROM:Me <Me@Example.Com>
< 250 OK
> RCPT TO:You <You@SomewhereElse.Example.Com>
< 250 Accepted
> DATA
< 354 Enter message, ending with "." on a line by itself
> From: Me <Me@Example.Com>
> To: You <You@SomewhereElse.Example.Com>
> Subject: Testmail
>
> This is a test.
> .
< 250 OK id=1O2Sjq-0000c4-Qv
> QUIT
< 221 googlemail-smtp.l.google.com closing connection
Connection closed by foreign host.

অভিশাপ, আমি এই কাজটি করে চলেছি বেশ কিছুদিন হয়েছে। বেশ কয়েকটি ত্রুটি সেখানে :-)


7

বাইনারি প্রোটোকলগুলির উদাহরণ: আরটিপি , টিসিপি , আইপি

পাঠ্য প্রোটোকলের উদাহরণ: এসএমটিপি , এইচটিটিপি , এসআইপি

এটি আপনাকে বাইনারি বনাম পাঠ্য প্রোটোকলের একটি যুক্তিসঙ্গত সংজ্ঞা দিতে সাধারণ করতে দেয় should

ইঙ্গিত: কেবল উদাহরণ বিভাগগুলি বা ডায়াগ্রামগুলিতে যান। তারা টাইলারের দোলার উত্তর চিত্রিত করে ।


4
ফ্র্যাঙ্ক, লিঙ্কগুলির জন্য ধন্যবাদ তবে আমি আরএফসি এর সাথে শেষ হয়ে গেলে এটি 2099 হবে :) আমি ইতিমধ্যে যারা পড়েছি তাদের কাছ থেকে কিছু উত্তর চেয়েছিলাম। আমি এখনও টাইলার ম্যাকহেনির জবাব নিয়ে চিন্তা করছি ...
der_grosse

অবশ্যই বলবেন, দুর্দান্ত শেয়ারিং।
ইকরা।

5

আপনার বেশিরভাগের পরামর্শ অনুসারে আমরা কেবল তারের বিষয়বস্তু দেখে প্রোটোকল বাইনারি বা পাঠ্য কিনা তা পার্থক্য করতে পারি না

আফিক

বাইনারি প্রোটোকল - বিটস সীমানা অর্ডার খুব গুরুত্বপূর্ণ

উদা।, আরটিপি

প্রথম দুটি বিট সংস্করণ হ'ল নেক্সট বিটটি মার্কআপ বিট

পাঠ্য প্রোটোকল - ডিলিমিটারগুলি ক্ষেত্রগুলির প্রোটোকলের জন্য নির্দিষ্ট Order

উদা।, এসআইপি

আর একটি হ'ল বাইনারি প্রোটোকলে, আমরা একটি বাইটকে বিভক্ত করতে পারি, অর্থাৎ একক বিটের নির্দিষ্ট স্বতন্ত্র অর্থ হতে পারে; কোনও পাঠ্য প্রোটোকলে থাকা সর্বনিম্ন অর্থবোধক ইউনিট BYTE। আপনি একটি বাইট বিভক্ত করতে পারবেন না।


2

উভয় পৃথক চর সেট ব্যবহার করে, পাঠ্য একটি, একটি হ্রাস করা চর সেট ব্যবহার করে, বাইনারিটিতে কেবল "অক্ষর" এবং "সংখ্যা" নয়, উইকিপিডিয়া "মানুষ" বলে বলে এটি সমস্ত কিছু অন্তর্ভুক্ত করে)

o আরও স্পষ্ট হয়ে উঠুন, আমার কাছে jpg ফাইল থাকলে কীভাবে এটি বাইনারি প্রোটোকলের মাধ্যমে পাঠানো হবে এবং কিভাবে> কোনও পাঠ্যের মাধ্যমে? অবশ্যই তারে প্রেরণ বিট / বাইটস এর ক্ষেত্রে।

আপনি এই বেস 64 পড়া উচিত

যে কোনও কমেন্টের প্রশংসা করা হয়, আমি এখানে জিনিসগুলির সারাংশ পেতে চেষ্টা করছি।

আমি মনে করি চরসেটটি সংকীর্ণ করার জন্য सारটি জটিলতা সংকীর্ণ করছে এবং বহনযোগ্যতা, সামঞ্জস্যতা পৌঁছেছে। ওয়াইড চার্সেটকে সম্মান জানাতে অনেকের সাথে একমত হওয়া এবং একমত হওয়া আরও শক্ত, (বা যা কিছু হোক না কেন)। লাতিন / রোমান বর্ণমালা এবং আরবি সংখ্যাগুলি বিশ্বব্যাপী পরিচিত। (কোড হ্রাস করার জন্য অবশ্যই অন্যান্য বিবেচ্য বিষয় রয়েছে তবে এটি একটি প্রধান)

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


বেস 64 সম্পর্কে আমি জানি এবং এটি কী করে এবং আমি প্রশ্নটি পোস্ট করার সময় এটি আমার মনে ছিল exactly বেস 64 ভাল হয় যখন আমি এর ASCII উপস্থাপনায় (এনকোডিং) কিছু প্রেরণ করতে চাই যাতে এটি একটি পাঠ্য প্রোটোকল হয়। টেকনিক্যালি এটি বিটের ইনপুটটি 6 টির জোড়ায় বিভক্ত করে, একটি লুকিং টেবিল ব্যবহার করে। বাইনারি প্রকোল কীভাবে কাজ করে তার জন্য কি কেউ কিছু অনুরূপ ব্যাখ্যা সরবরাহ করতে পারেন? পরিপূরক প্রশ্ন: কোন ওএসআই স্তরে আমরা বাইনারি এবং পাঠ্য প্রোটোকল সম্পর্কে কথা বলতে পারি এবং এই স্তরের এই পৃথিবীর সঠিক অর্থ কী?
der_grosse

4
বাইনারিটির উদাহরণ হ'ল নিম্ন স্তরের প্রোটোকলগুলি যেমন সহজ সিরিয়াল যোগাযোগ ( এন.ইউ.ইউকিপিডিয়া.আর.উইকি / অ্যাসিনক্রোনাস_সিরিয়াল_কমিউনিকেশন ) বা কীভাবে ডেটা মেমরিতে সংরক্ষণ করা হয় ( এন.ইউইউইকিপিডিয়া / উইকি / ডেটা_স্ট্রাকচার_লাইনমেন্ট )। ওএসআই সম্পর্কে ... কারণ পাঠ্য এবং বাইনারি প্রোটোকলগুলি ডেটা উপস্থাপন করতে ব্যবহৃত হয় (কেবলমাত্র যোগাযোগের জন্য নয়) তাদের কোনও ওএসআই স্তরে থাকার দরকার নেই বলেছিলেন যে, আমি স্তরটি বলতে পারি 1,2,3,4 "বাইনারি রয়েছে" প্রোটোকল ", এবং" পাঠ্য প্রোটোকল "5,6,7 এ থাকতে পারে।
হার্নান এচে

1

কীভাবে আমরা SOAP এ একটি চিত্র ফাইল পাঠাতে পারি: এখানে ক্লিক করুন

এটি দেখায় যে বাইনারি ডেটা যেমন [ATTACHMENT] হিসাবে সংযুক্ত থাকে এবং এর রেফারেন্স এসওএপি বার্তায় সংরক্ষণ করা হয়।

সুতরাং, প্রোটোকলটি পাঠ্য ভিত্তিক এবং ডেটা [চিত্র] বাইনারি সংযুক্তি যার এনকোডিং প্রাসঙ্গিক নয়

সুতরাং, আমরা সাবান শিরোনামকে যেভাবে নির্দিষ্ট করি এবং এতে প্রকৃত ডেটা এনকোড থাকে না তার কারণে এসওএপি হ'ল পাঠ্য প্রোটোকল।


0

আমার মনে হয় আপনি ভুল পেয়েছেন। এটি প্রোটোকল নয় যা নির্ধারণ করে যে কীভাবে ডেটা "তারে" দেখায় তা নয়, তবে এটি এমন ডেটা টাইপ যা প্রেরণ করতে পারে কোন প্রোটোকলটি প্রেরণ করতে পারে তা নির্ধারণ করে। উদাহরণস্বরূপ, টিসিপি সকেট নিন, একটি জেপিগ ফাইল পাঠানো হবে এবং বাইনারি প্রোটোকলের সাথে প্রাপ্ত করা হবে 'কারণ এটি বাইনারি ডেটা (মানুষের পাঠযোগ্য নয়, বাইটস যা 32-126 এসকি রেঞ্জের মধ্যে যায়), তবে আপনি একটি পাঠ্য ফাইল প্রেরণ / পুনর্বিবেচনা করতে পারেন উভয় প্রোটোকল এবং আপনি পার্থক্য লক্ষ্য করবেন না।


না আমি মনে করি না আমি ভুল বুঝতে পারি না। আমি এখনও বাইনারি প্রোটোকল IS এর একটি (ভাল) সংজ্ঞা খুঁজছি। জেপিগের সাথে উদাহরণটি ছিল আমার প্রশ্নটি পরিষ্কার করা এবং অন্য কিছুই নয়, এটিকে প্রশ্নের কেন্দ্রে পরিণত করবেন না। আমার বলা উচিত যে প্রোটোকল তারের উপর অন্যটি সংক্রমণ করার সময় ডেটা দেখতে কেমন তা নির্ধারণ করে কেন এটি একটি প্রোটোকল ??
der_grosse

আমি আপনাকে একটি সুনির্দিষ্ট সংজ্ঞা দিয়েছিলাম, আপনার কেবল মনোযোগ সহকারে পড়তে হবে। "একটি বাইনারি প্রোটোকল বাইটগুলি পরিচালনা করে যা 32-126 এসকি রেঞ্জের মধ্যে যায়, তাকে প্রিন্টযোগ্য অক্ষরও বলা হয়"
সিমোন

পাঠ্য প্রোটোকলগুলি এগুলি ASCII টেবিলের সাথে উপযুক্ত হবে এমন ছোটগুলিতে বিভক্ত করে এগুলি পরিচালনা করে। ইত্যাদি। সুতরাং সর্বোত্তম ক্ষেত্রে আপনার সংজ্ঞাটি অস্পষ্ট। কিন্তু অবদানের জন্য ধন্যবাদ।
der_grosse

0

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

এটির অর্থ হ'ল একটি পাঠ্য প্রোটোকল হিসাবে এইচটিটিপি কেবল সহজ নিয়ম তৈরি করে তবে আপনি অবাধে নতুন শিরোনাম যুক্ত করে বা বিভিন্ন পেডলোড পরিবহনের জন্য সামগ্রী প্রকার পরিবর্তন করে ডেটা কাঠামো প্রসারিত করতে পারেন। এবং শিরোনামগুলি মেটা ডেটা এবং আলোচনার ক্ষমতা এবং স্বয়ংক্রিয়ভাবে অভিযোজন করার ক্ষমতা রাখে।

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