বেস 64 কেন দরকার (ওরফে আমি কেবল বাইনারি ফাইল ইমেল করতে পারি না)?


30

আমি বেস 64 এনকোডিংটি পড়ছিলাম, এবং এটি উইকিপিডিয়ায় পেয়েছি:

পাঠ্য ডেটা নিয়ে কাজ করার জন্য ডিজাইন করা মিডিয়াতে বাইনারি ডেটা সংরক্ষণ এবং স্থানান্তরিত করা দরকার এমন বাইনারি ডেটা এনকোড করার প্রয়োজন হয় তখন বেস 64 এনকোডিং স্কিমগুলি সাধারণত ব্যবহৃত হয়।

... এবং প্রদত্ত উদাহরণটি ইমেলের মাধ্যমে বাইনারি ফাইলগুলি প্রেরণ করছে।

বেস 64 কেন দরকার তা বোঝার চেষ্টা করছি। যেহেতু বাইনারি ডেটা বাইটের একগুচ্ছ, এটি পাঠ্য ডেটা হ'ল এএসসিআইআই-তে সরাসরি অনুবাদযোগ্য হবে না? কেন বেস 64 প্রয়োজন হয়? বা ASCII- এ নিয়ন্ত্রণ অক্ষরগুলির সাথে ইমেলের কোনও সমস্যা আছে?


"সরাসরি অনুবাদযোগ্য" বলতে কী বোঝ? কোন অর্থে বেস 64 "সরাসরি" নয়?
ডেভিড শোয়ার্টজ

আপনি কেন এটি সরাসরি বলে মনে করেন?
কুকি মনস্টার

4
এটি এমন নয় যে আমি এটি প্রত্যক্ষ বলে মনে করি, এটিই কেবল "সরাসরি অনুবাদযোগ্য" একটি অক্সিমোরন বলে মনে করি। যদি "ডাইরেক্ট" কোনও অনুবাদ প্রক্রিয়া অন্তর্ভুক্ত করতে পারে, তবে বেস 64 কে সরাসরি নয় কি করে? এটি কেবল একটি অনুবাদ প্রক্রিয়া।
ডেভিড শোয়ার্টজ

উত্তর:


37

এই সম্পর্কে একটি ভাল উইকিপিডিয়া নিবন্ধ আছে।


এআরপিএনেটের হিসাবে এনসিপির প্রথম দিকের পুনরাবৃত্তিগুলি বাইট স্ট্রিমের চেয়ে বিট স্ট্রিমের মতো বা সুবিধাজনক বাইট আকারের জন্য আলোচনার চেষ্টা ছিল; 8-বিট বাইট কেবলমাত্র পরে মানক করা হয়েছিল। ফাইল ট্রান্সফার প্রোটোকল তৈরি করার বিভিন্ন প্রচেষ্টা ছিল যা বিভিন্ন মেশিনে কাজ করবে (মেল প্রাথমিকভাবে এফটিপি প্রোটোকলের একটি ফাংশন ছিল, প্রাথমিকভাবে MAILএবংMLFL কমান্ড হিসাবে , তারপরে এমটিপি , পরে এসএমটিপিতে বিভক্ত ।) এই মেশিনগুলিতে প্রায়শই পৃথক পৃথক চরিত্রের এনকোডিং থাকে - ASCII বনাম EBCDIC - বা এমনকি বিভিন্ন বাইট আকার , 8-বিট বাইট বনাম 6-বিট বনাম ...

অতএব, মেল স্থানান্তর ফাংশনগুলি প্রাথমিকভাবে সরল পাঠ্যে অপেক্ষাকৃত সংক্ষিপ্ত বার্তা স্থানান্তর করার জন্য সংজ্ঞায়িত করা হয়েছিল; বিশেষত, "এনভিটি-এএসসিআইআই"। উদাহরণস্বরূপ, আরএফসি 772 বলেছেন:

মেল প্রতিনিধিত্ব এবং সঞ্চয়

মেল প্রেরণ হোস্টের স্টোরেজ ডিভাইস থেকে গ্রহণ হোস্টের স্টোরেজ ডিভাইসে স্থানান্তরিত হয়। মেলটিতে কিছু নির্দিষ্ট রূপান্তর করা প্রয়োজন হতে পারে কারণ দুটি সিস্টেমে ডেটা স্টোরেজ উপস্থাপনা আলাদা। উদাহরণস্বরূপ, এনভিটি-এএসসিআইআইয়ের বিভিন্ন সিস্টেমে ডেটা সঞ্চয় করার বিভিন্ন উপস্থাপনা রয়েছে। PDP-10 এর সাধারণভাবে NVT-ASCII কে পাঁচটি 7-বিট ASCII অক্ষর হিসাবে সংরক্ষণ করে, 36-বিট শব্দে বাম-ন্যায়সঙ্গত। ৩'s-বিট শব্দে চারটি 8-বিট ইবিসিডিআইসি কোড হিসাবে 360 এর স্টোর এনভিটি-এএসসিআইআই। মাল্টিক্সগুলি NVT-ASCII কে একটি 36-বিট শব্দের মধ্যে চারটি 9-বিট অক্ষর হিসাবে সঞ্চয় করে।

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

আটটি বিট তারের উপর দিয়ে সঞ্চারিত হলেও, 8 তম বিটটি প্রায়শই ফেলে দেওয়া বা ম্যাঙ্গাল হয়ে যেত, কারণ এটি সংরক্ষণের কোনও প্রয়োজন ছিল না; আসলে, কিছু প্রোটোকল প্রয়োজনীয় 8th বিট যেমন প্রাথমিক হিসাবে শূন্যতে সেট করতে হবে, SMTP এর জন্য RFC নীচে উদ্ধৃত। অন্য কথায়, সফ্টওয়্যারটি 8-বিট পরিষ্কার ছিল না ।

