본문 바로가기
개발&프로그래밍

[HTTP] 웹 브라우저 동작 원리 : URL 입력부터 화면 표시까지

by 재아군 2025. 2. 21.

웹 브라우저 동작 원리: URL 입력부터 화면 표시까지

 

1. URL 입력과 파싱

사용자가 브라우저에 URL을 입력하면 다음과 같은 과정이 시작됩니다:

 

URL 파싱

https://www.example.com/path
  • 프로토콜(https://) 확인
  • 도메인(www.example.com) 추출
  • 경로(/path) 식별

 

2. DNS 조회 과정

 

1) DNS 캐시 확인

  • 브라우저 DNS 캐시
  • OS DNS 캐시
  • 로컬 hosts 파일

 

2) DNS 조회 순서

  1. Root DNS 서버 조회
  2. TLD(Top Level Domain) 서버 조회
  3. Authoritative DNS 서버 조회
example.com -> 93.184.216.34

 

3. TCP 연결 수립

 

TCP 3-way Handshake

클라이언트 → SYN → 서버
클라이언트 ← SYN + ACK ← 서버
클라이언트 → ACK → 서버

 

HTTPS의 경우

  • TCP 연결 후 TLS(SSL) Handshake 추가
  • 인증서 검증
  • 대칭키 교환

 

4. HTTP 요청 전송

 

요청 헤더 예시

GET /path HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
Accept-Language: ko-KR
Connection: keep-alive

 

5. 서버 응답 처리

 

응답 헤더 예시

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
Cache-Control: max-age=3600

 

6. 브라우저 렌더링 과정

 

1) DOM 트리 생성

<!DOCTYPE html>
<html>
<head>
    <title>Example</title>
</head>
<body>
    <h1>Hello</h1>
    <p>World</p>
</body>
</html>

 

2) CSSOM 트리 생성

h1 {
    color: blue;
    font-size: 24px;
}

 

3) 렌더 트리 구축

  • DOM 트리와 CSSOM 트리 결합
  • 화면에 표시될 요소만 포함
  • display: none 요소 제외

 

4) 레이아웃(리플로우)

  • 요소들의 정확한 위치와 크기 계산
  • 뷰포트 내에서의 정확한 좌표 결정

 

5) 페인팅

  • 실제 화면에 픽셀을 그리는 과정
  • 텍스트, 색상, 이미지, 테두리 등 처리

 

7. 성능 최적화 포인트

 

1) DNS 최적화

<!-- DNS 미리 조회 -->
<link rel="dns-prefetch" href="//example.com">

 

2) 리소스 최적화

<!-- 중요 리소스 미리 로드 -->
<link rel="preload" href="style.css" as="style">

 

3) 렌더링 최적화

// 레이아웃 스래싱 방지
requestAnimationFrame(() => {
    element.style.width = '100px';
    element.style.height = '100px';
});

 

8. 브라우저 캐시

캐시 종류

  1. 메모리 캐시
  2. 디스크 캐시
  3. 서비스 워커 캐시

 

캐시 제어

Cache-Control: public, max-age=3600
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"

 

9. 보안 고려사항

 

1) HTTPS

  • 데이터 암호화
  • 무결성 보장
  • 인증서 검증

 

2) 보안 헤더

Strict-Transport-Security: max-age=31536000
Content-Security-Policy: default-src 'self'
X-Frame-Options: SAMEORIGIN

 

10. 개발자 도구 활용

 

네트워크 탭

  • 요청/응답 확인
  • 타이밍 분석
  • 헤더 검사

 

퍼포먼스 탭

  • 렌더링 성능 분석
  • 병목 지점 파악
  • 최적화 기회 발견

 

댓글