2024. 10. 14. 20:32ㆍ카테고리 없음
초기 메시지 프로토콜
초기 이메일 프로토콜인 SMTP의 경우 기본적으로 ASCII 텍스트 데이터를 주고받는 것만 가능했다.
ASCII 코드는 영어 알파벳을 기반으로 하고 총 128개의 문자를 7비트 정수로 인코딩한다.
이 7비트, 총 128개의 문자에는 0~9, a~z, A~Z가 포함되고 이외의 데이터도 포함된다.
이 128개의 문자는 아래 링크에서 0번에서 127번까지에 해당한다.
Ascii table for IBM PC charset (CP437) - Ascii-Codes
Code page 437 (IBM PC) American Standard Code for Information Interchange (ASCII) is a widely used character encoding system introduced in 1963. The original character set, which is now referred as the standard character set was initially composed of 128 c
www.ascii-codes.com
초기에는 7비트만으로도 대부분의 데이터를 표현할 수 있었다.
하지만 7비트로는 텍스트가 아닌 파일과 같은 데이터를 전송할 수 없었다.
이미지, 비디오와 같은 파일들은 8비트의 데이터를 사용했기 때문에 7비트로는 데이터를 표현하는 것이 불가능했다.
그렇기 때문에 만약 파일과 같은 8비트 데이터를 STMP를 통해서 보낸다면 제대로 된 데이터가 전송되지 않을 것이다.
Base64 인코딩
그래서 파일을 전송하려면 8비트짜리 바이너리 데이터를 텍스트 파일로 변경해야 SMTP를 통해 파일을 제대로 전송할 수 있다.
base64 인코딩을 사용하여 8비트짜리 바이너리 데이터를 텍스트 파일로 변경할 수 있다.
base64 인코딩을 진행할 때 Base64 색인표를 사용한다.

한 번 Man이라는 문자열에 base64 인코딩을 적용해보자.
Man을 아스키 코드로 바꿔보면 M은 77번, a는 97번, n은 110번이다.
각 번호를 이진수로 나타내는데 7비트 가장 앞에 0을 붙여서 8비트로 만들어보자.
01001101 01000001 01101110
base64로 인코딩한 문자는 총 64개의 문자 중 하나로 이루어져있고 이 문자는 6비트로 표현이 가능하다.
즉 위에서 8비트짜리 문자 3개를 6비트짜리 문자 4개로 자를 수 있다.
010011 010110 000101 101110
각 6비트짜리를 모두 10진수로 바꿔보자.
19 22 5 46
이제 base64 색인표를 보고 문자를 변경해보자.
TWFu
Man이라는 텍스트는 base64 인코딩을 적용하여 TWFu가 되었다.

물론 모든 문자가 이렇게 6비트씩 끊을 수 있는게 아니다.
만약 6비트씩 끊을 수 없다면 남는 비트 뒤에 0을 추가해서 6비트를 맞춰준다.
즉 순서를 정리해보면 다음과 같다.
- 텍스트를 ASCII 코드에 해당하는 코드로 변경한다.
- 코드를 이진 데이터로 변경한다.
- 6비트씩 자른다.
- base64 인코딩을 적용한다.
이렇게 base64를 적용하면 원래 데이터보다 33%정도 양이 늘어나지만 텍스트로 변경했기 때문에 안정적으로 파일을 보낼 수 있다.
MIME
MIME 타입이란 Multipurpose Internet Mail Extension으로 다양한 유형의 정보를 식별하기 위한 표준이다.
SMTP에서 단순 텍스트가 아닌 다양한 유형의 파일 (이미지, 비디오...)을 이메일로 전송하기 위해서 등장했다.
위에서 설명했듯이 초기에는 단순 텍스트 데이터만 주고받았지만 점점 시간이 지날수록 파일을 보낼 방법이 필요했다.
이를 위해 MIME 타입이 등장했고 텍스트 뿐만 아니라 다양한 형태의 데이터를 전송할 수 있도록 만들어진 표준이다.
MIME 타입은 가장 일반적으로 [type]/[subtype]으로 구성된다.
웹 애플리케이션에서 자주 사용하는 MIME 타입은 다음과 같은 것들이 있다.
- text/plain
- text/html
- application/octet-stream
이 MIME type을 제대로 지정해야 브라우저가 MIME type을 보고 바이너리 데이터를 제대로 변환해서 보여줄 수 있게 된다.
출처
https://effectivesquid.tistory.com/entry/Base64-%EC%9D%B8%EC%BD%94%EB%94%A9%EC%9D%B4%EB%9E%80
Base64 인코딩이란?
인코딩이란? Base64 인코딩에 대해 알아보기전에 먼저 인코딩이란게 무엇인지 간략하게 알아보자. 인코딩(encoding)은 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위
effectivesquid.tistory.com
https://ko.wikipedia.org/wiki/%EB%B2%A0%EC%9D%B4%EC%8A%A464
베이스64 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 컴퓨터 분야에서 쓰이는 Base 64 (베이스 육십사)란 6비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의
ko.wikipedia.org
https://developer.mozilla.org/en-US/docs/Glossary/Base64
Base64 - MDN Web Docs Glossary: Definitions of Web-related terms | MDN
Base64 is a group of similar binary-to-text encoding schemes that represent binary data in an ASCII string format by transforming it into a radix-64 representation. The term Base64 originates from a specific MIME content transfer encoding.
developer.mozilla.org