Q: 브라우저 주소창에 google.com을 치면 무슨 일이 일어날까요?
<질문의 의도>
길게 말하면 밑도 끝도 없이 말할 수 있는 부분이다. 주 목적은 컴퓨터 네트워크 전반에 대한 이해를 평가하기 위함인 것 같다. 추가적인 질문으로 ‘웹 브라우저에서 HTML문서가 렌더링 되는 과정’에 대해 물어보기 좋아보인다.
전략: OSI 5 layer를 중심으로 설명하기. 클라이언트의 입장 뿐만 아니라 서버의 입장에서도 설명해보기.
웹 브라우저가 보내는 데이터는 Application layer, Transport layer, Network layer, Link layer, physical layer를 중심으로 차례대로 설명할 수 있다. 이 때 Link layer랑 physical layer에 대한 부분은 구체적으로 설명하려들면 뇌절이 될 수 있으므로 가볍게 건드리거나 넘어가자.
A: 내가 생각한 대답
- 클라이언트인 웹 브라우저의 동작부터 설명한다. 웹 브라우저는 소켓을 만든 후에 구글 서버와 연결을 만들고, 연결된 소켓을 통해 HTTP 메세지를 보내야 한다
- 어떤 소켓규격이든, 통신을 위해 기본적으로 서버의 IP address와 자신이 사용할 port number가 필요하다. port number는 웹 통신의 디폴트 값인 80이라고 하자. 필요한 것은 IP address이다.
- 이 부분에서 DNS에 대한 설명을 시작한다. 웹 브라우저는 도메인 이름을 읽고, 웹브라우저 내부와 OS의 캐시를 확인한다. 매칭되는 도메인 이름이 있는지 확인한다. (구글 정도는 캐시에 있는 경우가 대부분이지만, 면접이 그걸 묻는 게 아니니까 다른 경우를 설명한다.)
- 없다면 ISP가 제공하는 기본 도메인 네임 서버를 확인한다.
- 여기에도 없다면 ISP는 외부의 네임 서버를 확인하기 시작한다.
- 루트 네임 서버부터 서브 도메인을 확인하기 시작한다. 최종적으로 google.com. 도메인과 매칭되는 IP를 ISP의 도메인 네임 서버가 받는다.
- ISP의 도메인 네임 서버는 이 IP를 웹브라우저에게 전달한다.
- 웹브라우저는 받은 IP를 이용하여 소켓을 만들고 서버와 연결을 시도한다.
- 서버는 언제나 소켓을 열고 연결을 기다리고 있다. 클라이언트(웹브라우저)와 서버는 3-way handshake를 거쳐 연결을 확립한다.
- 이제 연결을 만들어졌고, 클라이언트는 만들어진 소켓을 통해 서버에게 HTML파일을 달라고 한다. 즉 HTTP-GET request를 실어보낸다.
- 서버는 자신의 데이터 베이스에서 일치하는 HTML파일을 찾는다.(추가적으로 서버가 작업을 수행할 수 있지만 이 부분에 대한 설명은 생략), response로 HTML파일을 넘긴다.
- 클라이언트는 받은 HTML파일을 렌더링한다.
- 추가적인 메세지 교환이 없고, 일정시간이 지나면 timeout으로 인해 소켓 통신이 종료된다. 종료되는 과정은 4-way handshake를 따른다.
*이 분이 꽤 정리를 잘 해놓으셨다.
https://velog.io/@tnehd1998/주소창에-www.google.com을-입력했을-때-일어나는-과정
주소창에 www.google.com을 입력했을 때 일어나는 과정
면접에서 나오는 단골 질문이며, 웹 프론트엔드 개발자로써 주소창에 특정 웹 페이지의 주소를 입력했을 때, 어떤 과정을 통해 데이터가 전달되고, 화면에 렌더링되는지를 확실하게 알고 있어
velog.io
<추가 질문 가능성>
웹 브라우저는 어떻게 웹 페이지를 렌더링하나요?
CSS파일이나 Javascript파일 같은 경우엔 어떻게 렌더링되나요?
서버는 HTML파일을 어떻게 꺼내올까요?
'웹 엔지니어 면접 질문 > 컴퓨터 네트워크' 카테고리의 다른 글
TLS(HTTPS)의 동작 원리와 과정 (0) | 2023.04.24 |
---|---|
HTTP에서 GET과 POST의 차이점 (0) | 2023.04.05 |
DNS 동작 과정 (0) | 2023.04.04 |