본문 바로가기
ComputerScience/Network

[Network] 5. 주소창에 www.naver.com을 쳤을 때 생기는일

by Develaniper 2021. 5. 29.

개요

(글자 드래거? 들을 위한 소소한 목적...) 개념공부에는 안나오지만 배운 내용들을 모두 내포한 질문이다. 사실 인터넷에 치면 기본적인 내용은 확인 할 수 있다. 기술면접의 단골질문 중 하나라 당연한 일이다.. 필자도 한 IT회사에서 이 질문을 받고 신나게 대답을 했다.

 하지만 돌아오는 답변은 "그럼 , 네이버 서버에서 클라이언트가 요청하면 서버 하나에서 다 처리해 줄까요? 여러 클라이언트가 요청하면 어떻게 할 거 같아요?" 와 같은 꼬리질문을 하면서 말문이 막혔다. 아마 로드 밸런싱에 관한 내용에 대해서 공부해 봤는지를 알고 싶으셨던게 아닐까 싶은데 왜그랬는지 그 부분은 공부를 안하고 갔던 부분이었다. 따라서 이 포스팅에는 능력이 닿는 한에서 최대한 자세하게 정리해보고자 한다.

 

 

 1. 간단한 과정

www.naver.com을 쳤을때 일어나는 일

간단한 과정은 인터넷에 치면 이런 과정처럼 간단한 그림을 통해 설명한 것들을 찾아 볼 수 있을 것이다.

 과정에 대해 대략적인 설명을 덧붙이면

 - 브라우저를 열어 주소창에 www.naver.com을 입력한다.   

  1. (www.naver.com)는 도메인 네임으로 되어있기 때문에 DNS에 도메인을 검색하기 위한 요청을 보낸다.
  2. DNS는 일련의 과정을 거친 후 (www.naver.com)에 대응하는 ip주소를 응답으로 돌려준다.
  3. 받은 ip주소를 사용하여 TCP통신을 통해 해당 ip서버에 요청을 보낸다.
  4. 요청을 받은 서버(www.naver.com)는 요청 내용에 대한 일련에 처리 과정을 거처 응답 메시지를 만든다.
  5. 응답메시지를 TCP통신을 통해 다시 클라이언트에게 전송한다.
  6. 브라우저는 받은 응답메시지를 HTTP 프로토콜을 사용하여 웹페이지를 구성하며 사용자에게 Naver 화면을 보여준다.

 

이정도는 누구나 알고 있는 내용이라고 생각한다. 혹은 조금만 찾아본다면 쉽게 찾아볼 수 있는 내용이다.

 

이 포스팅의 목적은 각 단계에서 어떤 일이 발생하는지 자세하게 알아보기 위함이다.

 

2. 세부 과정

1) DNS에서 벌어지는 일

도메인의 이름을 한 서버에서 관리하기란 매우 어렵다.(도메인의 수가 매우 많기 때문) 따라서 DNS resolver는 호스트에게 직접적으로 도메인 주소를 받아 다음과 같은 과정을 통해 IP를 제공하는 역할을 한다.

 DNS 서버에 검색을 하게되면 다음과 같은 일이 벌어진다.

  1. 간략한 과정을 통해 브라우저에 도메인 주소를 치면 DNS로 접근한다고 했다. 이때 DNS가 여기서는 DNS resolver이다.
     -DNS resolver는 LAN에 있을 수 있고 인터넷 서비스 프로바이더, WIFI, 혹은 제 3자일 수 도 있다. Local DNS라고 설명하는 곳도 있는데 같은 역할이라고 생각하면 될것 같다.
  2. DNS resolver는 처음에 이 주소를 Root Name Server에 보내 도메인 주소에 대해 묻는다.
  3. Root Name Server는 이 요청에 대해 "나는 모르고 .com을 관리하는 서버가 알거야" 라고 resolver에 전달한다.
  4. resolver는 다시 .com을 관리하는 .com Top-Level Name Server에 도메인 주소에 대해 묻는다.
    - Top-Level Name Server는 국가코드 최상위 도메인(.kr, .jp, .us)등과 일반최상위 코드(.com, .net, edu, .org, .int, .gov, .mil)을 담당한다.
  5. Top-Level Name Server는 naver.com을 관리하는 Name Server를 알려준다.
  6. resolver는 또 다시 해당 Name Server에 도메인 주소에 대해 묻는다.
  7. naver.com의 ip주소를 가지고 있는 마지막 Name Server는 최종적인 ip주소를 resolver에게 제공한다.
  8. naver의 ip주소를 알아낸 resolver는 사용자에게 ip주소를 전송하게 된다.

 

DNS 서버는 위와 같은 구조로 되어 있다.(대략적으로만 알아두면 좋을것 같다. _예시가 생각이 안난..)

