[CS] HTTP (요청/응답, 헤더, 메소드, 상태코드, HEAD 메소드)

이번 포스팅에서는 HTTP와 관련된 내용을 알아보겠다.

1. HTTP 요청/응답 구조

HTTP는 클라이언트(보통 브라우저)서버에 요청을 보내고, 서버가 응답하는 Request/Response 구조를 따른다.

요청(Request) 구성

GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html
  • 요청 라인: GET /index.html HTTP/1.1
  • 요청 헤더: 부가 정보 (예: Host, User-Agent, Accept)
  • 본문(Body): POST, PUT 등일 때 데이터가 포함됨

응답(Response) 구성

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024

<html>...</html>
  • 상태 라인: HTTP/1.1 200 OK
  • 응답 헤더: 부가 정보 (예: Content-Type, Content-Length)
  • 본문(Body): 실제 콘텐츠 데이터

2. HTTP 헤더(Header)

헤더는 요청/응답 메시지에 부가 정보를 담는 필드이다.
종류는 다음과 같다:

종류 예시 설명
일반 헤더 Date, Connection 요청과 응답 공통
요청 헤더 Host, User-Agent, Accept 요청 보낼 때 브라우저 정보 등
응답 헤더 Server, Set-Cookie 서버의 정보 및 추가 명령
엔티티 헤더 Content-Type, Content-Length 본문에 대한 정보

3. HTTP 메소드(Method)

클라이언트가 서버에 어떤 작업을 요청하는지 나타냄:

메소드 설명
GET 자원을 조회 (본문 없음)
POST 자원을 생성, 서버에 데이터 전송
PUT 자원을 대체 (업데이트)
DELETE 자원 삭제
HEAD GET과 유사하지만 본문 없이 헤더만 요청
OPTIONS 지원 메소드 확인
PATCH 자원의 일부를 수정

4. HTTP 상태 코드(Status Code)

서버가 클라이언트의 요청에 대해 응답한 처리 결과를 숫자로 표시한다.

범위 의미 예시
1xx 정보 (Processing 중) 100 Continue
2xx 성공 200 OK, 201 Created
3xx 리다이렉션 필요 301 Moved Permanently, 302 Found
4xx 클라이언트 오류 400 Bad Request, 404 Not Found
5xx 서버 오류 500 Internal Server Error, 503 Service Unavailable

5. HEAD 메소드

  • GET 요청과 같은 응답 헤더를 받되, 본문(Body)은 포함하지 않음
  • 용도:
    • 파일 크기(Content-Length) 확인
    • 링크 유효성 검사
    • 서버 상태 점검 등
HEAD /image.png HTTP/1.1
Host: example.com

응답:

HTTP/1.1 200 OK
Content-Type: image/png
Content-Length: 20480