IT 강의 정리/[스프링의 정석] 남궁성의 끝까지 간다

ch.02 Spring MVC 07~08 HTTP 요청과 응답, 텍스트와 바이너리, MIME, Base64

Nellie Kim 2022. 9. 28. 20:26
728x90

07. HTTP 요청과 응답 - 이론

HTTP란?

Hyper Text Transfer Protocol. 하이퍼텍스트(html)를 전송하기위한 규칙. 세가지 특징이 있다.

1) 사람이 읽을 수 있는 텍스트 기반의 프로토콜이다.

이와 같은 요청 & 응답 텍스트가 실제로 왔다갔다 하는 것

2) 상태를 유지하지 않는다(stateless). 클라이언트 정보를 저장x   -> 보완하기위해 쿠키 & 세션을 사용한다.

3) 확장가능하다 - 커스텀 헤더(header) 추가가능. 표준에 정해놓지 않은 헤더를 맘대로 추가 가능하다.

 

 

 

HTTP 요청, 응답 메시지

우리는 단순히 URL을 입력할 뿐이지만, 브라우저가 알아서 요청메시지를 만들어준다.

 

HTTP 메시지 - 응답메시지

HTTP 메시지 - 요청메시지(GET/ POST)

 

08. 텍스트와 바이너리, MIME, Base64

바이너리 파일 : 문자와 숫자가 저장되어 있는 파일. 데이터를 있는 그대로 읽고 쓴다. 숫자가 들어있기 때문에 사람이 봐서는 읽기 어렵다.

텍스트 파일 : 문자만 저장되어 있는 파일. 숫자를 문자로 변환 후 쓴다. 모두 텍스트이기 때문에 사람이 읽기 쉽다.

숫자12 를 문자로 변환하려면 문자 '1', '2' 로 변환한다. 4byte -> 2byte로 줄었다. float는 오히려 4byte -> 6byte로 늘었다.

그냥 바로 저장하면 바이너리파일, 숫자를 문자로 변환해서 저장하면 텍스트파일!

 

MIME : 텍스트기반 프로토콜에 바이너리 데이터를 전송하기 위해 고안되었다. HTTP의 Content-Type헤더에 사용한다. 데이터타입을 명시한다.

이미지, 동영상 등은 모두 바이너리파일이다. 그런데 HTTP는 텍스트기반의프로토콜이다. 그러면 어떻게 전송할것인가?

MIME을 적어주면 된다. 전송할 데이터 타입을 적어주자!       ex. response.setContentType("text/html")

Base64 : 64진법. 바이너리데이터를 텍스트데이터로 변환할때 사용.

0~9(10개), A~Z(26개) , a~z(26개), + , /  --> 도합 64개의 문자로 구성

(ASCII코드는 128개이지만 특수문자가 포함되어있고 출력할수 없는 문자도 있어서 안전하지 않다.)

문자 'Ma' 를 Base64방식으로 인코딩해서 바이너리데이터를 텍스트데이터로 바꾸는 과정

 

 

 

출처 : [패스트캠퍼스] 스프링의 정석 : 남궁성과 끝까지 간다