- 모자익(Mosaic) : 최초의 웹 브라우저. 1993년 미국 일리노이 대학을 다니던 마크 안드레센과 에릭 비나가 개발.
- 넷스케이프 내비게이터: 1994년에 등장한 상업용 브라우저
- 크롬(Chrome) : 현재 가장 많은 지분을 차지한 웹 브라우저.
웹 브라우저가 웹 사이트에 접속하여 웹 페이지를 가져오는 과정
1) 사용자가 웹 브라우저를 통해 찾고 싶은 웹 페이지의 URL 주소를 입력한다.
2) DNS 서버에서 사용자가 입력한 URL 주소 중 도메인 네임을 검색을 한다.
3) 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달한다.
4) 웹 페이지 URL 정보와 전달받은 IP 주소는 HTTP 프로토콜을 사용해 HTTP 요청 메세지를 생성해 TCP 프로토콜을 사용해 인터넷을 거쳐 해당 IP 컴퓨터로 전송된다.
5) 이 요청 메세지는 다시 HTTP 프로토콜을 통해 웹 페이지 URL 정보로 변환이 된다.
6) 웹 서버는 이 변환이 된 정보에 해당하는 데이터를 검색하여 찾아낸 뒤 HTTP 프로토콜을 통해 HTTP 응답 메세지를 생성하고, 이 메세지는 다시 TCP 프로토콜을 이용해 인터넷을 거쳐 사용자의 컴퓨터로 전송된다.
7) 사용자의 컴퓨터에 도착한 HTTP 응답 메세지는 HTTP 프로토콜을 사용해 웹 페이지 데이터로 변환이 되고, 변환된 데이터는 웹 브라우저 상에 출력되어 사용자가 볼 수 있게 된다.
- 붉은 표시한 부분이 UI
(요청한 페이지(구글 홈 화면)외의 나머지 모든 부분이라고 보면 된다.
각 웹 브라우저에서 사용하는 전용 브라우저 엔진
각 웹 브라우저에서 사용하는 전용 자바스크립트 엔진
- 구글 크롬의 V8 엔진의 메모리 구조.
- 크게 Heap Memory와 Call Stack으로 구성되어 있다.
콜 스택의 동작 방식
스택 오버플로(Stack Overflow)
- 콜 스택 내부의 동일한 스택 프레임이 예상치 못한 수로 쌓일 때 일어난다.
- 스택 내부에 동일한 스택 프레임이 계속 쌓이다가 어느 순간 콜 스택의 제한된 크기(용량)를 넘어버리게 되면 웹 브라우저는 멈춰버리게 된다.
ex) 함수를 계속해서 호출하는 경우
스택 추적 (Stack trace)
- 웹 브라우저의 콘솔에 출력되는 에러 로그로 에러의 발생과 발생한 이유를 추적해내는 것
OS 사용자 인터페이스(user interface)
거의 모든 운영체제는 사용자 인터페이스를 가지고 있으며, 이 인터페이스는 여러 형태를 가지고 있다.
- 명령어 라인 인터페이스(Command Line Interface, CLI)
: 문자로만 명령어를 입력해 처리해야 하는 인터페이스 ( ex: mac의 터미널, 윈도우의 명령 프롬프트)- 일괄 처리 인터페이스(Batch Interface)
: 사용자가 배치 처리에 앞서 배치 작업의 모든 세부 사항을 지정하고, 모든 처리가 완료되면 출력을 수신하는 비대화형 사용자 인터페이스. (대규모의 시스템에서 대량의 데이터를 처리하는 데에 자주 사용)- 그래픽 사용자 인터페이스 (Graphic User Interface, GUI)
: 가장 일반적으로 사용되는 OS 사용자 인터페이스. 마우스, 키보드, 모니터 등을 이용해 아이콘을 클릭하거나 직관적인 입력이 가능한 인터페이스.
- 데이터를 저장할 때
window.localStorage // 만료 날짜가 없는 데이터를 저장할 때 쓰인다. window.sessionStorage // 세션이 있는 데이터를 저장할 때 쓰인다. (브라우저 탭을 닫으면 손실되는 것을 의도한 데이터를 저장할 때)
- 해당 브라우저의 버전이 웹 스토리지를 지원하는지 확인한 후 웹 스토리지에 데이터를 저장할 때
//window 객체에 있는 Storage 객체를 통해 확인할 수 있다. //해당 객체(웹 스토리지)가 존재하지 않는 브라우저라면 undefined를 반환하고, 존재한다면 function을 반환한다. if (typeof(Storage) !== "undefined") { // web storage를 위한 코드 부분 } else { // web storage를 지원하지 않는 브라우저를 위한 안내 부분 }
- 블로그 글을 작성하다가 사용자가 창을 벗어난 경우 관련 작성 내용을 복구하거나 백업해주는 기능
- 사용자가 입력 form을 통해 정보를 입력하다 페이지에서 벗어난 경우 복구 및 백업해주는 기능
- 현재 읽은 글의 히스토리 저장(카운팅, 혹은 읽은 글 표시 등으로 활용)