HTTP(HyperText Transfer Protocol)
• HTTP는 웹에서 클라이언트와 서버가 데이터를 주고받기 위한 통신 규약(Protocol)이다.
• 웹 브라우저, 모바일 앱, 서버가 서로 정해진 방식으로 요청(Request)과 응답(Response)을 주고받을 수 있도록 만든 약속이다.
HTTP가 필요한 이유
• HTTP가 없다면 서로 다른 컴퓨터가 데이터를 주고받을 때:
> 어떤 형식으로 보내야 하는지
> 어디까지가 요청인지
> 어떤 데이터가 포함되어 있는지
알 수 없게 된다.
• 서버가 요청을 이해하지 못하거나 클라이언트가 응답을 해석하지 못하는 상황이 발생한다.
• HTTP는 서로 다른 나라 사람들이 대화하기 위해 사용하는 공통 언어와 같다.
HyperText란?
• HyperText는 하이퍼링크(HyperLink)를 통해 다른 문서나 웹페이지로 즉시 이동할 수 있는 텍스트를 의미한다.
• 대표적인 예로 사용자가 링크를 클릭하면 다른 웹페이지로 이동할 수 있다.
Protocol이란?
• Protocol(프로토콜)은 컴퓨터끼리 데이터를 주고받기 위한 통신 규칙이다.
• 요청 형식, 응답 형식, 데이터 전달 방식 등을 정해놓은 규칙이라고 볼 수 있다.
HTTP 동작 원칙
• HTTP는 기본적으로 클라이언트 요청(Request) > 서버 처리 > 서버 응답(Response) 구조로 동작한다.
• 따라서 클라이언트가 먼저 요청을 보내야 서버가 응답할 수 있다.
• 서버가 먼저 클라이언트에게 말을 걸지 않는다.
• 클라이언트 요청이 있으면 항상 응답한다.
HTTP 주요 특징
무상태성(Stateless)
• HTTP는 서버가 클라이언트의 이전 상태를 기본적으로 기억하지 않는 구조이다.
> 이전에 로그인했는지
> 어떤 페이지를 봤는지
• 웹 서버는 동시에 매우 많은 사용자의 요청을 처리해야 한다.
• 만약 모든 사용자의 상태를 계속 기억하면
> 서버 메모리 사용량 증가
> 성능 저하
> 서버 과부하
등 문제가 발생할 수 있다.
• 따라서 HTTP는 기본적으로 상태를 저장하지 않는 구조를 사용한다.
비연결성(Connectionless)
• HTTP는 요청과 응답이 끝나면 기본적으로 연결을 종료한다.
• 요청할 때 연결, 응답 후 연결 종료 구조로 동작한다.
• 만약 모든 사용자가 계속 연결을 유지하면
> 서버 자원이 빠르게 부족해지고
> 동시에 많은 사용자를 처리하기 어려워진다.
• 따라서 필요한 순간만 연결하여 서버 자원을 효율적으로 사용한다.
HTTP 구조
• HTTP 메시지는 클라이언트와 서버가 데이터를 주고받기 위한 텍스트 기반 구조이다.
• HTTP 요청(Request)과 응답(Response)은 공통적으로 크게 3개의 영역으로 구성된다.
> 1. 시작 줄(Start-Line / Status-Line)
> 2. 헤더(Headers)
> 3. 본문(Body)
시작 줄(Start-Line / Status-Line)
• HTTP 요청 또는 응답의 가장 첫 번째 줄이다.
• 요청(Request)에서는 요청 방식(Method), 요청 주소(URL), HTTP 버전 정보가 포함된다.
GET /users HTTP/1.1
• 응답(Response)에서는 HTTP 버전, 상태 코드(Status Code), 상태 메시지 정보가 포함된다.
HTTP/1.1 200 OK
헤더(Headers)
• 요청과 응답에 대한 부가 정보를 저장하는 영역이다.
> 데이터 형식(Content-Type)
> 인증 정보(Authorization)
> 브라우저 정보(User-Agent)
Content-Type: application/json
본문(Body)
• 실제로 전달할 데이터를 저장하는 영역이다.
> 로그인 정보
> 회원가입 데이터
> 게시글 내용
{
"name": "형탁"
}
HTTP 데이터 전송 방식
• HTTP에서는 데이터를 크게 두 가지 방식으로 전달할 수 있다.
URL에 데이터를 붙여서 보내기 (GET)
• 조회(READ) 요청에서 자주 사용된다.
• 보고 싶은 데이터의 조건을 URL에 포함하여 전달한다.
// GET 예시
GET /search?keyword=한식
// 의미
“한식 키워드로 검색해주세요”
> 주로 데이터 조회에 사용
> URL에 데이터 포함
> Body를 사용하지 않는 경우가 많음
> 주소창에서 데이터 확인 가능
Body에 데이터를 담아 보내기 (POST, PUT, PATCH)
• 데이터 추가(Create) 또는 수정(Update) 시 자주 사용된다.
• 전달해야 하는 데이터가 많거나 민감한 경우 Body 영역을 사용한다.
{
"id": "user1",
"password": "1234"
}
> 많은 데이터를 전달 가능
> URL에 데이터가 직접 노출되지 않음
> 로그인, 회원가입, 수정 기능 등에 사용
'웹개발' 카테고리의 다른 글
| API (0) | 2026.06.01 |
|---|---|
| API 분석하고 설계해보기 (0) | 2026.05.29 |
| Server (0) | 2026.05.28 |
| JavaScript (0) | 2026.05.28 |
| CSS (0) | 2026.05.27 |