[Spring Boot] Blog Project - HTTP 1.1과 MIME TYPE

deannn.Park·2021년 5월 31일
0
post-thumbnail

기본적인 통신 방법


기본적으로 통신은 8bit짜리인 Byte Stream을 통해 통신을 한다.
클라이언트가 Byte Stream을 통해 서버에게 요청을 하면, 서버는 해당 요청에 대한 응답은 다시 클라이언트에게 보낸다. 응답 또한 Byte Stream을 통해 보낸다.

 

HTTP 1.1 통신 방법


HTTP는 프로토콜이기에 통신을 하는 방법을 약속으로 지정해두었다. 통신 요청 방법은 4가지가 있다.

  • GET
  • POST
  • PUT
  • DELETE

위 4가지는 통신 요청 방법이기 때문에, 이는 클라이언트가 서버에게 요청하는 방법이다. 각각의 역할은 다음과 같다.

GET

데이터 요청. READ. DB SELECT

POST

데이터 추가. CREATE. DB INSERT

PUT

데이터 수정. UPDATE. DB UPDATE

DELETE

데이터 제거. DELETE. DB DELETE

 
통신 요청 방법은 위와 같지만, 클라이언트가 서버에 요청을 보낼 때에는 데이터를 같이 보내야 한다. 무언가를 조회(GET)하고 싶다 하면 조회하고 싶은 주체를 같이 실어 보내야 한다. 그리고 무언가를 추가(POST)하고 싶다면 추가하고 싶은 데이터를 실어 보내야 한다.

 

Stateless와 Stateful


Stateful

Stateful은 클라이언트와 서버가 통신을 할 때, 클라이언트와 서버가 한 번 연결 된 후에 지속적으로 계속 연결되어 데이터를 주고받는 방식을 뜻한다.

Stateful은 인증을 통해 세션을 생성하여 한 번의 인증 후에는 인증 절차를 거치지 않고 데이터를 주고 받을 수 있다.
하지만 이 방식은 서버가 여러 클라이언트와 통신을 하게 된다면, 통신하는 모든 클라이언트와 지속적으로 연결이 되어 있어야 하기 떄문에 서버의 부하가 크다.
Stateful 방식은 주로 채팅과 같은 곳에서 많이 사용된다.

Stateless

Stateless는 Stateful과 달리 클라이언트와 서버가 통신을 할 때, 한 번의 요청이 끝나면 바로 연결을 끊는 방식이다. 따라서 클라이언트가 서버로 요청을 보낼 때 마다 연결이 되었다가 응답 후에는 연결이 끊긴다.

Stateless는 서버 한 대가 여러 클라이언트와 통신을 한다고 해도, 요청에 응답을 한 후에는 연결을 끊어버리기 때문에 Stateful 방식에 비해 서버의 부하가 적다.
하지만 Stateless 방식은 단순히 문서를 주고받기 위해 만들어진 방식이기에 한 번 인증을 했더라도 응답 후에는 연결이 끊기기 때문에 세션을 만들수 없다. 따라서 해당 클라이언트가 이전에 통신했던 클라이언트인지 확인하기가 어렵다. 이러한 단점은 어렵지만 보완이 가능하다고 하다.
Stateless 방식은 HTTP 프로토콜 방식에서 사용된다.

 

MIME TYPE


MIME Type에 대해 설명하기 전에 일단 패킷 스위칭에 대해 알아야 할 필요가 있다.

패킷 스위칭 vs 서킷 스위칭

패킷 스위칭


데이터를 전송할 때, 데이터를 패킷으로 쪼개어 보내는 것을 의미한다.
패킷으로 쪼개어 보낼 때의 장점은 데이터를 받는 입장에서는 데이터는 보내는 곳마다 선을 하나씩 연결하는 것이 아니라 데이터를 보내는 여러 선이 하나로 통합되어 하나의 선으로만 데이터가 들어오기 때문에 데이터를 받기가 쉽다.
하지만 하나의 선으로만 데이터를 받기 때문에 여러곳에서 보낸 패킷들이 섞이게 된다.

서킷 스위칭


데이터를 전송하는 곳 마다 선을 연결해 통째로 데이터를 보내는 방법이다.
데이터를 한번에 통째로 보내기 때문에 속도가 빠르다. 하지만 받는 입장에서는 여러 선이 연결되어 있으므로 비용이 많이 든다.

HEADER와 BODY


HTTP는 패킷 스위칭 방식을 사용한다. 클라이언트가 서버로 요청을 보낼 때, 요청 데이터에는 HEADER와 BODY가 존재한다.
바디에는 실제의 데이터가 들어있고, 헤더에는 바디에 들어있는 데이터의 설명이 들어있다. 또한 헤더에는 패킷을 보내는 컴퓨터의 식별자와 패킷 순서 등이 존재한다.

MIME TYPE

위에서 말했다시피 헤더에는 여러 정보가 포함되어 있지만 바디의 데이터 설명이 있다고 했다. 그 중 하나가 바디의 데이터의 형식이다.
웹에서는 파일의 확장자가 별 의미가 없다. 따라서 바디의 데이터가 단순 text인지, 이미지인지 등등 데이터의 형식을 알아야 받는 입장에서 정확히 데이터를 열어볼 수 있기 때문이다.
그 형식을 지정하는 것이 MIME Type이다.

MIME TYPE 형식

Type/subtype

대표적으로 많이 사용되는 MIME TYPE

text/plain
text/html
image/jpeg
image/png
video/mp4
application/json
application/www-form-urlencoded
...

MIME Type은 여러가지가 있다. 아래의 주소로 들어가면 모든 MIME Type을 확인할 수 있다.
https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types

참고
https://getinthere.tistory.com/19
https://youtu.be/6lSMCAq-fYg

profile
컴퓨터 관련 여러 분야 공부중

0개의 댓글