본문 바로가기

기초 공부/웹

[WEB] HTTP /HTTPS 이란?

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 응답 예시 그림

 

 표와 그림으로는 HTTP 메시지 구조를 구분할 수 있다. 하지만 컴퓨터는 이미지로 대상을 받아들이지 않고 바이너리 값을 받아 처리한다. 그렇다면, 컴퓨터는 어떻게 각 HTTP 메시지 구조를 구분하는 것일까?

 

 이는 각 헤드 데이터 마지막(끝)에 포함되는 CRLF을 통해 구분한다. CRLF는 CR과 LF로 줄바꿈을 의미하는 개행 문자이다. ASCⅡ 형식으로 표현 시, 각 CR(0x0D)LF(0x0A)이다. (CR과 LF의 정확한 의미는 찾아보자)

 

 HTTP 헤드와 HTTP 바디는 CRLF를 각 2번 사용함으로 구분한다. (엔터 2번) 

 

HTTP 메시지 / CR / LF

 

 

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