1. 전제: 웹 페이지가 표시되는 방식
우선 웹 페이지가 어떻게 우리 화면에 표시되는지 이해하는 것이 중요합니다. 이 과정은 마치 식당에서 음식을 주문하는 것과 비슷합니다
- 여러분(브라우저)이 서버(식당)에 특정 웹 페이지(메뉴)를 요청합니다.
- 서버는 이 요청을 받아 처리한 후 해당 웹 페이지 데이터(음식)를 여러분에게 전송합니다.
- 브라우저는 받은 데이터를 해석하여 화면에 표시합니다(음식을 먹습니다).
이 모든 통신 과정에서 사용되는 규칙을 '프로토콜'이라고 하며, HTTP와 HTTPS는 웹에서 가장 널리 사용되는 프로토콜입니다.
2. HTTP란?
HTTP(HyperText Transfer Protocol)는 웹에서 정보를 주고받기 위한 통신 규약입니다. 이름에서 알 수 있듯이, 주로 하이퍼텍스트(HTML)를 전송하기 위해 만들어졌지만, 현재는 이미지, 비디오, 오디오 등 다양한 데이터를 전송하는 데 사용됩니다.
쉽게 설명하자면, HTTP는 인터넷이라는 거대한 도시에서 데이터가 이동하는 방식에 관한 '교통 규칙'이라고 생각하면 됩니다. 모든 웹 브라우저와 서버는 이 규칙을 따라 소통합니다.
HTTP의 특징
- 상태를 유지하지 않음(Stateless): 각 요청은 독립적이며, 서버는 이전 요청을 기억하지 않습니다. 마치 식당에서 매번 주문할 때마다 처음 온 손님처럼 대하는 것과 같습니다.
- 단순함: 텍스트 기반이므로 사람이 읽고 이해할 수 있습니다.
- 확장 가능함: 헤더를 통해 추가 기능을 구현할 수 있습니다.
3. HTTP 요청
브라우저가 서버에 보내는 메시지를 HTTP 요청이라고 합니다. 이 요청은, 제가 카페에 들어가서 "아메리카노 한 잔 주세요"라고 말하는 것과 비슷합니다. HTTP 요청은 세 부분으로 구성됩니다.
3.1 HTTP 요청: 요청 행
요청 행은 HTTP 요청의 첫 줄로, 다음 세 가지 정보를 포함합니다:
- 메서드(Method): 수행할 작업의 종류(GET, POST, PUT, DELETE 등)
- URI(Uniform Resource Identifier): 요청 대상의 경로
- HTTP 버전: 사용 중인 HTTP 프로토콜의 버전
예시
GET /index.html HTTP/1.1
이것은 "index.html 페이지를 가져와 달라(GET)"는 요청입니다. 실생활에서는 "메뉴판 좀 보여주세요"라고 요청하는 것과 같습니다.
주요 HTTP 메서드
- GET: 정보를 요청합니다(데이터 조회).
- POST: 새로운 정보를 제출합니다(데이터 생성).
- PUT: 기존 정보를 업데이트합니다.
- DELETE: 정보를 삭제합니다.
3.2 HTTP 요청: 헤더
헤더는 요청에 대한 추가 정보를 제공합니다. 마치 커피를 주문할 때 "설탕은 적게, 우유는 많이 넣어주세요"라고 부가 정보를 전달하는 것과 같습니다.
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8
각 헤더의 의미:
- Host: 요청하는 서버의 도메인 이름
- User-Agent: 브라우저와 운영체제 정보
- Accept: 브라우저가 처리할 수 있는 콘텐츠 유형
- Accept-Language: 사용자가 선호하는 언어
3.3 HTTP 요청: 본문
본문(Body)은 서버로 전송하는 데이터를 포함합니다. GET 요청에는 보통 본문이 없지만, POST 요청에는 폼 데이터와 같은 정보가 포함됩니다.
예를 들어, 로그인 폼을 제출할 때:
username=user123&password=pass456
이것은 마치 주문서에 상세한 요구사항을 적는 것과 같습니다.
4. HTTP 응답
서버가 브라우저의 요청에 대해 보내는 메시지를 HTTP 응답이라고 합니다. 이것은 카페에서 "여기 주문하신 아메리카노 나왔습니다"라고 말하며 커피를 건네주는 것과 같습니다.
4.1 HTTP 응답: 상태 행
상태 행은 응답의 첫 줄로, 다음 정보를 포함합니다:
- HTTP 버전: 사용 중인 HTTP 프로토콜의 버전
- 상태 코드: 요청 처리 결과를 나타내는 숫자 코드
- 상태 메시지: 상태 코드에 대한 간략한 설명
HTTP/1.1 200 OK
주요 HTTP 상태 코드
- 200 OK: 요청이 성공적으로 처리됨 (주문한 커피가 잘 준비됨)
- 404 Not Found: 요청한 리소스를 찾을 수 없음 (메뉴에 없는 음료를 주문함)
- 500 Internal Server Error: 서버 내부 오류 (커피 기계가 고장남)
- 301 Moved Permanently: 요청한 리소스가 영구적으로 이동함 (매장이 이전함)
- 403 Forbidden: 접근 권한 없음 (직원 전용 구역에 들어가려 함)
4.2 HTTP 응답: 헤더
응답 헤더는 응답에 대한 추가 정보를 제공합니다. 바리스타가 "핫 아메리카노고, 원두는 에티오피아산이에요"라고 설명하는 것과 같습니다.
Date: Mon, 24 Mar 2025 12:28:53 GMT
Server: Apache/2.4.41 (Ubuntu)
Content-Type: text/html; charset=UTF-8
Content-Length: 29253
- Date: 응답이 생성된 날짜와 시간
- Server: 서버 소프트웨어 정보
- Content-Type: 응답 본문의 미디어 타입
- Content-Length: 응답 본문의 크기(바이트)
4.3 HTTP 응답: 바디
응답 본문은 클라이언트에게 전송되는 실제 데이터를 포함합니다. 이것은 요청한 웹 페이지의 HTML, 이미지 파일, JSON 데이터 등이 될 수 있습니다.
<!DOCTYPE html>
<html>
<head>
<title>환영합니다</title>
</head>
<body>
<h1>안녕하세요!</h1>
<p>이것은 예시 웹 페이지입니다.</p>
</body>
</html>
이것은 실제로 주문한 커피를 받는 것과 같습니다.
5. HTTPS란? (HTTP와의 차이는?)
HTTPS(HTTP Secure)는 HTTP에 보안 기능을 추가한 프로토콜입니다. 기본적인 작동 방식은 HTTP와 동일하지만, SSL/TLS라는 암호화 프로토콜을 사용하여 데이터를 암호화합니다.
HTTP vs HTTPS
HTTP는 데이터를 일반 텍스트로 전송하는 반면, HTTPS는 데이터를 암호화하여 전송합니다. 이 차이는 마치 일반 우편(HTTP)과 보안 봉투에 담긴 등기 우편(HTTPS)의 차이와 같습니다.
HTTPS의 주요 특징과 장점
- 데이터 암호화: 제3자가 통신 내용을 읽을 수 없게 합니다. 누군가가 네트워크 통신을 가로채도 암호화된 정보만 볼 수 있어 내용을 알 수 없습니다.
- 데이터 무결성: 전송 중 데이터가 변조되지 않았음을 보장합니다. 마치 봉인된 택배 상자에 "개봉 흔적 있음" 표시가 있는지 확인하는 것과 같습니다.
- 인증: SSL/TLS 인증서를 통해 웹사이트의 신원을 확인합니다. 사용자는 접속한 사이트가 진짜인지 확인할 수 있습니다. 이것은 마치 공식 매장에서 발급한 영수증을 확인하는 것과 비슷합니다.
- 신뢰성 향상: 브라우저는 HTTPS 사이트에 자물쇠 아이콘을 표시하여 보안 연결임을 사용자에게 알립니다.
- SEO 우대: 구글 등의 검색 엔진은 HTTPS 웹사이트를 검색 결과에서 우대합니다.
HTTPS 작동 방식
- 핸드셰이크(Handshake): 클라이언트와 서버가 서로를 인증하고 어떤 암호화 방식을 사용할지 결정합니다.
- 인증서 확인: 서버는 신뢰할 수 있는 인증 기관(CA)에서 발급한 인증서를 제공하고, 브라우저는 이를 확인합니다.
- 키 교환: 안전한 통신을 위한 대칭 키를 교환합니다.
- 암호화된 통신: 이후 모든 데이터는 앞서 합의한 키를 사용해 암호화되어 전송됩니다.
결론
HTTP와 HTTPS는 웹 페이지를 보기 위한 통신 규약입니다. HTTP는 단순하고 기본적인 통신 방법이지만 보안에 취약하고, HTTPS는 암호화와 인증을 통해 안전한 통신을 제공합니다. 현대 웹에서는 사용자 정보 보호와 신뢰성 확보를 위해 점점 더 많은 웹사이트가 HTTPS를 채택하고 있습니다.
여러분이 웹 주소창에서 http:// 또는 https://를 볼 때, 이제는 그것이 단순한 글자가 아니라 여러분의 데이터가 어떻게 전송되는지를 나타내는 중요한 정보임을 알 수 있을 것입니다.
'1일 1네트워크 > 제 6장: 애플리케이션 계층 프로토콜' 카테고리의 다른 글
MIME와 MIME타입이란? (0) | 2025.04.04 |
---|---|
IMAP이란? (0) | 2025.04.03 |
POP란? (0) | 2025.03.28 |
SMTP란? (1) | 2025.03.27 |
FTP란? (0) | 2025.03.26 |