HTTP 프로토콜 ?

김대은·2022년 8월 5일
0

HTTP 프로토콜이란?

HTTP (Hypertext Transfer Protocol)는 웹을 개발하는
사람이라면 누구나 알아야하는 통신 프로토콜 입니다.
프로토콜 이란 상호 간에 정의한 규칙을 의미하며, 특정 기기간에
데이터를 주고 받기 위해 정의되었습니다.

웹에서는 브라우저와 서버 간에 데이터를 주고 받기 위한 방식으로
HTTP프로토콜을 사용하고 있습니다.

HTTP프로토콜 특징

HTTP프로토콜은 상태가 없는(stateless)프로토콜 입니다.
여기서 상태가 없다 라는 말은 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다는 말입니다.
좀 더 쉽게 말해서 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다는 말입니다.

이러한 특징 덕택에 서버는 세션과 같은 별도의 추가 정보를 관리하지않아도 되고,
다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능 상의 이점이 생깁니다.

HTTP Request & HTTP Response


HTTP프로토콜로 데이터를 주고받기 위해서는 위와 같이 요청을 보내고(request) 응답을(response) 받아야합니다.

그리고 요청과 응답을 이해하기 위해서는 먼저 클라이언트와 서버를 이해해야합니다.
클라이언트는 요청을 보내는쪽을 의미하며 일반적으로 웹 관점에서는 브라우저를 의미합니다.
서버란 요청을 받는 쪽을 의미하여 일반적으로 데이터를 보내주는 원격지의 컴퓨터를 의미합니다.

URL

Url(Uniform Resource Locators)은 아래와 같은 구조로되어있습니다.

SOP

SOP(Same Origin Policy)
여기서 origin은 위 사진의 protocol 과 host를 합치 부분을 의미합니다.
sop는 같은 오리진 끼리만 데이터를 송 수신 할수 있다 라는 겁니다.

CORS

브라우저에서는 보안적인 이유로 cross-origin HTTP요청들을 제한합니다.
그래서 Cross-origin 요청을 하려면 서버의 동의가 필요합니다.
만약 서버가 동의한다면 브라우저에서는 요청을 허락하고, 동의 하지 않는다면
브라우저에서 거절합니다.

이러한 허락을 구하고 거절하는 매커니즘을 HTTP-header를 이용해서 가능한데, 이를 CORS(Cross-Origin Resource Sharing)라고 부릅니다.

HTTP 요청 메서드

위에서 살펴본 URL을 이용하면 서버에 특정 데이터를 요청할 수 있습니다.
여기서 요청하는 데이터에 특정동작을 수행하고 싶으면 어떻게 해야 할까요?
바로 HTTP요청 메서드 를 이용합니다.

일반적으로 HTTP 요청 메서드는 HTTP Verbs라고도 불리우며 아래와 같이 주요 메서드를 갖고 있습니다.

  • GET : 존재하는 자원에 대한 요청
  • POST : 새로운 자원을 생성
  • PUT : 존재하는 자원에 대한 변경
  • DELETE : 존재하는 자원에 대한 삭제

이와 같이 데이터에 대한 조회,생성,변경,삭제 동작을 HTTP요청 메서드로 정의 할 수 있습니다.
참고로 때에 따라서는 POST메서드는 PUT,DELETE의 동작도 수행할 수 있습니다.

HTTP 상태코드

URL과 요청 메서드가 클라이언트에서 설정해야 할 정보라면 HTTP 상태 코드(HTTP Status Code)는 서버에서 설정해주는 응답(Response) 정보입니다.

주요 상태 코드는 200번대부터 500번대까지 다양하게 있지만 주요한 상태 코드만 몇 개 살펴보겠습니다.

2xx - 성공

200번대의 상태코드는 대부분 성공을 의미합니다.

  • 200 : GET 요청에 대한 성공
  • 204 : No Content. 성공했으나 응답 본문에 데이터가 없음
  • 205 : Reset Content. 성공했으나 클라이언트의 화면을 새로 고침하도록 권고
  • 206 : Partial Conent. 성공했으나 일부 범위의 데이터만 반환

3xx - 리다이렉션

300번대의 상태 코드는 대부분 클라이언트가 이전 주소로 데이터를 요청하여
서버에서 새 URL로 리다이렉트를 유도하는 경우입니다.

  • 301 : Moved Permanently, 요청한 자원이 새 URL에 존재
  • 303 : See Other, 요청한 자원이 임시 주소에 존재
  • 304 : Not Modified, 요청한 자원이 변경되지 않았으므로 클라이언트에서 캐싱된 자원을 사용하도록 권고. ETag와 같은 정보를 활용하여 변경 여부를 확인

4xx- 클라이언트 에러

400번대 상태코드는 대부분 클라이언트의 코드가 잘못된 경우입니다.
유효하지 않은 자원을 요청했거나 요청이나 권한이 잘못된 경우 발생합니다.

  • 400 : Bad Request, 잘못된 요청
  • 401 : Unauthorized, 권한 없이 요청. Authorization 헤더가 잘못된 경우
  • 403 : Forbidden, 서버에서 해당 자원에 대해 접근 금지
  • 404 : Not Fouund, 요청한 자본이 서버에 없음
  • 405 : Method Not Allowed, 허용되지 않은 요청 메서드
  • 409 : Conflict, 최신 자원이 아닌데 업데이트하는 경우. ex) 파일 업로드 시 버전

5xx - 서버에러

500번대 상태 코드는 서버 쪽에서 오류가 난 경우입니다.

  • 501 : Not Implemented, 요청한 동작에 대해 서버가 수행할 수 없는 경우
  • 503 : Service Unavailable, 서버가 과부하 또는 유지 보수로 내려간 경우

캡틴 판교님의 글을 참고 하여 작성하였습니다.
프런트엔드 개발자가 알아야하는 HTTP프로토콜 Part 1

profile
매일 1% 이상 씩 성장하기

0개의 댓글