
브라우저의 핵심 기능은 사용자가 참조하고자 하는 웹페이지를 서버에 요청(Request)하고 서버의 응답(Response)을 받아 브라우저에 표시하는 것이다.
브라우저는 서버로부터 HTML, CSS, Javascript, 이미지 파일 등을 응답받는다.
HTML, CSS 파일은 렌더링 엔진의 HTML 파서와 CSS 파서에 의해 파싱(Parsing)되어 DOM, CSSOM 트리로 변환되고 렌더 트리로 결합된다. 이렇게 생성된 렌더 트리를 기반으로 브라우저는 웹페이지를 표시한다.

웹 브라우저(web browser)는 인터넷망에서 정보를 검색하는 데 사용하는 응용 프로그램을 말한다. '브라우저' or '인터넷 브라우저'라고도 하며, 일반적인 기능으로는 웹 페이지 열기, 최근 방문한 URL 및 즐겨찾기 제공, 웹페이지 저장 기능 등이 있다.
인터넷익스플로러, 파이어폭스, 크롬, 사파리, 엣지, 비발디 등이 있다.
→ 이처럼 동기(Synchronous)적으로 HTML, CSS, JS를 처리하므로 script 태그의 위치에 따라 블로킹이 발생, 때문에 script태그의 위치는 중요한 의미를 갖게된다.
기본적으로 HTTP 프로토콜 환경은 "connectionless, stateless"한 특성을 가지기 때문에 서버는 클라이언트가 누구인지 매번 확인해야 한다. 이를 통해 발생될 수 있는 번거로움을 해결 하기 위한 방법으로 쿠키와 세션을 사용한다. 즉, 정보(데이터)를 유지하기 위해 사용한다.
1) Connectionless 프로토콜 (비연결지향)
2) Stateless 프로토콜 (상태정보 유지 안함)
→ 매번 페이지 이동 시 로그인을 다시 해야하거나 상품 선택 후 구매 페이지로 이동 시 상품의 정보가 없거나 하는 등의 일이 발생할 수 있으므로 Stateless 경우를 대처하기 위해 쿠키와 세션을 사용한다.

사용자 정보 파일을 브라우저에 저장한다.
쿠키는 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.
사용자 인증이 유효한 시간을 명시할 수 있다. 유효시간이 정해지면 브라우저가 종료되더라도 인증이 유지된다.
쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조한다.
클라이언트에 300개까지 저장이 가능하고, 하나의 도메인 당 20개의 값만 가질 수 있으며 하나의 쿠키값은 4KB까지 저장한다.
Response Header에 Set-Cookie 속성을 사용하면 클라이언트에 쿠키를 만들 수 있다.
사용자가 따로 요청하지 않아도 브라우저가 Request시에 Request Header를 넣어서 자동으로 서버에 전송한다.
세션은 쿠키를 기반하고 있지만, 쿠키와 달리 세션은 서버 측에서 관리한다.
서버에서는 클라이언트를 구분하기 위해 세션 ID를 부여하며, 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증상태를 유지한다.
접속 시간에 제한을 두어 일정 시간 응답이 없다면 정보가 유지되지 않도록 설정하는 것도 가능하다.
사용자에 대한 정보를 서버에 두므로 쿠키보다 보안에 좋지만, 사용자가 많아질수록 서버 메모리를 많이 차지한다.
❗️ 즉, 세션은 서버의 자원을 사용하기 때문에 무분별하게 만들다보면 서버 과부하, 속도가 느려질 수 있기 때문에 쿠키가 유리한 경우가 있다.
동시 접속자 수가 많은 사이트의 경우 서버 과부하를 주게 되므로 성능 저하의 요인이 될 수 있다.
클라이언트가 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하는 데 이것이 세션 ID이다.
✍️ 세션은 사용자의 수 만큼 서버 메모리를 차지하므로 이런 문제를 보완하기 위해 토큰 기반의 인증방식을 사용하는 추세라고 한다.
HTTP 응답코드를 정리하는 문서.
HTTP 상태 코드는 클라이언트가 보낸 HTTP 요청에 대한 서버의 응답 코드로, 상태 코드에 따라 요청의 성공/실패 여부를 판단한다.
모든 HTTP 응답 코드는 5개의 클래스(분류)로 구분된다. 상태 코드의 첫 번째 숫자는 응답의 클래스를 정의한다.
첫자리에 대한 5가지 값들은 다음과 같다.
: 요청을 받았으며 프로세스를 계속한다.
: 요청을 성공적으로 받았고, 이해했고 받아들여졌다는 의미이다.
: 요청 완료를 위해 추가 작업 조치가 필요하다.
: 요청의 문법이 잘못되었거나 요청을 처리할 수 없다.
: 서버가 명백히 유효한 요청에 대해 충족을 실패했다.
✍️ 게이트웨이 (통신네트워크 연결기기)
: OSI 7 Layer중 전송(Transport) 계층에 해당하는 기기로 서로 다른 프로토콜끼리도 네트워크 통신이 가능하도록 연결해주는 기기이다.
대표적인 예로서 이동통신 장비와 인터넷 간의 게이트웨이가 있다. 게이트웨이가 있어서 우리가 스마트폰으로 PC와 같이 인터넷을 할 수 있는 것이다.
reference)
poiemaweb-browser
브라우저는 어떻게 동작하는가?
쿠키와 세션 개념
쿠키와 세션 특징
wiki-http status code
HTTP/응답코드
Gateway