GZIP স্ট্রিম থেকে র এবং DEFLATE কনভার্টার
একটি GZIP স্ট্রিমকে র DEFLATE-এ রূপান্তর করা বাইরের ফাইল র্যাপার এবং হেডার মেটাডেটা সরিয়ে দেয়, বিশেষ নেটওয়ার্ক প্রোটোকল এবং নিম্ন-স্তরের আর্কাইভগুলির জন্য কেবল সংকুচিত পেলোড রেখে যায়।
ফরম্যাট তুলনা এবং প্রযুক্তিগত বৈশিষ্ট্য
| বৈশিষ্ট্য | GZIP | DEFLATE |
|---|---|---|
| MIME টাইপ | application/gzip | application/zlib |
| ধরন | DEFLATE stream container | raw DEFLATE stream |
| কম্প্রেশন | DEFLATE (RFC 1951) | LZ77 + Huffman coding |
| স্ট্যান্ডার্ড বৈশিষ্ট্য | IETF RFC 1952 | IETF RFC 1950 / RFC 1951 |
| ম্যাজিক বাইটস হেডার | 1F 8B (gzip ID1/ID2) | 78 01 / 78 9C / 78 DA (zlib header bytes) |
ফরম্যাটের ওভারভিউ এবং ব্যবহার
ওয়েব ডেভেলপমেন্ট, নেটওয়ার্ক প্রোগ্রামিং এবং নিম্ন-স্তরের ডেটা স্টোরেজ ওয়ার্কফ্লোতে একটি GZIP স্ট্রিমকে র DEFLATE-এ রূপান্তর করা প্রায়শই ঘটে। ডিস্কে একক ফাইল সংরক্ষণ করার সময় ডেভেলপাররা প্রায়শই GZIP নিয়ে কাজ করেন কারণ ফরম্যাটটিতে আসল ফাইলের নাম এবং পরিবর্তনের টাইমস্ট্যাম্পের মতো সহায়ক মেটাডেটা অন্তর্ভুক্ত থাকে। তবে, আধুনিক HTTP কম্প্রেশন প্রোটোকল এবং নির্দিষ্ট বাইনারি ফরম্যাটের কোনো র্যাপার বাইট ছাড়াই শুধুমাত্র সংকুচিত পেলোড প্রয়োজন হয়। এই রূপান্তরটি সম্পাদন করা ইঞ্জিনিয়ারদের সরাসরি নেটওয়ার্ক স্ট্রিম বা কাস্টম পার্সারে স্ট্যান্ডার্ড সংকুচিত ডেটা ফিট করতে দেয়। উদাহরণস্বরূপ, একটি কাস্টম HTTP রেসপন্স হ্যান্ডলার তৈরি করা বা ZIP আর্কাইভের সাথে কাজ করার জন্য প্রায়শই র অ্যালগরিদম আউটপুট বিচ্ছিন্ন করতে GZIP হেডার এবং CRC32 ফুটার সরানোর প্রয়োজন হয়। কন্সট্রেড প্রোগ্রামিং এনভায়রনমেন্টে যখন প্রতিটি একক বাইট গুরুত্বপূর্ণ হয়, তখন এই অতিরিক্ত কন্টেইনার ডেটা অপসারণ ওভারহেড হ্রাস করে।
প্রযুক্তিগত বৈশিষ্ট্য এবং কোডেক বিভাজন
application/gzip MIME টাইপ দ্বারা চিহ্নিত একটি GZIP স্ট্রিম RFC 1952-এ সংজ্ঞায়িত একটি কন্টেইনার কাঠামো ব্যবহার করে। এটি একটি দুই-বাইটের ম্যাজিক নম্বর হেডার (0x1F, 0x8B) দিয়ে শুরু হয়, তারপরে কম্প্রেশন ফ্ল্যাগ, পরিবর্তনের সময়, অপারেটিং সিস্টেম আইডি এবং একটি ঐচ্ছিক ফাইলের নাম থাকে। প্রকৃত সংকুচিত ডেটা মাঝখানে বসে, এবং ফাইলটি একটি চার-বাইটের CRC32 চেকসাম এবং একটি চার-বাইটের অসংকুচিত সাইজ নির্দেশক দিয়ে শেষ হয়। বিপরীতে, application/zlib বা র স্ট্রিম দ্বারা চিহ্নিত র DEFLATE RFC 1951-এর উপর নির্ভর করে। এতে কোনো ম্যাজিক বাইট নেই, কোনো হেডার নেই এবং কোনো ফুটার নেই। এটি সরাসরি সংকুচিত ব্লক সংরক্ষণ করতে হাফম্যান কোডিংয়ের সাথে মিলিত LZ77 অ্যালগরিদম ব্যবহার করে। এগুলির মধ্যে রূপান্তর সম্পূর্ণ লসলেস, কারণ উভয় ফরম্যাটই ঠিক একই DEFLATE কম্প্রেশন ইঞ্জিন ব্যবহার করে। রূপান্তর প্রক্রিয়াটি কেবল GZIP র্যাপার আনরোল করে, মেটাডেটা বাতিল করে এবং অভ্যন্তরীণ DEFLATE বাইট স্ট্রিম নিষ্কাশন করে।
OS এবং ব্রাউজার সামঞ্জস্য
র DEFLATE স্ট্রিমগুলি Python, Node.js, এবং C++ এর মতো স্ট্যান্ডার্ড প্রোগ্রামিং ভাষার মাধ্যমে আধুনিক অপারেটিং সিস্টেম এবং ওয়েব রানটাইম জুড়ে স্থানীয়ভাবে চলে। ব্রাউজারগুলি HTTP কনটেন্ট-এনকোডিং হেডার স্ট্যাকের মাধ্যমে স্থানীয়ভাবে DEFLATE পরিচালনা করে। Windows, macOS, এবং Linux-এর মতো অপারেটিং সিস্টেমগুলি zlib-এর মতো সিস্টেম কম্প্রেশন লাইব্রেরির মাধ্যমে র স্ট্রিম সমর্থন করে। Android এবং iOS সহ মোবাইল প্ল্যাটগুলি কাস্টম অ্যাপ স্টোরেজ স্তরের জন্য DEFLATE রুটিনগুলিতে সরাসরি API অ্যাক্সেস প্রদান করে।
💡 উপকারী তথ্য
সর্বদা যাচাই করুন যে আপনার লক্ষ্য পার্সারটি zlib-র্যাপড স্ট্রিমের পরিবর্তে একটি বিশুদ্ধ RFC 1951 স্ট্রিম আশা করে, কারণ zlib একটি দুই-বাইটের হেডার যোগ করে যা র DEFLATE পার্সারগুলি প্রত্যাখ্যান করবে।
ফরম্যাট তুলনা এবং প্রযুক্তিগত বৈশিষ্ট্য
একটি GZIP স্ট্রিমে সংকুচিত ১০ মেগাবাইটের একটি টেক্সট ফাইল প্রায় ২ মেগাবাইটে সংকুচিত হয়। একটি র DEFLATE ফাইল তৈরি করতে হেডার এবং ফুটার সরিয়ে ফেলা একটি অভিন্ন ২ মেগাবাইট পেলোড সাইজ দেয়। এই ২ মেগাবাইট ফাইল স্থানান্তর করতে একটি 500 Mbps ফাইবার সংযোগে প্রায় ০.০৪ সেকেন্ড, একটি স্ট্যান্ডার্ড 5G নেটওয়ার্কে প্রায় ০.৪ সেকেন্ড এবং একটি জনাকীর্ণ 4G সেলুলার লিঙ্কে প্রায় ৪ সেকেন্ড সময় লাগে।
সচরাচর জিজ্ঞাসিত প্রশ্নাবলী
কীভাবে গুণমান না হারিয়ে GZIP স্ট্রিমকে র DEFLATE-এ রূপান্তর করবেন?
উভয় ফরম্যাটই অভিন্ন লসলেস কম্প্রেশন অ্যালগরিদম ব্যবহার করে। এগুলিকে রূপান্তর করার অর্থ কেবল GZIP কন্টেইনার পড়া, দশ-বাইটের হেডার এবং আট-বাইটের ফুটার সরানো এবং অভ্যন্তরীণ সংকুচিত ব্লকগুলি সংরক্ষণ করা। কোনো ডেটা হারিয়ে যায় না কারণ অন্তর্নিহিত অ্যালগরিদম অপরিবর্তিত থাকে।
GZIP স্ট্রিম এবং র DEFLATE-এর মধ্যে পার্থক্য কী?
GZIP হল একটি সম্পূর্ণ ফাইল কন্টেইনার যাতে একটি ম্যাজিক বাইট হেডার, আসল ফাইলের নাম, পরিবর্তনের টাইমস্ট্যাম্প এবং একটি চেকসাম ফুটার অন্তর্ভুক্ত থাকে। র DEFLATE হল শুধুমাত্র সংকুচিত ডেটা নিজেই, যাতে কোনো হেডার, ফুটার বা ফাইল মেটাডেটা থাকে না।