이메일 크기가 첨부 파일 크기의 1/3보다 큰 이유는 무엇입니까?


111

이메일에 데이터를 첨부 할 때 Thunderbird가 첨부 파일보다 훨씬 큰 결과 이메일의 전체 크기를 계산하는 것을 알았습니다.

최근 예는 다음과 같습니다. 두 개의 이미지 (13MB 및 3.6MB)는 총 약 17MB 여야합니다. 네 줄의 텍스트가있었습니다. 그런 다음 Thunderbird에서 총 22MB 크기의 이메일을 정말로 보내고 싶은지 물었습니다.

그 차이는 어디에서 오는가? 5MB의 텍스트가 약간 비슷합니다.


2
이것은 종종 최대 크기와 같은 것들에 영향을 미칩니다. 내가 실수하지 않은 경우 Google 메일은 일반적으로 최대 25MB의 이메일을 허용하지만 인코딩 25MB는 계산 되므로 25MB 이미지는 이메일로 보낼 수 없습니다.
Bakuriu

4
@Bakuriu의 의견은 Outlook + Exchange 서버에도 적용됩니다. 나는 근본적인 질문은 실제로 메일 클라이언트가 종종 base64로 인코딩 된 크기 일 때 로컬 파일 크기 만보 고하는 이유는 무엇입니까?
Chris H

@MarcksThomas 나는 모든 지식을 쉽게 검색 할 수있게하는 것보다 쉽게 ​​찾을 수있는 지식을 모두 갖춘 하나의 매력을 주장하고 싶지 않다. 그러나 필요합니까? 나는 그렇게 생각하지 않습니다. - 나는, 나는 그냥 불필요한 질문을 무료로 사이트를 유지하는 기본 요구 사항을 충족하고 열심히 정말 중요한 물건을 찾을 수 있습니다하지 않는 생각, 문제는 전혀 유용하지 않습니다 생각하지 않습니다 하지 않습니다 다른 곳에서 대답했습니다. 그것이 우리가해야 할 일입니다! -arc_lupus, 나는이 사이트에 숨어있을 때 일반적으로 downvote는 아직 울리지 않습니다. 그러나 그대로입니다.
Alexander Kosubek

답변:


214

귀하의 데이터는 17 MiB입니다. MiB에는 1024 KiB가 있습니다. KiB에는 1024B가 있습니다. 바이트에는 8 비트가 있습니다. 142,606,336 비트입니다.

Base 64 인코딩은 6 비트마다 별도의 바이트로 인코딩합니다. 따라서 약 23,767,722 바이트가 필요합니다. 1024로 두 번 나누면 22.67 MiB가됩니다. 이것이 22 MiB가 시작된 곳입니다.

이메일은 꽤 오래된 기술이며 8 비트 클린 파이프를 가정하지 않습니다.


79
그 마지막 줄을 해독하려면 약간의 : 기본-64는 AZ, AZ, 0-9와 같은 일부 중간 장치에 의해 왜곡되지 것 "보장 된 안전한 문자"제한된 세트를 사용하여 텍스트로 첨부 파일을 인코딩하는 방법입니다
Yorik

64
David의 훌륭한 답변에서 수학을 이해하면 첨부 파일의 크기에 4/3를 곱하여 보낼 메일 메시지의 크기 (실제 텍스트)를 얻을 수 있습니다.
Kent

12
전자 메일에 전체 8 비트 파이프가 있다는 것을 알더라도 기본적으로 텍스트 스트림이므로 인코딩해야합니다. 일부 문자는 제어 기능을 수행하므로 데이터에서 발생해서는 안됩니다. 즉, 더 나은 인코딩 기술이 있지만 채택되지 않았습니다.
Loren Pechtel

3
@LorenPechtel 당신은 행복하게 MIME 메시지에 응용 프로그램 / 옥텟 스트림 부분을 가질 수 있습니다. 데이터에서 발생하지 않는 경계를 선택하기 만하면됩니다.
OrangeDog

8
base64가 실제로하는 일은 원래 3 바이트마다 4 바이트를 사용하는 것입니다. 이것은 비슷하게 들리지만 길이는 항상 4의 배수이고 비트 수준에 대한 이유가 없기 때문에 중요합니다.
njzk2

50

이메일이 더 큰 이유는 무엇입니까?

base64최대 3 바이트 그룹을 4 개의 인쇄 가능한 ASCII 문자 그룹으로 인코딩하는 데이터가 인코딩되기 때문 입니다. 일반적으로 이러한 인쇄 가능한 문자 그룹은 줄로 나뉩니다.

결과적으로 인코딩 된 데이터가 원본 데이터 크기의 1 배 이상입니다.

왜 base64가 사용됩니까?

이메일은 오랜 역사를 가지고 있으며 원래 텍스트를 전달하도록 설계되었습니다. ASCII 인쇄 가능한 문자를 나타내는 바이트 값만 지구상의 다양한 전자 메일 시스템을 안정적으로 통과 할 수 있습니다.

따라서 MIME은 다른 데이터를 ASCII 텍스트로 인코딩하기위한 두 가지 체계, 즉 다른 비트가 거의없는 ASCII 텍스트 용으로 디자인 된 "quoted-printable"과 임의의 이진 데이터 용 "BASE64"로 나 di습니다.

이러한 제한을 시도하고 제거하기 위해 SMTP 프로토콜에 대한 확장이있었습니다. 첫째, 1994 년 8BITMIME은 더 높은 옥텟 값을 허용하지만 불행히도 줄 길이 및 줄 끝과 관련된 한계를 제거하지 않았으므로 임의의 이진 데이터에는 적합하지 않았습니다. 1995 년의 BINARYMIME은 임의의 이진 데이터를 포함하는 메시지의 전송을 허용했습니다.

그러나 이러한 표준은 널리 채택되지 않았습니다. 한 가지 문제는 메일 체인의 한 홉이 지원하지만 다음 홉은 지원하지 않으면 어떻게됩니까? 그런 다음 메일 서버는 그대로 메일을 보낼 수 없으며, 전달할 수없는 것으로 거부하고 반송 (사용자가 받아 들일 수 없을 것임)하거나 메일 서버에 상당한 추가 코드가 필요한 메일을 반송해야합니다. . 멀티 파트 형식에서 콘텐츠 전송 인코딩을 사용하지 않는 것과 관련된 MIME 규칙에 따라 변환이 특히 어려워집니다.


1
반면에, yEnc가 UUE를 대체하는 데 유즈넷에서 성공한 이유가 궁금합니다. 이진 뉴스 그룹이 이진 전자 메일보다 ISP에 더 많은 압력을 가하기 때문일 수 있습니까?
igorsk

2
@igorsk : plus Usenet / NN은 기사를 게시 할 수 있으며 모든 서버의 모든 구독자가 반드시 기사를받을 수있는 곳은 아닙니다. 이전 기사 (들)를 얻지 못한 사람이 귀하의 후속 조치를 이해할 수 있도록 이전 기사 (들)에 대한 후속 조치 '충분한'에 인용하는 것에 대한 관습이있었습니다 . 반면 대부분의 (스팸이 아닌) 전자 메일 보낸 사람은 '시스템'이 때때로 몇 시간 또는 며칠이 지난 후에도 이름이 지정된받는 사람에게 메시지를받을 것으로 예상했습니다. 오늘날 사람들은 짧은 지연조차도 불평합니다.
dave_thompson_085
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.