HTTP 프로토콜 학습 정리

Thomas·2022년 12월 11일
0

HTTP 프로토콜

HyperText Transfer Protocol 의 약자로 웹 상에서 서버와 클라이언트 간에서 데이터를 요청, 응답 하기 위한 정형화된 약속(규약) 입니다.
예시를 들어서 살펴보면, A(사람 = 클라이언트) 가 B(창고 = 서버)에게 창고 안에 있는 물건들의 무언가를 요청하려고 합니다. A는 B에게 막무가내로 물건을 요청할 수 없습니다. 서로간의 약속이 필요하죠. 예를 들어 어떤 물건을 요청할 것인지, 물건을 달라고 할수도 있으며 물건을 버려달라고 할수도 있고 물건을 바꿔달라고 혹은 새로 채워달라고 할수도 있습니다. 이때 B는 요청을 하는 A가 인증을 받은 사람인지, 어떤 요청을 하는지 등을 알아야 할 필요가 있고, 이 요청을 처리하려면 서로간의 일관된 약속이 필요합니다. 이 일관된 약속을 우리가 HTTP 프로토콜이라고 부르는 것입니다.

클라이언트 는 우리가 사용하는 브라우저 (예를 들어 Chrome, Safari, Edge..) 등이 있고, 서버는 브라우저에서 요청을 보내는 목적지를 말하게 됩니다.

우리가 사용하는 HTTP 버전은 HTTP 1.1 버전이고, 기본 포트는 80번 입니다. 또한 HTTP는 TCP/IP 프로토콜 위에서 동작합니다.

HTTP 프로토콜의 특징

1. Connectionless

HTTP 프로토콜은 Connectionless 입니다. 서버와 클라이언트 간 연결이 지속된게 아닌, 한번 요청으로 연결이 끊긴다는 이야기 입니다. 클라이언트의 접속 유지를 최소화 하기 때문에 서버는 다수의 요청을 처리할 수 있습니다.

2. Stateless

Connectionless 에서 파생된 특성인데, 서버는 요청에 대한 응답으로 연결을 끊어버리기 때문에 클라이언트의 상태를 유지할 수 없습니다. 그렇기 때문에 클라이언트의 이전 요청과 현재 요청은 서로 관련이 없는 독립적인 상태이게 됩니다.

URL 살펴보기

http://www.localhost:8080/api/common/code?name=thomas

http 는 프로토콜 을 의미합니다.
www.localhost 는 호스트 를 의미합니다.
8080 은 포트번호 를 의미합니다.
api/common/code 는 요청하는 자원의 경로를 의미합니다.
?name=thomas 은 query 입니다.

HTTP Request Method

HTTP 에는 주료 사용하는 4가지 메서드가 있습니다. GET, POST, PUT, DELETE 입니다.

  • GET: 자원을 요청하는데 사용 (CRUD 중 Read 를 구현하는 데 사용)
  • POST: 새로운 자원을 생성하는데 사용 (CRUD 중 Create 를 구현하는데 사용)
  • PUT: 자원의 상태를 변경하는데 사용. (CRUD 중 Update 를 구현하는데 사용. 때에 따라서 Delete 를 구현할 때 사용 가능)
  • DELETE: 자원을 삭제하는데 사용 (CRUD 중 Delete 를 구현하는데 사용)

HTTP Status Code

HTTP 요청을 보내 응답을 받을때 클라이언트에서는 상태 코드를 받게 됩니다. 상태 코드는 숫자로 되어있는데, 상태 코드를 통해 우리의 요청이 성공했는지, 실패했는지, 실패했다면 어떤 이유로 실패했는지 알 수 있습니다. 간단하게 어떤 상태코드가 있는지 살펴보면..

  1. 2xx ok
    요청이 성공했다면 받게 됩니다.
  2. 3xx Redirect
    리다이렉트를 유도하는 상태코드 입니다.
  3. 4xx 클라이언트 측에서 요청 오류가 있을 시 내려오는 상태코드입니다.
    3-1. 400 Bad request 잘못된 요청입니다.
    3-2. 401 Unauthorized 권한이 없는 요청입니다. 요청 해더 중 Authorization 을 살펴볼 필요가 있습니다.
    3-3. 403 Forbidden 서버에 있는 자원에 접근하는게 금지되어 있습니다.
    3-4. 404 Not Found 서버에 요청한 자원이 없는 경우입니다.
    3-5. 405 Method Not Allowed 요청한 HTTP Method 가 허용되지 않은 메서드일 경우 입니다.
  4. 5xx 서버 측 에러입니다.
    4-1. 501 서버에서 요청을 수행할 수 없는 경우입니다.
    4-2. 503 서버 과부하로 인해 요청을 이용할 수 없는 경우입니다.

HTTP 프로토콜 학습을 마무리하며

HTTP 프로토콜의 Stateless 특성으로 인해서 서버는 클라이언트의 정보를 기억할 수 없습니다. 그렇기 때문에 클라이언트는 요청 시에 쿠키나 헤더에 항상 인증 토큰을 담아서 요청하게 됩니다.
다음 학습에서는 쿠키와 브라우저 스토리지에 대해서 학습할 예정입니다.

지금 남기는 기록은 캡틴판교님의 HTTP 프로토콜을 참고하였습니다. 양질의 정보를 남겨주셔서 감사합니다.

캡틴 판교님의 포스팅
https://joshua1988.github.io/web-development/http-part1/

profile
안녕하세요! 주니어 웹 개발자입니다 😆

0개의 댓글