ทำไมขนาดของอีเมลของฉันถึงประมาณหนึ่งในสามที่ใหญ่กว่าขนาดของไฟล์ที่แนบมา?


111

เมื่อทำการแนบข้อมูลไปกับอีเมลของฉันฉันสังเกตเห็นว่าธันเดอร์เบิร์ดคำนวณขนาดโดยรวมของอีเมลที่เป็นผลลัพธ์ที่ใหญ่กว่าไฟล์ที่ฉันแนบ

นี่คือตัวอย่างล่าสุด: ภาพสองภาพหนึ่งภาพที่ 13MB และอีกภาพหนึ่งที่ 3.6MB ควรจะมีขนาดประมาณ 17MB มีข้อความสี่บรรทัด ธันเดอร์เบิร์ดถามฉันว่าฉันต้องการส่งอีเมลขนาด 22MB หรือไม่

ความแตกต่างนั้นมาจากไหน? เสียงข้อความ 5MB ดูเหมือนไม่มาก


2
โปรดทราบว่าสิ่งนี้มักส่งผลกระทบต่อสิ่งต่าง ๆ เช่นขนาดสูงสุด ถ้าฉันไม่ผิด Google Mail มักจะอนุญาตให้ใช้อีเมลที่มีขนาดไม่เกิน 25MB แต่ 25MB จะถูกคำนวณหลังจากการเข้ารหัสดังนั้นคุณจึงไม่สามารถส่งภาพ 25MB พร้อมกับอีเมลได้เพราะเมื่อเข้ารหัสแล้วมันจะใหญ่เกินไป
Bakuriu

4
ความคิดเห็นของ @ Bakuriu นำไปใช้กับเซิร์ฟเวอร์ Outlook + Exchange เช่นกัน ฉันแนะนำว่าคำถามที่สำคัญคือจริง ๆ แล้วเหตุใดไคลเอนต์อีเมล (บ่อยครั้ง - Tbird ดูดีกว่า outlook อีกครั้ง) รายงานเฉพาะขนาดไฟล์โลคอลเมื่อเป็นขนาดเข้ารหัสแบบ 64 ฐานที่สำคัญ?
Chris H

@MarcksThomas ฉันไม่ต้องการที่จะโต้แย้งกับการดึงดูดให้มีแหล่งรวมความรู้ที่สามารถค้นหาได้อย่างง่ายดายเพียงแค่มีความรู้ทั้งหมดที่สามารถค้นหาได้ง่าย แต่จำเป็นหรือไม่ ฉันไม่คิดอย่างนั้น - ฉันไม่คิดว่าคำถามนี้ไม่มีประโยชน์เลยฉันแค่คิดว่ามันไม่ได้ตอบสนองความต้องการขั้นพื้นฐานเพื่อให้เว็บไซต์ปลอดจากคำถามที่ไม่จำเป็นและทำให้ยากต่อการค้นหาสิ่งที่สำคัญจริงๆนั่นไม่ใช่ตอบทุกที่อื่น นั่นคือสิ่งที่เราควรทำ! - arc_lupus เนื่องจากฉันแฝงตัวอยู่ในไซต์นี้เท่านั้นโดยปกติ downvote ของฉันยังไม่หมด แต่อย่างที่มันเป็น
Alexander Kosubek

เกี่ยวข้องกับ: superuser.com/questions/568506/…
glenneroo

คำตอบ:


214

ข้อมูลของคุณคือ 17 MiB มี 1024 KiB ใน MiB มี 1024 B ในหน่วย KiB มี 8 บิตในหนึ่งไบต์ นั่นคือ 142,606,336 บิต

การเข้ารหัสฐาน 64 เข้ารหัสทุก ๆ หกบิตเป็นไบต์แยกกัน ดังนั้นเราต้องการ 23,767,722 ไบต์ การหารด้วย 1024 สองครั้งทำให้เราได้รับ 22.67 MiB นั่นคือที่มาของ 22 MiB

อีเมลเป็นเทคโนโลยีที่ค่อนข้างเก่าและไม่ถือว่าเป็นท่อ 8 บิต


79
ในการถอดรหัสบรรทัดสุดท้ายเล็กน้อย: base-64 เป็นวิธีการเข้ารหัสสิ่งที่แนบเป็นข้อความโดยใช้ชุด "อักขระที่รับประกันความปลอดภัย" แบบ จำกัด ซึ่งจะไม่ถูกอ่านโดยอุปกรณ์ตัวกลางบางอย่างเช่น az, AZ, 0-9
Yorik

64
และเมื่อคุณเข้าใจคณิตศาสตร์ในคำตอบที่ยอดเยี่ยมของ David คุณสามารถเพิ่มขนาดของไฟล์แนบด้วย 4/3 เพื่อให้ได้ขนาดของข้อความเมลที่จะถูกส่ง (บวกกับข้อความจริง)
Kent

12
แม้ว่าอีเมลจะรู้ว่ามันเต็มไปด้วยบิตขนาด 8 บิตก็จะต้องมีการเข้ารหัสเนื่องจากเป็นสตรีมข้อความโดยพื้นฐาน - อักขระบางตัวทำหน้าที่ควบคุมฟังก์ชั่นดังนั้นจึงต้องไม่เกิดขึ้นกับข้อมูลของคุณ ที่กล่าวว่ามีเทคนิคการเข้ารหัสที่ดีขึ้น แต่พวกเขาไม่ได้นำมาใช้
Loren Pechtel

