본문 바로가기
Study

[STUDY] WEB - 01. 웹(Web) 이란

by 물코더 2022. 6. 17.

 

01. 웹이란

정보 공유 목적의 대표적 인터넷 서비스

하이퍼 텍스트(Hypertext)를 기반으로 서로 관련있는 문서(document)를 연결한 문서의 집합체 (TCP/IP)

※ 하이퍼텍스트(Hypertext)는 참조(Hyperlink)를 통해 문서 간 이동 및 접근 할 수 있는 텍스트

반응형

 

 

웹 주소 구성 (URL)

· URL(Uniform Resource Locator)

 

<Scheme>://<Sub domain>.<Domain>:<Port>/<Directory, path>?<Query>#<Pregment>

 

스킴(Scheme)

· 프로토콜(Protocol)

· 해당 리소스에 접근 프로토콜을 명시

 

서브 도메인(Sub domain)

· URL로 전송 또는 계정 내 IP 주소, 디렉토리로 포워딩 되는 도메인 이름의 확장자

※ blog.naver.com, mail.naver.com ...

 

도메인(Domain)

·문자 등으로 만들어진 주소

※ TLD(Top-Level Domain) 은 도메인의 마지막 가장 끝 부분 (.com, .org ... )

 

포트(Port)

·호스트 서버와 연결 할 소켓(TCP/IP) 포트 ( 기본 웹 포트 : 80 )

 

경로(Directory, Path)

·호스트에서 요청 또는 응답 받을 리소스 경로

 

질의(Query)

·클라이언트가 서버에 리소스를 요청(GET 방식)할 경우 서버 요청에 보낼 파라메터

 

프레그먼트(Pregment)

·페이지 앵커(Anchor)

·페이지에서 이동(스크롤)할 엘리멘트의 ID

 

· URL 은 서버의 문서(페이지), 이미지 등 리소스의 위치 정보 (<Scheme> ~ <Query>)

· URI(통합 자원 식별자, Uniform Resource Identifier)는 URL 의 상위 개념으로 서버의 리소스를 식별할 수 있는 전체 문자열 (<Scheme> ~ <Pregmenet>)

· URI의 하위 개념으로는 위의 URL과 URN(Uniform Resource Name)이 존재

  • 프로토콜을 제외한 <Sub domain> ~ <Pregmenet>
  • 리소스 존재 유무 또는 위치를 이름(Name)으로 특정
  • 리소스 간 중복되는 URN은 존재 할 수 없고, 영구적이고 유일해야 하며 해당 리소스의 접근방법과 위치가 표시 되지 않음

※ URN 은 결과적으로 URL로 변경되어 사용됨


 

브라우저 렌더링(Browser Rendering)

· HTML, CSS, Javascript 등을 클라이언트 브라우저에 그리는 과정

브라우저 구조
브라우저 구조

User Interface : 브라우저에서 주소 표시 줄 등 HTML 페이지 컨텐츠 영역을 제외한 나머지 영역

Browser Engine : User Interface 와 Rendering Engine 간 동작을 제어

Rendering Engine : HTML, CSS를 파싱하여 화면에 표시(render)

 

Networking : HTTP 요청 등 네트워크 호출에 사용

Javascript Interpreter / Javascript Engine : 자바스크립트 코드를 읽고 실행

Display Backend : HTML 기본적인 위젯 표시

 

Data Persistence : Local Storage, Cookie 등 클라이언트 사이드(CS)에서 데이터 저장하는 영역

 

URL 입력

· https://google.com/

· 프로토콜, 도메인, 포트 분석

· 도메인 → IP 전환

1. 로컬 DNS (호스트 파일) 내에서 해당 도메인 검색
2. 로컬 DNS 내에서 해당 도메인 정보가 없는 경우 외부 DNS 에 검색 요청
3. 외부 DNS 로부터 받은 도메인의 IP 정보를 로컬 DNS에 저장 (캐싱) 되어 다음 검색 시 우선적으로 검색 및 사용

 

IP → MAC (Media Access Control) 주소 전환

· 우선적으로 해당 IP를 사용해 로컬 네트워크 내 IP 장치를 검색

※ 로컬 네트워크 내에서 해당 IP를 사용하는 IP 장치(서버)가 없는 경우 게이트웨이를 통해 외부 네트워크에서 검색

