HTTP란?

ssoop·2021년 9월 14일
0

What is Http?
HTTP란?

HTTP(Hyper Text Transfer Protocol)란?

인터넷으로 HTML 문서를 주고 받을 수 있는 규약 또는 규격입니다.

과거에는 HTML 문서만 주고 받을 수 있었다면,
근래에는 HTML 문서가 아닌 TEXT, XML, JSON 같은 형식의 데이터를 주고 받을 수 있도록 범위가 확장되었습니다.

다시 말하면 HTTP는 인터넷으로 데이터를 주고 받을 수 있는 프로토콜입니다.

HTTP 동작 방식

두 개의 컴퓨터가 있고 하나는 다른 컴퓨터에게 정보를 요청하는 컴퓨터로 '클라이언트' 라고 부르며
또 하나는 다른 컴퓨터에게 정보를 제공하는 컴퓨터로 '서버' 라고 부릅니다.

클라이언트는 URL를 통해 서버에게 정보를 요청하게되고 서버는 요청한 URL로 정보를 응답하게 됩니다.
여기서 요청을 Request 라고 하며, 응답을 Response 라고 합니다.

URL(Uniform Resource Locators)

URL은 서버에 자원, 데이터를 요청하기 위해 입력하는 주소입니다. URL 구조는 아래와 같습니다.

HTTP 특징

  • HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해 해석 된다.
  • TCP/IP를 이용하는 응용 프로토콜이다.
    컴퓨터와 컴퓨터간에 데이터를 전송 할 수 있도록 하는 장치로 인터넷이라는 거대한 통신망을 통해 원하는 데이터를 주고 받는 기능을 이용하는 응용 프로토콜
  • HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜이다.
    비연결성 프로토콜의 단점을 해결하기 위해 Cookie와 Session이 등장하였다.
  • HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작한다.

HTTP 요청 메서드

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

이와 같이 데이터에 대한 조회, 생성, 변경, 삭제 동작을 HTTP 요청 메서드로 정의할 수 있습니다.
그 외에도 기타요청 메서드는 다음과 같습니다.

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

HTTP 상태코드

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


2XX - 성공

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

  • 200 OK
    요청이 성공했으며 성공의 의미는 HTTP 메소드에 따라 달라집니다:
    GET: 리소스를 불러와서 메시지 바디에 전송되었습니다.
    HEAD: 개체 해더가 메시지 바디에 있습니다.
    PUT 또는 POST: 수행 결과에 대한 리소스가 메시지 바디에 전송되었습니다.
    TRACE: 메시지 바디는 서버에서 수신한 요청 메시지를 포함하고 있습니다.

  • 201 Created
    요청이 성공적이었으며 그 결과로 새로운 리소스가 생성

  • 204 No Content
    성공했으나 응답 본문에 데이터가 없음

  • 205 Reset Content
    요청을 완수한 이후에 클라이언트에게 이 요청을 보낸 문서 뷰를 리셋 권고


3XX - 리다이렉션

300번대의 상태코드는 대부분 클라이언트가 요청한 주소를 새로운 URL로 리다이렉트하도록 유도하는 경우입니다.

  • 301 Moved Permanently
    요청한 리소스의 URI가 변경되었음 권고

  • 304 Not Modified
    이것은 캐시를 목적으로 사용, 클라이언트에게 응답이 수정되지 않았음을 알려주고 클라이언트는 계속해서 응답의 캐시된 버전을 사용하라고 권고


4XX - 클라이언트 에러

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

  • 400 Bad Request
    잘못된 문법으로 인하여 서버가 요청을 이해할 수 없음

  • 401 Unauthorized
    인증이 실패한 경우

  • 403 Forbidden
    자원에 접근 금지

  • 404 Not Found
    서버는 요청받은 리소스를 찾을 수 없을 경우

  • 405 Method Not Allowed
    서버에서 지원하지 않는 메서드인 경우

  • 415 Unsupported Media Type
    요청한 미디어 포맷은 서버에서 지원하지 않음

  • 429 Too Many Requests
    지정된 시간에 너무 많은 요청을 보낸 경우


5XX - 서버 에러

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

  • 500 Internal Server Error
    서버 내부 오류

  • 501 Not Implemented
    요청한 동작에 대해 서버가 지원하지 않아 수행할 수 없음

  • 502 Bad Gateway
    서로 다른 프로토콜을 연결해주는 장치가 잘못된 프로토콜을 연결하거나, 어느쪽 프로토콜에 문제가 있어 통신이 제대로 되지 않을 경우 서버가 폭주하는 등의 이유로 과부하되었을 경우, 사용자 브라우저에 이상이 있거나 잘못된 네트워크 연결을 했을 경우 발생

  • 503 Service Unavailable
    서버가 과부하 또는 유지 보수로 내려간 경우

  • 504 Gateway Timeout
    서버로 요청을 보냈지만 응답지연으로 처리가 불가능한 경우


출처

https://developer.mozilla.org/ko/docs/Web/HTTP/Status

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

profile
Backend Developer

0개의 댓글