1013 단어
5 분
웹 통신 흐름 (google 접속 시 일어나는 일)
어째선지 가끔 물어봐서 정리하게 되는 것인데, 쉽게 풀어서 적어봄
1. 개요
브라우저 주소창에 www.google.com을 입력하고 엔터를 치면, 사용자가 보는 화면이 뜰 때까지 네트워크 상에서는 많은 과정이 일어남
NOTE크게 IP 주소 획득(DNS), 서버 연결(TCP/IP), 데이터 요청 및 수신(HTTP), 화면 렌더링 단계로 나눌 수 있음
2. 주요 단계별 상세 흐름
IP 주소 찾기 (DNS Lookup)
브라우저는 사람이 이해하기 쉬운 도메인 이름(google.com)을 컴퓨터가 이해하는 IP 주소(142.250.xxx.xxx)로 변환해야 함
- 브라우저 캐시 확인: 브라우저는 이전에 방문한 적이 있는지 자신의 캐시를 먼저 찾아봄
- OS 캐시 확인: 브라우저에 없으면 운영체제(OS)의 hosts 파일이나 캐시를 확인
- Router 캐시 확인: 공유기(Router)의 캐시 확인
- ISP(통신사) DNS 서버 요청: 위 단계에 모두 없으면, 설정된 DNS 서버(보통 통신사 제공)에 요청을 보냄
- 재귀적 쿼리 (Recursive Query):
- Root DNS 서버 →
.com관리 서버 →google.com관리 서버 순으로 물어보며 최종 IP 주소를 획득
- Root DNS 서버 →
서버와 연결 수립 (TCP Connection)
IP 주소를 알았으니 구글 서버와 통신할 준비하는데, 이때 신뢰성 있는 전송을 위해 TCP/IP 프로토콜을 사용
- 3-Way Handshake: 클라이언트와 서버가 서로 연결을 맺기 위해 3단계 절차를 거침
- SYN: 클라이언트 → 서버 (연결 요청)
- SYN + ACK: 서버 → 클라이언트 (요청 수락 및 연결 요청)
- ACK: 클라이언트 → 서버 (수락 확인)
- HTTPS (TLS/SSL Handshake): 보안 연결을 위해 암호화 키를 교환하는 과정이 추가됨 (데이터 암호화 준비)
데이터 요청 및 응답 (HTTP Request/Response)
연결이 되면 실제 데이터를 달라고 요청
- Request (요청): 브라우저가 구글 서버에
GET / HTTP/1.1같은 메시지를 보냄 (메인 페이지 줘) - Processing (처리): 구글 서버(웹 서버 → WAS → DB)가 요청을 받아 필요한 데이터를 찾거나 가공함
- Response (응답): 서버가 찾은 HTML 문서를 HTTP 상태 코드(200 OK 등)와 함께 브라우저로 보냄
브라우저 렌더링 (Rendering)
서버로부터 받은 HTML 데이터를 사용자가 볼 수 있는 화면으로 그림
- HTML 파싱: HTML을 분석하여 DOM Tree 생성
- CSS 파싱: CSS를 분석하여 CSSOM Tree 생성
- Render Tree 생성: DOM과 CSSOM을 합쳐 실제 화면에 표시될 요소들로 트리를 만듦
- Layout (Reflow): 각 요소가 화면 어디에 위치할지 크기와 좌표를 계산함
- Paint: 계산된 위치에 색을 칠하고 픽셀을 그림
- Composite: 여러 레이어를 합성하여 최종 화면을 보여줌
3. 핵심 용어 정리
- DNS (Domain Name System): 도메인 이름을 IP 주소로 바꿔주는 전화번호부 같은 시스템
- TCP (Transmission Control Protocol): 데이터가 누락 없이 안정적으로 전송되도록 돕는 프로토콜
- 3-Way Handshake: TCP 연결을 맺기 위한 3단계 인사 과정
- HTTP/HTTPS: 웹에서 데이터를 주고받기 위한 규약 (S는 Secure, 보안 강화)
- 렌더링(Rendering): HTML/CSS 코드를 해석해서 눈에 보이는 화면으로 그려내는 과정
TIP
- 보통 연계기 들어가기 좋은 질문이 ‘구글 접속할 때 일어나는 일’ 입니다.
- 이거 하나로 꼬리 질문 수십개 만들 수 있는데, 그냥 이 페이지에 적힌 글자나 단어 설명 못하는 건 다 공부하는 편이 좋습니다.
- 쉽게 풀어쓰긴 했는데 서버 운영을 해보지 않았다면 조금 어렵다 느낄 수 있습니다
- OSI 7계층 관점은 저는 꼬리질문 빡세서 그냥 모른다고 합니다
웹 통신 흐름 (google 접속 시 일어나는 일)
https://devlog.jpstudy.org/posts/2025/cs/webgoogle/