코딩항해기
[기초] HTTP 본문
HTTP
HTTP(HyperText Transfer Protocol)는 웹에서 클라이언트와 서버가 데이터를 주고받기 위한 프로토콜이다. 웹 브라우저가 웹 서버에 웹 페이지를 요청하고, 서버가 이에 응답하는 방식으로 동작한다.
HTTP의 특징
무상태성(Stateless)
HTTP는 기본적으로 무상태 프로토콜이다. 각각의 요청은 독립적으로 처리되며, 이전 요청의 정보를 가지고 있지 않는다. 이 특성 때문에 쿠키와 세션이라는 개념이 도입되었다.
클라이언트-서버 구조
클라이언트가 요청을 보내면 서버가 응답하는 단방향 구조로 되어있다. 이는 클라이언트와 서버의 역할을 명확히 구분하여 각각 독립적으로 발전할 수 있게 한다.
HTTP 메서드
GET | 리소스 조회 |
POST | 데이터 생성 및 조회 |
PUT | 리소스 전체 수정 |
PATCH | 리소스 일부 수정 |
DELETE | 리소스 삭제 |
HEAD | 헤더 정보만 조회 |
OPTIONS | 지원되는 메서드 조회 |
HTTP 상태 코드
1XX (정보 전달)
정보 전달을 위한 상태 코드로, 요청이 수신되어 처리 중임을 알린다.
2XX (성공)
요청이 성공적으로 처리되었음을 알린다.
3XX (리다이렉션)
클라이언트의 추가 작업이 필요함을 알린다.
4XX (클라이언트 오류)
클라이언트의 요청에 오류가 있음을 알린다.
5XX (서버 오류)
서버 쪽에서 오류가 발생했음을 알린다.
HTTP 헤더
헤더는 요청이나 응답에 대한 부가적인 정보를 담고 있다.
일반 헤더
Date | 메시지가 생성된 날짜와 시간 | Date: Wed, 21 Oct 2023 07:28:00 GMT |
Cache-Control | 캐시 동작 방식 지정 | Cache-Control: no-cache, no-store |
Connection | 네트워크 연결 방식 설정 | Connection: keep-alive |
요청 헤더
Host | 요청하려는 서버 호스트명과 포트번호 | Host: www.example.com |
User-Agent | 클라이언트 프로그램 정보 | User-Agent: Mozilla/5.0 (Windows NT 10.0) |
Accept | 클라이언트가 처리 가능한 미디어 타입 | Accept: text/html, application/json |
Cookie | 서버에 전달하는 쿠키 정보 | Cookie: sessionId=abc123 |
응답 헤더
Server | 서버 소프트웨어 정보 | Server: nginx/1.14.0 |
Content-Type | 응답 본문의 미디어 타입 | Content-Type: text/html; charset=UTF-8 |
Content-Length | 응답 본문의 바이트 길이 | Content-Length: 348 |
Set-Cookie | 클라이언트에 쿠키 설정 | Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2023 |
HTTP 버전별 특징
HTTP/1.1 | 커넥션 재사용 | 하나의 TCP 연결로 여러 요청/응답을 처리할 수 있는 지속 연결(Keep-Alive) 지원 |
파이프라이닝 도입 | 이전 요청에 대한 응답을 기다리지 않고 여러 요청을 연속적으로 보낼 수 있음 | |
호스트 헤더 추가 | 동일 IP에서 여러 도메인을 호스팅할 수 있도록 Host 헤더 필수화 | |
HTTP/2 | 멀티플렉싱 지원 | 하나의 연결로 여러 요청/응답을 동시에 주고받을 수 있음 |
헤더 압축 | HPACK 압축 방식을 사용하여 헤더 크기를 줄이고 중복 전송 방지 | |
서버 푸시 기능 | 클라이언트 요청 없이도 서버가 필요한 리소스를 미리 전송 가능 | |
HTTP/3 | UDP 기반 QUIC | TCP 대신 UDP 기반의 QUIC 프로토콜을 사용하여 연결 지연 최소화 |
연결 설정 시간 단축 | 초기 연결 설정에 필요한 시간을 대폭 단축 | |
향상된 보안성 | TLS 1.3을 기본으로 채택하여 보안 강화 |
이러한 HTTP는 RESTful API의 기반이되고 웹 서비스 통신의 표준이된다. 마이크로서비스 아키텍처의 핵심 요소이며 모바일 앱과 서버간의 통신 프로토콜을 담당한다. 여기서 보안 계층이 추가된 프로토콜이 HTTPS이다. (SSL/TLS 추가)
'기타 > 기초 지식' 카테고리의 다른 글
[기초] 인터넷 동작 방식 (0) | 2025.01.01 |
---|---|
[기초] 문자 인코딩 (0) | 2024.12.30 |
[기초] 데브옵스 DevOps (0) | 2024.12.29 |
[기초] 안전한 원격 접속 표준 SSH (0) | 2024.12.27 |
[기초] Node.js 패키지 관리자, npm yarn (0) | 2024.12.23 |