3
@ LorenPechtel คุณสามารถมีส่วนร่วมในการสมัคร / octet-stream อย่างมีความสุขในข้อความ MIME สิ่งที่คุณต้องทำคือเลือกขอบเขตที่ไม่ได้เกิดขึ้นกับข้อมูล
OrangeDog

8
สิ่งที่ base64 ทำจริงใช้ 4 ไบต์สำหรับทุก ๆ 3 ไบต์ ในขณะที่สิ่งนี้ฟังดูคล้ายกันมันเป็นสิ่งสำคัญเพราะความยาวจะเป็นผลคูณของ 4 เสมอและเพราะไม่มีเหตุผลใดที่ระดับบิต
njzk2

50

ทำไมอีเมล์ถึงใหญ่กว่า

เนื่องจากข้อมูลถูกเข้ารหัสbase64ซึ่งเข้ารหัสกลุ่มได้สูงสุดสามไบต์เป็นกลุ่มของอักขระ ASCII สี่ตัวที่พิมพ์ได้ โดยทั่วไปแล้วกลุ่มของอักขระที่พิมพ์ได้เหล่านี้จะแบ่งออกเป็นบรรทัด

ผลที่ได้คือข้อมูลที่เข้ารหัสนั้นมีขนาดมากกว่า1⅓เท่าของข้อมูลต้นฉบับ

ทำไม base64 ถึงถูกใช้?

อีเมลมีประวัติอันยาวนานและได้รับการออกแบบมาเพื่อพกข้อความ เฉพาะค่าไบต์ที่แสดงถึงอักขระที่พิมพ์ได้ของ ASCII เท่านั้นที่สามารถผ่านระบบอีเมลที่หลากหลายบนโลกใบนี้

ดังนั้น MIME จึงแบ่งสองรูปแบบสำหรับการเข้ารหัสข้อมูลอื่น ๆ เป็นข้อความ ASCII - "ที่ยกมาพิมพ์ได้" ออกแบบมาสำหรับข้อความ ASCII ส่วนใหญ่ที่มีบิตอื่น ๆ ไม่กี่บิตและ "BASE64" สำหรับข้อมูลไบนารีโดยพลการ

มีส่วนขยายในโปรโตคอล SMTP เพื่อลองและลบข้อ จำกัด เหล่านี้ออกไป ครั้งแรก 8BITMIME ในปี 1994 ซึ่งอนุญาตให้ค่าออคเต็ตที่สูงขึ้น แต่น่าเสียดายที่ไม่ได้ลบข้อ จำกัด ที่เกี่ยวข้องกับความยาวบรรทัดและการสิ้นสุดของบรรทัดดังนั้นจึงไม่เหมาะสำหรับข้อมูลไบนารีโดยพลการ จากนั้น BINARYMIME ในปี 1995 ซึ่งอนุญาตให้ถ่ายโอนข้อความที่มีข้อมูลไบนารีโดยพลการ

อย่างไรก็ตามมาตรฐานเหล่านี้ยังไม่เห็นการยอมรับอย่างกว้างขวาง ปัญหาหนึ่งคือจะเกิดอะไรขึ้นถ้า hop หนึ่งในกลุ่มเมล์สนับสนุนพวกเขา แต่ hop ต่อไปไม่ได้ จากนั้นเมลเซิร์ฟเวอร์จะไม่สามารถส่งจดหมายตามที่เป็นอยู่ก็ต้องปฏิเสธว่าไม่ได้ส่งมอบและตีกลับ (ซึ่งไม่น่าจะยอมรับได้สำหรับผู้ใช้) หรือแปลงมัน (ซึ่งต้องใช้รหัสพิเศษจำนวนมากในเมลเซิร์ฟเวอร์) . การแปลงนั้นสร้างความเจ็บปวดเป็นพิเศษโดยกฎ MIME เกี่ยวกับการไม่ใช้การเข้ารหัสการถ่ายโอนเนื้อหาในประเภทหลายส่วน


1
ฉันสงสัยว่าทำไม yEnc ตรงกันข้าม Usenet ค่อนข้างประสบความสำเร็จในการแทนที่ UUE อาจเป็นเพราะกลุ่มข่าวไบนารีสร้างแรงกดดันต่อ ISP ได้สูงกว่าอีเมลเลขฐานสองเป็นครั้งคราว?
igorsk

2
@igorsk: plus Usenet / NN ถูกนำเสนอและเข้าใจว่าเป็นความสูญเสียซึ่งคุณสามารถเผยแพร่บทความและไม่ใช่สมาชิกทั้งหมดบนเซิร์ฟเวอร์ทั้งหมดที่จำเป็นต้องได้รับมัน มี (และส่วนใหญ่ยังคงอยู่) ศุลกากรเกี่ยวกับการอ้างในการติดตามว่า 'พอ' ของบทความก่อนหน้า (s) ที่การติดตามของคุณสามารถเข้าใจได้โดยคนที่ไม่ได้รับบทความก่อนหน้า (s) ในทางกลับกันผู้ส่งอีเมลส่วนใหญ่ (ไม่ระบุผู้) คาดว่า 'ระบบ' จะได้รับข้อความของพวกเขาไปยังผู้รับที่ตั้งชื่อแม้ว่าบางครั้งจะใช้เวลาหลายชั่วโมงหรือหลายวันก็ตาม วันนี้ผู้คนบ่นเรื่องความล่าช้าสั้น ๆ
dave_thompson_085
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.