프론트엔드를 지망하는 주니어 개발자로서 웹의 단편적인 지식만을 공부하다 보니 오히려 이해가 떨어지는 것을 느꼈다.
웹이 왜 생겼는지, 어떤 과정을 통해 발전했고, 어떤 문제가 발생했는지,
또 그 문제를 해결하는 과정에서 어떤 기술이 생겨났는지 궁금해 공부를 하다가 좋은 영상을 발견해 이를 정리하고자 한다.
이번 포스팅은 초창기 웹의 구조를 정리하고자 하며, 참고한 영상은 포스팅 하단에 추가하였다.
웹의 탄생
웹은 유럽 입자 물리학 연구소(CERN)에서 연구하던 팀 버너스 리에 의해 개발되었다.
그 당시 인터넷에서는 대부분 텍스트 기반 문서가 사용되었기에 정보를 찾아보는데 불편함이 컸다.
버너스 리는 텍스트 내에 링크가 있어서 연관된 정보를 서로 묶을 수 있다면, 정보를 찾기 훨씬 수월할 것이라고 생각했다.
즉 기존 텍스트 정보에 링크(하이퍼텍스트)를 추가해 확장하고자 한 것이고, 이렇게 만들어진 문서 형식이 html이었다.
이 html 문서를 송수신하기 위한 방안으로 http 프로토콜도 만들었다.
마지막으로 웹 페이지를 표시하고 링크를 통해 문서를 탐색할 수 있는 최초의 웹 브라우저이자 편집기인 'WorldWideWeb'도 만들었다.
그는 링크를 통해 연결된 문서들의 모습이 마치 거미줄 같아서 이를 WEB이라고 불렀고 이것이 웹의 시작이었다.
초창기 웹 구조
초창기 웹은 단방향 구조로, 클라이언트에서 서버에게 요청을 하면 서버가 요청한 정보를 제공하는 단순한 형태였다.
1. 클라이언트가 브라우저에 url을 입력한다.
2. 브라우저가 DNS 서버에 요청을 보내 해당 url의 ip주소를 받아온다.
3. 알아낸 ip주소로 브라우저가 요청(http request)을 보낸다.
4. 서버가 요청(http request)을 받고 hdd에서 요청에 해당하는 문서를 찾는다.
5. 문서를 찾은 뒤 다시 클라이언트에게 보낸다. (http response)
6. 클라이언트는 받은 html 문서를 랜더링 한다.
초창기 브라우저
상호작용이 단순함에 따라 브라우저의 역할은 크지 않았고, 문서 뷰어와 비슷한 수준이었다.
당시 브라우저의 역할은 다음과 같다.
1. 구문 분석 (parser) : html 문서를 분석해, 자료구조 생성 (DOM tree)
2. 랜더링 : 자료구조를 랜더링
초창기 웹의 문제점 (stateless http)
http 프로토콜은 클라이언트와 서버가 이미 TCP/IP로 연결되어 있음을 전제로 하고 있다.
연결은 상태를 동반하는데 이때 당시에는 클라와 서버의 복잡한 상호작용이 단순했기에, http에 상태를 추가하지 않았다.
추후에 웹이 복잡해지면서 http의 stateless는 여러 문제를 만들었고, 이를 해결하기 위한 기술이 추후 등장했다. (쿠키, 세션 등)
참고 영상
'CS' 카테고리의 다른 글
(WEB) 웹 서비스 구조 이해 2편, 웹의 발전과 다양한 기술의 등장 (0) | 2024.08.15 |
---|---|
(CS) 터미널, 콘솔 기본 명령어 & 옵션 (0) | 2024.07.09 |
(CS) XML, JSON이란? 역직렬화와 직렬화 (0) | 2024.05.19 |