1. HTTP란?
HTTP(HyperText Transfer Protocol)는 웹 브라우저(클라이언트)와 웹 서버가 데이터를 주고받는 방식이다. 우리가 웹사이트를 방문할 때, 브라우저가 서버에 요청을 보내고, 서버는 필요한 데이터를 응답한다.
2. HTTP의 특징
✅ 비연결성(Stateless)
• 서버는 요청을 받을 때마다 새롭게 처리하고, 이전 요청 정보를 기억하지 않는다.
• 예를 들어, 로그인한 상태를 유지하려면 쿠키나 세션 같은 방법을 사용해야 한다.
✅ TCP 기반
• HTTP는 TCP(신뢰성 있는 데이터 전송 방식)을 사용하여 데이터를 주고받는다.
• UDP(빠르지만 신뢰성이 낮은 방식)는 사용하지 않는다.
3. 웹 페이지 구성 요소
웹 페이지는 여러 가지 파일로 구성된다.
• HTML: 웹 페이지의 구조를 정의하는 문서
• CSS: 웹 페이지의 디자인을 담당
• JavaScript(JS): 웹 페이지에서 동적 기능을 제공
• 이미지, 오디오, 비디오 파일 등
4. URL과 URI
• URL(Uniform Resource Locator): 웹 주소(예: https://www.google.com).
• URI(Uniform Resource Identifier): URL을 포함하는 더 넓은 개념.
5. HTTP 요청과 응답 구조
✅ 요청(Request)

• 클라이언트(브라우저)가 서버에 보내는 메시지
• 예: GET /index.html HTTP/1.1
• 요청에는 메서드, URL, 헤더, 본문(필요 시)이 포함됨
✅ 응답(Response)
• 서버가 클라이언트에게 보내는 메시지
• 응답에는 상태 코드(200 OK, 404 Not Found), 헤더, 본문이 포함됨
6. HTTP의 주요 동작 방식
✅ Stateless(무상태)
• 요청마다 새로운 연결을 만들고, 요청 후에는 연결을 끊음.
• 이를 해결하기 위해 쿠키, 세션을 사용.
✅ Persistent HTTP (지속적 HTTP)
• HTTP/1.1부터 같은 연결을 유지하며 여러 요청을 처리할 수 있도록 개선됨.
• 네트워크 부하를 줄이고 속도를 높임.
✅ RTT (Round Trip Time)
• 클라이언트에서 서버까지 왕복하는 시간.
• RTT가 많을수록 속도가 느려짐.

7. 쿠키와 캐시
✅ 쿠키
• 클라이언트(사용자)의 정보를 저장하는 작은 파일.
• 예: 로그인 정보, 장바구니 상태 등.
✅ 캐시
• 자주 요청되는 데이터를 저장하여 빠르게 불러옴.
• 예: 웹사이트 방문 시, 이미지나 CSS 파일을 다시 다운로드하지 않도록 함.
8. HTTP 연결 방식
✅ 비지속적 HTTP(Non-Persistent)
• 하나의 요청이 끝나면 TCP 연결을 끊음.
• 여러 개의 파일을 다운로드할 때 속도가 느려짐.
✅ 영속적 HTTP(Persistent)
• 여러 개의 요청을 하나의 TCP 연결에서 처리.
• 속도가 빠르고 네트워크 부담이 적음.
9. HTTP 요청 방식(메서드)
✅ GET
• 데이터를 가져올 때 사용.
• 예: GET /index.html HTTP/1.1
✅ POST
• 데이터를 서버로 보낼 때 사용.
• 예: 회원가입, 로그인 등.
✅ PUT
• 서버에 데이터를 업로드할 때 사용.
✅ DELETE
• 서버에서 데이터를 삭제할 때 사용.
10. HTTP 응답 상태 코드
• 200 OK: 정상 처리됨.
• 301 Moved Permanently: 페이지가 다른 곳으로 이동됨.
• 404 Not Found: 요청한 페이지를 찾을 수 없음.
• 500 Internal Server Error: 서버 오류.
📌 정리
1. HTTP는 클라이언트(브라우저)와 서버 간 데이터를 주고받는 방식.
2. 요청(Request)과 응답(Response)으로 이루어짐.
3. 기본적으로 Stateless(무상태)이므로 쿠키, 세션을 사용해 해결.
4. 속도를 높이기 위해 Persistent HTTP, 캐시 등을 활용.
5. 여러 가지 메서드(GET, POST, PUT, DELETE 등)를 사용.
6. 상태 코드(200, 404, 500 등)를 통해 서버 응답을 알 수 있음.
'CS > Network' 카테고리의 다른 글
| [네트워크] multiplexing and demultiplexing (0) | 2025.04.20 |
|---|---|
| [네트워크] Web Cache (0) | 2025.04.19 |
| 응용 계층(application layer) 개요 🚀 (0) | 2025.04.04 |
| 🌐 네트워크 코어란? (0) | 2025.04.04 |
| 🌐 네트워크 엣지(network edge)란? (0) | 2025.04.04 |