아주 기본적이고 간단한 내용만 정리한다
크게 웹 서버와 웹 브라우저로 나눌 수 있다
웹 서버란 무엇인가?
기본적으로 네트워크로 소켓이 뚫려있다
요청이 들어올 때까지 대기하는 프로세스로 상주한다
요청이 들어오면 HTTP 프로토콜 스펙에 의해 정보를 해석한다
HTTP 프로토콜에 따라 응답한다
이 때 HTTP Path 의 라우팅에 따라 여러가지로 나뉘는데,
1. 클라이언트가 요청하는 파일을 전송한다
2. 클라이언트가 요청하는 데이터를 처리하여 전송한다
이 과정에서 세션 정보의 갱신 등이 있을 수 있다
응답이 끝났으면 다음 요청을 기다린다
이게 웹 서버의 아주 기본적인 프로세스 끝
웹 브라우저란 무엇인가?
기본적으로 OS 의 GUI 에 맞게 실행된다
사용자가 페이지 주소를 입력하면 자동완성 등의 기능으로 한 번 훑는다
사용자가 페이지 접속 요청을 하면
1. HTTP 프로토콜에 따라 해당 페이지의 요청 데이터를 만든다
- 이 과정에서 User-Agent, Cookie 등의 정보가 사용된다
2. 마찬가지로 클라이언트 소켓을 통해 네트워크로 HTTP 데이터를 전송한다
3. 요청에 대한 응답을 받으면 HTTP 프로토콜에 따라 정보를 해석한다
- 이 과정에서 서버에서 Set-Cookie 한 데이터를 쿠키에 저장한다
- 304 Not Modified 같은 정보를 받으면 캐시에서 검사하고 있으면 렌더링, 없으면 재요청한다
4. HTML 페이지 데이터를 받아 DOM 으로 바꾸고 화면에 렌더링한다
- 렌더링하는 과정에서 그래픽 작업이 수행된다
5. favicon, script, stylesheet, image 등 외부에 요청해야 하는 링크를 획득한다
6. 비동기적으로 모두 요청 시작
7. 요청에 대한 응답들에 대해 처리한다
- 이미지 같은 경우 페이지의 해당 DOM 에 그려준다
- CSS 등의 스타일을 각 DOM 의 Element 에 적용하고 렌더링한다
- 스크립트 같은 경우에 V8 엔진을 통해 DOM 이 injection 된 JavaScript 로 실행한다
이제 사용자 입력을 기다리고 입력에 따라 다시 스크립트 이벤트를 발생시키거나 요청을 실행한다
여기서 웹 소켓도 쓴다면......
내가 아는 것 중에서 간단하게만 적은거임
웹 브라우저 한번 구현해보면 얼마나 해야할게 많은지 얼마나 좆같은건지 알 수 있음
네트워크, 그래픽, 데이터 처리, File I/O 온갖걸 다 해야함
사실 내부적으로 더 많은 일이 발생하고있음
게임 엔진과 웹 브라우저 개발만이 진정한 이 시대의 IT 기술의 집합체다
ㅇㅅㅇ 학부 1학년 때 배웠던 내용들이군요. 학년 올라가면서 러닝커브 점점 늘어나는게 예술이었음
너가 하는말들어보니 웹브라우저 쉬워보이는뎅 ㅋㅋ 쉬운거만 이야기해서 그런가
ㄷ_ㄷ;;