반응형
www.tistory.com 입력했을 때 발생하는 전체 흐름 개요
우리가 브라우저 주소창에 www.tistory.com을 입력하고 엔터를 치면 단순히 홈페이지가 뜨는 것 같지만, 그 뒤에서는 수많은 복잡한 과정이 일어나고 있습니다. 이 글에서는 해당 과정을 실제 실무에서도 활용할 수 있도록 네트워크 흐름, DNS 시스템, HTTP 통신, 브라우저 렌더링 과정까지 면접 대비용으로 아주 상세하게 설명드리겠습니다.
1. 사용자가 www.tistory.com을 입력했을 때 처음 시작되는 과정 (입력 이벤트 발생)
입력 이벤트와 브라우저 동작
사용자가 주소창에 www.naver.com을 입력하고 엔터키를 누르면, 브라우저는 이 문자열을 URL로 인식하고 이 URL이 유효한 웹 주소인지 판단합니다. 내부적으로는 다음과 같은 일들이 벌어집니다.
- URL 파싱 – 브라우저는 입력된 문자열을 프로토콜, 호스트, 포트, 경로 등으로 구분합니다.
- 예: https://www.tistory.com:443/index.html
- 프로토콜: https
- 호스트: www.tistory.com
- 포트: 443 (https 기본 포트)
- 경로: /index.html
- 캐시 확인 – 브라우저는 먼저 로컬 캐시에 저장된 DNS 기록, 쿠키, 세션, 리소스 등이 있는지 확인합니다.
2. DNS 시스템을 통해 도메인을 IP 주소로 변환하는 과정
DNS(Domain Name System)의 개념과 역할
DNS는 도메인 이름을 IP 주소로 변환해주는 시스템입니다. 사람이 기억하기 쉬운 도메인(www.tistorycom)을 컴퓨터가 이해할 수 있는 IP 주소(예: 223.130.195.95)로 바꿔주는 역할을 합니다.
DNS 조회의 실질적인 과정
- 브라우저 캐시 확인 – 가장 먼저 브라우저는 이전에 방문했던 사이트의 IP를 저장한 DNS 캐시를 확인합니다.
- 운영체제 캐시 확인 – 브라우저에 없으면 OS의 DNS 캐시를 확인합니다. 이곳에 결과가 있으면 바로 반환됩니다.
- 호스트 파일 확인 – OS는 hosts 파일을 체크하여 수동으로 등록된 IP가 있는지 확인합니다.
- 로컬 DNS 서버 질의 (보통 ISP에서 제공) – 이전 단계에서 결과가 없으면, 시스템은 설정된 DNS 서버(예: 8.8.8.8 또는 SK, KT, LGU+ 제공 DNS)로 질의합니다.
- 재귀적(Recursive) DNS 질의 수행
- Root DNS 서버 → .com 담당 TLD DNS → tistory.com의 Authoritative DNS → 최종 IP 주소 반환
- 이 과정은 순차적으로 진행되며, 결과는 TTL(Time-To-Live) 시간 동안 캐시에 저장됩니다.
3. IP 주소를 얻은 후 서버와 통신하는 과정 (TCP/UDP 및 포트)
TCP/IP 연결과 포트의 역할
- 브라우저는 DNS를 통해 얻은 IP 주소로 TCP 연결 요청(SYN 패킷)을 보냅니다.
- 일반적으로 HTTPS는 포트 443을 사용하고, HTTP는 포트 80을 사용합니다.
- 이 과정은 3-way Handshake로 이루어집니다.
- 클라이언트 → 서버 : SYN
- 서버 → 클라이언트 : SYN+ACK
- 클라이언트 → 서버 : ACK
- 연결이 완료되면 이후 HTTP 요청을 보낼 수 있게 됩니다.
4. HTTP/HTTPS 요청이 서버로 전달되는 방식
HTTP Request의 구성
브라우저는 연결된 서버에 GET / HTTP/1.1 등의 요청을 보냅니다. 이때 다음과 같은 정보가 함께 전달됩니다.
- 요청 메서드: GET, POST 등
- 요청 경로
- HTTP 버전
- 헤더 정보 (User-Agent, Host, Cookie 등)
- 필요 시 본문 (Body, POST 요청 등)
HTTPS 통신 시 TLS(SSL) 핸드셰이크
HTTPS는 보안을 위해 TLS(전 SSL)를 사용합니다. 다음과 같은 절차로 암호화된 통신을 시작합니다.
- 클라이언트 Hello → 서버 Hello
- 인증서 교환
- 대칭키를 위한 암호키 교환
- 세션 키 설정 후 암호화 통신 시작
5. 서버에서 응답을 반환하고 브라우저가 화면을 렌더링하는 과정
서버의 응답(HTTP Response)
서버는 클라이언트의 요청을 처리하고, 다음과 같은 구조로 응답을 반환합니다.
- 상태코드 (예: 200 OK, 404 Not Found)
- 헤더
- 본문 (HTML, JSON, 이미지 등)
브라우저의 렌더링 프로세스
- HTML 파싱
- DOM 트리 생성
- CSS 파싱 및 스타일 계산
- 렌더 트리 생성
- 레이아웃 계산
- 페인팅 및 화면 출력
이 모든 과정은 매우 빠르게 진행되어 사용자는 거의 지연 없이 웹페이지를 보게 됩니다.
6. 실무에서 자주 마주치는 문제와 DNS 활용 예시
DNS 문제 발생 시 실무 대응
- 사이트 접속이 안 될 때: ping, nslookup, dig 명령어로 DNS 확인
- DNS 변경: 내부망에서는 사설 DNS 설정 필요
- CDN을 사용할 경우 DNS가 자주 변하므로 TTL 관리가 중요
DNS를 이용한 부하 분산
- 하나의 도메인에 여러 IP를 매핑하여 지역별로 다른 서버에 접속 유도
- DNS Round Robin 방식 사용
정리
- 사용자가 www.tistory.com을 입력하면, 브라우저 → DNS → IP 획득 → TCP 연결 → HTTP 요청 → 서버 응답 → 브라우저 렌더링의 복잡한 과정이 순식간에 진행됩니다.
- DNS는 이 전체 흐름에서 가장 핵심적인 역할을 하며, 실무에서도 트러블슈팅, 부하분산, 보안 설정 등 다양한 목적에 활용됩니다.
- 이러한 기본 네트워크 흐름에 대한 이해는 면접에서도 중요하며, 실제 서비스 운영, 웹 개발, 보안 설정 등에서도 매우 중요하게 작용합니다.
반응형
'CS 공부일지' 카테고리의 다른 글
라이브러리(Library)와 프레임워크(Framework) (0) | 2025.03.31 |
---|---|
컴파일러 언어와 인터프리터 언어의 개념, 차이점 (0) | 2025.03.30 |
CI/CD (Continuous Integration / Continuous Delivery & Deployment) (0) | 2025.03.27 |
클라우드 주요 개념 정리 (가상머신, 온프레미스&오프프레미스, IaaS, PaaS, SaaS, 도커) (1) | 2025.03.26 |
API 개념과 원리 (1) | 2025.03.25 |