당신이 인터넷으로 웹 페이지에 접속 할 때 어떤 네트워크 작용이 일어나는지 설명하는 것. "어느정도로 자세히 설명해야하는가?" 에 대한 명확한 기준은 없지만, 대학 시절 배운 지식만으로도 충분히 자세히 설명할 수 있다.
이 세상의 대부분 웹 서버는 모두 IP 주소를 가지고 있다. 당신이 인터넷을 서핑하는 것도, 해당하는 IP주소로 접속하여 그 웹서버가 제공하는 데이터를 보는 것이다. 즉, 브라우저에 IP 주소를 직접 입력하면 이 포스팅에서 설명할 대부분 과정을 생략하고 웹 사이트에 접속할 수 있다.
▶네이버의 IP주소를 직접 입력하여 접속한 모습, nslookup 명령어로 DNS서버에서 IP주소를 찾았다.
이렇게 접속하면 속도도 뭔가 빠른것 같고(실제로 더 빠르긴 하지만 체감하기 어렵다.) 전과 다름없는 웹 서핑을 즐길 수 있지만, 당신이 접속하는 모든 웹페이지의 IP주소를 외우거나 메모하는 것은 매우 힘들다. 그래서 도메인(Domain)이라는 개념이 등장했다.
도메인은 네트워크상에서 컴퓨터를 식별하는 호스트명을 말한다.(출처: 위키피디아) 즉, 도메인은 IP주소를 알기쉬운 문자열로 매핑한 것이라고 할 수 있다. (여러개의 도메인이 하나의 IP주소로 매핑될 수도 있다.)
▶DNS서버의 역할을 한눈에 나타낸 그림. 브라우저는 DNS를 통해 도메인에 해당하는 IP주소를 알아낸다.
이러한 도메인 정보를 담고 있는 서버가 바로 DNS 서버이다. DNS 서버는 IP주소와 도메인의 매핑정보를 관리하면서, 도메인 혹은 IP 주소를 묻는 요청이 오면 이에 응답한다. 게다가 DNS에도 캐시가 있어서, 자주 요청을 받는 정보는 캐시로 관리를 한다.
당신이 브라우저로 웹사이트에 접속할 때 일어나는 일은 요약하면,
"브라우저에 도메인을 입력하면 → DNS서버에 IP주소를 요청 → 수신한 IP주소에 해당하는 웹서버에 접속"
실제 면접 상황에서 이렇게 대답을 하기에는 조금 아쉬운 면이 있다고 생각할 것이다.(수박 겉핥기..) 포스팅을 더 이어서, 더 자세한 과정을 아래에 설명한다.
1. 로컬PC의 hosts파일 확인
로컬PC의 C:\Windows\System32\drivers\etc 경로(윈도우 설치 경로에 따라 조금 차이가 있을 수 있음)에는 hosts라는 파일이 있다. 이 파일을 메모장으로 열어보면, IP주소와 도메인 주소를 설정할 수가 있다. 이 파일은 PC의 자체 DNS역할을 하며, 브라우저는 가장 먼저 이 파일을 확인하여 입력한 도메인의 매핑정보가 존재하는지 확인한다.
▶로컬 PC의 hosts 파일 내용
2. DHCP&ARP
대부분 가정집에서는 DHCP로 인터넷 접속을 하고 있을 것이다. DHCP는 Dynamic Host Configuration Protocol의 약자로, 호스트의 IP주소 및 TCP/IP 설정을 클라이언트에 자동으로 제공하는 프로토콜이다. 사용자의 PC는 DHCP서버에서 사용자 자신의 IP주소, 가장 가까운 라우터의 IP주소, 가장 가까운 DNS서버의 IP주소를 받는다. 이후, ARP 프로토콜을 이용하여 IP주소를 기반으로 가장 가까운 라우터의 MAC주소를 알아낸다.
▶DHCP Server의 동작 개념도. 클라이언트가 인터넷 접속을 시도하면, IP와 기본정보를 제공해준다.
3. IP 정보 수신
2의 과정을 통해 외부와 통신할 준비를 마쳤으므로, DNS Query를 DNS 서버에 송신한다. DNS 서버는 이에 대한 결과로, 웹 서버의 IP 주소를 사용자 PC에 돌려준다. DNS서버가 도메인에 대한 IP 주소를 송신하는 과정은 약간 복잡하다. (더보기 클릭)
(출처: https://www.youtube.com/watch?v=2ZUxoi7YNgs#action=share)
사용자의 PC는 가장 먼저, 지정된 DNS서버(우리나라의 경우 통신사 별로 지정된 DNS서버가 있다.)에 DNS Query를 송신한다.(http://www.naver.com으로 가정하자) 그 후 지정된 DNS서버는 Root 네임서버에 www.naver.com을 질의하고, Root 네임서버는 .com 네임서버의 ip주소를 알려준다.
그 후 .com 네임서버에 www.naver.com을 질의하면 naver.com 네임서버의 ip주소를 받고, 그곳에 질의를 또 송신하면 www.naver.com의 IP주소를 수신하게 된다.
이와 같이 여러번 왔다갔다 하는 이유는, 도메인의 계층화 구조에 따라 DNS서버도 계층화되어있기 때문이다. 이렇게 계층화되어 있으므로 도메인의 가장 최상단, 즉 가장 뒷쪽(.com, .kr 등등)을 담당하는 DNS서버는 전세계에 13개 뿐이다.
4. 웹 서버 접속
이제 웹 서버의 IP주소까지 알았다. Http Request를 위해, TCP Socket을 개방하고, 연결한다. 이 과정에서 3-Hand-Shaking이 일어난다. TCP 연결에 성공하면, Http Request가 TCP Socket을 통해 보내진다. 이에 대한 응답으로, 웹 페이지의 정보가 사용자의 PC로 들어온다.
-끝-
출처및참고
https://merzcharmy.wordpress.com/
http://blog.daum.net/haionnet/560
http://studyforus.tistory.com/209
출처: https://preamtree.tistory.com/35 [Preamtree의 행복로그]
'Study > 기술면접' 카테고리의 다른 글
[기술면접] CS 기술면접 질문 - 프로그래밍 공통 (1/8) (0) | 2021.08.12 |
---|---|
[기술면접] CS 기술면접 질문 - 데이터베이스 (6/8) (0) | 2021.08.12 |
초보 웹 개발자를 위한 학습 안내서 (0) | 2021.08.11 |
IT/기술면접 - 웹 아키택처와 WAS(Wep Application Server) (0) | 2021.08.11 |
IT/기술면접 - Servlet, CS, 네트워크, Spring (0) | 2021.08.11 |