🔥 Vamos/Spring

1129 | 스프링의 정석 :: 2-8

unikue 2022. 11. 29. 23:41

http 요청과 응답 - 텍스트와 바이너리, MIME, Base64

 

1128 | 스프링의 정석 :: 2-7

Http의 요청과 응답 ✔ 프로토콜(protocol) : 서로간의 통신(소통)을 위한 약속, 규칙 : 주고 받을 데이터에 대한 형식을 정의한 것 ✔ HTTP(Hyper Text Transfer Protocol) : 텍스트를 전송하기 위한 프로토콜. (

ala-nueva.tistory.com

저번 시간 강의와 이어짐!

 

 

✔ 텍스트파일 vs 바이너리 파일

: 둘을 구분하는 법은 메모장으로 열었을때 읽기 어려운파일 = 바이너리 파일. 모두 깨져서 출력되므로

 

텍스트파일 : 문자만 저장되어 있는 파일

바이너리 파일 : 문자와 숫자가 저장되어 있는 파일

파일 종류 쓰기 읽기
바이너리파일
데이터를 있는 그대로 읽고 써서 저장함
사람이 내용을 파악하기 어렵다
문자 ▶ 문자
숫자 ▶ 숫자
문자 ▶ 문자
숫자 ▶ 숫자
텍스트파일
숫자 ▶ 문자 변환 후 저장
사람이 읽기 쉽다
문자 ▶ 문자
숫자 ▶ 문자 (변환)
문자 ▶ 문자
문자 ▶ 숫자 (변환할 일이 없음)

 

 

 

✔ MIME(Multipurpose Internet Mail Extensions)

: 텍스트 기반 프로토콜(http)에 바이너리 데이터(이미지, 동영상)를 전송하기위해 고안

: 데이터의 타입을 명시함

: HTTP의 Content-Type헤더에 사용. 실제로 텍스트라도 이미지로 적으면 이미지로 해석함

 타입 MIME타입
text text/plain, text/html, text/css, text/javascript
image image/bmp, image/webp
audio audio/midi, audio/mpeg, audio/wav
video video/webm, video/logg
application 모든 종류의 이진 데이터 application/xhtml+xml, application/xml, application/pdf

 

 

 

✔ Base64 인코딩 (64진법)

: 바이너리 데이터를 텍스트 데이터로 변환할 때 사용

: '0'~'9'(10개), 'A'~'Z'(26개), 'a'~'z'(26개), '+', '/' 모두 64개의 문자로 구성

: 2^6 이므로 6bit. 2진데이터를 6비트씩 잘라서 문자로 변환한다. 

예시 > (011000)(111000)(010100) // Y4U

: 기존에 쓰던 아스키 코드는 8bit인데 국가간 호환이 안되는 문제가 있었음. 6비트로 8비트를 표현하므로 크기가 더 커짐.

 

👉 즉 바이너리 데이터를 텍스트 기반인 http로 보내는데에는 두가지 방법이 있다.

1. MIME타입을 써서 바이너리데이터를 그대로 넣어서 전송

2. base64를 써서 바이너리를 텍스트로 변환해서 전송. 단점은 사이즈가 커진다.

 

 

이미지파일을 base64로 인코딩
vs code에서 이미지파일 붙여넣기.(data:image/jpeg;base64,까지는 입력 후 인코드된 텍스트를 붙여넣는다)
base64인코딩을 통해서 이미지(바이너리파일)를 텍스트로 변환, Html에 녹여내서 웹에서 이미지를 띄울수 있게 되었다.