[ HTTP(Hyper Text Transfer Protocol)란? ]
- HTTP(Hyper Text Transfer Protocol)란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다.
- 통신규약이라는 것은 내가 이렇게 줄테니까 너도 이렇게 보내!라고 약속을 한 것이다.
- HTTP 기본적으로 요청/응답 (request/response) 구조로 되어있다.
클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조.
클라이언트와 서버의 모든 통신이 요청과 응답으로 이루어 진다. - HTTP는 Stateless 이다.
Stateless 란 말그대로 state(상태)를 저장하지 않는 다는 뜻.
즉, 요청이 오면 그에 응답을 할뿐, 여러 요청/응답 끼리 연결되어 있지 않다는 뜻이다. 즉 각각의 요청/응답은 독립적인 요청/응답 이다.
예를 들어, 클라이언트가 요청을 보내고 응답을 받은후, 조금 있다 다시 요청을 보낼때, 전에 보낸 요청/응답에 대해 알지 못한다는 뜻이다.
그래서 만일 여러 요청과응답 의 진행과정이나 데이터가 필요할때는 쿠키나 세션 등등을 사용하게 된다
[ HTTP의 구조 ]
구조에 대해서는 다른 포스팅에서 자세히 알아보도록 하고
HTTP는 암호화가 되지 않는 평문 데이터를 전송하는 프로토콜이기 때문에 중요 정보를 주고 받으면 제 3자가 정보를 조회할 수 있었다. 그러한 문제를 해결하기 위해 HTTPS가 등장하게 되었다.
[ HTTP(Hyper Text Transfer Protocol Secure)란? ]
HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜이다.
네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 공개키 암호화를 지원하고 있다.
[ 공개키/개인키 ]
HTTPS는 공개키/개인키 암호화 방식을 이용해 데이터를 암호화하고 있다.
공개키와 개인키는 1쌍의 키이다.
- 공개키: 모두에게 공개가능한 키
- 개인키: 나만 가지고 알고 있어야 하는 키
암호화에 사용되는 두가지 방식
- 대칭키 방식
- -암호화/복호화 시, 동일한 키를 사용하는 방식.
- 정보를 보내는 쪽과 받는 쪽 모두 동일한 키를 가지고 있어야 한다.
- 어느 한 쪽이 생성한 키를 다른 한 쪽에게 안전하게 전달하는 것이 힘들다는 게 단점.
- 공개키 방식
- 두 개의 키로 암호화/복호화를 진행.
- 암호화를 A키로 했다면 복호화는 B로, 암호화를 B로 했다면 복호화는 A로 해야 하는 식이다.
- 하나는 개인키, 하나는 공개키이다.
공개키와 개인키로 암호화하면 다음과 같은 효과를 얻을 수 있다.
- 공개키 암호화: 공개키로 암호화를 하면 개인키로만 복호화할 수 있다. -> 개인키는 나만 가지고 있으므로, 나만 볼 수 있다.
- 개인키 암호화: 개인키로 암호화하면 공개키로만 복호화할 수 있다. -> 공개키는 모두에게 공개되어 있으므로, 내가 인증한 정보임을 알려 신뢰성을 보장할 수 있다.
[ 요약 ]
- 둘다 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다.
- HTTP는 암호화가 되지 않은 평문을 주고 받기 때문에 제3자가 정보를 조회할 수 있다.
- 그 문제 해결을 위해 HTTPS가 등장했다.
- HTTPS는 공개키/ 개인키 방식을 이용하여 암호화를 한다.
[ 차이 ]
- HTTP는 보다 HTTPS가 암호화가 추가되었기에 보안에 안정성이 있다.
- 하지만 HTTPS를 사용하면 암호화/복호화 과정이 필요하기 때문에 HTTP보다 속도가 느리다. 하지만 거의 차이없음.
- 또한 인증서를 발급하고 유지하기 위한 추가 비용이 발생한다.
- 개인정보와 같이 민감한 데이터를 주고 받아야한다면 HTTPS, 단순 정보 조회 처리는 HTTP사용
728x90
'컴퓨터공학지식' 카테고리의 다른 글
[CS] google.com 을 치고 엔터를 치면 어떤 일이 벌어질까? (0) | 2021.09.28 |
---|