본문 바로가기
이론 공부 내용 정리

네트워크2 - HTTP/HTTPS 차이, DNS RR

by mazayong 2021. 5. 20.

1. HTTP와 HTTPS의 차이점

1) HTTP?
HTTP는 서버/클라이언트 모델을 따라 데이터를 주고받기 위한 프로토콜로, 80번 포트를 사용한다.
애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다. HTTP는 상태를 가지고 있지 않는 Stateless 프로토콜이다.
구성 요소는 Methods, path, Version, Headers, Body 등으로 구성된다.
암호화 되지 않는 평문 데이터를 전송하는 프로토콜이다.

++HTTP 1.1과 2.0의 차이?
-> 가장 큰 차이 = 속도, 2.0은 헤더를 압축해서 보내기도 하고, 한번의 연결로 동시에 여러 메세지를 주고받을 수도 있다.

2) HTTPS?
HTTP에 암호화가 추가된 프로토콜이다.

암호화 = SSL 인증서. 사용자가 사이트에 제공하는 정보를 암호화한다.
TLS(전송 계층 보안) 프로토콜을 통해 보안 유지. 데이터 무결성을 제공해서 데이터가 전송 중 수정/손상 방지, 사용자가 자신이 의도한 웹사이트와 통신하고 있음을 입증하는 인증 기능도 제공.
 
433번 포트를 이용하고, 공개키 암호화를 지원한다.
(공개키 : 모두에게 공개하는 키.
공개키 암호화는 개인키로만 복호화할 수 있다. 반대로 개인키 암호화는 공개키로만 복호화할 수 있다.)

++HTTPS 통신 과정 정리하기


3) HTTP와 HTTPS의 차이
HTTPS는 HTTP와 달리 암호화가 추가되어 있어서 보안이 더 강하고, 암호화/복호화의 과정이 추가되어 있어서 HTTP보다 느리다
또한 HTTPS는 SSL 인증서를 발급하고 유지하기 위한 추가 비용이 발생한다.



2. DNS round robin

1) DNS?
Domain Name System의 약자로 IP 네트워크에서 사용하는 시스템.
URL상에서는 영문을 사용해 진입하나 URI는 ip주소를 가리켜야 하는데, 이렇게 문자와 주소체계를 상호 확인 및 변환할 수 있는 시스템.

DNS 과정 = DNS Query + IP Communication.
DNS query = DNS 서버에서 Domain Name을 이용해 IP를 받아옴.(DNS에 접속하는 유저에 대해 Round Robin 방식으로 IP 할당.)
IP Communication = IP를 받아온 유저는 Request 메세지 발송을 통해 정상적으로 네트워크 통신을 실시.

2) round robin?
시분할 시스템을 위해 설계된 선점형 스케줄링의 하나로, 프로세스들 사이 우선순위를 두지 않고 순서대로 시간단위로 CPU를 할당하는 방식의 CPU 스케줄링 알고리즘.
(프로세스에 일정 시간을 할당한 후, 할당 시간이 지나면 그 프로세스는 잠시 보류한 뒤 다른 프로세스에게 번갈아가며 기회를 부여하는 운영방식.)

3) DNS round robin?
컴퓨터 / 네트워크에서 데이터의 유효 기간을 나타내기 위한 방법.
DNS 서버 구성 방식 중 하나.
별도의 소프트웨어 / 하드웨어 로드밸런싱 장비를 사용하지 않고 DNS만을 이용해 도메인 레코드 정보 조회 시점에서 트래픽을 분산하는 기법. 
도메인을 사용하는 모든 서비스에서 활용이 가능하다.

<원리>
웹 서비스를 담당할 여러 대의 웹 서버는 자신의 공인 IP를 갖고 있다. 웹 사이트에 접속을 원하는 사용자가 해당 도메인 주소를 브라우저에 입력시 DNS는 도메인의 정보를 조회.
이 때 IP주소를 여러 대의 서버 IP 리스트 중 라운드 로빈 형태로 랜덤하게 하나 혹은 여러 개를 선택해 다시 사용자에게 알려 준다.
웹 사이트에 접속하는 다수의 사용자는 실제로는 복수의 웹 서버에 나뉘어 접속하게 되면서 자연스럽게 서버의 부하가 분산되는 방식.

네임서버의 도메인을 클라이언트의 웹서버의 IP를 요청하는 쿼리를 받을 때마다 2대의 웹서버를 번갈아가며 가르쳐줄 수 있게 설정하는 방법.
구현이 필요한 시기 : 지리적으로 복수의 웹 서버가 멀리 떨어져서 실시간 헬스 체크가 어려울 때 / 적은 비용으로 구현이 필요할 때

<단점>
일반적 로드밸런싱 = 백엔드 서버들의 헬스 체크 정보를 수반.
DNS round robin = 로드밸런싱 기능이 없어서 별도의 헬스 체크가 없다. -> 특정 웹 서버에 문제가 생겨 서비스가 불가해도 DNS는 알 방법이 없음 + 해당 서버의 공인 IP를 도메인 조회 결과에 포함시켜 HA(High Availability) 용도로는 적합하지 않다.
여러 개의 IP 주소를 결과로 돌려주는 과정에서 사용자의 OS/App에 따라 동작이 다를 수도 있음.(제일 먼저 조회된 IP를 이용하거나, 무작위로 선택, 처음 선택한 IP가 접속 안되면 다음 IP에 접속하도록 로직 추가 가능.)
가용성을 제공하지 않는다. -> 무중단 서비스가 필요한 시스템은 x. 여러 대 웹 서버로 트래픽 부하 분산시 도움이 됨.



--> DNS round robin 방식을 구성할 경우 로드 밸런서가 필요가 없다.
= 자동적으로 시간에 따라 스케줄링이 변환되어 부하에 대한 걱정을 할 필요가 없
- 로드 밸런서? = 부하분산기. IP 주소에 대해 요청을 복수의 서버로 분산 가능.


++DNS round robin vs 일반적인 로드밸런서
DNS round robin 이용시 웹 서버마다 다른 글로벌 주소 할당 + 서버 다중화 구성이 필요 없음.
로드밸런서 이용시 다양한 글로벌 주소 할당 필요 없음 + 서버 다중화 필요 없음.

++DNS 조회 정보들의 캐싱

 


출처
https://prohannah.tistory.com/68
https://m.blog.naver.com/sehyunfa/221691155719
https://m.blog.naver.com/sehyunfa/221691155719
https://blog.globalhost.co.kr/27
https://kils-log-of-develop.tistory.com/455
http://blog.wishket.com/http-vs-https-차이-알면-사이트의-레벨이-보인다/

--> 이해가 안되는 부분 : 링크에서 내용이 좀 다른 부분이 있는데 round robin 방식인 로드밸런싱 알고리즘 중 하나인데 왜 DNS round robin 방식 구현 시 왜 로드 밸런서가 필요가 없다고 한 거지?