· 해당 IP를 사용하는 장치(서버)를 찾으면 *ARP(Address Resolution Protocol) 브로드 캐스트를 통해 MAC 주소로 전환

* ARP(Address Resolution Protocol)은 IP를 MAC 주소로 전환해주는 프로토콜

 

클라이언트 · 서버 연결

· 클라이언트와 서버 간 TCP/IP 세션 연결

· 클라이언트와 서버는 HTTP, HTTPS 프로토콜을 이용해 요청/응답(Request / Response)을 수행

client-server http connect
client-server http connect

 

웹 페이지 (HTML · Javascript · CSS) 코드 렌더링

Web page rendering
웹 페이지 렌더링(Web page rendering)

1. 객체 모델링 (Object Modeling, Parser)

· DOM (Document Object Model)

  - HTML 코드를 DOM Tree로 변환

참조 (https://beomy.github.io/tech/browser/browser-rendering/)

1. Bytes → Characters (변환, Conversion) : HTML 원시 바이트(Bytes)를 HTML 문서 내 정의된 인코딩(Encoding, UTF-8 등) 방식으로 문자 인코딩
2. Characters → Tokens (토큰화, Tokenization) : 변환 과정에서 인코딩 된 문자열을 W3C 표준에 따라 고유 토큰으로 변환
3. Tokens → Nodes (Lexing) : 토큰을 해당 속성 및 규칙을 정의하는 객체(node)로 변환
4. DOM 생성 : 렉싱 과정을 통해 생성된 노드를 트리 구조로 변환

 

· CSSOM (CSS Object Model)

  - CSS 코드를 CSSOM으로 변환 (DOM 생성 과정과 동일, CSS Parser)

 

참조 (https://beomy.github.io/tech/browser/browser-rendering/)

  - CSS는 렌더링 차단 리소스(render blocking resource)

  - CSS는 렌더링 시 반드시 필요한 리소스로 빠른 다운로드를 위해 <head> 태그 안에 정의

  ※ CSS는 HTML(마크업)과 같은 렌더링 엔진(Rendering Engine)에서 파싱을 담당

 

※ Javascript 파서(Javascript Parser)

- 파서 차단 리소스(parser blocking resource)

- 렌더링 엔진에 의해 HTML, CSS 파싱 중 Javascript 코드를 만나게 되면 브라우저는 파싱을 중단하고 Javascript 엔진이 실행 되어 Javascript 코드를 파싱

※ Javascript 코드로 인해 렌더링 엔진의 파싱이 중단되는 것을 막기 위해 <head> 태그가 아닌 <body> 태그가 닫히기 전(코드 하단) 직전에 정의 하거나 <script> 태그의 defer 속성을 사용해 HTML, CSS 등 문서 파싱이 끝난 다음에 Javascript 엔진을 실행 ( HTML5 에서는 <script> 태그에 async(비동기) 속성 추가되어 병렬 처리도 가능 )

 

2. Render Tree 생성

  - 부착(Attachmenet) 과정을 통해 DOM 과 CSSOM 을 결합하여 모든 노드(DOM, CSSOM) 정보를 갖는 Render Tree를 생성

 

참조 (https://beomy.github.io/tech/browser/browser-rendering/)

1. DOM Tree의 루트(root)에서 시작하여 *화면에 표시되는 노드를 탐색
2. 화면에 표시 되는 각각의 노드와 일치하는 CSSOM (스타일 정보)를 적용

* 화면에 표시되지 않는다 는 것은 <head> 태그 또는 CSS 속성이 display : none 인 태그처럼 화면에서 공간을 차지하지 않는 노드를 의미

 

 

3. Render Tree 배치 (Layout / Reflow)

  - Render Tree가 생성되고 화면 (view port) 내에 Render Tree의 각 노드가 정확한 위치와 크기를 계산하는 과정

  - 모든 상대적인 측정 값은 화면에서 절대적인 값(픽셀)로 변환 (CSS 에서의 % 값 등)

 

4. Render Tree 그리기 (Painting, Rasterizing)

  - 배치된 Render Tree(Layout/Reflow)를 화면의 픽셀로 나타내는 과정 (UI 표시)

  ※ Javascript 이벤트 콜백으로 인해 HTML 코드에 업데이트 (Render Tree 변경) 될 경우 다시 Layout(Reflow) → Painting(Resterizing) 을 수행

 

 

반응형

댓글