HTTP 프로토콜

김젼이 ·2022년 8월 24일
0

Front-end

목록 보기
1/1

HTTP의 정의

HTTP란?
HTTP(Hypertext Transfer Protocol)으로 프로토콜이란 상호 간에 정의한 규칙을 의미하며 특정 기기 간에 데이터를 주고 받기 위해 정의 되었다. 웹에서는 브라우저와 서버 간에 데이터를 주고 받기 위한 방식으로 HTTP 프로토콜을 사용한다.

1. HTTP의 특징

  • HTTP 프로토콜은 stateless 즉 상태가 없는 프로토콜로, 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다는 뜻이다. 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다는 말 !
    이러한 특징으로 서버는 세션과 같은 별도의 추가 정보를 관리 하지 않아도 되고, 다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능상의 이점이 생긴다.
    HTTP 프로토콜은 일반적으로 TCP/IP 통신 위에서 동작하며 기본 포트는 80이다.

2. Request & Response

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

클라이언트(client)란 요청을 보내는 쪽을 의미하며 일반적으로 웹 관점에서는 브라우저를 의미한다.
서버(server)란 요청을 받는 쪽을 의미하며 일반적으로 데이터를 보내주는 원격지의 컴퓨터를 의미한다.

3. URL

Uniform Resource Locators의 약자로 서버에 자원을 요청하기 위해 입력하는 영문주수이다.

4. HTTP 요청 메서드

서버의 특정 동작을 수행하고 싶을땐 HTTP 요청 메서드(HTTP Request Method)를 이용한다. 일반적으로 HTTP 요청 메스드는 HTTP Verbs라고도 불리며 데이터에 대한 조회, 생성, 변경, 삭제 동작을 HTTP 요청메서드로 정의 할 수 있다. 때에 따라서 POST 메서드로 PUT, DELETE의 동작도 수행 할 수 있다.

  • GET : 존재하는 자원에 대한 요청
  • POST : 새로운 자원을 생성
  • PUT : 존재하는 자원에 대한 변경
  • DELETE : 존재하는 자원에 대한 삭제
  • HEAD: 서버 헤더 정보를 획득, GET과 비슷하나 Response Body를 반환하지 않음
  • OPTIONS: 서버 옵션들을 확인하기 위한 요청 CORS에서 사용

5. HTTP 상태코드

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

http://domain.com/users

위 요청을 보내고 나면 서버에서 응답으로 오는 코드는 200(성공)혹은 404(실패)이다. 따라서 이 HTTP 상태 코드로 추가적인 로직을 구현 할 수 있게 된다.

2xx (성공)

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

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

3xx (리다이렉션)

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

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

Etag(entity tag) HTTP 응답의 헤더는 자원의 특정 버전에 대한 식별자이다. 콘텐츠가 변경되지 않은 경우 웹서버에서 전체 응답을 다시 보낼 필요가 없으므로 캐시를 보다 효율적으로 사용하고 대역폭을 절약 할 수 있다. 또한 리소스의 동시 업데이트가 서로를 덮어 쓰는 것을 방지하는데 도움을 준다.

4xx (클라이언트 에러)

400번대 상태코드는 대부분 클라이언트의 코드가 잘못된 경우이다. 유효하지 않은 자원을 요청했거나 요청한 권한이 잘못된 경우 발생한다. 우리가 가장 자주보는 에러코드는 404로 요청한 자원이 서버에 없다는 뜻이다.

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

5xx (서버에러)

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

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

참고: https://joshua1988.github.io/web-development/http-part1/

profile
호기심이 많은 프론트엔드 개발자

0개의 댓글