본문 바로가기
  • soobinhand의 기술 블로그
Computer Science/네트워크

[네트워크] HTTP

by soobinhand 2022. 1. 22.
728x90

HTTP

정의

Hyper Text Transfer Protocol의 약자.

인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜이다.

응용 레벨의 프로토콜로 TCP/IP 위에서 작동한다.

결국 데이터를 주고 받기 위한 프로토콜, 즉 규약이다.

 

동작방식

클라이언트에서 요청을 보내면 서버는 요청을 처리해서 응답한다.

클라이언트는 URI를 이용해서 서버에 접속하고 데이터를 요청한다.

서버는 클라이언트에서 요청을 받고, 요청을 해석하고 응답한다.

 

Connectionless

대표적인 HTTP의 특징이다. 무연결성.

서버에 요청하고 응답을 받으면 연결을 끊어버린다.

왜? 왜 연결을 끊게 설계를 했을까 처음에?

바로 리소스 부족이 그 이유다.

연결을 계속 유지하면 리소스가 계속 사용되고 그렇게 리소스가 부족하게 되면, 다른 사용자가 이용하지 못하는 상황이 발생한다. 그래서 결과적으로 더 많은 연결을 위해 비연결 지향으로 설계되었다.

그래도 HTTP 1.1부터는 keep-alive 헤더를 통해 연결을 유지할 수 있긴 하다.

 

Stateless

이것도 특징 중 하나이다. 무상태성.

결국 Connectionless때문에 나왔다. Connectionless로 인해서 서버는 클라이언트를 식별할 수가 없다. 

이게 Stateless다. 게임에 접속 -> 로그인 -> 상점 방문 -> 로그인 -> 게임 시작 -> 로그인........

매번 새로운 인증을 해야한다. 이걸 누가 사용하냐.

이건 쿠키와 세션, JWT, OAuth 등으로 해결 가능하다. 그래서 우리는 지금 이렇게 잘 사용할 수 있는 것이다.

 

응답 상태코드

100-109 : 메시지 정보

200-206 : 요청 성공

300-305 : 리다이렉션

400-415 : 클라이언트 에러

500-505 : 서버 에러

 

HTTP Method

상당히 중요한 내용 중 하나이다. 그래서 따로 또 포스트할 예정임.

우선 종류들만 나열해 본다.

GET, PUT, POST, DELETE 등등....

 

REST

상당 부분 중요함. 진짜 중요함.

"웹을 무너뜨리지 않고 어떻게 HTTP 프로토콜을 발전시킬 수 있을까???" 에 대한 고민으로 시작된 아키텍쳐.

REST API는 REST 아키텍쳐를 따르는 API이고,

대부분의 API는 HTTP만 잘 따라도 어느정도 REST를 만족하고, 이를 RESTful이라고 한다.

 

우선 HTTP에 대한 부분은 여기까지 포스트하려고 한다.

적어도 HTTP에 대한 핵심들은 담았고, 그 자세히는 또 그걸로 포스트하고자 함.

728x90

댓글