HTTP 프로토콜

Fox·2023년 12월 22일
0
post-thumbnail

HTTP 프로토콜이란?

정의

  • HTTP는 "하이퍼텍스트 전송 프로토콜"(Hypertext Transfer Protocol)의 약자이다.
  • 프로토콜은 통신 규약이라는 뜻으로 데이터를 주고받는 방식에 대한 규칙을 의미한다.
  • 인터넷에서 데이터를 주고받기 위한 프로토콜 중 하나로, 서버-클라이언트 구조에서 사용되는 프로토콜이기 때문에 요청(Request)과 응답(Response)을 주고받는 메커니즘을 기본으로 한다.


특징

Stateless(무상태) 프로토콜

  • 각 요청은 독립적으로 처리되며, 이전 요청과의 관계를 유지하지 않는다.
  • HTTP는 상태 정보를 유지하지 않기 때문에 상태 정보 유지가 필요한 작업에서 쿠키(Cookie)나 세션(Session)을 이용한다.

비연결성(Connectionless)

  • 브라우저가 서버에 요청하는 순간 잠깐 서버와 연결됐다가 서버로부터 응답이 전송된 후 곧바로 연결이 끊기는 것을 의미한다.
  • 다수의 브라우저가 서버와 통신하기 때문에 지속적으로 연결상태를 유지한다면 다른 브라우저와 연결하는데 문제가 생길 수 있다.

평문 통신

  • HTTP는 보안이 필요하지 않은 경우 기본적으로 암호화되지 않은 평문으로 통신한다.
  • HTTPS를 사용하면 암호화 통신도 가능하다.

요청-응답 구조

  • 클라이언트가 요청(Request)을 하면 서버가 해당 요청에 대한 응답(Response)을 반환하는 구조이다.

TCP/IP통신 위에서 동작

  • TCP/IP 통신 위에서 동작하며 80번 포트를 사용한다.


HTTP Method

HTTP는 Method를 사용하여 서버에게 요청의 목적과 의도를 전달한다.
아래 정리된 표는 Method들의 역할을 정리한 것이다.

Method역할
GET서버에게 데이터를 달라는 요청(열람)할 때 사용한다.
HEADGET과 같지만 서버가 응답할 때 Body 없이 Header만 리턴한다.
POST서버에게 데이터를 전송하는 요청할 때 사용한다.
PUT서버에서 요청 URI의 데이터를 수정하거나 새로 추가하도록 요청할 때 사용한다.
PATCH서버의 데이터를 일부 수정할 때 사용한다.
DELETE서버에서 요청 URI​​의 데이터를 삭제하도록 요청할 때 사용한다.
TRACE(디버깅용) 클라이언트로부터 수신한 요청을 응답에 포함시켜서 전달한다.
OPTIONS서버에서 특정 데이터가 어떤 Method를 지원하는지 알아볼 때 사용한다.

PUT과 PATCH 둘 다 데이터를 수정할 때 사용하는 메서드이다.
PATCH는 일부 필드만 채워서 보내도 괜찮지만, PUT은 요청 시에 수정을 원하는 데이터에 대한 필드를 모두 채워서 보내야 한다.


HTTP 상태 코드

HTTP 상태 코드는 웹 서버와 클라이언트 간의 통신에서 발생하는 상황을 알려주는 코드이다.
3자리 숫자로 이루어져 있으며, 가장 일반적인 상태 코드는 다음과 같다.

1xx (정보)

  • 100 (Continue): 클라이언트의 요청이 받아들여졌으며, 추가로 요청을 보내야 함을 나타낸다.
  • 101 (Switching Protocols): 클라이언트의 요청에 따라 프로토콜이 변경되었음을 나타낸다.

2xx (성공) - 요청이 성공적으로 처리되었음

  • 200 (OK): 요청이 성공적으로 처리되었음을 나타낸다.
  • 201 (Created): 요청이 성공적으로 처리되어 새로운 리소스가 생성되었음을 나타낸다.
  • 204 (No Content): 요청은 성공적으로 처리되었지만, 응답으로 내용이 없음을 나타낸다.

3xx (리다이렉션) - 요청한 리소스가 다른 위치에 있거나 재요청이 필요함

  • 301 (Moved Permanently): 요청한 리소스가 새로운 URL로 영구적으로 이동되었음을 나타낸다.
  • 302 (Found): 요청한 리소스가 일시적으로 다른 URL로 이동되었음을 나타낸다.
  • 304 (Not Modified): 클라이언트의 캐시가 최신 상태이므로, 서버에서 리소스를 수정하지 않았음을 나타낸다.

4xx (클라이언트 오류) -클라이언트의 요청에 오류가 있음

  • 400 (Bad Request): 서버가 요청을 이해할 수 없거나, 잘못된 요청을 받았음을 나타낸다.
  • 403 (Forbidden): 요청한 리소스에 대한 접근이 거부되었음을 나타낸다.
  • 404 (Not Found): 요청한 리소스를 찾을 수 없음을 나타낸다.

5xx (서버 오류) -서버가 요청을 처리하는 동안 오류가 발생했음

  • 500 (Internal Server Error): 서버 내부에서 오류가 발생하여 요청을 처리할 수 없음을 나타낸다.

  • 502 (Bad Gateway): 게이트웨이나 프록시 서버에서 잘못된 응답을 받았음을 나타낸다.

  • 503 (Service Unavailable): 서버가 현재 사용 불가능한 상태임을 나타낸다.












    참고 : https://tibetsandfox.tistory.com/18

profile
주니어개발자 Fox 입니다 🦊

0개의 댓글