DB
DBMS란?
DBMS는 데이터베이스 관리 시스템이다.
사용자가 데이터에 관한 정보를 가능한 한 효율적이고 효과적으로 구성, 복원 및 검색 할 수 있도록하는
응용 프로그램 모음이다.
RDBMS란?
관계형 데이터베이스 관리 시스템 데이터베이스에 별도의 테이블에 저장된
관계형 데이터 모델을 기반으로하며 공통 열의 사용과 관련이 있다.
SQL (Structured Query Language)을 사용하여 관계형 데이터베이스에서 데이터에 쉽게 액세스 할 수 있다.
DBMS의 장점은?
- 데이터는 구조적으로 저장되므로 중복성 제어
- 입력 한 데이터의 유효성을 검사하고 데이터베이스에 대한 무단 액세스 제한 제공
- 필요한 경우 데이터 백업 및 복구 제공
- 여러 사용자 인터페이스를 제공
데이터베이스에서 유형의 관계에 대해 설명하세요
- 일대일 : 한 테이블은 비슷한 종류의 열을 가진 다른 테이블과 관계가 있다. 각 기본 키는 관련 테이블에서 하나의 레코드 또는 하나의 레코드와 관련이 없습니다.
- 일대다 : 한 테이블은 기본 및 외래 키 관계가있는 다른 테이블과 관계가 있다. 기본 키 테이블에는 관련 테이블에없는 하나 또는 여러개의 레코드와 관련된 하나의 레코드 만 포함된다.
- 다대다 : 두 테이블의 각 레코드는 다른 테이블의 여러 레코드와 관련 될 수 있다
SQL은?
보통 3가지의 범주로 나뉜다.
첫 번째 , DDL (데이터 정의 언어)
데이터를 보유하는 구조를 정의하는 데 사용됩니다.
이 명령은 자동 커밋됩니다.
즉, 데이터베이스의 DDL 명령에 의해 수행 된 변경 사항이 영구적으로 저장됩니다.
두번 째, DML (데이터 조작 언어)
데이터베이스의 데이터를 조작하는데 사용한다.
이 명령은 자동 커밋되지 않으며 롤백 할 수 있다.
세 번째, DCL (데이터 제어 언어)
데이터베이스에서 데이터를 사용하기위한 액세스 권한 취소와 같이
데이터베이스에서 데이터의 가시성을 제어하는 데 사용한다.
DB 정규화는 무엇인가?
데이터 무결성을 유지하기 위해 잘 정의 된 방식으로 테이블을 분할하여
데이터베이스에서 중복 데이터를 제거하는 프로세스이다.
즉, 관계형 데이터베이스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업이다.
이 프로세스는 많은 저장 공간을 절약한다.
DB 비정규화 무엇인가?
복잡한 쿼리 속도를 높이고 성능을 향상시키기 위해 테이블에 중복 데이터를 추가하는 프로세스이다.
정규화의 장점은?
데이터베이스 변경 시 이상 현상을 제거하고, 데이터베이스 구조 확장 시 재디자인을 최소화한다.
정규화의 단점은?
릴레이션 분해로 인해 릴레이션 간의 연산(join)이 많아집니다. 이로 인해 응답 시간이 느려질 가능성이 있다.
데이터베이스 뷰란?
허용된 데이터를 제한적으로 보여주기 위해 하나 이상의 테이블에서 유도된 가상 테이블이다.
뷰의 장점은?
- 뷰의 데이터가 저장되는 물리적 위치가 없으므로 리소스를 낭비하지 않고 출력을 생성한다.
- 삽입, 업데이트 및 삭제와 같은 명령을 허용하지 않으므로 데이터 액세스가 제한된다.
뷰의 단점은?
- 해당 뷰와 관련된 테이블을 삭제하면 뷰가 관련이 없습니다.
- 큰 테이블에 대해 뷰를 만들 때 더 많은 메모리가 사용됩니다.
ER 모델은?
ER 모델은 데이터베이스의 개념적 뷰를 정의하는 엔터티-관계 모델이다.
ER 모델은 기본적으로 실제 실체와 그 연관 / 관계를 보여준다.
여기서 엔티티는 데이터베이스의 속성 세트를 나타낸다.
엔터티?
실세계에서 독립적으로 존재하는 장소, 클래스 또는 객체 일 수 있다.
엔터티 타입?
유사한 특성을 가진 엔터티 집합을 나타낸다.
엔티티의 집합?
데이터베이스에 설정된 엔티티는 특정 엔티티 유형을 갖는 엔티티의 집합을 나타낸다.
데이터베이스 트랜잭션은?
데이터베이스의 일관성있는 상태를 다른 것으로 변경하는 작업 순서를 데이터베이스 트랜잭션이라고한다.
트랜잭션 완료 후 성공적인 완료가 시스템에 반영되거나 트랜잭션이 실패하고 변경 사항이 반영되지 않는다.
- 트랜잭션의 4가지 성질에 대해 설명해라
- Atomicity(원자성) 는 트랜잭션의 연산이 DB에 모두 반영되던지 전혀 반영이되지 않던지 둘중에 하나만 수행함
- Consistency(일관성) 는 트랜잭션이 성공적으로 완료된 후에 꼭 일관성 있는 DB상태로 변환
- Isolation(독립성) 은 수행중인 트랜잭션이 완전히 완료되기 전에는 다른 트랙잭션에서 수행 결과를 참조할 수 없음
- Durablility(지속성) 는 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영
인덱스란?
인덱스는 데이터분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조이다.
인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다.
고속의 검색 동작 뿐만 아니라 레코드 접근과 관련하여 효율적인 순서 매김 동작에 대한 기초를 제공한다
인덱스를 사용해야 하는 경우는?
- 데이터의 양이 많고 검색이 변경보다 빈번한 경우
- 인덱스를 걸고자 하는 필드의 값이 다양한 값을 가지는 경우
인덱스를 사용할 시 단점은?
- DB의 10%정도 공간이 요구된다.
- 인덱스를 생성하는 시간이 크게 요구된다.
- INSERT, DELETE, UPDATE 쿼리문을 실행할 때 별도의 과정이 추가적으로 발생하기 때문에 DB의 변경작업이 잦으면 성능이 저하된다.
인덱스 헌팅이란?
인덱스 헌팅은 인덱스 수집을 향상시켜 데이터베이스 성능뿐만 아니라 쿼리 성능을 향상시키는 프로세스이다.
인덱스 헌팅을 사용하여 쿼리 성능을 향상시키는 방법은?
- 쿼리 최적화 프로그램을 사용하여 워크로드와 쿼리를 조정한다.
- 인덱스 및 쿼리 배포의 성능 및 효과 관찰한다.
기본 키란?
모든 행 데이터가 고유하게 식별되는 테이블의 해당 열이다.
테이블의 모든 행에는 기본 키가 있어야하며 두 행은 동일한 기본 키를 가질 수 없다.
기본 키 값은 절대로 null이거나 수정하거나 업데이트 할 수 없다.
복합 키
열 세트가 테이블의 모든 행을 고유하게 식별하는 후보 키의 양식이다.
Unique 키로 무엇을 이해하는가?
Unique 키는 유일성을 가지기 위해 설정해 놓은 키로 중복이 되는 것을 방지한다.
Primary 키는 오직 하나만 생성할 수 있지만, Unique키는 여러개 생성이 가능한다.
Primary키의 경우 NULL 값을 허용하지 않지만, Unique 키는 NULL 값을 허용한다.
데이터베이스 트리거로 무엇을 이해하는가?
이블에서 삽입 전, 삽입 후, 업데이트시, 행 삭제시와 같은 이벤트가 발생할 때 자동으로 실행되는
명령 세트를 데이터베이스 트리거라고한다.
저장 프로 시저란?
저장 프로시저는 사전 컴파일 된 SQL 쿼리의 모음이다.
사전에 준비해 둔 많은 명령을 자동으로 실행할 수 있기 때문에 작업의 효율성도 높일 수 있다.
'DELETE', 'TRUNCATE'및 'DROP'명령 차이점은?
'DELETE' 연산을 실행 한 후 손실 된 데이터를 검색하기 위해 COMMIT 및 ROLLBACK 문을 수행 할 수 있다.
'TRUNCATE' 조작을 실행 한 후 손실 된 데이터를 검색하기 위해 COMMIT 및 ROLLBACK 문을 수행 할 수 없다.
'DROP' 명령은 기본 키 / 외래 키와 같은 테이블 또는 키를 삭제하는 데 사용된다.
이상현상이란?
릴레이션에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하는 것
이상의 종류 3가지?
1.삽입 이상
원하지 않는 자료가 삽입된다든지, 삽입하는데 자료가 부족해 삽입이 되지 않아 발생하는 문제점을 말한다.
2. 삭제 이상
하나의 자료만 삭제하고 싶지만, 그 자료가 포함된 튜플 전체가 삭제됨으로 원하지 않는 정보 손실이 발생하는 문제점을 말한다.
3. 갱신 이상
정확하지 않거나 일부의 튜플만 갱신되어 정보가 모호해지거나 일관성이 없어져 정확한 정보 파악이 되지 않는 문제점을 말한다.
트리거에 대해 설명하고, 트리거를 쓰는 이유는 무엇인가?
자동으로 실행되도록 정의된 저장 프로시저입니다.
INSERT/UPDATE/DELETE문에 대한 응답으로 자동 호출합니다.
트리거를 사용하는 이유
- 업무 규칙을 보장
- 업무 처리 자동화
- 데이터 무결성 강화(변경, 생성, 제거, 복구 시)
데이터베이스 무결성이란?
데이터 베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 말합니다.
개체 무결성
릴레이션에서 기본키를 구성하는 속성은 NULL값이나 중복값을 가질 수 없다.
참조 무결성
외래키 값은 NULL이거나 참조 테이블의 기본키 값이어야함
조인이란?
두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법입니다.
조인의 종류 4가지?
Inner Join
2개 이상의 테이블에서 교집합만을 추출
Left Join
2개 이상의 테이블에서 from에 해당하는 부분을 추출
Right Join
2개 이상의 테이블에서 from과 join하는 테이블에 해당하는 부분을 추출
Outer Join
아웃터 조인 또는 풀 조인이라고 말함, 2개 이상의 테이블에서 모든 테이블에 해당하는 부분을 추출
교착상태란?
2개 이상의 트랜잭션이 특정 자원(테이블 또는 행)의 잠금(Lock)을 획득한 채 다른 트랜잭션이 소유하고 있는
잠금을 요구하면 아무리 기다려도 상황이 바뀌지 않는 상태이다
교착상태를 방지하기 위한 방법에 대해 설명하세요.
- 트랜잭션을 자주 커밋한다.
- 정해진 순서로 테이블에 접근한다.
- SELECT ~ FOR UPDATE 의 사용을 피한다.
NoSQL이 기존 RDBMS와 다른 점은?
NoSQL 은 스키마가 없다. 즉 데이터 관계와 정해진 규격(table-column의 정의)이 없다.
관계 정의가 없으니 Join이 불가능하고 (하지만 reference와 같은 기능으로 비슷하게 구현은 가능)
트랜잭션을 지원하지 않는다.
분산처리(수평적 확장)의 기능을 쉽게 제공한다는 장점이 있다.
대부분의 NoSQL DB는 분산처리기능을 목적으로 나왔기 때문에 분산처리 기능을 자체 프레임워크에 포함한다.
NoSQL이 적합한 상황은?
비정형 데이터를 저장해야할 때 가장 적합하다.
테이블을 드롭(DROP)하는 것과 자르는 것(Truncate),
그리고 테이블 내 모든 레코드를 삭제(Delete)하는 것의 차이점은?
DELETE TABLE은 로그되는 작업이기 때문에 삭제되는 각 행은 트랜잭션 로그에 기록되고 이것은 작업을 느리게 한다. TRUCATE TABLE 역시 테이블 내 행들을 삭제하지만 삭제되는 각 행을 기록하지 않고 대신 테이블의 데이터베이스
할당 해제를 기록하여 작업이 빠르다. TRUNCATE TABLE는 롤백할 수 없다.
DELETE명령어는 데이터는 지워지지만 테이블 용량은 줄어들지 않는다. 원하는 데이터만 지울 수 있다.
삭제 후 RollBack 가능하다.
TRUNCATE명령어는 용량이 줄어들고, 인덱스 등도 모두 삭제된다. 테이블은 삭제하지는 않고 데이터만 삭제한다.
한꺼번에 다 지워야 한다. 삭제 후 절대 되돌릴 수 없다.
DROP명령어는 테이블 전체를 삭제,공간, 객체를 삭제한다. 삭제 후 절대 되돌릴 수 없다.
Web
URI vs URL
URI: 인터넷에 있는 자원을 나타내는 식별자
URL: 인터넷 상의 자원의 위치
protocol + domainName + path + query
protocol : 원거리 통신 장비 사이에서 메시지를 주고받는 규칙
domainName : 네트워크 상에서 컴퓨터를 식별하는 호스트명
path : 요청한 자원에 대한 웹 서버 내 경로
query : 추가 파라미터
요청 - Request?
Header의 Request Line = Method + Path + Protocol Version
GET : 조회, POST : 생성, PUT : 수정, DELETE : 삭제
응답 - Response?
Header의 Status Line = Protocol Version + Status Code + Status Msg
100번대: 정보 응답, 200번대: 성공 응답, 300번대: 리다이렉션 400번대: 요청 에러, 500번대: 서버 내부 에러
JSON이란?
- 자바스크립트 객체 표현식
- key, value로 구성된 property(method 포함)의 정렬되지 않은 집합
- 클라이언트와 통신 시 주로 사용
브라우저의 구성 요소는?
- 사용자 인터페이스(UI): 주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등 요청 페이지 화면을 제외한 모든 나머지 부분. 브라우저와 사용자가 상호작용 할 수 있는 접점.
- 브라우저 엔진: 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어. 사용자가 주소창에 어떤 요청을 하면 브라우저는 응답을 가져올 수 있도록 렌더링 엔진을 컨트롤한다.
- 렌더링 엔진: 요청한 콘텐츠를 표시(사용자가 요청한 사이트를 그려주는 역할). HTML과 CSS를 파싱해서 화면에 표시해주는 것. (Webkit, Gecko가 있고 브라우저마다 다른 엔진을 사용) -> 프론트엔드에는 중요!
- 통신: HTTP 요청과 같은 네트워크 호출. 인터넷에서 리소스를 가져올 때 사용.
- UI 백엔드: 콤보 박스와 윈도우 창 등 기본적인 내장 UI들을 그려주는 역할. 브라우저는 여러 OS에서 만들었고, 그 OS의 API들을 사용할 수 있어 Mac, Window 사용 시 각각 기본 브라우저 UI가 달라짐.
- 자바스크립트 해석기: Javascript interpreter. 자바스크립트 번역기로 자바스크립트 코드를 해석하고 실행한다.
- 자료 저장소: 자료를 저장하는 계층. 쿠키, 캐시, 서비스워커, 로컬 스토리지 등 모든 데이터를 저장.
랜더링 엔진
렌더링 엔진은 요청 받은 내용을 브라우저 화면에 표시해주는 역할을 한다.
일반적으로는 HTML 문서를 표시하지만, XML, 이미지도 가능하며
플러그인/확장 기능을 통해 PDF 같은 유형의 문서 또한 표시할 수 있다.
렌더링 엔진의 동작 과정
렌더링 엔진은 요청한 문서의 내용을 얻는 것 부터가 시작이다. 그 내용은 통신에서 온다.
동작 과정
기본적으로 파싱 -> 빌드 -> 배치 -> 페인팅
- 파싱: HTML 문서를 파싱하고 콘텐츠 트리 내부에서 태그를 DOM 노드로 변환. CSS 파일과 함께 포함된 스타일 요소도 파싱.
- 빌드: HTML과 CSS를 합쳐 렌더 트리를 생성.
- 배치: 렌더 트리 생성 완료 시 배치 시작. 각 노드가 화면의 정확한 위치에 표시되는 것.
- 페인팅: 렌더 트리를 화면에 그림.
Network
네트워크 망의 종류는?
- LAN : 한 건물 또는 사무실 내의 호스트들 간에 연결된 소규모 네트워크
- WAN : LAN과 LAN을 연결하는 대규모 네트워크
TCP/IP 프로토콜 4계층
- LINK 계층 : 물리적인 계층, LAN, WAN, MAN과 같은 네트워크 표준과 관련된 프로토콜을 정의 하는 영역
- IP 계층 : 데이터 경로 설정, 특정한 규칙 없음, 오류 발생하면 다른 임의의 경로로 변경
- TCP/UDP(전송) 계층 : 데이터의 실제 송수신, IP 계층에서 발생한 문제를 해결
- APPLICATION 계층 : 서버와 클라이언트를 만드는 과정에서 프로그램의 성격에 따라 정한 데이터 송수신에 대한 약속(규칙)
네트워크 애플리케이션의 역할은?
- TCP/IP 소프트웨어에 데이터를 전달할 때, 데이터를 받을 호스트의 주소인 IP 주소와 포트번호도 함께 전달
- IP주소 : 네트워크에 연결된 기기를 식별하는 유일한 번호
- 포트 번호 : 수신 측에서 동작하는 여러 애플리케이션 중 데이터를 수신할 애플리케이션을 식별하 는 번호
TCP와 UCP의 특징과 차이점은?
TCP
연결지향형 전송규약이다
- 흐름 중심 프로토콜, 통신을 주고받는 것을 중요시함
- 중간에 패킷이 손실되는 경우 재전송을 통해(SYN-ACK handshaking) 신뢰성을 보장함(느림) - 대부분의 통신에서
사용됨, 특히 파일이나 데이터 전송 시에 사용
- 데이터 경계 구분이 없음 (바이트 스트림 서비스)
UDP
비연결지향형 전송규약이다.
- 데이터 중심 프로토콜, 주고받는 통신보다 데이터를 일방적으로 보내는 것을 중요시함
- 데이터 전송의 신뢰성 보장 X, (빠름)
- P2P, 스트리밍, 전화에 사용
TCP
연결지향형
세그먼트
순서 보장, 느림
HTTP, 메일, 파일
헤더(20바이트) 추가하여 IP로: 포트번호, 순서번호, 인정 번호, 제어 비트
UDP
비연결지향형
데이터그램
순서 보장 X, 빠름
DNS, Broadcasting 헤더(8바이트) 추가하여 전송: 포트번호, 데이터의 길이, 체크섬
Handshaking과 4-Handshaking의 과정은?
:TCP에 쓰이는 연결 설정이다.
- SYN/SYC : 통신 요청 데이터
- ACK : 응답 데이터
- SYN_RCV : 통신 요청 받는다
게이트웨이란?
외부로 연결되는 통로, 로컬망 라우터와 외부망 라우터 간의 통로
로드 밸런싱이란?
분산식 웹 서비스로 여러 서버에 부하(Load)를 나누어 준다.
Round Robin, Least Connection, Response Time, Hash 등의 기법이 있다.
1) Round Robin : 각 서버에 session을 순서대로 연결하는 방식, 모든 클라이언트를 똑같이 취급 하고,
서버별 처리량을 기억하고 있어야 한다.
2) Least Connextion : 클라이언트와 서버별 연결된 connection 수를 고려하여 가장 적은 서버에 연결하는 방식이다.
프로토콜이란?
컴퓨터 간 데이터 통신을 원활히 하기 위해 규정한 약속이다.
신호 송신의 순서(handshaking)나 데이 터표현법, 오류 검출법 등을 정한 것이다.
HTTP 프로토콜이란?
하이퍼텍스트를 전송하는 규약이다.
- 하이퍼텍스트 : 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트이다.
- 비연결성 프로토콜, REQUEST에 대한 RESPONSE만 전달되고 연결 유지하지 않는다.
비연결성을 해결하기 위한 방법은?
- Cookie/Session : Cookie에 클라이언트에 대한 정보를 저장해뒀다가 사용하거나 Session을 등록 해서 유지하는 방식
- Session Storage/Local Storage : HTML5에서 제공, 세션 스토리지는 세션이 유지되고 있을 때 까지
브라우저 내부 저장소에 저장하고 세션이 끊기면 자동으로 없어진다.
로컬 스토리지는 사용자나 프론트엔드 내부적으로 삭제를 하지 않는 이상 영구적으로 저장된다.
HTTPS 프로토콜이란?
HTTP + SSL, HTTP로 통신하는 소켓을 SSL(Secure Socket Layer) or TLS(Transport Layer Security)라는
프로토콜로 대체한 것이다. (새로운 별개의 프로토콜이 아니라 연결 방식이 달라진 것)
- HTTP는 TCP와 직접 통신하지만, HTTPS에서는 SSL과 통신하고 SSL이 TCP와 통신하는 방식
- SSL을 사용하기 때문에 암호화와 증명서, 안전성 보호를 이용할 수 있음
공통키 암호화 방식과 공개키 암호화 방식을 혼합한 하이브리드 암호 시스템 사용한다.
공통키를 공개 키 암호화 방식으로 교환하고 이후 통신은 공통키 암호를 사용하는 방식이다.
HTTP REQUEST - GET과 POST의 차이점
- GET : 서버에 데이터를 전달할 때 URL Query를 사용해야 하므로 보안에 취약함 / 데이터를 받 는 용도로 적합
- POST : 데이터를 Header에 넣어서 전송하므로 헤더를 열어보지 않으면 확인할 수 없음 / DB 내 용을 갱신하거나
서버로 데이터를 전송할 때 적합
- SSL을 이용한 HTTPS 프로토콜로 데이터 전송을 암호화하면 보안성을 보완할 수 있음,
URL 뒤에 붙는 쿼리스트링 내용 모두 암호화되어 전송되기 때문에 보안성을 강화함
Restful API에서의 URL과 일반적인 HTTP에서의 URL의 차이는?
- 일반적인 HTTP URL : 기능에 중점을 두어 설계, 예) 회원 정보 호출 - ‘/getUser’
- Restful API : 자원에 중점을 두고 설계, 예) ‘/user’ 하위에 기능에 대한 구분을 추가,
POST, GET, DELETE, PUT 등의 HTTP 메서드를 사용한다.
자바스크립트에서 HTTP request를 동기로 호출하고 값을 처리하면 발생하는 문제점은?
Request에 대한 Response 응답시간이 길어질 수도 있으므로 절차 지향적으로 짜놓은 코드가
제 대로 동작하지 않을 수 있다.
해결방안? CallBack 함수를 만들어 호출하면 해당 REQUEST에 대한 응답이 온 후에 이후에
그 값을 가지고 다시 다른 함수를 실행한다.
콜백함수의 문제점은? 그리고 해결방안?
- 콜백함수를 이용한 비동기처리를 많이 하면 ‘콜백헬’이라 불리는 가독성이 매우 떨어지는 코드가된다.
가독성 저하는 유지보수에 걸림돌이 되므로, Promise나 Async/Await을 사용한다.
Promise에서는 요청 후 비동기 처리하는 부분은 then절에 추가하면 되고
Async/Await는 Await이 then절의 역할이다.
프록시 서버 기능이란?
-클라이언트가 프록시 서버를 통해 다른 네트워크 서비스에 간접적으로 접근을 할 수 있게 하는 것이다.
- 프록시 서버는 요청된 내용을 캐시에 저장하고
다음에 같은 요청이 들어오면 캐시에 저장된 정보 를 제공해 전송시간을 단축한다.
페이지의 내용과 데이터의 값이 계속해서 바뀌면?
- 캐시 만료기한을 설정한다.
- 프록시 서버라도 최초로 받는 요청에는 실제 서버로 요청을 보내야 하므로
그때 만료기한을 설정 해서 프록시 서버로 보내면 된다.
- 프록시서 버로 사용자가 요청했을 때 요청한 시각이 프록시에서 다운로드 받은 시간에서
만료기한 이내이면 프록시에서 다운로드를 할 것이고, 그렇지 않다면 다시 실제 서버로 요청을 하게 된다.
브라우저 주소창에 http://www.test.com 입력 후 엔터를 눌렀을 때부터 페이지가 렌더 링 되는 과정을 설명하세요.
1) local DNS → 루트 DNS 서버 → .com DNS 서버 → test.com DNS 서버 순서대로
www.test.com에 해당하는 IP주소 요청하고, 있다면 그 서버에서 바로 주소를 받음
2) TCP 통신을 통해 소켓 개방
3) HTTP 프로토콜로 요청
4) 라우팅 중 프록시 서버를 만나면 웹 캐시에 저장된 정보를 response 받음
5) 프록시 서버를 만나지 못해 www.test.com를 서빙하는 서버까지 가면 요청에 맞는 데이터를 response로 전송함
6) 브라우저의 loader가 해당 response를 다운로드 할지 말지 결정
7) 브라우저의 웹 엔진이 다운로드한 .html 파일을 파싱해 DOM 트리를 결정
8) .html 파싱중 script 태그를 만나면 파싱을 중단함
9) script 태그에 있는 자원을 다운로드해 처리가 완료되면 다시 파싱 함
10) CSS parser가 .css 파일을 파싱해 스타일 규칙을 DOM 트리에 추가하고 렌더 트리를 만듦
11) 렌더트리를 기반으로 브라우저의 크기에 따라 각 노드들의 크기를 결정
12) 렌더링 엔진이 배치를 시작(페인팅)
https://hyonee.tistory.com/136?category=913823
'네트워크와 CS' 카테고리의 다른 글
[ProblemSolver] @Transactional(readOnly = true)는 왜 필요한가? (0) | 2022.10.24 |
---|---|
[ProblemSolver] 개발 서버 구축하고 build 할 때 생기는 이슈들 (0) | 2022.10.23 |
섹션 4. HTTP 메서드 (0) | 2022.02.20 |
섹션 5. HTTP 메서드 활용 (0) | 2022.02.20 |
섹션 6. HTTP 상태코드 (0) | 2022.02.20 |