View

300x250

웹브라우저에 URL을 입력하면

내가 PC의 주소창에다가 www.naver.com 을 입력하면 어떤 경로를 거쳐 네이버 화면이 보여지는가?

웹브라우저에서 URL을 입력하고, 이를 통해 OS가 서버에 접근하기 위해서는 서버의 IP 주소를 알아야 함.

  1. 서버 IP 주소를 알기 위해서는 PC 내에 있는 hosts 파일을 찾아본다.
    mac에 있는 hosts 파일은 대략 이렇게 생겼다. /etc/hosts 경로에서 찾을 수 있는데, 생각보다 웹사이트 주소가 기록된 게 없네..? 당황스러웠다.
  2. 그 다음에는 DNS Cache를 찾아본다. 이전에 질의한 IP 주소들을 캐싱해둔 파일에서 찾고자 하는 도메인에 대한 IP 주소를 확인할 수 있다.GPT를 찾아보니 이런 명령어로 쉽게 dns 캐시의 내용을 확인할 수 있다고 했는데, 이번에도 출력이 텅텅 비어있었다. 나의 맥북은 DNS 캐시를 알아서 새로고침 하면서 관리를 하고 있었던건가 ?~? 요 부분은 좀 더 확인해봐야겠다.

  3. 여기에 해당 IP에 대한 정보가 없다면 PC의 설정에 따라 공유기에 질의를 하거나 DNS에 직접 질의를 진행한다. DNS는 여러 계층 구조의 분산형 DB를 가지고 있음. 여기에서 질의를 통해 서버의 IP 주소를 반환하게 된다.
    Root DNS Server → kr DNS Server → cau.ac.kr DNS Server → Local DNS Server → …

    만약 cau.ac.kr 에 대한 요청을 보내면
    1. 로컬 캐시에서 cau.ac.kr의 IP 주소를 찾아봄 → 있으면 해당 IP 사용. 없으면 요청 시작
    2. root Server 에서 kr DNS Server를 찾음 (Local DNS가 다시 요청)
    3. kr Server 에서 cau.ac.kr 을 찾음 (Local DNS가 다시 요청)
    4. 여기에 대한 IP 주소를 받음 + 로컬 캐시에 해당 IP 저장하기
    5. IP 주소를 통해 접속 시도
    이 시점에, Global Service의 경우 GSLB(Global Server Load Balancing)를 사용하기도 한다.
    1. 사용자가 DNS에 대한 쿼리를 보내면 이를 GSLB에게 보냄
    2. GSLB는 사용자의 위치(접속자의 IP를 통해 파악), 네트워크 환경(제일 가까운 서버가 죽어버림) 등을 고려하여 해당 도메인을 활용하는 여러 서버 (CDN - Content Delivery Network) 중 가장 빠르게 통신이 가능한 적합한 서버를 선택
    3. 선택한 서버의 IP 주소를 DNS 응답으로 반환

  4. PC가 도메인에 대한 IP 주소를 확득한다.
  5.  획득한 IP 주소를 기반으로 서버에게 TCP 연결을 시도한다. (HTTP 통신 프로토콜은 TCP 연결을 기반으로 함)
  6. TCP 연결이 성공하면, HTTP Request를 전송
  7. 이에 대한 Reponse가 PC로 들어옴
  8. PC의 브라우저는 이 response data를 바탕으로 화면을 구성하여 보여줌

 

도메인을 입력했을 때부터 이에 대한 응답을 받는 경로에 대한 가장 간단한 경로를 나열하면 요렇게 볼 수 있다. 이걸 기준으로 앞으로 배우는 내용들을 조금씩 확장하기!

샤라웃

https://www.youtube.com/watch?v=GAyZ_QgYYYo

 

320x100

'학부생 CS' 카테고리의 다른 글

VSCode 에서 JDBC로 MySQL 연결하기 / MacOS  (0) 2024.04.09
Share Link
reply
반응형
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31