naver.com을 치면 어떤일이 발생할까?

YEONGHUN KO·2022년 6월 15일
0

WEB

목록 보기
1/14
post-thumbnail

URL이라는 것을 일단 설명해야한다. URL은 Uniform Resouce Locator의 약자로서 resource를 어디서 어떤 방법으로 받을지 설명하는 식별자이다. 보통 protocol(ex> http) + domain name(ex> www.naver.com) + path(ex> /login) 로 이루어져 있다.

이 URL을 입력하거나 클릭하면 아래와 같은 과정을 거쳐 resource를 불러온다.

  • 대기열 => 캐싱 => DNS => 라우팅 => ARP => 초기연결

대기열

  • 주소창 입력에 대한 요청을 대기열에 넣는다.

캐싱

  • 브라우저캐시: 쿠키, 로컬스토리지 등을 포함한 캐시를 말한다. http를 다운로드하는 모든 문서를 보유한다. 이때 캐시가 없으면 DNS로 넘어가고 기존에 캐시가 있으면 캐시에 저장된것을 그대로 사용한다.

DNS(Domain Name System)

  • hostname(domain names)를 컴퓨터가 알아듣기 쉬운 IP서버로 CONVERTING하는 역할을 한다. 일종의 인터넷 전화번호부 라고 보면 된다. 참고로 localhost같은 경우는 DNS를 거치지 않고 바로 본인 PC로 연결된다. 이걸 루프백IP라고 한다.

라우팅

hostname이 ip로 변환되는 과정이다. 이때 라우팅 테이블이라는 것을 통해 목적지의 정보를 찾아갈 수 있다. 라우팅 테이블을 통해 서브 네트워크로 이동하여 목적지 ip로 찾아가는데 이러한 과정을 홉바이홉(hop by hop)이라고 한다.

ARP(Address Resolution Protocol)

컴퓨터간의 통신은 IP주소를 기반으로 통신한다고 알고 있지만 정확히 말하면 IP주소를 ARP라는 것을 통해서 물리적 주소, 즉
MAC(Media Access Control) 주소로 변환한 다음 MAC주소를 이용해서 통신한다.

MAC주소는 12개의 숫자+알파벳으로 이루어져 있다. 우리는 네이버 서버로 향하는 여정위에 있다. 예를들어 네이버 IP주소가 120.70.80.3라고 할때, 이 IP주소를 가지고 있는 MAC주소를 찾아야한다.

그럼 이 네이버 IP주소를 가진 컴퓨터가 IP주소를 변환하여 MAC주소를 알려준다. A6:BE:C3:D3:E3:F1 이라고. 그럼 드디어 네이버 데이터 센터안에 있는 서버에 도착하였다! 이제 관문앞에서 우리가 요청한 resource를 받을 수 있는 자격이 있다는 것을 알려줘야한다.

초기연결

여러가지 방법으로 연결이 되지만 TCP(Transmission Control Protocol)에 의한 three-way handshake 라는 기법을 설명해보려고 한다.

TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 three-way handshake라는 기법을 사용한다.

TCP three-Way Handshake는 TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.

  • [STEP 1]

    A클라이언트는 B서버에 접속을 요청하는 SYN(Synchronize) 패킷을 보낸다. 이때 A클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는SYN_SENT 상태가 되는 것이다.

  • [STEP 2]

    B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK(Acknowledgement) 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다린다. 이때 B서버는 SYN_RECEIVED 상태가 된다.

  • [STEP 3]

    A클라이언트는 B서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는것이다. 이때의 B서버 상태가 ESTABLISHED 이다.위와 같은 방식으로 통신하는것이 신뢰성 있는 연결을 맺어 준다는 TCP의 3 Way handshake 방식이다.

브라우저 랜더링

  1. DOM 트리 구축

  2. 랜더트리와 랜더 레이어 생성

  3. 랜더 레이어 대상으로 layout 설정

  4. 랜더레이어를 대상으로 칠하기(paint)

  5. 레이어 합치기(composite layer) 및 표기

위의 과정을 critical rendering path라고 한다. 더 자세하게 알아보고 싶으면 아래 링크를 들어가보자

캡슐화 비캡슐화

  • tcp/ip 4계층 (어플리케이션/전송/인터넷/링크 계층)을 거치면서 캡슐화 되고 비캡슐화 된다. 어플리케이션 계층에서 링크계층으로 갈때 데이터 양쪽에 헤더가 달리면서 캡슐화되고 서버에서 클라이언트로 갈때(링크에서 어플리케이션 계층으로) 헤더가 떨어져 나가면서 데이터만 남게 되면서 비캡슐화 과정을 거치게 된다.

그럼 tcp/ip 4계층에 대해서 좀 더 자세히 알아보자

profile
'과연 이게 최선일까?' 끊임없이 생각하기

0개의 댓글