개발자를 위한 HTTP 웹 기본 지식

2025. 2. 22. 06:26코딩 도구/기술 & 정보 글 (Tech & Knowledge)

반응형

개발자를 위한 HTTP 웹 기본 지식

 

김영한님의 "모든 개발자를 위한 HTTP 웹 기본 지식"을 수강하고 정리했습니다. 

 

인터넷 네트워크

1. 클라이언트-서버 모델

웹은 기본적으로 클라이언트-서버 모델을 기반으로 동작한다. 클라이언트(웹 브라우저, 모바일 앱)는 HTTP 요청을 보내고, 서버는 응답을 돌려준다. 이 과정에서 인터넷 네트워크가 핵심 역할을 한다. 서버는 사용자의 요청을 받아 데이터를 제공하는 역할을 하며, 클라이언트는 이 데이터를 처리하여 사용자에게 표시한다.

2. 인터넷 프로토콜 (IP, TCP, UDP)

  • IP(Internet Protocol): 데이터를 목적지까지 전달하는 역할을 한다. 모든 장치는 고유한 IP 주소를 가지며, 이를 통해 통신한다.
  • TCP(Transmission Control Protocol): 신뢰성 있는 데이터 전송을 보장한다. 패킷 손실 시 재전송하며, 데이터의 순서를 보장하여 안정적인 통신이 가능하다.
  • UDP(User Datagram Protocol): TCP보다 빠르지만 신뢰성이 낮다. 연결을 유지하지 않기 때문에 속도가 빠르며, 주로 스트리밍 서비스나 온라인 게임에서 사용된다.

3. DNS와 포트

  • DNS(Domain Name System): 사람이 이해할 수 있는 도메인 네임을 IP 주소로 변환한다. 예를 들어, www.google.com을 입력하면 DNS가 이를 실제 IP 주소로 변환하여 연결을 수행한다.
  • PORT: 하나의 서버에서 여러 개의 서비스를 운영할 수 있도록 구분하는 역할을 한다. (예: HTTP는 80번, HTTPS는 443번, FTP는 21번)

URI와 웹 브라우저 요청 흐름

1. URI(Uniform Resource Identifier)

웹에서 리소스를 식별하는 방법은 URI를 통해 이루어진다. URI는 크게 두 가지로 나뉜다.

  • URL (Uniform Resource Locator): 리소스의 위치를 의미한다. (예: https://example.com/index.html)
  • URN (Uniform Resource Name): 변하지 않는 리소스의 고유 식별자이다.

2. 웹 브라우저의 요청 흐름

  1. DNS 조회: 브라우저가 입력된 도메인의 IP 주소를 찾는다.
  2. TCP 연결: 클라이언트와 서버 간 TCP 3-way handshake가 이루어진다.
  3. HTTP 요청 전송: 브라우저가 서버에 HTTP 요청을 보낸다.
  4. 서버의 HTTP 응답: 서버가 클라이언트에 응답을 보낸다.
  5. 브라우저 렌더링: 브라우저가 HTML, CSS, JavaScript를 해석하여 화면을 구성한다.

HTTP 기본 개념

1. HTTP의 특징

  • 무상태성(Stateless): HTTP는 기본적으로 클라이언트의 요청 상태를 기억하지 않는다. 따라서 요청마다 필요한 정보를 포함해야 한다.
  • 비연결성(Connectionless): 요청과 응답 후 연결을 끊는다. 이를 통해 서버의 자원을 효율적으로 관리할 수 있다. 요청이 완료된 후에도 연결을 유지하는 방식은 keep-alive 설정을 통해 가능하다.

2. HTTP 메시지 구조

  • 요청(Request): 메서드, 경로, 헤더, 본문으로 구성된다.
  • 응답(Response): 상태 코드, 헤더, 본문으로 구성된다.
  • 헤더(Header): 추가적인 메타정보를 포함하며, 요청과 응답에 대한 부가적인 정보를 제공한다.

HTTP 메서드

1. 주요 HTTP 메서드

메서드 : 설명

GET 리소스 조회 (쿼리 파라미터 사용 가능)
POST 리소스 생성 및 데이터 전송
PUT 리소스를 대체 (전체 업데이트)
PATCH 리소스 일부 수정
DELETE 리소스 삭제
HEAD GET과 동일하지만 본문 제외
OPTIONS 서버가 지원하는 메서드 조회

2. POST 메서드 활용

  • 새로운 리소스 생성: 서버가 아직 식별하지 않은 새로운 리소스를 생성한다.
  • 프로세스 처리: 단순한 데이터 저장이 아니라, 특정 프로세스를 실행할 때 사용한다.
  • 다른 메서드로 처리하기 애매한 경우: GET 요청에 JSON 데이터를 전달해야 할 때 POST를 활용할 수 있다.

HTTP 상태 코드

상태 코드 설명
200 OK 정상 응답
201 Created 리소스 생성 성공
204 No Content 응답 본문 없음
301 Moved Permanently 영구적으로 URL 변경
302 Found 임시적으로 URL 변경 (GET 요청으로 변환 가능)
307 Temporary Redirect 메서드를 변경하지 않고 리디렉션
404 Not Found 리소스를 찾을 수 없음
500 Internal Server Error 서버 내부 오류
503 Service Unavailable 서버가 처리 불가

HTTP 헤더 1 - 일반 헤더

  • Host: 요청이 향하는 서버 도메인
  • User-Agent: 클라이언트의 정보 (브라우저, OS)
  • Referer: 현재 요청이 발생한 이전 웹 페이지의 URL
  • Authorization: 인증 정보 (Bearer {token} 형식)

HTTP 헤더 2 - 캐시와 조건부 요청

1. 캐시 관련 헤더

  • Cache-Control: no-cache, max-age=3600 등 캐시 정책 설정
  • ETag: 캐시 검증을 위한 해시 값
  • If-Modified-Since: 변경되지 않았다면 304 응답
  • If-None-Match: ETag 값이 같으면 304 응답

2. 쿠키와 세션

  • 쿠키(Cookie): 클라이언트가 서버에서 받은 데이터를 저장하고 다시 요청 시 전송한다.
  • 세션(Session): 서버가 상태를 유지할 수 있도록 하는 기술.
  • Set-Cookie: sessionId=abc123; Path=/; Secure 형식으로 서버에서 클라이언트에게 전달한다.
반응형