2) 브라우저에서 서버(www.naver.com)에 접근하면 바로 데이터를 줄까?- handsake

우선 서버에 접근을 하게되면 TCP통신의 전처리인 3-way-handshake이 일어날 것이다. 3-way-handshake과정이 끝나면 SSL handshake과정이 일어날 것이다. 이는 이전 포스팅을 참고하면 될것 이다.  위의 1.간단한 과정에서는 4번과 5번사이에 발생하는 일이다.

 또한, 연결을 종료한 후 TCP의 후처리 과정인 4-way-handshake과정이 일어날 것이다. 서버가 브라우저에 모든 정보를 보낸후 통신이 마무리 될 것이다.

2021.05.21 - [ComputerScience/Network] - [Network] 2.HTTP, HTTPS

3) 로드밸런싱

트래픽이 서버의 처리량보다 많아지게 된다면 부하를 견디지 못해 처리량이 매우 느려지고 모든 클라이언트에게 적절한 서비스를 제공 하지 못할 것이다. 따라서 서버 중간에 로드밸런서를 두어 부하를 분산하는 방법으로 1.간단한과정 4번에서 처리하는 프로세스이다.

2021.05.27 - [ComputerScience/Network] - [Network] 3.로드밸런싱(Load Balancing)

4) 프록시 서버

프록시 서버(Proxy Server)란 보안상의 이유로 직접 통신할 수 없는 두 점 사이에 통신을 할 경우 중계기로서 대리로 통신을 수행하는 기능을 가리켜 '프록시', 그 중계 기능을 하는 것을 프록시 서버라고 부릅니다.

 

[1] 특징

 프록시 서버는 클라이언트 입장과 서버입장에서 서로 상반된 역할을 한다. 즉, 서버는 프록시 서버를 클라이언트로 클라이언트는 프록시 서버를 서버로 인식한다. 

[2] 종류

 서버의 의치에 따라 크게 2가지로 분류할 수 있다.

 

- Forward 프록시

 프록시 서버를 내부망 사용자들과 외부망사이에 위치시키는 것이다. Forward프록시 서버는 내부(망) 사용자의 요청에 따른 원격 서버의 응답 리소스 가져와 요청한 사용자에게 돌려주는 역할을 수행한다. 만일 캐시된 데이터가 남아있다면 다음 요청시 캐시된 데이터를 제공해 준다. 이 서버는 로컬 디스크에 데이터를 저장하며 내부망 사용자들은 브라우저를 이용해 프록시 서버 사용설정을 해야하므로 프록시 서버를 사용하고 있다는 것을 인식 할 수 있다. 
- 장점 : 대역폭 사용을 감소시킬 수 있고(캐싱) 접근 정책 구현에 있어 다루기 쉬우면서 비용이 저렴하다는 장점을 가짐.
- 사용자에게 정해진 사이트만 연결할 수 있는 등 웹 사용환경을 제한할수 있어 기업환경에서 많이 사용함

 

- Reverse 프록시

 프록시 서버를 인터넷과 인터넷 혹은 인트라넷 리소스 앞에 위치시키는 방식이다. 이 방식을 사용하면 클라이언트들이 프록시 서버에 연결된 사실을 알지 못하고 사용자가 서버에 직접 접근하는 것 처럼 동작한다.

 Reverse프록시를 이용하면 보안상 유리하다. DMZ라고하는 내부 네트워크와 외부 네트워크 사이에 위치하는 구간이 있으며, 이구간에는 메일, 웹, FTP 서버등 외부 서비스를 제공하는 서버들이 위치함

 실제 서비스를 DMZ내부에 두는 이유는 WAS는 DB서버와 연관되어 있기 때문에 DB도 WAS가 해킹당하면 DB도 위험해지기 때문이다.

[3] 기능

  1. 요청의 내용 캐시 -> 시간절약 & 트래픽 감소
  2. 간접 통신
  3. 보안 ( DMZ, 끝 양단의 정보를 알 수 없음, 
  4. 지역네트워크 우회 ( VPN역할)

 

 

 

참조

https://sophia2730.tistory.com/entry/DNS-주소창에-wwwnavercom을-치면-일어나는-일
https://aws.amazon.com/ko/route53/what-is-dns/
https://ns1.com/resources/what-is-dns

차후에 볼만한 것

https://d2.naver.com/helloworld/59361(브라우저 동작-프론트)
https://m.blog.naver.com/tkdldjs35/221977544533(자세한 정리)
https://rexiann.github.io/2020/12/28/what-happens-with-url.html
https://velog.io/@rtyu1120/브라우저에-google.com을-치면-무슨-일이-일어날까-아니-진짜로-네트워크편(자세한 정리)

 

 

댓글