웹 브라우저의 동작

✒️ 2025-05-30 09:47 내용 수정


원본 자료 : mdn web docs 웹 브라우저 동작

왜 동작을 알아야 할까

개발자는 웹 브라우저의 동작을 이해함으로써 웹 최적화를 적용한 웹 사이트를 제공하여 사용자의 웹 경험을 개선할 수 있다.


1. 탐색(Navigation)

탐색 과정
DNS 조회 -> TCP 핸드셰이크 -> TLS 협상

DNS 조회

DNS 참고.

  1. 사용자가 웹 페이지를 요청하면 브라우저는 먼저 해당 페이지의 자원이 어디 있는지 찾는다.
  2. 브라우저는 DNS 조회를 요청하고, 이름 서버는 이 요청을 받아 IP 주소로 응답한다.
    • www.test.com -> 000.000.000.000으로 변환
  3. 최초 요청 후 IP는 일정 시간 동안 브라우저나 운영체제 등에 일정 시간 동안 저장(캐시) 한다.
  4. 이후 캐시된 IP를 사용하여 후속 요청 속도를 높인다.

🛠️ 발생할 수 있는 문제점 및 주의점

<html>
	<head>
		<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto">
	</head>
	<body>
		<img src="https://images.example.net/photo.jpg">
	</body>
</html>

TCP 핸드셰이크와 TLS 협상

  1. 브라우저가 IP 주소를 확인한 후엔 서버와 TCP 3방향 핸드셰이크를 통해 연결을 설정한다.
    • TCP 3방향 핸드셰이크 : TCP는 TCP 세션을 협상하고 시작하기 위해 3가지 메시지(SYN, SYN-ACK, ACK)를 사용하여 IP 기반 네트워크를 통해 TCP/IP 연결을 설정한다.
  2. TCP 핸드셰이크 후 브라우저와 서버는 HTTPS를 이용한 보안성 있는 연결인 TLS 협상을 진행한다.
    • TLS : 디지털 인증서를 제공하도록 요구하여 네트워크 상에서 안전하게 통신하기 위해 사용된 네트워크 보안 프로토콜

🛠️ 발생할 수 있는 문제점 및 주의점


2. 응답(Response)

HTTP(Hyper Text Transfer Protocol), 네트워크 참고.

  1. 탐색의 과정을 거쳐 브라우저와 웹 서버가 연결되면 브라우저는 유저 대신에 초기 HTTP GET request 요청을 보낸다.
  2. 서버는 요청을 받으면 관련 응답 헤더와 함께 자원을 브라우저로 전송한다.
  3. 데이터를 주고 받을 때 TCP 패킷은 전송 중에 세그먼트로 분할된다.
  4. TCP의 순서 보장 특성으로 인해 일정 개수의 세그먼트를 보낸 후 클라이언트로부터 ACK 패킷 형태로 승인을 받아야 한다.

3. 구문 분석(Parsing)

DOM 트리 구축

🛠️ 발생할 수 있는 문제점 및 주의점

프리로드 스캐너(Preload scanner)

CSSOM 구축

JavaScript 컴파일

접근성 트리 구축(Accessibility Tree)


4. 렌더(Render)

브라우저 렌더링 참고

스타일(Style)

레이아웃(Layout)

  1. 렌더 트리를 만든 후에 레이아웃이 시작되며, 렌더 트리의 루트부터 시작하여 각 객체의 정확한 크기와 위치를 결정한다.
    • 레이아웃 : 렌더 트리에 있는 모든 노드의 너비, 높이, 위치를 결정하는 프로세스다.
      • 처음에 노드의 사이즈와 위치를 결정한다.
  2. 크기를 모르는 이미지와 같은 요소들의 위치와 크기 결정을 리플로우 때 진행한다.
    • 리플로우 : 레이아웃 이후에 있는 페이지의 일부분이나 전체 문서에 대한 크기나 위치에 대한 결정이다.

페인팅(Painting)

🛠️ 발생할 수 있는 문제점 및 주의점

합성(Compositing)


5. 상호작용(Interactivity)

🛠️ 발생할 수 있는 문제점 및 주의점