HTTP 프로토콜

ki hyun Lee·2022년 1월 29일
0

TIL

목록 보기
6/16

HTTP는 웹상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 쓰인다. - 위키백과 -

What is it?

위에서 볼 수 있다시피 HTTP(Hypertext Transfer Protocol)는 정보를 주고 받기 위한 통신 프로토콜이다. 웹에서는 브라우저와 서버 간에 데이터를 주고받기 위한 방식으로 HTTP 프로토콜을 사용하고있기 때문에 프런트엔드 개발자라면 필수적으로 알아야 하는 지식 중 하나이다.

HTTP의 특징

  • HTTP 프로토콜은 상태가 없는 (stateless) 프로토콜이다.

여기서 상태가 없다는 말은 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다는 말이다.

이 말은 서버는 절대로 어떤 일이 있어도 지난 요청을 기억하지 않는다. 따라서 브라우저에서 지난 요청에 대해서 물어보더라도 서버는 어떤 대답도 할 수 가 없다.

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

복잡한 구조 없이 그때 그때 오는 요청에 따라 대답만 하면 되기 때문

  • HTTP 프로토콜은 일반적으로 TCP/IP 통신 위에서 동작하며 기본 포트는 80번이다.

작동 방식

HTTP로 데이터를 주고 받기 위해서는 밑의 그림과 같이 Request를 보내서 Response을 받아야한다. (코드로 작성할때는 Req, Res라고 많이들 쓴다.)

URL

HTTP의 작동 방식을 알기 위해선 먼저 URL에 대해서 알아야 한다. URL(Uniform Resource Locators)은 서버에 Request를 보내기 위해 입력하는 영문 주소이다. 아무래도 숫자로만 되어 있는 IP 주소보다는 영문으로 된 URL이 훨씬 기억하기 쉽기 때문에 URL을 사용한다.

URL의 구조

Request

위에서 살펴본 URL을 이용하면 서버에 데이터를 요청할 수 있다. 여기서 요청하는 데이터에 특정 동작을 수행하고 싶으면 HTTP 요청 메서드(Http Request Methods)를 이용할 수 있다.

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

  1. GET: 데이터 요청
  2. POST: 데이터 생성
  3. PUT: 데이터 변경
  4. DELETE: 데이터 삭제

PUT과 DELETE를 사용하기보다는 전부 POST로 처리하는 편이다

기타 요청 메서드

  1. HEAD : 서버 헤더 정보를 획득. GET과 비슷하나 Response Body를 반환하지 않음
  2. OPTIONS : 서버 옵션들을 확인하기 위한 요청. CORS에서 사용

참고로 약 2년간 웹 개발을 하면서 위의 2개의 메서드는 한번도 본 적도 없다.

HTTP 상태 코드

  • 서버에서 설정해주는 응답 정보
  • 요청이 성공했는지 실패했는지 실패원인은 무엇인지 등 여러가지 상태를 상세하게 알려준다.

Ex)

https://youtube.com 이라는 URL로 요청을 보내게 된다면 서버로부터 오는 응답은 실패 or 성공으로 나뉘게 된다. HTTP에서는 200번대부터 500번대까지 번호를 사용하여 상태를 상세하게 구분한다.

200번대

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

300번대

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

400번대

  • 대부분 클라이언트의 코드가 잘못된 경우. 가장 많이 보게 되는 상태 코드는 404 로 요청한 데이터가 서버에 없다는 의미이다.
  1. 400 : Bad Request, 잘못된 요청
  2. 401 : Unauthorized, 권한 없이 요청. Authorization 헤더가 잘못된 경우
  3. 403 : Forbidden, 서버에서 해당 자원에 대해 접근 금지
  4. 405 : Method Not Allowed, 허용되지 않은 요청 메서드
  5. 409 : Conflict, 최신 자원이 아닌데 업데이트하는 경우.

500번대

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

HTTP의 모든 상태 코드를 보고 싶다면 여기

thank you for button

profile
Full Stack Developer at Team Verse

0개의 댓글