웹 브라우저에 youtube.com 을 입력하면?
우리나라 대부분의 사람들이 네이버나 구글이 홈화면인 브라우저를 이용하며, 매일 유튜브 사이트로 이동해서 영상을 시청하고는 한다. 이때마다 브라우저에 www.youtube.com 을 입력해야하는데 어떤 일이 발생하는지 네트워크 개념을 통해 설명하는 시간을 가지고자 한다.
목차
1. 도메인을 ip 주소 변환하는 DNS
2. 자주 쓰는 도메인을 보관하는 캐시
3. 신뢰성 위한 TCP Handshaking
4. 보안을 위한 SSL/TSL Handshaking
1. 도메인을 ip 주소 변환하는 DNS
도메인
우선 도메인 이라는 개념에 대해 알고 가자. 도메인이란 ip 주소에 대응되는 문자열로 된 서버의 주소를 말한다.
클라이언트가 서버와 요청을 하려면 132.31.11.113 -> 이렇게 생겨먹은 ip 주소를 사용해서 보내야한다. 하지만 ip 주소를 일일이 외워서 사용하기란 불가능에 가깝다. 이는 핸드폰 번호를 외워서 사용하겠다와 유사하다. 우리는 친구인 민수의 번호를 기억하기 보다는 '김민수' 이렇게 저장해놓고 '김민수'라는 이름으로 전화를 건다. ip 주소도 마찬가지이다. ip 주소에 대응하는 이름인 'www.youtube.com' 이라는 이름을 설정하고, 이 이름을 통해 유튜브 서버에 요청을 보낸다. 이 ip 주소 대신 사용하는 문자열인 'www.youtube.com'이 도메인이다.
DNS
도메인을 사람이 입력하면 내부적으로 ip주소로 변환을 해서 유튜브 서버와 통신을 하게 된다. 여기서 내부적으로 변환해주는 시스템이 DNS(Domain Name System) 라는 녀석인데, 쉽게 설명을 하자면 ip 주소를 위한 전화번호부이다.
전화번호부는 이름으로 전화번호를 알 수 있게 하는데 DNS도 이 시스템과 유사하다. ip 주소를 도메인에 대응하여 사용하는 시스템이 DNS이다. 그리고 DNS 시스템을 이용하여 서비스를 해주는 것이 DNS 서버이다.
DNS 서버 역시 물리적인 장치이므로 전 세계에 서비스 하기 위해 여러개의 서버를 가지고 있으며, 아래와 같은 계층 구조를 통해 서비스를 하고 있다. 우리가 도메인을 입력할 때 DNS 서버에서 어떤 과정을 거쳐서 ip 주소로 변환하는지를 살펴보자.
도메인을 가지고 DNS Recursor 라는 녀석이 전체 DNS 를 돌면서 해당하는 ip 주소를 찾는다. 이때 Root 에서부터 시작해서, 상위 계층에서 하위 계층으로 이동하며 해당하는 DNS 서버에 다음 서버를 물어본다(Recursive Reseach). 가장 하위 계층에서 도메인에 해당하는 ip 주소를 찾았다면 클라이언트에게 ip 주소를 반환한다.
이제 우리는 DNS 서버로부터 얻은 유튜브 서버 ip 주소를 가지고 서버에 요청을 보낼 수 있다.
2. 자주 쓰는 도메인을 보관하는 캐시
그럼 매번 도메인을 입력하면 DNS 서버에 ip 주소를 요청하게 되는 것일까? 답은 no 이다. 자주 사용하는 단축키는 포스트잇에 적어놓듯이, 자주 사용하는 도메인은 어딘가에 적어두고 사용하며 이 저장소를 DNS 캐시라고 한다.
DNS 서버에 물어보기 전에 캐시에서 도메인에 해당하는 ip 주소가 적혀있는지를 확인하고, 적혀있다면 바로 ip 주소를 사용한다. 만약 캐시에 없다면 그때 DNS 서버로 부터 ip 주소를 받아온다고 알아두면 되겠다.
DNS 캐시도 종류가 여러가지가 있다. 클라이언트가 개인적으로 많이 사용하는 도메인-ip주소를 저장해놓는 캐시부터 사람들이 보편적으로 많이 사용하는 도메인 - ip 주소를 저장하는 캐시도 존재한다.
DNS 캐시 종류
1. 브라우저 캐시
클라이언트가 사용하고 있는 크롬, 엣지 등의 브라우저에 DNS 캐시가 존재한다. 클라이언트가 가장 많이 사용하는 서버의 도메인-ip 를 저장한다.
2. OS 캐시
운영체제 안에 있는 캐시이다. 맥이나 윈도우에도 DNS 캐시를 지원한다.
3. 라우터 캐시
집에서 사용하는 공유기 등에도 지역 사람들이 공통적으로 사용하는 도메인-ip를 캐싱한다.
4. ISP 캐시
ISP란 국가 단위로 인터넷을 제공하는 업체를 말하며 skt, kt 등을 생각하면 된다. 우리나라 사람들이 보편적으로 사용하는 도메인-ip 주소를 캐싱한다.
이러한 DNS 캐시를 사용하여 더 빠르게 서버와 통신을 할 수 있도록 지원한다.
3. 신뢰성 위한 TCP Handshaking
지금까지 DNS 캐시 및 DNS 서버를 이용하여 어떻게 도메인을 ip 주소로 변환하는지 알아보았다. 이제 데이터가 제대로 상대방에게 전송되게 하는 TCP 에 대해서 알아보자. TCP에 대한 내용이 많기 때문에 여기서는 TCP 의 개념, 이 때 사용하는 3-way-handshaking의 동작방식을 간단하게만 소개하고 넘어가겠다.
우선 TCP란 클라이언트가 서버로 데이터를 전송할 때 안정적으로 도착하는 것을 보장하는 시스템이다. 우리는 택배를 보내면 물건이 안정적으로 상대방에게 도착할 것이라는 믿음이 있다. 이는 국내 택배 업체의 안정적인 시스템 덕분인데, 네트워크에서도 역시 데이터를 상대방에게 안정적으로 보내기 위한 시스템이 필요하다. 이 시스템이 TCP 프로토콜이다. 안정적인 통신을 위해 TCP 연결을 해야하는데 이때 3-way-handshaking 이라는 방식을 사용하여 신뢰성 있는 연결을 구축한다. 데이터를 전송할 서버가 클라이언트가 찾는 서버가 맞는지, 지금 통신이 가능한지 등을 악수(handshaking)을 통해 확인하는 절차라고 이해하면 되겠다.
4. 보안을 위한 SSL/TLS Handshaking
TCP 연결을 통해 데이터를 통신할 수 있게 되었다. HTTP 프로토콜을 이용한다면 www.youtube.com 이라는 요청이 서버에 전송되겠지만 HTTPS 가 적용되어 있다면 SSL/TLS Handshaking 이라는 과정이 추가된다. 3-way-handshaking을 통해 데이터를 주고 받으며 TCP 연결이 되었듯이, 보안을 위한 연결도 SSL/TLS handshaking 이라는 절차를 거쳐 구축된다.
SSL/TLS handshaking 절차는 아래와 같습니다.
1. 클라이언트는 랜덤데이터(A)와 브라우저 암호화 방식 리스트를 서버에 전송한다.
2. 서버는 브라우저 암호화 방식 중 하나를 선택하고, 랜덤데이터(B) 와 암호화된 SSL 인증서를 클라이언트에게 전송한다.
3. 클라이언트의 브라우저에서 암호화된 SSL를 복호화하여 서버의 공개키를 획득한다.
4. 클라이언트는 랜덤데이터 (A)와 (B)를 조합해서 암호화에 사용할 KEY를 한 쌍 제작한다.
5. 서버의 공개키를 사용하여 4번에서 제작한 KEY 1개를 암호화하여 서버측에 전송한다.
6. 서버는 개인키로 전송받은 KEY를 복호화하여 KEY를 획득한다.(클라이언트가 가지고 있는 KEY와 같은 대칭키이다)
7. 클라이언트와 서버는 대칭키를 변환하여 세션키로 변환하고 이를 활용하여 보안이 적용되는 통신을 시작하게 된다.
이렇게 SSL/TLS handshaking 을 통해 보안이 적용되는 세션을 생성하여 데이터를 주고 받는다 .
대칭키, 공개키, SSL 동작방식에 대한 상세한 설명이 필요하다면 아래 링크 참고하자.
https://break-a-leg.tistory.com/11
HTTPS 의 개념과 동작방식(+ SSL/TLS)
이전에 HTTP란 무엇이며 어떤 특징을 가지고 있는지 정리를 했다. 인터넷 통신의 기본이 되는 HTTP이지만 요즘 URI를 보면 http://www.youtube.com 보다는 https://www.youtube.com 이런식으로 s가 추가되어 있는
break-a-leg.tistory.com
5. 응답 받기
유튜브 서버는 www.youtube.com 이라는 요청을 받게 되고, 이 요청에 해당하는 응답을 보내주게 된다. 유튜브 홈화면을 보여주기 위해 여러 영상들의 썸네일 이미지, 제목, 조회수 등을 응답으로 보내며 브라우저는 이 요청을 받아서 화면에 보여준다.
요약
www.youtube.com 을 입력하게 되면 어떻게 되는지 정리하면 아래와 같다.
1. 캐시를 확인하여 도메인에 해당하는 ip 주소를 확인한다.
2. 캐시에 없다면 DNS 서버에 요청하여 ip 주소를 얻는다.
3. 3-way-handshaking 을 통해 TCP 연결을 한다.
4. SSL/TSL handshaking을 통해 SSL 세션을 만든다.
5. www.youtube.com 를 보내고 홈화면에 해당하는 응답을 받는다.
참고 블로그
브라우저에 google.com을 치면 일어나는 일들
인터넷을 어떻게 일어나는가? | 현대의 삶, 이제 인터넷 없이는 아무 일도 할 수 없는 시대가 와 버렸습니다. 하지만, 인터넷 브라우져에 google.com을 치면 어떠한 일들이 일어나는지 아는 사람들
brunch.co.kr