HTTP

0

network

목록 보기
31/39

HTTP - 웹의 핵심 프로토콜


1. HTTP란?

  • 정의: 웹의 기반이 되는 가장 대중적이고 중요한 응용 계층 프로토콜.
  • 역할: 클라이언트와 서버 간의 데이터 전송을 담당.
  • 특징:
    1. 요청-응답 기반 프로토콜: 클라이언트와 서버 간의 요청(Request)과 응답(Response)을 주고받음.
    2. 미디어 독립성: 자원의 형식(HTML, JSON, 이미지 등)에 상관없이 전송 가능.
    3. 스테이트리스(State-less): 서버는 클라이언트의 상태 정보를 유지하지 않음.
    4. 지속 연결 지원(Persistent Connection): 하나의 연결에서 여러 요청과 응답 처리 가능.

2. HTTP의 네 가지 특성

1) 요청-응답 기반 프로토콜

  • 구조: 클라이언트가 서버에 요청을 보내면, 서버는 이에 대한 응답을 반환.
  • 요청-응답 확인 방법:
    • 웹브라우저 개발자 도구(F12) → 네트워크 탭 → 요청 및 응답 확인.
  • HTTP 메시지 구조:
    • 요청 메시지: 클라이언트 → 서버.
    • 응답 메시지: 서버 → 클라이언트.

2) 미디어 독립적 프로토콜

  • 특징: HTTP는 전송하는 자원의 형식에 제한을 두지 않음.
    • RFC 정의: "HTTP는 자원의 특성을 제한하지 않으며, 자원과 상호작용할 수 있는 인터페이스를 정의함."
  • 미디어 타입(Media Type):
    • 웹상의 파일 확장자와 비슷한 개념.
    • 형식: 타입/서브타입 (예: text/html, image/png).
    • 주요 미디어 타입:
      • 텍스트: text/plain, text/html, text/css.
      • 이미지: image/png, image/jpeg.
      • 비디오: video/mp4.
      • 오디오: audio/mpeg.
      • 어플리케이션: application/json, application/pdf.

3) 상태를 유지하지 않는 프로토콜 (Stateless Protocol)

  • 정의: HTTP는 클라이언트와 서버 간의 상태를 유지하지 않음.
    • 모든 요청은 독립적으로 처리됨.
  • 장점:
    • 확장성: 서버가 상태 정보를 유지하지 않기 때문에 여러 서버를 쉽게 확장 가능.
    • 견고성: 특정 서버 장애 시, 다른 서버로 요청을 분산 가능.
  • 단점 보완: 상태 유지를 위해 쿠키, 세션, 웹 스토리지 등 사용.

4) 지속 연결 지원 (Persistent Connection)

  • 정의: HTTP/1.1 이상부터 하나의 연결에서 여러 요청과 응답 처리 가능.
  • 비지속 연결과 비교:
    • 비지속 연결: 요청-응답마다 TCP 연결을 열고 닫음.
    • 지속 연결: 하나의 연결로 여러 요청-응답을 처리 → 네트워크 비용 절감.

3. HTTP 메시지 구조

  • 구성 요소:
    1. 시작 라인(Start Line): 요청/응답 메시지의 첫 번째 줄.
      • 요청 메시지: 메서드(Method), 요청 대상(Target), HTTP 버전.
      • 응답 메시지: HTTP 버전, 상태 코드(Status Code), 이유 구문(Reason Phrase).
    2. 헤더(Header Line): 요청/응답에 필요한 부가 정보.
      • 예: Host, User-Agent, Content-Type.
    3. 본문(Body): 전송하려는 실제 데이터(선택적).

4. HTTP 메서드

  • 정의: 클라이언트가 서버에 요청하는 작업의 종류를 지정.
  • 주요 메서드:
    • GET: 자원 조회.
    • HEAD: 헤더 정보만 조회.
    • POST: 자원 생성 또는 작업 요청.
    • PUT: 자원의 전체 덮어쓰기.
    • PATCH: 자원의 부분 수정.
    • DELETE: 자원 삭제.
    • OPTIONS: 지원하는 메서드 확인.
    • CONNECT: 터널링 요청.
    • TRACE: 요청-응답 경로 추적.

5. HTTP 상태 코드

  • 정의: 요청 결과를 나타내는 3자리 숫자.
  • 분류:
    1. 100번대: 정보 제공.
    2. 200번대: 성공 (예: 200 OK, 201 Created).
    3. 300번대: 리다이렉션 (예: 301 Moved Permanently, 302 Found).
    4. 400번대: 클라이언트 오류 (예: 400 Bad Request, 404 Not Found).
    5. 500번대: 서버 오류 (예: 500 Internal Server Error, 503 Service Unavailable).

6. 학습 포인트

  • 요약:

    1. HTTP는 요청-응답 기반의 스테이트리스 프로토콜.
    2. 미디어 독립성과 지속 연결을 통해 효율적 데이터 전송을 지원.
    3. 요청 메시지의 메서드와 상태 코드의 의미를 명확히 이해.
    4. HTTP 메시지 구조를 기반으로 하는 다양한 기술 이해.
  • 추가 학습 추천:

    • HTTP/2, HTTP/3의 특징.
    • 쿠키, 세션, 웹 스토리지 개념.
    • HTTP 상태 코드별 동작 원리.

HTTP의 기본을 제대로 이해하면, 웹 개발 및 네트워크 전반에 대해 더 깊이 있는 이해가 가능합니다. 추가로 궁금한 점이 있다면 언제든 질문해주세요! 😊

0개의 댓글