HTTP? 🤔 웹의 무명 영웅, HTTP 설명
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
웹 개발 초보자 및 프로토콜 기초 이해를 원하는 개발자 (기초 수준)
핵심 요약
- HTTP(HyperText Transfer Protocol)는 클라이언트와 서버 간 데이터 교환을 위한 주요 프로토콜로, HTTP/3까지 진화한 상태
- HTTP 요청/응답 구조는
메서드(GET, POST 등)
,헤더
,바디
3개의 주요 구성 요소로 구성 - 상태 없는(stateless) 프로토콜로, 연결 지속성은 WebSockets 같은 도구로 해결
- TCP/IP 모델의 Application Layer에 위치하며, HTTP/3은 QUIC 프로토콜 기반으로 설계
섹션별 세부 요약
1. HTTP의 역사 및 기초
- 1989년 Tim Berners-Lee가 제안한 WWW의 핵심 프로토콜로, HTML 문서 전송을 목표
- "클라이언트가 질문하고, 서버가 답변한다"는 원칙이 현대 웹 앱의 기반
- HTTP/1.1, HTTP/2, HTTP/3의 진화 과정에서 성능 향상 및 지연 감소가 주요 목표
2. HTTP 요청/응답 구조
- 요청(Request) 구성 요소:
Start Line
: 메서드(GET, POST 등), 경로, 프로토콜 버전Headers
: 콘텐츠 유형, 사용자 에이전트, 토큰 등Body
: POST/PUT 메서드 시 데이터 전송- 응답(Response) 구성 요소:
Start Line
: 상태 코드(2xx 성공, 4xx 클라이언트 오류 등)Headers
: 콘텐츠 유형, 캐싱 규칙Body
: HTML/JSON 데이터 포함
3. HTTP의 TCP/IP 모델 위치 및 특성
- Application Layer에 위치하며, Transport Layer(TCP)와 Internet Layer(IP)와 상호작용
- HTTP/3은 QUIC 프로토콜 기반으로 설계되어 네트워크 지연 감소 및 보안 강화
- 상태 없는(stateless) 특성으로, WebSockets 같은 도구가 필요하다
4. HTTP의 제한 및 확장성
- 서버가 클라이언트로 요청을 자율적으로 전송할 수 없음
- 지속 연결은 HTTP/1.1의 Keep-Alive 또는 WebSockets로 구현 가능
- 모던 웹 앱에서 HTTP/3 채택 추천
결론
- HTTP/3 채택을 통해 성능 향상 및 보안 강화
- 요청/응답 구조 이해는 웹 개발의 핵심 기초
- 상태 관리 필요 시 WebSockets 같은 도구 활용
- MDN Web Docs에서 HTTP 및 fetch() API 공식 문서 참고 (예:
fetch("URL", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(...) })
)