계발자 블로그
[네트워크] HTTP와 HTTPS 본문
HTTP란
http는 Hyper Text Transfer Protocaol의 줄임말로써 인터넷 상에서 데이터를 주고 받기 위한
서버와 클라이언트 간에 데이터를 주고 받는 프로토콜입니다.
7계층 중 어플리케이션 계층의 프로토콜로 TCP/IP 위에서 동작합니다.
http는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에 제3자가 정보를 조회할 수 있습니다.
이러한 무제를 해결하기 위해 HTTPS가 등장한 것입니다.
HTTPS란
Hyper Text Transfer Protocol Secure로 s는 안전한 통신망을 뜻합니다.
http 통신 하는 소켓 부분을 인터넷 상에서 정보를 암호화 하는
SSL(Secure Socket Layer)라는 프로토콜로 대체한 것입니다.
HTTPS의 SSL에서는 대칭키 암호화 방식과 공개키 암호화 방식을 모두 사용합니다.
SSL
네트워크 내에서 메시지 전송의 안전을 관리하기 위해 만들어진 프로그램 계층입니다.
CA(Certificate Authority)라 불리는 서드파티로 부터 서버와 클라이언트의 인증을 하는데 사용됩니다.
SSL 인증서 : 클라이언트와 서버간의 통신을 제3자가 보증 해 주는 전자화 된 문서
KEY를 가지고 있어야 암호화와 복호화가 가능합니다.
대칭키 : 암호화 하는 쪽과 복호화 하는 쪽이 같은 키를 가지고 있어야 합니다.
공개키, 개인키: A,B라는 2개의 KEY가 있어서 A key로 암호화 하면 B key로 복호화를 해야하고
B key로 암호화를 하면 A key로 복호화를 해야 합니다.(공개키로는 암호화는 할 수 있지만 복호화는 할 수 없음)
HTTP와 HTTPS
HTTP는 암호화가 추가되지 않았기 때문에 보안에 취약한 반면, HTTPS는 안전하게 데이터를 주고받을 수 있습니다.
하지만 HTTPS를 이용하면 암호화/복호화의 과정이 필요하기 때문에 HTTP보다 속도가 느립니다. (물론 오늘날에는 거의 차이를 못느낄 정도) 또한 HTTPS는 인증서를 발급하고 유지하기 위한 추가 비용이 발생합니다.
그렇다면 언제 HTTP를 쓰고, 언제 HTTPS를 쓰는 것이 좋을까요?
개인 정보와 같은 민감한 데이터를 주고 받아야 한다면 HTTPS를 이용해야 하지만,
노출이 되어도 괜찮은 단순한 정보 조회 등 만을 처리하고 있다면 HTTP를 이용하면 됩니다.
HTML 문서를 주고 받기 위한 통신 규약
단방향 통신, 클라이언트의 요청, 서버의 응답, 응답 이후는 연결을 끊음
요청 시
Request Line / Header / Body 의 구성을 가집니다.
- Request Line : 메서드 (GET / POST), 버전, URL, 등의 정보
- Header : 기본 구조에 정의 된 대로 서버에 전달하는 정보
- Body : 요청에 들어가는 Data, 단순 데이터 요청 시에는 사용하지 않음
응답 시
Status Line / Header / Body 의 구성을 가집니다.
- Status Line : 상태 코드(200 / 400), 버전 등의 정보
- Header : 기본 구조에 정의 된 대로 서버에 전달하는 정보
- Body : 실 데이터
출처 : https://mangkyu.tistory.com/98
https://github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Network/HTTP%2C%20HTTPS.md
https://github.com/HyeminNoh/Tech-Stack/blob/master/docs/Network/HTTP_and_HTTPS.md
35개 프로젝트로 배우는 Android 앱 개발 feat. Jetpack Compose 초격차 패키지 Online.
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] 쿠키와 세션 (0) | 2022.09.27 |
---|---|
[네트워크] 3-way handshake, 4-way handshake (0) | 2022.09.22 |
[네트워크] TCP, UDP (0) | 2022.09.22 |
[네트워크] OSI 7계층 (0) | 2022.09.21 |