웹 동작 원리

HyeonWoo·2021년 1월 15일
1

네트워크

목록 보기
2/6
post-thumbnail

사용자가 브라우저에 www.naver.com을 입력했을 때 일어나는 일.

1. 브라우저는 DNS 서버로 가서 웹사이트가 있는 서버의 진짜 주소를 찾는다.

  • 도메인으로 요청을 보낼 수 없기 때문에 DNS Lookup을 수행

  • 순방향 및 역방향 DNS룩업을 처리하는 기능이 있는데, 이를 nslookup이라고 부름.
    *순방향 DNS룩업 : 인터넷 도메인 이름을 사용하여 인터넷 주소(IP)를 알아내는 것.

    *역방향 DNS룩업 : 인터넷 주소(IP)를 사용하여 인터넷 도메인 이름을 알아 내는 것.

  • DNS 기본 동작 방법은 아래 사진과 같다.

  1. PC는 미리 설정되어 있는 DNS(단말에 설정되어 있는 DNS를 Local DNS라 부름)에게 "www.naver.com이라는 hostname"에 대한 IP주소를 물어 본다

  2. Local DNS에게는 "www.naver.com"에 대한 IP 주소"가 있을 수도 있고 없을 수도 있다. 만약 있다면 Local DNS가 바로 PC에게 해당 IP주소를 주게 되고, 없다면 다른 DNS 서버들과 통신을 시작한다.

  3. 먼저 Root DNS 서버에게 해당 IP주소를 아는지 물어본다. 이를 위해 각 Local DNS 서버에는 Root DNS 서버의 정보(IP 주소)가 미리 설정되어 있어야 함.

  4. RooT DNS 서버는 전세계에 13대가 구축 되어 있음.

  5. RooT DNS 서버도 해당 IP 주소를 모른다고 하면 다른 DNS서버에게 물어보라고 응답한다.

  6. 이 다른 서버는 "com 도메인"을 관리하는 서버이다.

  7. 이제 Local DNS 서버는 "com 도메인을 관리하는 DNS 서버"에게 해당 IP주소를 아는지 물어 본다.

  8. 해당 DNS 서버도 IP주소를 알지 못한다면 다른 DNS 서버에게 물어보라고 응답한다. 이 다른 DNS 서버는 "naver.com 도메인"을 관리하는 DNS 서버이다.

  9. 이제 Local DNS 서버는 "naver.com 도메인을 관리하는 DNS 서버"에게 IP주소를 알고 있는지 물어본다.

  10. 해당 DNS 서버는 IP주소가 있다고 응답하게되고, IP주소가 무엇인지 알려주게 된다.

  11. 이를 수신한 Local DNS는 www.naver.com에 대한 IP주소를 캐싱을 하고(이후 바로 응답을 줄 수 있도록)그 IP 주소 정보를 단말(PC)에게 전달 해줌.

이와 같이 Local DNS 서버가 여러 DNS 서버를 차례대로(Root DNS 서버 -> com DNS 서버 -> naver.com DNS 서버)물어봐서 그 답을 찾는 과정을 Recursive Query라고 부름.

2. 그 다음 브라우저는 서버에게 웹사이트의 사본을 클라이언트에게 보내달라는 HTTP 요청 메세지를 서버로 전송함.

  • 클라이언트와 서버 사이에 전송된 모든 데이터는 TCP/IP 연결을 통해서 전송.

3. 이 메세지를 받은 서버는 클라이언트의 요청을 승인하고, "200 OK"를 클라이언트에게 응답한다.

  • 서버는 웹사이트의 파일들을 데이터 패킷이라 불리는 작은 일련의 덩어리들로 브라우저에 전송을 시작함.

  • 웹 서버는 정적인 컨텐츠(HTML, CSS, JS, Image등)를 제공하는 서버이다.

  • WAS는 DB조회나, 어떤 로직을 처리해야 하는 동적인 컨텐츠를 제공하는 서버이다.

4. 브라우저는 이 작은 덩어리들을 완전한 웹 사이트로 조립하고 사용자에게 보여지게 된다.


참고자료
https://developer.mozilla.org/ko/docs/Learn/Getting_started_with_the_web/%EC%9B%B9%EC%9D%98_%EB%8F%99%EC%9E%91_%EB%B0%A9%EC%8B%9D,
https://hoonmaro.tistory.com/26,
https://www.netmanias.com/ko/post/blog/5353/dns/dns-basic-operation

profile
학습 정리, 자기 개발을 위한 블로그

0개의 댓글