CS/네트워크

TCP/IP (5): HTTP - 웹 브라우저와 서버가 통신할 때 사용하는 프로토콜

나디아 Nadia 2025. 6. 17. 16:38

 

HTTP (HyperText Transfer Protocol)

: 웹 브라우저와 서버가 통신할 때 사용하는 프로토콜

  • 클라이언트(웹 브라우저)와 서버가 데이터를 주고받을 때 사용하는 형식
  • 웹 서버 뿐만 아니라 API를 제공하는 방식으로도 많이 사용됨
    • API (Application Programming Interface): 두 애플리케이션의 상호작용을 위해 서로 통신하는 법
    ex) 웹 브라우저에 감자.com를 검색하면 → 실제 요청은 http://www.감자.com 로 검색됨
    ⇒ HTTP 프로토콜로 www.감자.com과 통신한다는 뜻

 

 

HTTP 버전 변화

  • 사용자가 HTTP를 이용해 서버에게 요청을 보내면 서버와 TCP 커넥션을 확립하고, 서버는 사용자가 요청한 데이터를 보내주고 TCP 연결을 끊음
버전  특징
HTTP/1.0 요청이 있을 때마다 TCP 연결 생성/해제 → 비효율적
HTTP/1.1 서버의 응답 후 커넥션을 유지하게 해서 개선 → 한 번의 TCP 연결로 여러 요청 가능
HTTP/2 다중 전송(Multiplexing) 지원 → 더 빠르고 효율적인 전송 가능

 

 


 

HTTP의 구조

  • HTTP는 요청(Request)과 응답(Response) 두 부분으로 나뉘고, 각각은 헤더(Header)와 본문(Body)으로 구성됨

 

HTTP 요청(Request) 구조

  • 클라이언트가 서버에 보내는 데이터의 구조
요청 라인 (Request Line)
헤더(Header)
빈 줄 (Line Break)
본문(Body) ← (필요한 경우만)
 
 
  • 요청 라인: 메서드(GET), 경로(/index.html), 프로토콜 버전(HTTP/1.1)
  • 헤더: 요청에 대한 부가 정보 (브라우저 정보, 언어, 인코딩 등)
  • 바디: POST, PUT 요청일 때 주로 포함됨 (ex. 회원가입 정보)
GET /index.html HTTP/1.1 // 요청 라인 (Request Line)
Host: www.example.com // 헤더(Header)
User-Agent: Mozilla/5.0 //
Accept: text/html //


빈 줄 (Line Break)
본문(Body) ← (필요한 경우만)
(요청 바디는 POST나 PUT일 때 사용)
 

 

 

HTTP 요청 메서드 (Request Methods)

  • 클라이언트가 Request 메서드와 함께 요청 헤더를 서버에게 전송하면, 서버는 적절히 처리하고 그에 대한 응답을 보냄

 

GET: 서버에게 데이터를 요청하는 메서드

  • 원하는 페이지의 데이터를 웹 서버에게 요청할 때 사용

POST: 서버에게 새로운 데이터를 저장해달라고 요청하는 메서드

  • 회원가입, 블로그에 글 작성, 댓글을 다는 경우 사용

PUT: 서버에게 기존의 데이터를 완전히 바꿔달라고 요청하는 메서드

  • 사용자가 쓴 글의 제목, 본문 등 모든 내용을 변경할 때 사용

PATCH: 서버에게 기존의 데이터에서 일부를 변경해달라고 요청하는 메서드

  • 사용자가 쓴 글의 제목, 본문 등 일부 내용을 변경할 때 사용

DELETE: 서버에게 데이터를 제거해달라고 요청하는 메서드

  • 계정이나 글을 삭제할 때 사용

 

 

 

HTTP 응답(Response) 구조

  • 서버가 클라이언트에 보내는 데이터의 구조
응답 라인 (Status Line)
헤더(Header)
빈 줄 (Line Break)
본문(Body)

 

  • 응답 라인: 프로토콜/버전 + 상태 코드 + 상태 메시지
  • 헤더: 응답에 대한 정보 (콘텐츠 타입, 길이, 캐싱 등)
  • 바디: 실제 전달할 콘텐츠 (HTML, JSON, 이미지 등)
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 305

<html>...</html>

 

 

 

HTTP 응답 코드 (Response Codes)

코드 의미
200 클라이언트의 요청 성공
201 클라이언트의 요청 성공으로 새 리소스 생성
400 클라이언트가 잘못된 문법으로 보내서 서버가 요청을 이해할 수 없음
403 클라이언트에게 해당 리소스에 접근할 권한 없음
404 해당 리소스를 찾을 수 없음 (Not Found)
500 서버 내부 에러
502 서버 측 장비에 문제가 생겨서 제대로 연결할 수 없음