Post

Django: HTTP와 URL의 개념

HTTP와 URL의 개념. HTTP의 기본적인 동작 원리와 특성, 주요 요청 메소드와 상태 코드, 그리고 URL의 구조와 구성 요소를 다룹니다.

Django: HTTP와 URL의 개념

01. HTTP

HTTP의 개념

HTTP는 HyperText Transfer Protocol의 약자로, 웹에서 이루어지는 데이터 교환의 기본적인 약속(프로토콜)입니다. 이 프로토콜은 클라이언트와 서버 간의 요청(Request)과 응답(Response)을 기반으로 동작합니다.

  • 요청(Request): 클라이언트에서 서버로 전송되는 메시지.
  • 응답(Response): 서버에서 클라이언트로 전송되는 메시지.

HTTP의 특성

  1. Stateless (무상태):
    • 서버는 클라이언트의 상태를 보존하지 않습니다.
    • 각 요청과 응답은 독립적으로 처리됩니다.
  2. Connectless (비연결성):
    • 요청을 받고 응답을 전송한 후 연결을 종료합니다.
    • 서버 자원을 효율적으로 사용 가능.
    • 이후 HTTP/1.1 등장으로 연결 유지(Persistent Connection)가 도입되었습니다.

HTTP Message

HTTP 메시지는 요청(Request)과 응답(Response) 두 가지 형태로 나뉩니다. 구조는 유사하며, 다음과 같은 요소로 구성됩니다:

  1. Start Line: 요청 메소드와 URL, 응답 상태 코드 등이 포함.
  2. HTTP Header: 요청 또는 응답에 대한 메타 정보를 포함.
  3. Blank Line: 헤더와 본문을 구분하는 빈 줄.
  4. HTTP Body: 요청 데이터 또는 응답 문서를 포함.

예시: HTTP 요청과 응답의 구조

요청(Request):

  • Start Line: Method (GET, POST 등), Target, HTTP Version
  • Headers: 요청에 필요한 메타 정보
  • Body: 요청과 관련된 데이터

응답(Response):

  • Start Line: HTTP Version, Status Code, Status Message
  • Headers: 응답에 대한 메타 정보
  • Body: 요청 처리 결과 데이터

HTTP Request Methods

HTTP 요청 메소드는 클라이언트가 서버에 어떤 동작을 요청하는지를 나타냅니다. 주요 메소드는 다음과 같습니다:

  • GET: 데이터를 조회.
  • POST: 데이터를 서버에 전송.
  • PUT: 데이터를 생성하거나 수정.
  • DELETE: 데이터를 삭제.

MDN 공식 문서에서 자세히 보기

HTTP Status Code

HTTP 상태 코드는 요청의 성공 여부를 나타내며, 다음과 같은 그룹으로 나뉩니다:

  1. 1XX: Informational Response (정보 제공)
  2. 2XX: Successful Response (요청 성공)
    • 200 OK: 요청 성공.
    • 201 Created: 새로운 데이터 생성 성공.
    • 202 Accepted: 요청은 성공했으나 처리가 완료되지 않음.
    • 204 No Content: 성공적으로 처리되었으나 응답 데이터 없음.
  3. 3XX: Redirection Message (리소스 이동)
  4. 4XX: Client Error Response (클라이언트 요청 오류)
    • 400 Bad Request: 요청 잘못됨.
    • 401 Unauthorized: 인증 필요.
    • 403 Forbidden: 권한 없음.
    • 404 Not Found: 요청한 자원 없음.
  5. 5XX: Server Error Response (서버 오류)
    • 500 Internal Server Error: 서버에서 요청 처리 실패.
    • 503 Service Unavailable: 서버가 요청을 처리할 준비가 되지 않음.

MDN 공식 문서에서 자세히 보기

02. URL

URL의 개념

웹에서 우리가 요청하는 대상은 자원(Resource)입니다. 문서, 사진, 영상 등 다양한 자원을 식별하기 위해 URI(Uniform Resource Identifier)가 사용됩니다.

URI (Uniform Resource Identifier)

  • 인터넷 상의 자원을 식별할 수 있는 유일한 문자열.
  • 하위 개념으로 URNURL이 있음.
  • 보통 URI와 URL을 같은 의미로 사용.

URL (Uniform Resource Locator)

  • 자원의 위치(Location)를 나타내는 문자열.
  • 흔히 말하는 웹 주소나 링크를 의미.

URN (Uniform Resource Name)

  • 위치에 독립적인 자원을 위한 유일한 이름.
  • 예: ISBN (국제표준도서번호).

URI의 구조

URI는 다음과 같은 구조를 가집니다:

1
https://www.aidenlim.dev:80/path/to/resource/?key=value#docs
  1. Scheme (Protocol):
    • https://
    • 브라우저가 사용하는 프로토콜 (예: http, https, ftp 등).
  2. Host (Domain name):
    • www.aidenlim.dev
    • 요청을 처리하는 웹 서버의 주소.
  3. Port:
    • :80
    • 리소스에 접근하기 위한 문.
    • 기본적으로 HTTP는 80, HTTPS는 443 포트를 사용.
  4. Path:
    • /path/to/resource/
    • 서버에서 자원이 위치한 경로.
  5. Query (Identifier):
    • ?key=value
    • 추가적인 변수로 구성된 데이터.
  6. Fragment (Anchor):
    • #docs
    • 자원 내 특정 위치를 나타냄 (예: HTML 문서 내 특정 섹션).
This post is licensed under CC BY 4.0 by the author.