네트워크 | HTTP Request와 Response

Faithful Dev·2025년 1월 29일

컴퓨터 공학

목록 보기
73/81

HTTP는 클라이언트(웹 브라우저 등)가 서버에 요청(Request)을 보내고, 서버가 응답(Response)을 반환하는 방식으로 동작하는 프로토콜이다.


HTTP Request(요청)

클라이언트가 서버에 특정 리소스를 요청하는 메시지이다.

HTTP Request의 구성 요소

  1. 요청 라인(Request Line)
  2. 헤더(Header)
  3. 본문(Body, 선택적)

요청 라인(Request Line)

요청 라인은 HTTP 요청의 가장 첫 번째 줄로, 다음 3가지 요소로 구성된다.

<HTTP 메서드> <요청 대상> <HTTP 버전>
  • HTTP 메서드(Method): 클라이언트가 수행하려는 동작을 지정.
    • GET → 리소스를 가져옴.
    • POST → 데이터를 서버에 전송.
    • PUT → 기존 리소스를 수정하거나 생성.
    • DELETE → 리소스를 삭제.
    • PATCH → 리소스의 일부만 수정.
  • 요청 대상(Request Target): 서버에서 요청한 리소스의 경로.
  • HTTP 버전(HTTP Version): 사용하는 HTTP 프로토콜 버전(예: HTTP/1.1, HTTP/2).
예제
GET /index.html HTTP/1.1

요청 헤더(Request Header)

요청에 대한 추가 정보를 전달하는 key-value 형태의 데이터.

  • Host: 요청하는 서버의 도메인 (HTTP/1.1에서는 필수).
  • User-Agent: 클라이언트 정보(브라우저, 운영체제 등).
  • Accept: 서버가 응답할 때 어떤 콘텐츠 유형을 보낼지 지정.
  • Authorisation: 인증 토큰(JWT, Basic Auth 등).
  • Cookie: 클라이언트가 저장한 쿠키 데이터.

예제

Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

요청 본문(Request Body, 선택적)

  • POST, PUT, PATCH 요청에서 데이터를 포함할 때 사용됨.
예제(JSON 데이터 전송)
POST /api/login HTTP/1.1
Host: www.example.com
Content-Type: application/json
Content-Length: 34

{
	"username": "john",
    "password": "1234"
}

HTTP Response(응답)

서버가 클라이언트의 요청을 처리한 후 반환하는 메시지이다.

HTTP Response의 구성 요소

  1. 상태 라인(Status Line)
  2. 헤더(Header)
  3. 본문(Body, 선택적)

상태 라인(Status Line)

응답의 첫 번째 줄로, 다음과 같은 형식이다.

<HTTP 버전> <상태 코드> <상태 메시지>
  • HTTP 버전: 서버가 사용하는 HTTP 프로토콜 버전.
  • 상태 코드(Status Code): 요청의 성공 여부를 나타내는 3자리 숫자.
  • 상태 메시지(Status Message): 상태 코드에 대한 설명.
예제
HTTP/1.1 200 OK

주요 상태 코드

코드의미설명
1xx정보요청을 처리 중
2xx성공요청이 정상 처리됨
3xx리디렉션요청한 리소스가 이동됨
4xx클라이언트 오류요청이 잘못됨
5xx서버 오류서버에서 요청을 처리하지 못함
  • 200 OK → 요청 성공
  • 201 Created → 요청에 의해 리소스 생성됨
  • 301 Moved Permanently → 리소스가 영구적으로 이동됨
  • 400 Bad Request → 잘못된 요청
  • 401 Unauthorised → 인증 필요
  • 403 Forbidden → 접근 금지
  • 404 Not Found → 요청한 리소스를 찾을 수 없음
  • 500 Internal Server Error → 서버 내부 오류

응답 헤더(Response Header)

서버가 응답에 대한 추가 정보를 제공하는 key-value 데이터.

  • Content-Type: 응답 본문의 데이터 형식(예: text/html, application/json).
  • Content-Length: 응답 본문의 크기(바이트 단위).
  • Set-Cookie: 클라이언트에게 쿠키를 설정하도록 지시.
  • Cache-Control: 캐싱 동작을 제어.
예제
Content-Type: text/html
Content-Length: 342
Set-Cookie: sessionId=xyz123; HttpOnly
Cache-Control: no-cache

응답 본문(Response Body, 선택적)

  • HTML, JSON, 이미지 등 실제 응답 데이터를 포함.
예제(HTML 응답)
HTTP/1.1 200 OK
Content-Type: text/html

<html>
  <body>
    <h1>Hello, World!</h1>
  </body>
</html>
예제(JSON 응답)
HTTP/1.1 200 OK
Content-Type: application/json

{
  "message": "Success",
  "data": {"id": 1, "name": "Alice"}
}

HTTP 요청 & 응답 예제

클라이언트 요청

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

서버 응답

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

<html>
  <body>
    <h1>Welcome to Example.com!</h1>
  </body>
</html>

정리

  • HTTP Request: 클라이언트가 서버에 데이터를 요청하는 메시지.
  • HTTP Response: 서버가 클라이언트 요청에 응답하는 메시지.
  • 요청과 응답은 헤더 + 본문으로 구성되며, 요청 메서드와 상태 코드가 중요한 역할을 함.
  • HTTP는 무상태 프로토콜이므로, 상태 유지를 위해 쿠키, 세션, JWT 등이 사용됨.
profile
Turning Vision into Reality.

0개의 댓글