1.HTTP란?
HTTP (Hyper Text Transfer Protocol)는, 클라이언트와 서버 간 요청 (Request) / 응답 (Response) 을 정의한 프로토콜이라고 한다.
웹 클라이언트와 웹 서버 간 HTTP 형식으로 요청/응답을 처리한다고 하였으니, 서로 간 통신을 위한 일종의 규칙/약속이 존재한다. 이를 정의한 문서가 존재하니, 한 번쯤 읽어보자.
※참조 : https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
HTTP는, Well-known Port로 80, 8080을 이용한다.
2.HTTP 메시지 (HTTP 패킷)
HTTP 메시지는 2가지 종류가 존재하며 각 기능에서 차이점이 존재하지만, 메시지의 큰 구조를 동일하다.
①HTTP 메시지 종류
| 1 | HTTP 요청 (HTTP Request) | 클라이언트 → 서버로의 HTTP 요청 |
| 2 | HTTP 응답 (HTTP Response) | 서버 → 클라이언트로의 HTTP 응답 |
②HTTP 메시지 구조
HTTP 메시지는, HTTP 헤드(시작줄, 헤더), HTTP 바디로 구성되어 있으며 포함되는 정보는 아래 표와 그림으로 정리하였다.
| HTTP 요청 (HTTP Request) | HTTP 응답 (HTTP Response) | |
| HTTP 헤드 (시작줄) | 메소드 (Method), 요청 URI, HTTP 버전 | HTTP 버전, 상태코드 (Status Code), 처리 사유 |
| HTTP 헤드 (헤더) | HTTP 메시지 및 HTTP 바디의 속성 표시 | HTTP 메시지 및 HTTP 바디의 속성 표시 |
| HTTP 바디 | 서버로 전송하는 데이터가 포함 | 클라이언트로 전송하는 데이터가 포함 |

표와 그림으로는 HTTP 메시지 구조를 구분할 수 있다. 하지만 컴퓨터는 이미지로 대상을 받아들이지 않고 바이너리 값을 받아 처리한다. 그렇다면, 컴퓨터는 어떻게 각 HTTP 메시지 구조를 구분하는 것일까?
이는 각 헤드 데이터 마지막(끝)에 포함되는 CRLF을 통해 구분한다. CRLF는 CR과 LF로 줄바꿈을 의미하는 개행 문자이다. ASCⅡ 형식으로 표현 시, 각 CR(0x0D)과 LF(0x0A)이다. (CR과 LF의 정확한 의미는 찾아보자)
HTTP 헤드와 HTTP 바디는 CRLF를 각 2번 사용함으로 구분한다. (엔터 2번)

3.HTTPS란?
HTTP를 통해 클라이언트 ↔ 서버 간 통신을 수행하는 경우, 요청과 응답 데이터는 '평문' 형태로 전송하게 된다.
여기서 '평문'이란, 암호화되지 않아 식별 가능한 정보로 현재 보고 있는 게시글을 읽을 수 있다면 게시글이 '평문' 형태로 게시되어 있다고 말할 수 있다. (보다 상세한 사항은 암호학을 참조)
게시글은, 누구나 열람할 수 있기에 '평문'으로 게시되어도 문제가 없지만 로그인을 위한 비밀번호나, 신용카드 번호, 주민번호 등의 중요정보는 누구나 열람할 수 있으면 문제가 발생한다.
클라이언트 ↔ 서버 간 통신을 수행하는 모든 요청 및 응답 데이터를 누군가 열람할 수 있다면 아이디와 비밀번호는 타인에게 노출될 것이고, 누군가 계정을 도용할 수 있게 된다.
그렇다면 HTTP 메시지를 통한 요청 및 응답 처리 시, 중요정보를 어떻게 노출 시키지 않고 보호할 수 있을까?
이를 보호하기 위해, 생겨난 방법이 TLS(Transport Layer Security) 프로토콜을 이용한, HTTPS 방식이다. TLS는 클라이언트 ↔ 서버 간 모든 HTTP 메시지를 암호화한다. 암호화된 HTTP 메시지의 데이터는, 탈취되어도 복호화를 위한 값이 존재하지 않기에 중요정보가 노출되지 않는다.
| HTTP (클라이언트 ↔ 서버 간 요청/응답 데이터) | HTTPS (클라이언트 ↔ 서버 간 요청/응답 데이터) |
![]() |
![]() |
| 중간에서 클라이언트 ↔ 서버 간 HTTP 메시지를 알 수 있음 | 중간에서 클라이언트 ↔ 서버 간 HTTP 메시지를 알 수 없음 |
HTTPS는 클라이언트 ↔ 서버 간 HTTP 메시지를 알 수 없도록 보호(암호화)하는 방식이다.
현재에는 기본적으로 HTTPS 방식을 적용하는 추세이나, 이미 개발이 완료되어 서비스 중이라면 일부 HTTP 방식이 적용된 경우가 존재함으로 각 웹 서비스를 이용하거나 구축할 시 해당 부분을 확인해야 한다.
'기초 공부 > 웹' 카테고리의 다른 글
| [WEB] HTML / CSS / Javascript 란 ? _ 1편 HTML (0) | 2022.10.31 |
|---|---|
| [WEB] 쿠키와 세션 (Cookie &Session) (0) | 2022.10.06 |
| [WEB] 웹 브라우저란? (0) | 2022.09.30 |
| [WEB] HTTP Method 및 HTTP Status Code (0) | 2022.09.28 |
| [WEB] WEB이란? (0) | 2022.09.26 |

