주소창에 naver.com을 치면 무슨 일이? [#1]

YoungHo-Cha·2022년 6월 9일
30

기타 공부

목록 보기
1/3

지금부터 아주아주아주아주아주 자세히 살펴보자.

다음과 같이 www.naver.com을 주소창에 쓰고 엔터를 누르면 어떻게 될까?

1. 호스트파일을 검사한다. 🧐

컴퓨터는 가장 먼저 호스트 파일을 검사한다.

🔍 호스트 파일이란?

호스트 파일은 IP 주소와 도메인명을 저장하는 파일이다.

🔍 맥에서 호스트파일을 살펴보자.

맥의 호스트 파일의 경로는 /private/etc/hosts 이다.
윈도우는의 호스트 파일 경로는 C:\Windows\System32\drivers\etc\hosts

터미널을 열고 다음 명령어를 입력해보자.

sudo vim /private/etc/hosts

그럼 다음과 같이 나온다.

123.123.123.123 abc.com 라고 입력한 후 주소록에 http://abc.com 을 입력하면

http://123.123.123.123 으로 접속을 요청한다.

근데 여기에는 naver.com이 보이지 않는다.

2. DNS Cache를 뒤져본다. 🧐

앞서 말한 호스트 파일에는 naver.com에 대한 정보가 없다.

그러면 DNS 질의했던 결과를 저장하는 DNS Cache를 뒤져본다.

윈도우에서는 다음 명령어로 DNS Cache를 확인할 수 있다.
(맥은 아무리 검색해도 안나오네.. 아시면 댓글 부탁드려요!)

ipconfig / displaydns

그럼 다음과 같이 정보가 나온다.

레코드 이름. . . . . : docs.google.com
레코드 유형. . . . . : 1
살 시간. . . . : 21
데이터 길이. . . . . : 4
섹션. . . . . . . : 대답
A (Host) Record. . . : 172.217.6.174

출처 : ko.eyewated.com

위 파일 결과가 내 컴퓨터라고 생각하고 없다는 것을 안다.

그러면 질의를 하게 된다.

3. DNS 질의 🧐

DNS 질의를 하는 방법은 컴퓨터의 환경(공유기 환경, 노공유기 환경, DNS 설정세팅)마다 다르다.

해당 부분은 스킵하고, 어쨌든 DNS 질의를 하게된다.

DNS 질의하는 것을 살펴보자.

🔍 로컬 DNS 서버

로컬 DNS 서버란 무엇인가?

현재 사용하고 있는 인터넷 제공사의 DNS 서버를 말한다.

그럼 직접 질의를 해보자!

터미널에 다음의 명령어를 입력하자.

nslookup naver.com 8.8.8.8

nslookup은 DNS에 직접 쿼리를 날려서 결과를 받아오는 리눅스 명령어이다.

naver.com의 ip주소를 볼 수 있다.

그럼 저거를 통해서 들어가볼까?

엔터 꾹

네이버가 나온다!

위와 같은 과정을 통해서 ip주소를 획득했다.

🔍 여기서 더 중요한 내용이 있다.

naver 처럼 큰 회사는 CDN, GSLB 를 이용할 것이다.

CDN, GSLB(Global Server Load Balancing)란?

DNS 서버는 도메인 명을 통해서 ip 주소를 알려주는 서버이다.
서버가 1개라면 상관없다. 하지만 네이버와 같은 아주 사용자가 많은 회사는 서버를 여러개를 둔다. 각 서버마다 ip주소가 다를 것이다. 각 ip주소는 dns 서버에 naver.com - 각 ip주소로 등록이 되어 있을 것이다.

그러면 DNS 서버는 요청 1개가 들어왔을 때 어떤 ip주소를 알려주어야 할까?

정답은 요청마다 재각각으로 ip주소를 알려준다.

재각각으로 ip주소 결정하는 내용은 많다.

  1. 요청자와 가장 가까운 곳(요청자의 ip를 통해 파악)에 존재하는 서버의 ip 주소를 알려준다.

  2. 서버의 상태가 좋은 곳으로 알려준다.(health check) 요청자가 서울사람인데, 서울의 서버가 죽었다고 치자. 이 때 DNS 서버가 서울 서버의 ip로 주면 요청자는 해당 서버에서의 요청을 받을 수 없다.

  3. 부하 분산을 위해 서버들중 가장 요청이 적은 서버를 알려준다.

등등
아주 많은 이유로 ip 주소를 알려준다.

그 다음은?

4. TCP 연결을 하자! 🧐

이유는 HTTP 통신을 해야하기 때문에 TCP 연결을 한다.

🔍 TCP 연결이란?

안정적으로 데이터를 교환할 수 있도록 하는 전송제어 프로토콜이다.

TCP 하나만으로 책 한권이 나오니까 생략하자.

TCP 연결이 성공하면 HTTP Request가 날아가게 된다.

5. HTTP Request 🧐

모든 연결이 성공을 하였고, 사용자가 요청한 요청문을 이제야 보내게 된다

6. HTTP Response 🧐

서버는 해당 요청을 받고 요청에 대한 응답을 내려주게 된다.

🧐결론

정답 : 네이버 홈페이지가 나온다.

profile
관심많은 영호입니다. 궁금한 거 있으시면 다음 익명 카톡으로 말씀해주시면 가능한 도와드리겠습니다! https://open.kakao.com/o/sE6T84kf

2개의 댓글

comment-user-thumbnail
2022년 6월 12일

처음 알게된 게 많네요! 잘 읽었습니다

답글 달기
comment-user-thumbnail
2022년 10월 28일

잘 읽었습니다. 감사합니다.
이런 류의 시리즈 글이 velog 에 많으네요 ㅎㅎ

답글 달기