यदि इंटरनेट सूचना राजमार्ग है, तो ईमेल के लिए पथ एक संकीर्ण ravine है। केवल बहुत छोटे गाड़ियां पास हो सकती हैं।
ईमेल की परिवहन प्रणाली केवल सादे ASCII पाठ के लिए डिज़ाइन की गई है। अन्य भाषाओं या मनमानी फाइलों में पाठ भेजने की कोशिश करना रेवेन के माध्यम से एक ट्रक प्राप्त करना है।
बिग ट्रक राविन के माध्यम से कैसे जाता है?
फिर आप एक छोटे से ट्रक के माध्यम से एक बड़ा ट्रक कैसे भेजते हैं? आपको इसे एक छोर पर टुकड़े करना है, टुकड़ों के माध्यम से टुकड़ों को परिवहन करना है, और ट्रक को दूसरे छोर पर टुकड़ों से पुनर्निर्माण करना है।
वही होता है जब आप ईमेल के माध्यम से फ़ाइल अनुलग्नक भेजते हैं। बाइनरी डेटा एन्कोडिंग के रूप में जाना जाने वाली प्रक्रिया में एएससीआईआईआई पाठ में परिवर्तित किया जाता है, जिसे बिना किसी समस्या के ईमेल में पहुंचाया जा सकता है। प्राप्तकर्ता के अंत में, डेटा डीकोड किया गया है और मूल फ़ाइल का पुनर्निर्माण किया गया है।
सादा ASCII पाठ के रूप में मनमाने ढंग से डेटा एन्कोडिंग की एक विधि बेस 64 है। यह सादा पाठ के अलावा डेटा भेजने के लिए एमआईएमई मानक द्वारा नियोजित तकनीकों में से एक है।
बचाव के लिए बेस 64
बेस 64 एन्कोडिंग में तीन बाइट होते हैं, प्रत्येक में आठ बिट होते हैं, और उन्हें ASCII मानक में चार प्रिंट करने योग्य वर्णों के रूप में दर्शाते हैं। यह अनिवार्य रूप से दो चरणों में करता है।
पहला कदम तीन बाइट्स को चार बिट्स में चार संख्याओं में परिवर्तित करना है। एएससीआईआई मानक में प्रत्येक चरित्र में सात बिट होते हैं। एन्कोडेड डेटा प्रिंट करने योग्य और मानवीय रूप से पठनीय सुनिश्चित करने के लिए बेस 64 केवल 6 बिट्स (2 ^ 6 = 64 वर्णों के अनुरूप) का उपयोग करता है। ASCII में उपलब्ध विशेष पात्रों में से कोई भी उपयोग नहीं किया जाता है।
64 वर्ण (इसलिए बेस 64 नाम) 10 अंक, 26 लोअरकेस अक्षर, 26 अपरकेस वर्णों के साथ-साथ '+' और '/' हैं।
उदाहरण के लिए, तीन बाइट 155, 162 और 233 हैं, संबंधित (और डरावना) बिट स्ट्रीम 100110111010001011101001 है, जो बदले में 6-बिट मान 38, 58, 11 और 41 के अनुरूप है।
बेस 64 एन्कोडिंग तालिका का उपयोग करके इन नंबरों को दूसरे चरण में ASCII वर्णों में परिवर्तित कर दिया गया है। हमारे उदाहरण के 6-बिट मान ASCII अनुक्रम "एम 6 एलपी" में अनुवाद करते हैं।
- 155 -> 10011011
- 162 -> 10100010
- 233 -> 11101001
- 100110 -> 38
- 111010 -> 58
- 001011 -> 11
- 101001 -> 41
- 38 -> एम
- 58 -> 6
- 11 -> एल
- 41 -> पी
यह दो-चरणीय प्रक्रिया एन्कोड किए गए बाइट्स के पूरे अनुक्रम पर लागू होती है। यह सुनिश्चित करने के लिए कि एन्कोड किए गए डेटा को सही तरीके से मुद्रित किया जा सकता है और किसी भी मेल सर्वर की लाइन लंबाई सीमा से अधिक नहीं है, 76 अक्षरों से नीचे पंक्ति लंबाई रखने के लिए न्यूलाइन वर्ण डाले गए हैं। न्यूलाइन वर्ण सभी अन्य डेटा की तरह एन्कोड किए गए हैं।
एंडगेम को हल करना
एन्कोडिंग प्रक्रिया के अंत में, हम एक समस्या में भाग सकते हैं। यदि बाइट्स में मूल डेटा का आकार तीन में से एक है, तो सब कुछ ठीक काम करता है। यदि ऐसा नहीं है, तो हम एक या दो 8-बिट बाइट्स के साथ समाप्त हो सकते हैं। उचित एन्कोडिंग के लिए, हमें बिल्कुल तीन बाइट्स चाहिए, हालांकि।
समाधान 3-बाइट समूह बनाने के लिए '0' के मान के साथ पर्याप्त बाइट्स को जोड़ना है। यदि हमारे पास डेटा का एक अतिरिक्त बाइट है, तो दो ऐसे बाइट्स जोड़े गए हैं, एक को दो अतिरिक्त बाइट्स के लिए जोड़ा गया है।
बेशक, इन कृत्रिम पीछे '0' को नीचे एन्कोडिंग तालिका का उपयोग करके एन्कोड नहीं किया जा सकता है। उन्हें 65 वें चरित्र द्वारा प्रतिनिधित्व किया जाना चाहिए।
बेस 64 पैडिंग वर्ण '=' है। स्वाभाविक रूप से, यह केवल एन्कोडेड डेटा के अंत में दिखाई दे सकता है।
बेस 64 एन्कोडिंग टेबल
मूल्य | चार | मूल्य | चार | मूल्य | चार | मूल्य | चार |
---|---|---|---|---|---|---|---|
0 | ए | 16 | क्यू | 32 | जी | 48 | w |
1 | बी | 17 | आर | 33 | ज | 49 | एक्स |
2 | सी | 18 | एस | 34 | मैं | 50 | y |
3 | डी | 19 | टी | 35 | j | 51 | z |
4 | ए | 20 | यू | 36 | कश्मीर | 52 | 0 |
5 | एफ | 21 | वी | 37 | एल | 53 | 1 |
6 | जी | 22 | डब्ल्यू | 38 | मीटर | 54 | 2 |
7 | एच | 23 | एक्स | 39 | n | 55 | 3 |
8 | मैं | 24 | Y | 40 | ओ | 56 | 4 |
9 | जम्मू | 25 | जेड | 41 | पी | 57 | 5 |
10 | कश्मीर | 26 | ए | 42 | क्ष | 58 | 6 |
1 1 | एल | 27 | ख | 43 | आर | 59 | 7 |
12 | एम | 28 | सी | 44 | रों | 60 | 8 |
13 | एन | 29 | घ | 45 | टी | 61 | 9 |
14 | हे | 30 | ई | 46 | यू | 62 | + |
15 | पी | 31 | च | 47 | v | 63 | / |