1129 | 스프링의 정석 :: 2-8
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를 써서 바이너리를 텍스트로 변환해서 전송. 단점은 사이즈가 커진다.