🌐 HTTP란 무엇인가?

2025. 9. 16. 21:42·네트워크

1. HTTP의 정의

HTTP (HyperText Transfer Protocol) 은 클라이언트(브라우저, 모바일 앱 등) 와 서버(웹 서버, API 서버 등) 간에 데이터를 주고받기 위한 애플리케이션 계층 프로토콜입니다.
웹 페이지 로드, API 호출, 이미지·동영상 다운로드 등 거의 모든 웹 통신에서 사용됩니다.

주요 특징

  • 무상태성 (Stateless): 요청 간 상태를 저장하지 않음. → 각 요청은 독립적으로 처리.
  • 확장성 (Extensibility): REST API, GraphQL 등 다양한 아키텍처의 기반으로 사용.
  • 표준화 (Standardization): 전 세계적으로 통용되는 표준 프로토콜.

2. HTTP 요청 구조

HTTP 요청은 다음과 같은 요소로 구성됩니다.

 
GET /users?page=1 HTTP/1.1 Host: example.com User-Agent: Chrome/140.0 Content-Type: application/json { "name": "Alice" }
  • 메서드(Method): 요청의 의도 (예: 조회, 생성, 수정, 삭제).
  • URL (Request Target): 요청 대상 리소스의 위치.
  • 헤더(Header): 인증 정보, 데이터 형식, 캐싱 정책 등 부가 메타데이터.
  • 본문(Body): 요청 시 전송되는 실제 데이터 (주로 POST/PUT/PATCH에서 사용).

3. HTTP 주요 메서드

1) GET

  • 리소스 조회 요청
  • URL에 Query String(?key=value)으로 데이터 전달
  • 본문(Body) 미사용
 
GET /users/1 HTTP/1.1

2) POST

  • 새로운 리소스 생성
  • 요청 본문에 JSON, XML, Form 데이터 포함
 
POST /users HTTP/1.1 Content-Type: application/json { "name": "Alice", "email": "alice@example.com" }

3) PUT

  • 리소스 전체 수정 (덮어쓰기)
  • 존재하지 않으면 새로 생성하기도 함
 
PUT /users/1 HTTP/1.1 Content-Type: application/json { "name": "Alice Kim", "email": "alice@example.com" }

4) PATCH

  • 리소스 부분 수정
  • 필요한 필드만 변경
 
PATCH /users/1 HTTP/1.1 Content-Type: application/json { "email": "newalice@example.com" }

5) DELETE

  • 리소스 삭제
 
DELETE /users/1 HTTP/1.1

6) 기타 메서드

  • HEAD: GET과 동일하지만 응답 본문 제외. 리소스 존재 여부/메타데이터 확인 시 사용.
  • OPTIONS: 서버가 지원하는 메서드 조회 (CORS Preflight 요청에 사용).
  • TRACE: 요청을 그대로 반환 (디버깅 목적, 보안상 거의 사용하지 않음).

4. 상태 코드 (Status Code)

HTTP 응답은 항상 상태 코드를 포함합니다.
이는 클라이언트가 요청 처리 결과를 명확히 해석할 수 있도록 합니다.

범위의미
2xx (성공) 요청이 정상 처리됨
3xx (리다이렉션) 리소스 위치 변경 또는 다른 URI로 이동 필요
4xx (클라이언트 오류) 잘못된 요청 (예: 파라미터 오류, 인증 실패)
5xx (서버 오류) 서버 내부 처리 실패

주요 상태 코드

  • 200 OK → 성공
  • 201 Created → 리소스 생성 성공
  • 400 Bad Request → 잘못된 요청
  • 401 Unauthorized → 인증 실패
  • 404 Not Found → 리소스 없음
  • 500 Internal Server Error → 서버 내부 오류

5. 정리

  • HTTP는 웹 통신의 핵심 프로토콜로, 요청/응답 구조 기반으로 동작한다.
  • 메서드(Method) 는 요청의 의도를 표현:
    • GET: 조회
    • POST: 생성
    • PUT: 전체 수정
    • PATCH: 부분 수정
    • DELETE: 삭제
    • HEAD, OPTIONS 등은 특수 목적
  • 응답은 반드시 상태 코드(Status Code) 와 함께 전달되며, REST API 설계의 핵심 기반을 이룬다.
저작자표시 비영리 (새창열림)

'네트워크' 카테고리의 다른 글

사용자가 웹사이트에 처음 접근했을 때 벌어지는 일  (0) 2025.09.24
'네트워크' 카테고리의 다른 글
  • 사용자가 웹사이트에 처음 접근했을 때 벌어지는 일
깊은바다속꼬북이
깊은바다속꼬북이
  • 깊은바다속꼬북이
    CodeBlossom
    깊은바다속꼬북이
  • 전체
    오늘
    어제
    • 분류 전체보기 (53) N
      • 라이징 캠프 (4)
      • 객채지향 개발론 (3)
      • 스프링 (10) N
      • 네트워크 (2)
      • 자바 (16)
      • 자료구조 (3)
      • 운영체제 (0)
      • 데이터베이스 (4)
      • 디자인패턴 (7)
      • JSP (1)
      • 개발 알쓸신잡 (2)
      • 일반 교양 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    어댑터 패턴(Adapter Pattern)
    GC
    java data area
    JUnnit5
    MySQL 파서
    자료구조
    객체지향
    템플릿 메서드 패턴(Template Method Pattern)
    jit-compiler
    백엔드
    트랜잭션 전파레벨
    spring
    디자인 패턴
    프로그램밍 언어
    junnit5프레임워크
    한국어 검색
    MySQL 옵티마이저
    jvm 클래스 로더
    JVM
    자바 Socket 클래스
    개발자 철학
    개발 교훈
    java
    전략 패턴(Strategy Pattern)
    스프링
    싱글턴 패턴(Singleton Pattern)
    개발 철학
    mockito라이브러리
    java 버전별 특징
    디자인패턴
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
깊은바다속꼬북이
🌐 HTTP란 무엇인가?
상단으로

티스토리툴바