본문 바로가기
웹 엔지니어 면접 질문/컴퓨터 네트워크

브라우저에 google.com을 쓰면 일어나는 일

by cuziam 2023. 4. 5.

Q: 브라우저 주소창에 google.com을 치면 무슨 일이 일어날까요?

 

<질문의 의도>

길게 말하면 밑도 끝도 없이 말할 수 있는 부분이다. 주 목적은 컴퓨터 네트워크 전반에 대한 이해를 평가하기 위함인 것 같다. 추가적인 질문으로 ‘웹 브라우저에서 HTML문서가 렌더링 되는 과정’에 대해 물어보기 좋아보인다.

 

전략: OSI 5 layer를 중심으로 설명하기. 클라이언트의 입장 뿐만 아니라 서버의 입장에서도 설명해보기.

웹 브라우저가 보내는 데이터는 Application layer, Transport layer, Network layer, Link layer, physical layer를 중심으로 차례대로 설명할 수 있다. 이 때 Link layer랑 physical layer에 대한 부분은 구체적으로 설명하려들면 뇌절이 될 수 있으므로 가볍게 건드리거나 넘어가자.

 

A: 내가 생각한 대답

  1. 클라이언트인 웹 브라우저의 동작부터 설명한다. 웹 브라우저는 소켓을 만든 후에 구글 서버와 연결을 만들고, 연결된 소켓을 통해 HTTP 메세지를 보내야 한다
  2. 어떤 소켓규격이든, 통신을 위해 기본적으로 서버의 IP address와 자신이 사용할 port number가 필요하다. port number는 웹 통신의 디폴트 값인 80이라고 하자. 필요한 것은 IP address이다.
  3. 이 부분에서 DNS에 대한 설명을 시작한다. 웹 브라우저는 도메인 이름을 읽고, 웹브라우저 내부와 OS의 캐시를 확인한다. 매칭되는 도메인 이름이 있는지 확인한다. (구글 정도는 캐시에 있는 경우가 대부분이지만, 면접이 그걸 묻는 게 아니니까 다른 경우를 설명한다.)
  4. 없다면 ISP가 제공하는 기본 도메인 네임 서버를 확인한다.
  5. 여기에도 없다면 ISP는 외부의 네임 서버를 확인하기 시작한다.
  6. 루트 네임 서버부터 서브 도메인을 확인하기 시작한다. 최종적으로 google.com. 도메인과 매칭되는 IP를 ISP의 도메인 네임 서버가 받는다.
  7. ISP의 도메인 네임 서버는 이 IP를 웹브라우저에게 전달한다.
  8. 웹브라우저는 받은 IP를 이용하여 소켓을 만들고 서버와 연결을 시도한다.
  9. 서버는 언제나 소켓을 열고 연결을 기다리고 있다. 클라이언트(웹브라우저)와 서버는 3-way handshake를 거쳐 연결을 확립한다.
  10. 이제 연결을 만들어졌고, 클라이언트는 만들어진 소켓을 통해 서버에게 HTML파일을 달라고 한다. 즉 HTTP-GET request를 실어보낸다.
  11. 서버는 자신의 데이터 베이스에서 일치하는 HTML파일을 찾는다.(추가적으로 서버가 작업을 수행할 수 있지만 이 부분에 대한 설명은 생략), response로 HTML파일을 넘긴다.
  12. 클라이언트는 받은 HTML파일을 렌더링한다.
  13. 추가적인 메세지 교환이 없고, 일정시간이 지나면 timeout으로 인해 소켓 통신이 종료된다. 종료되는 과정은 4-way handshake를 따른다.

*이 분이 꽤 정리를 잘 해놓으셨다.

https://velog.io/@tnehd1998/주소창에-www.google.com을-입력했을-때-일어나는-과정

 

주소창에 www.google.com을 입력했을 때 일어나는 과정

면접에서 나오는 단골 질문이며, 웹 프론트엔드 개발자로써 주소창에 특정 웹 페이지의 주소를 입력했을 때, 어떤 과정을 통해 데이터가 전달되고, 화면에 렌더링되는지를 확실하게 알고 있어

velog.io

 

<추가 질문 가능성>

웹 브라우저는 어떻게 웹 페이지를 렌더링하나요?

CSS파일이나 Javascript파일 같은 경우엔 어떻게 렌더링되나요?

서버는 HTML파일을 어떻게 꺼내올까요?