브라우저
브라우저는 사용자가 인터넷에 접속해 웹사이트를 탐색하고, 콘텐츠를 표시하는 응용 프로그램이다.
예시: Google Chrome, Mozilla Firefox, Microsoft Edge, Safari.
주요 기능
- 사용자가 입력한 URL을 통해 원하는 웹 페이지를 서버에 요청.
- HTML, CSS, JavaScript와 같은 웹 기술을 해석하고 렌더링.
- 다양한 플러그인과 확장 기능 제공.
- 보안 및 개인정보 보호 기능 제공.
브라우저 구성 요소
- 사용자 인터페이스 (User Interface) : 주소창, 북마크, 뒤로 가기 버튼 등 사용자가 직접적으로 상호작용하는 부분.
- 브라우저 엔진 (Browser Engine) : 사용자 인터페이스와 렌더링 엔진 간의 중재자 역할을 한다.
- 렌더링 엔진 (Rendering Engine) : HTML, CSS를 해석하여 화면에 페이지를 표시한다.
- 예: Blink(Chrome, Edge), Gecko(Firefox), WebKit(Safari).
- JavaScript 엔진 : JavaScript 코드를 해석하고 실행한다.
- 예: V8(Chrome, Edge), SpiderMonkey(Firefox), JavaScriptCore(Safari).
- 네트워킹 (Networking) : HTTP/HTTPS를 통해 서버와 통신하며 요청/응답 데이터를 처리.
- UI 백엔드 (UI Backend) : 버튼, 스크롤 바 등 브라우저 내부의 UI 구성 요소를 그린다.
- 데이터 저장소 (Data Storage) : 캐시, 쿠키, 로컬 스토리지, 세션 스토리지 등 데이터를 저장.
브라우저 작동 방식
1. URL 입력 및 DNS 조회 : 사용자가 브라우저 주소창에 URL을 입력한다. 브라우저는 DNS를 통해 도메인 이름을 IP 주소로 변환한다.
2. HTTP 요청 : 브라우저가 서버에 HTTP/HTTPS 요청을 보낸다. 요청에 필요한 정보를 포함한다(메서드, 헤더 등).
3. 서버 응답 : 서버는 요청에 대한 응답으로 HTML 문서를 반환한다. 상태 코드(예: 200 OK, 404 Not Found)와 함께 전송된다.
4. HTML 해석 및 DOM 생성 : 브라우저의 렌더링 엔진이 HTML 파일을 읽고 DOM(Document Object Model)을 생성한다.
5. CSSOM 생성 : CSS 파일을 읽고 해석하여 CSSOM(CSS Object Model)을 만든다.
6. 렌더 트리 생성 : DOM과 CSSOM을 결합해 렌더 트리(Render Tree)를 생성한다. 렌더 트리는 화면에 표시될 요소들만 포함한다.
7. 레이아웃 : 렌더 트리를 기반으로 각 요소의 위치와 크기를 계산한다.
8. 페인팅 (Painting) : 요소의 색상, 테두리, 배경 등을 실제 픽셀로 변환한다.
9. 컴포지팅 (Compositing) : 레이어를 병합하여 최종적으로 화면에 렌더링한다.
브라우저의 비동기 작업 처리
브라우저는 JavaScript 실행, 이벤트 처리, 렌더링 업데이트 등을 효율적으로 처리하기 위해 비동기 처리를 활용한다.
- 콜 스택 (Call Stack) : 동기적 작업이 실행되는 공간.
- 웹 API : 타이머(setTimeout), DOM 이벤트 등 비동기 작업을 처리.
- 이벤트 루프 (Event Loop) : 콜 스택이 비어 있으면 태스크 큐에서 작업을 가져와 실행.
- 태스크 큐 (Task Queue) : 비동기 작업의 콜백이 대기하는 공간.
'인터넷' 카테고리의 다른 글
호스팅 (Hosting) (0) | 2024.12.24 |
---|---|
도메인 이름 (Domain Name) (0) | 2024.12.24 |
HTTP / HTTPS (0) | 2024.12.24 |
인터넷의 동작 방식 (2) | 2024.12.23 |