본문 바로가기

네트워크

base64 인코딩

1) Base64 인코딩이란?

- Base64 인코딩이란 이진 데이터를 텍스트로 변환해서, 텍스트 데이터를 네트워크에서 데이터 변조나 손실 없이

  쉽게 보낼 수 있도록 하는 인코딩 방식입니다. 

  Base64는 3바이트 데이터를 4개의 문자로 표현합니다. 3바이트 데이터의 24비트를 네 가지 6비트 덩어리로 나누고,

  각 덩어리의 6비트값에 출력 가능한 문자를 할당해 표현합니다. 

base64 인코딩 표

- 예를 들어, 012 라는 세 바이트를 인코딩하면,

  00000000 00000001 00000010 을

  6비트씩 000000 / 000000 / 000100 / 000010 끊을 수 있습니다.

 그리고 base64 인코딩 표에 따라 각각에 A, A, E, C가 대응되므로, 012는 AAEC로 변환됩니다.

 

2) 왜 base64 인코딩을 사용하는가?

- base64 인코딩을 사용하면 전송해야 하는 데이터의 양이 33% 정도 늘어납니다. 

  왜냐하면 6비트당 2비트의 오버헤드가 발생하기 때문입니다. 

  또한, 인코딩과 디코딩에 추가 CPU 연산도 필요합니다. 

  그렇다면 왜 base64 인코딩을 사용하는 것일까요?

  그 이유는 ASCII 코드로 전달하는 방식에 2가지 문제가 있기 때문입니다. 

  (1) ASCII는 7bits 인코딩인데, 나머지 1bit를 처리하는 방식이 시스템별로 상이합니다. 

  (2) 일부 제어문자의 경우 시스템 별로 다른 코드 값을 갖습니다. 

 

즉, ASCII는 시스템 간 데이터를 전달하기에 안전하지 않습니다. 따라서 Base64는 ASCII 코드 중 제어문자와 일부 특수 문자를 제외한 64개의 안전한 출력 문자만 사용합니다. 

 

 

참고

한 권으로 읽는 컴퓨터 구조와 프로그래밍

Base64 인코딩이란? (tistory.com)

https://www.geeksforgeeks.org/encode-ascii-string-base-64-format/ 

 

'네트워크' 카테고리의 다른 글

OSI 7계층 - 물리 계층  (0) 2022.08.31
Restful 설계 원칙  (0) 2022.08.26
쿠키와 세션  (0) 2022.08.01
TCP vs UDP  (0) 2022.07.31
google.com에 접속했을 때 일어나는 일  (0) 2022.07.30