본문 바로가기
Study

[Protocol] HTTP 정리

by mmm- 2023. 10. 16.

HTTP

: HyperText Transfer Protocol의 약자로, 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜

  • TCP/IP를 이용하는 응용 프로토콜

HTTP의 특징

  • client-server 구조
  • 무상태 프로토콜(Stateless)
  • 연결 상태를 유지하지 않는 비연결성(Connectionless) 프로토콜
  • HTTP 메세지
  • 단순함. 확장 가능

무상태 프로토콜(Stateless)

: 통신에 필요한 모든 상태 정보들을 서버에서 보존하지 않고 클라이언트에서 가지고 있다가 서버와 통신할 때 데이터를 실어보내는 것

 

[Web] Stateful / Stateless 차이

상태 프로토콜 (Stateful) : client-server 관계에서 서버가 클라이언트의 상태를 보존함을 의미 클라이언트의 정보를 기억한다 ▶ 어딘가 정보를 저장하고 통신할 때마다 읽는다는 뜻 보통 브라우저

mstudy-recode.tistory.com


비연결성(Connectionless)

: 서버가 요청에 대한 응답을 마치면 연결을 끊어버리는 성질

  • 요청을 주고받을 때만 연결을 유지하고 응답을 주고나면 TCP/IP 연결을 끊어 최소한의 자원으로 서버 유지

 

장점

  • 초 단위 이하의 빠른 속도로 응답
  • 트래픽이 많지 않고 빠른 응답을 제공할 수 있는 경우, 효율적으로 작동
  • 리소스 낭비를 줄이고 더 많은 연결 가능

단점

  • 트래픽이 많고 큰 규모의 서비스를 운영할 경우, 한계가 있음
  • 연결/해제에 대한 오버헤드 발생
    (서버가 클라이언트를 기억하고 있지 않아 동일한 클라이언트의 모든 요청에 대해 매번 새로운 연결/해제 과정을 거쳐야 하기 때문)

HTTP 메세지

: 서버와 클라이언트 간 데이터가 교환되는 방식

 

[HTTP] HTTP message

HTTP message : 서버와 클라이언트 간 데이터가 교환되는 방식 HTTP message 유형으로는 요청(Request)과 응답(Response)가 있음. HTTP message 구성 요청 Method GET, POST, DELETE, PUT 등과 같은 HTTP 메소드 Request-URI 서

mstudy-recode.tistory.com


HTTP의 메서드

: 클라이언트와 서버 사이에 이루어지는 request와 response 데이터를 전송하는 방식

 

주요 메소드

GET : 리소스 조회 (데이터 가져올 때)

POST : 요청 데이터 처리 (데이터 생성(등록))
PUT : 리소스 생성대체

PATCH : 리소스 부분적 변경

DELETE : 리소스 삭제

 

기타메소드

HEAD : 서버가 헤더 정보만 보내줌
            (업데이트 되어있지 않을 경우, 수정된 시간과 수정 여부 등만 판단하면 되기 때문에 헤더정보 필요)

OPTIONS : 요청한 리소스에 대해 양방향 연결을 시작하는 메서드. 터널을 열기 위해 사용
                    (웹 서비스에서 현재 지원하고 있는 operation이 무엇인지 조회하는 것)
CONNECT : 목표 리소스와 통신 옵션을 설명하기 위해 사용됨 (주로 CORS에서 사용) 

TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행


GET

  • 쿼리스트링을 통해 데이터 전달
  • 메세지 바디를 통한 데이터 전달도 가능하지만, 서버에서 따로 구성해야해 지원하지 않는 곳이 많아 권장 X
  • POST로도 조회 가능하지만, 캐싱이 가능한 GET을 사용하는 것이 유리

 

POST

  • 메시지 바디를 통해 서버로 요청 데이터를 전달하면 서버는 요청 데이터를 처리하여 업데이트
  • 전달된 데이터로 주로 신규 리소스 등록, 프로세스 처리에 사용
  • 데이터를 GET하는데 있어 JSON으로 조회 데이터를 넘겨야하는 애매한 경우 사용

 

PUT

  • 요청 메세지에 리소스가 있으면 덮어쓰고 없으면 새로 생성
  • 데이터를 대체해야하기 때문에 클라이언트가 리소스의 구체적인 전체 경로를 지정해 보내줘야 함

 

PATCH

  • PATCH를 지원하지 않는 서버에서는 대신 POST 사용 가능

 

DELETE

  • 상태코드는 대부분 200 사용하고 상황에 따라 204 사용

HTTP의 상태 코드

  • 1XX (조건부 응답)
    : 요청을 받았으며 작업을 계속함.
  • 2XX (성공)
    : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 의미
  • 3XX (리다이렉션 완료)
    : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 함.
  • 4XX (요청 오류)
    : 클라이언트에 오류가 있음을 나타냄.
  • 5XX (서버 오류)
    : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타냄

HTTP의 요청/응답 라이프사이클

  1. 사용자가 웹 브라우저의 주소창에 웹사이트 URL 입력하여 요청
  2. 웹 브라우저가 DNS(Domain Name Service) 시스템으로 URL을 보내면 DNS는 URL에 맞는 IP 주소를 찾아 웹 브라우저에게 반환해줌
  3. 웹 브라우저가 해당 IP로 요청을 보내면 NIC(Network Interface Card = 랜카드)를 거쳐 라우딩 됨.
    즉, 컴퓨터-공유기-ISP를 거쳐 인터넷에 연결됨
  4. 사용자의 요청은 TCP/IP와 웹 페이지에 접속하기 위한 규약인 HTTP에 의해 목적지에 도착
  5. 웹 서버는 받은 HTTP 요청을 분석하여 해당 웹 페이지를 사용자에게 응답


참고

 

'Study' 카테고리의 다른 글

[HTTP] HTTP message  (0) 2023.10.13
[Web] Stateful / Stateless 차이  (2) 2023.10.11
[JSON] JSON 정리  (1) 2023.10.11
[Firebase] Realtime Database & Firestore  (0) 2023.10.10