www.naver.com을 치면 일어나는 일

주재완·2024년 11월 19일
0

네트워크

목록 보기
2/2
post-thumbnail

가장 기초가 되는 질문이자 네트워크에서 거의 모든 개념을 포함하는 가장 중요한 질문입니다.

작동 과정

www.naver.com을 입력하면 먼저 입력된 도메인 이름을 컴퓨터가 이해할 수 있는 IP 주소로 변환해야 합니다. 이 작업은 DNS(Domain Name Service)가 담당합니다. DNS 서버에 도메인의 IP 주소를 요청하고, DNS는 이를 찾아 반환합니다.

URL 정보와 IP 주소는 HTTP 프로토콜을 사용하여 HTTP 요청 메시지를 생성합니다. 이 과정에서 TCP 프로토콜을 통해 연결을 설정하며, 3-way-handshake라는 절차를 거칩니다.

연결이 완료되면 서버에 데이터를 요청합니다. 서버는 요청받은 데이터를 HTML, CSS, JavaScript 등으로 보내고, 브라우저는 이 데이터를 받아 사용자가 볼 수 있는 화면으로 렌더링합니다.

DNS

DNS(Domain Name System)는 도메인 이름을 숫자로 이루어진 IP 주소로 변환하는 시스템입니다. 사용자가 www.naver.com을 입력하면 브라우저는 다음 과정을 통해 IP 주소를 찾아냅니다.

  1. 캐시 확인
    먼저 로컬 캐시에 www.naver.com에 해당하는 IP 주소가 저장되어 있는지 확인합니다. 보통 인터넷을 사용할 때, 같은 URL에 자주 접근하는 경우가 많다보니 최근에 방문한 적이 있다면, 캐시에 저장된 IP 주소를 바로 사용합니다.

  2. DNS 리졸버(로컬 DNS 서버) 요청
    인터넷 서비스 제공자(ISP)의 로컬 DNS 서버에 질의합니다. 이 서버는 사용자의 지역에서 자주 조회되는 도메인의 IP 주소를 캐싱하고 있어 빠르게 응답할 수 있습니다. 만약 로컬 DNS 서버에서도 IP 주소를 찾을 수 없다면, 질의는 상위 DNS 서버로 이어집니다.

  3. 루트 네임 서버 조회
    로컬 DNS 서버는 가장 먼저 루트 네임 서버에 질의합니다. 루트 네임 서버는 도메인 이름 시스템의 최상위 계층에 위치하며, .com, .org, .net 등 최상위 도메인(TLD)을 관리하는 서버의 위치를 반환합니다.

  4. TLD 네임 서버 조회
    로컬 DNS 서버는 루트 네임 서버로부터 받은 정보를 사용해 .com TLD 서버에 다시 질의합니다. 이 서버는 naver.com에 대한 권한 있는 네임 서버의 위치를 반환합니다.

  5. 권한 있는 네임 서버 조회
    최종적으로 로컬 DNS 서버는 naver.com 도메인을 관리하는 권한 있는 네임 서버에 질의합니다. 권한 있는 네임 서버는 www.naver.com에 정확히 매핑된 IP 주소를 반환합니다.

  6. 결과 반환
    로컬 DNS 서버는 권한 있는 네임 서버로부터 받은 IP 주소를 브라우저에 반환합니다. 이 과정에서 IP 주소는 캐시에 저장되어, 동일한 요청이 있을 경우 더 빠르게 처리할 수 있습니다.

TCP

TCP는 UDP와는 달리 데이터가 안전하고 순서대로 전달되도록 보장하는 프로토콜입니다. 이 과정에서 3-way-handshake는 TCP(Transmission Control Protocol)가 안정적인 연결을 수립하기 위해 사용하는 절차입니다. 클라이언트와 서버 간에 데이터를 전송하기 전에, 서로 연결 준비가 되었는지 확인하고 신뢰를 구축하는 과정을 거칩니다.

  1. SYN(Synchronize)
    클라이언트가 서버에게 연결을 요청합니다. 이 단계에서 클라이언트는 "SYN" 플래그를 설정한 패킷과 초기 시퀀스 번호(Sequence Number)를 서버로 전송합니다.

  2. SYN-ACK(Synchronize-Acknowledge)
    서버는 클라이언트의 요청을 수락하고, 데이터를 보낼 준비가 되었음을 알립니다. 서버는 클라이언트의 요청에 대한 응답으로 "SYN-ACK" 플래그를 설정한 패킷을 전송합니다. 이 패킷에는 클라이언트의 시퀀스 번호에 대한 응답(Acknowledgment Number)과 서버의 초기 시퀀스 번호가 포함됩니다.

  3. ACK(Acknowledge)
    클라이언트는 서버의 응답을 확인합니다. 클라이언트는 "ACK" 플래그를 설정한 패킷을 전송하며, 서버의 시퀀스 번호에 대한 응답(Acknowledgment Number)을 포함합니다. 이 단계가 완료되면 클라이언트와 서버는 데이터 전송을 위한 안정적인 연결을 수립합니다.

랜더링

브라우저는 서버로부터 받은 데이터를 화면에 표시하기 위해 렌더링 과정을 진행합니다. 먼저 HTML 파일을 분석해 DOM 트리를 생성하고, CSS 파일을 분석해 CSSOM 트리를 만듭니다. 이 두 트리를 결합해 렌더 트리를 구성한 후 각 요소의 위치와 크기를 계산합니다. 이 모든 과정이 사용자가 입력한 URL에 대해 브라우저가 보여주는 최종 화면이 됩니다.

참고

TCPSchool - 인터넷이 작동하는 방식

profile
언제나 탐구하고 공부하는 개발자, 주재완입니다.

0개의 댓글

관련 채용 정보