- HTTP
HTTP 란?
- HTTP는 웹(W3) 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 쓰인다. 주로 TCP를 사용하고 HTTP/3부터는 UDP를 사용하며, 80번 포트를 사용한다.
- HTTP(Hypertext Transfer Protocol)는 인터넷상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜 이다.
+) HTTP 버전
- Http/0.9
- 메소드가 get 밖에는 없다.
- HTML 파일 자체를 보내주는 기능만 한다.
- Http/1.0
- http/1.0에 들어와서는 헤더가 생겼다. 헤더에는 http 버전 정보, 상태코드 등 여러 정보가 담겨있다.
- Http/1.1
- Pipelining = 앞 요청의 응답을 기다리지 않고 순차적인 여러 요청을 연속적으로 보내고 그 순서에 맞춰 응답을 받는 방식이 등장
- 순차적으로 하나씩 요청 / 응답이 처리되는 기존 방식을 개선 → 속도 빨라짐 (하지만, 동시에 여러 요청을 처리해 응답을 하는건 아님)
- Http/2.0
- 기존 HTTP 1.X 버전의 성능 향상에 초점을 맞춘 파싱 속도와 전송 속도가 빨라짐
- HTTP 메시지 전송 방식의 전환으로 전송속도 개선
- 1.1 버전에서의 Pipelining이 개선되어 Multiplexed Streams (동시에 여러 요청을 처리하는 것)이 가능해짐
- Http/3.0
- QUIC을 기반으로 나온 새로운 HTTP 메이저 버전
- QUIC란?
- Google에서 개발한 UDP 기반의 전송 프로토콜 (Quick UDP Internet Connections)
- Google에서 TCP의 구조적 문제로 성능 향상이 어렵다고 판단하여 UDP 기반을 선택
- QUIC은 TCP의 3-way handshake과정을 최적화 하는 것에 초점을 두고 개발됨
- QUIC은 TCP의 Stream은 하나의 chain으로 연결되는 것과 다르게 각 Stream당 독립된 Stream chain을 구성하여 TCP HOL Blocking을 해결하였다
- QUIC을 기반으로 나온 새로운 HTTP 메이저 버전
HTTP의 취약점
- HTTP는 리퀘스트에 헤더가 암호화가 되지 않기 때문에 헤더가 탈취될 경우 데이터도 탈취가 되기 때문에 정보가 유출될 수 있어서 보안에 좋지 않다.
- HTTPS
HTTPS 란?
HTTP의 취약점을 보안하기 위해 만들어진 프로토콜로, 기존의 HTTP를 SSL 프로토콜 위에서 돌아가도록 하여 클라이언트와 서버가 주고받는 텍스트를 암호화 하여 보안을 강화합니다.
SSL 프로토콜은 기본적으로 SSL 인증서를 사용해 작동합니다.또한 SSL 프로토콜은 TLS/SSL Handshake 방식을 이용합니다. TLS/SSL Handshake 방식은
- client hello
- server hell
- Verify server certificate
- Client key exchange
- Send client certificate
- Verify client certificate
- Client’finished’
- Server’finished’
- Exchange messages
위 순서대로 이루어집니다.
+) SSL / TLS
SSL 프로토콜?
SSL은 보안 소켓 계층(Secure Sockets Layer)의 약자이고,
SSL은 웹사이트와 브라우저 사이(또는 두 서버 사이)에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술입니다.
SSL은 해커가 개인 데이터나 금융 데이터 등의 전송되는 정보를 보거나 훔치는 것을 방지합니다.
- SSL은 공개 키 암호화 방식을 사용한다.
SSL 작동 과정
SSL 인증서는 "SSL 핸드셰이크”라는 과정을 통해 웹사이트/서버와 브라우저 간에 암호화된 연결을 수립합니다. 웹사이트 방문자에게는 이 과정이 보이지 않으며, 순간적으로 이루어집니다.
-
- 인증 : 사용자가 웹사이트에서 시작하는 모든 신규 세션에 대해 브라우저와 서버는 각각 다른 SSL 인증서를 교환하고 검증합니다.
- 암호화 : 서버는 브라우저와 공개 키를 공유하고, 이어서 브라우저는 이 키를 사용해 프리마스터 키(pre-master key)를 생성, 암호화합니다. 이를 키 교환이라 합니다.
- 복호화 : 서버는 개인 키를 사용해 프리마스터 키를 복호화하고, 세션 기간 동안 사용되는 암호화된 보안 연결을 수립합니다.
TLS 프로토콜?
- TLS는 전송 계층 보안(Trasnport Layer Security)의 약자이고, SSL의 상위 버전입니다.
- HTTPS 적용 방법

- 클라이언트가 서버에 접속 요청을 함
- 서버는 공개키와 개인키를 가지고 있다가 공개키를 클라이언트에 전달
- 클라이언트는 공개키를 받아 자신만의 대칭키를 공개키로 암호화해서 서버에 전달
- 공개키로 암호화한 클라이언트의 대칭키를 서버에서 개인키로 복호화
- 안전한 대칭키를 클라이언트와 서버가 가지게 됨 + 안전하게 공개키 방식으로 통신이 가능
- HTTP 와 HTTPS의 차이점
- HTTP와 달리 HTTPS를 사용한 웹 페이지를 통해 전송되는 모든 데이터는 추가적인 보안 계층이 있다.
- 즉, SSL 인증서 유무의 차이
- HTTP 의 특징 → 취약점 → 보완 → HTTPS 설명
학습할때 위 제목과 같은 흐름으로 학습하기
'woncoding > TIL' 카테고리의 다른 글
| TIL | 1.24.화 [CS 기초지식 | Semaphore / Mutex / Cookie] (0) | 2023.01.25 |
|---|---|
| TIL | 1.23.월 [CS 기초지식 | CORS] (0) | 2023.01.25 |
| TIL | 1.19.목 [CS 기초지식 | 정규화] (0) | 2023.01.25 |
| TIL | 1.18.수 [CS 기초지식 | 트랜잭션] (0) | 2023.01.25 |
| TIL | 1.17.화 [CS 기초지식 | Index] (0) | 2023.01.25 |