তথ্য স্থানান্তর

টিসিপি সংযোগটি 8-বিট বাইটের সংক্রমণকে সমর্থন করে। এসএমটিপি ডেটা 7 বিট এএসসিআইআই অক্ষর। প্রতিটি অক্ষর একটি 8-বিট বাইট হিসাবে সঞ্চারিত হয় উচ্চ-অর্ডার বিট শূন্যে সাফ হয়ে।

8-বিট আইএসও -8859- # চরিত্রের এনকোডিংগুলি ব্যাপক আকার ধারণ করার পরেও এটি দীর্ঘকাল স্থায়ী ছিল। যদিও কিছু সার্ভার ইতিমধ্যে 8-বিট পরিষ্কার ছিল, অন্য অনেকগুলি ছিল না, এবং অন্ধভাবে 8 বিট ডেটা প্রেরণের ফলে ম্যাঙ্গেল বার্তাগুলির ফল ঘটতে পারে।

পরে, "বর্ধিত এসএমটিপি" প্রকাশিত হয়েছিল, মেল সার্ভারগুলিকে তারা সমর্থিত এসএমটিপি এক্সটেনশনগুলি ঘোষণা করার অনুমতি দেয়; এর মধ্যে একটি হ'ল 8BITMIMEএটি ইঙ্গিত করে যে গ্রহণকারী সার্ভারটি নিরাপদে 8-বিট ডেটা গ্রহণ করতে পারে। মাইম মেসেজের অংশগুলিতে " বিষয়বস্তু স্থানান্তর-এনকোডিং : 8 বিট" থাকতে পারে, তা বোঝায় যে এগুলি কোনওভাবেই এনকোড করা হয়নি।

যাইহোক, এসএমটিপি প্রোটোকল লাইন-ভিত্তিক রয়ে গেছে এবং এর মধ্যে 998 অক্টেট লাইন সীমা রয়েছে, পাশাপাশি একটি .বার্তা "0D 0A 2E 0D 0A)" বার্তার শেষ "সূচক হিসাবে ব্যবহার করা হচ্ছে। এর অর্থ হ'ল যদিও বেশিরভাগ বাইনারি ফাইলগুলি আনল্যাটার্টে প্রেরণ করা যায়, তবুও এটি সম্ভব যে এই অকটেট সিকোয়েন্সযুক্ত ফাইলগুলি স্থানান্তরিত বার্তার শেষে এবং বাকী ফাইলটি একটি এসএমটিপি কমান্ড হিসাবে ব্যাখ্যা করা হবে, সম্ভবত ক্ষতি হতে পারে। একইভাবে, 998 অক্টেটের চেয়ে দীর্ঘ একটি "লাইন" গ্রাহক সার্ভারের মাধ্যমে কেটে যেতে পারে।

2000 সালে, "BINARYMIME" ESMTP এক্সটেনশনটি আরএফসি 3030 হিসাবে প্রকাশিত হয়েছিল , এসএমটিপি-র মাধ্যমে কাঁচা বাইনারি ডেটা স্থানান্তর করার অনুমতি দেয়। বার্তাটি এখন পূর্ব-নির্দেশিত দৈর্ঘ্যের অংশগুলিতে স্থানান্তরিত হয়, শূন্য-দৈর্ঘ্যের অংশটি টার্মিনেটর হিসাবে ব্যবহৃত হয় এবং বেস 64 এবং অনুরূপ এনকোডিংগুলির আর প্রয়োজন হয় না। দুর্ভাগ্যক্রমে, কয়েকটি এসএমটিপি সার্ভার এই এক্সটেনশানটিকে সমর্থন করে; উদাহরণস্বরূপ, পোস্টএফিক্স বা এক্সিম 4 এএইচএলওর CHUNKINGউত্তরে বিজ্ঞাপন দেয় না। BINARYMIME এর সুবিধা নেওয়ার জন্য, এটি বার্তার পথে সমস্ত সার্ভার দ্বারা সমর্থিত হতে হবে , যা কেবল এক বা দু'জনের চেয়ে বেশি হতে পারে।

আরো দেখুন:


1
কোনও প্রতিষ্ঠানের মধ্যে এক্সচেঞ্জ সার্ভারগুলি বিডিএটি কমান্ড ব্যবহার করে বাইনারি হিসাবে ইমেল প্রেরণ করে তবে তারা সংস্থার বাইরে এসএমটিপি সার্ভারগুলির জন্য এটি করে না।
james.garriss

7

কিছু পুরানো ই-মেইল সিস্টেম এবং সফ্টওয়্যার 8-বিট পরিষ্কার ছিল না, 8 তম বিটটি একটি নিয়ন্ত্রণ চরিত্র হিসাবে ব্যবহৃত হয়েছিল। বাইনারি ফাইলগুলি আপ করতে এটি যথেষ্ট ছিল, সুতরাং বেস 64 (বা অন্যান্য এনকোডিং স্কিম) প্রয়োজন ছিল।


সুতরাং আমরা কেবল প্রতিটি বাইটের জন্য 2 বিট নষ্ট করছি কারণ 90 এর দশকের কিছু উত্তরাধিকারের ইমেল সিস্টেম সম্ভবত বার্তাটি সঠিকভাবে বুঝতে সক্ষম না হতে পারে। জিমেইলের যুগে এই লিগ্যাসি সিস্টেমটি 1% এরও কম হতে পারে। আমি ভাবছি কেন আমরা মুষ্টিমেয় লোকের জন্য এত ব্যান্ডউইথের অপচয় করছি? এবং বেস 64 কেবলমাত্র মেলগুলিতে সীমাবদ্ধ?
ভাইভাঃ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.