본문 바로가기
컴퓨터공학/기초

월드 와이드 웹( WWW ; World Wide Web)

by 하이방가루 2022. 10. 30.
728x90
반응형

이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다.

  월드 와이드 웹은 일상에서 인터넷과 같은 의미로 사용하지만, www는 인터넷과는 다르다. World Wide Web은 인터넷 상단에서 Skype, Minecraft, Instagram과 동일한 방식으로 실행된다. 인터넷은 이러한 모든 다른 응용 프로그램에 대한 데이터를 전달하는 기본 배관(Pipeline)의 역할을 한다. WWW는 단지 세계에서 가장 큰 프로그램으로, 전 세계 수 백만 대의 서버에서 실행되는 거대한 분산 응용 프로그램으로 웹 브라우저라는 특수 프로그램을 사용하여 액세스 할 수 있다.

 

  WWW 또는 Web의 기본 빌딩 블록은 단일 페이지이다. 이 페이지는 다른 페이지에 대한 링크를 포함할 수 있는 콘텐츠를 담고 있는 문서이다. 이를 하이퍼 링크(HyperLink)라고 한다. 텍스트 또는 이미지를 클릭하면 다른 페이지로 점프할 수 있다. 이러한 하이퍼 링크는 상호 연결된 정보의 거대한 웹을 형성하는데, 여기서 모든 것이 그 이름을 얻는다. 이것이 당연하고 생각할 수 있다. 하지만 하이퍼 링크가 구현되기 전에는 컴퓨터의 다른 정보로 이동하길 원할 때마다, 파일 시스템을 뒤져서 찾거나 검색 상자에 입력해야 했다. 하이퍼 링크를 사용하면 하나의 관련 주제에서 다른 주제로 쉽게 이동할 수 있다.

 

  하이퍼 링크된 정보의 가치는 1945년 Vannervar Bush에 의해 개념화되었다. 그는 Memex라고 하는 기계에 대한 가설을 서술한 기사를 발행했다. Bush는 이것을 "연관 색인법"이라 하며 어떤 품목이라도 즉시, 자동적으로 선택할 수 있다고 정의했다. 자세히 말하길 "두 가지를 하나로 묶는 과정은 중요한 일입니다. 그 이후 언제든 그 항목들 중 하나가 보일 때, 다른 [항목]은 버튼을 두드리는 것만으로 즉각적으로 불러올 수 있습니다."라고 말했다. 1945년의 컴퓨터에는 화면이 없었다. 그래서 이 아이디어는 그 시대보다 앞섰다. 하이퍼 링크가 포함된 텍스트는 매우 강력하여 동등한 이름을 붙여 하이퍼 텍스트(HyperText)라 한다. 웹 페이지는 오늘날의 가장 일반적인 유형의 하이퍼 텍스트 문서이다. 몇 분 안에 웹 브라우저에서 검색되고 렌더링 된다.

 

  페이지가 서로 연결되도록 하려면, 각 하이퍼 텍스트 페이지는 고유한 주소가 필요하다. 웹에서 이것은 URL (Uniform Resource Locator)로 지정된다. 웹 페이지 URL의 예로는 thecrashcourse.com/courses 가 있다(^^).

  사이트를 요청할 때, 컴퓨터가 하는 첫 번째 일은 DNS 검색이다. "thecrashcourse.com"과 같은 도메인 이름을 입력으로 사용하면, DNS 서버에서 일치하는 해당 컴퓨터의 IP주소로 응답한다. 이제 원하는 컴퓨터의 IP주소를 장착한 웹 브라우저는, 웹 서버라는 특별한 소프트웨어를 실행하는 컴퓨터에 TCP 연결을 연다. 웹 서버의 표준 포트 번호는 Port 80입니다. 이 시점에서, 컴퓨터가 마친 일은 주소 "thecrashcourse.com"의 웹 서버에 연결하는 것이다.

  다음 단계는 웹 서버에 "courses"의 하이퍼 텍스트 페이지를 요청하는 것이다. 그렇게 하려면 적절하게 명명된 HTTP (HyperText Transfer Protocol)를 사용한다. 1991년에 처음 만들어진 사양 버전은 HTTP 0.9으로 오직 "GET"명령만을 가지고 있었다. 다행히도 이것만으로 모든 것을 할 수 있다. 웹 서버에서 "courses"페이지를 얻으려고 하기 때문에, 서버에 GET /courses 명령을 보낸다. 이 명령은 원시 ASCII 텍스트로 웹 서버에 보내지고 웹 서버는 우리가 요청한 웹 페이지 하이퍼 텍스트로 응답한다. 이것은 컴퓨터의 웹 브라우저에 의해 해석되어 화면에 표시된다. 사용자가 다른 페이지에 대한 링크를 따라가면, 컴퓨터는 다른 GET 요청을 발행한다. 그리고 이것은 웹 사이트 서핑을 하는 동안 계속 진행된다.

  최신 버전의 HTTP는 GET 요청 다음에 전송된 모든 하이퍼 텍스트 앞에 접두어가 붙은 상태 코드를 추가했다. 예를 들어, 상태 코드 200번대는 OK를 의미한다. "페이지를 잘 받았고 여기 있습니다."라고 말하는 것과 같다. 상태 코드 400번 대는 클라이언트 오류를 의미한다. 예를 들어, 사용자가 웹 서버에 존재하지 않는 페이지를 요청하면, 404 오류를 보낸다.

 

  웹 페이지 하이퍼 텍스트는 ASCII 또는 UTF-16와 같은 평범한 오래된 텍스트로 저장되고 전송되면, 이것은 이전에 "이진수로 숫자와 문자 나타내기"와 "파일&파일 시스템"에서 언급했던 것들이다. 일반 텍스트 파일에는 무엇이 링크이고 아닌지를 지정하는 방법이 없으므로 하이퍼 텍스트 요소가 있는 텍스트 파일을 표시할 수 있는 방법을 개발할 필요가 있었다. 이를 위해 하이퍼 텍스트 마크업 언어(HyperText Markup Language ; HTML)가 개발되었다. HTML 버전 0.a의 첫 번째는 1990년에 만들어졌으며, 18개의 마크업 페이지 HTML 명령이 제공되었다.

  웹 페이지를 만든다고 가정해보자. 먼저 웹 페이지에 큰 제목을 붙이자. 이를 위해, 첫 번째 레벨 표제의 시작을 나타내는 "h1" 글자를 입력하고 꺽쇠 괄호(<>)로 묶는다. <h1> 이것은 HTML 태그의 한 예시이다. 그런 다음, 원하는 제목 텍스트를 입력한다. 전체 페이지가 표제가 되지 않게 하기 위해서 제목 텍스트 끝에 작은 "/"로 "h1"태그를 닫아야 한다.

<h1> title </h1>

이제 일부 콘텐츠를 추가할 수 있다. 콘텐츠 중 방문객이 모를 수도 있는 단어를 하이퍼 링크로 만들어 자세한 내용은 사전에 연결하여 뜻을 알 수 있게 하도록 하자. 여기에 "A"태그를 사용하여 작업하는데, 이는 참조할 하이퍼링크를 지정하는 속성(href)을 포함한다. 링크가 클릭된 경우 이동할 페이지이다. 마지막으로 A태그를 닫아야 한다.

<a href="https://ko.wikipedia.org/wiki/HTML"> HTML </a>

"h2"태그를 사용하여 두 번째 레벨 제목을 추가할 수도 있다. HTML은 목록을 작성하기 위한 태그도 제공한다. 정렬된 목록(order list)에 <ol> 태그를 추가하여 시작한다. 그런 다음 목록 항목(list item)을 나타내는 <li> 태그로 둘러싸인 원하는 만큼 많은 항목을 추가할 수 있다. 여기서 사람들이 무엇인지 알지 못하는 것들을 하이퍼 링크로 만들 수도 있다. 마지막으로, 좋은 형식을 위해서는, 정렬된 목록 태그를 닫아야 한다.

<ol>  
  <li> 인터넷 </li>
  <li><a href="https://ko.wikipedia.org/wiki/Http"> HTTP </a></li>
  <li><a href="https://ko.wikipedia.org/wiki/HTTPS"> HTTPS </a><li>
</ol>

이렇게 아주 간단한 웹페이지를 만들어 보았다. 이 텍스트를 메모장이나 텍스트 에디터에 입력하고 "test.html"과 같이 확장자를 html로 하는 이름을 지정하면 파일을 컴퓨터의 웹 브라우저로 드래그하여 열 수 있다.

  물론, 오늘날의 웹 페이지는 좀 더 정교하다. HTML의 최신 버전인 버전 5에는 이미지, 표, 양식 및 버튼과 같은 수백 가지 태그가 있다. Cascading Style Sheets(CSS)와 자바 스크립트(JavaScript ; JS)와 같이 이전에 다루지 않은 다른 기술도 있다. 이 두 기술은 HTML 페이지에 임베디드 되어 페이지를 더 멋지게 만들어 준다.

 

  다시 웹 브라우저(Web Browser)로 돌아가자. 이것은 컴퓨터에 설치된 응용 프로그램으로 모든 웹 서버와 대화할 수 있다. 브라우저는 페이지와 미디어를 요청할 뿐만 아니라 반환되는 콘텐츠도 렌더링 한다.

  첫 번째 웹 브라우저와 웹 서버는 1990년 2개월 동안 Tim Berners-Lee 경에 의해 작성되었다. 당시 그는 스위스 CERN(유럽 원자핵 공동 연구소)에서 근무했다. 이 위업을 이루기 위해 그는 URL, HTML 및 HTTP와 같은 여기서 논의한 몇 가지 기본 웹 표준을 동시에 만들었다. 처음 CERN에서 동료들에게 소프트웨어를 배포한 후, 1991년 일반인에게 배포되었다. 월드 와이드 웹(World Wide Web)의 탄생이다.

  중요한 것은 웹이 공개 표준이었기 때문에 누구나 새로운 웹 서버와 브라우저를 개발할 수 있었다. 이로써 일리노이 대학의 Urbana-Champaign 팀이 1993년에 Mosaic 웹 브라우저를 만들 수 있었다. 그래픽을 텍스트와 함께 삽입할 수 있는 최초의 브라우저였다. 이전 브라우저는 별도의 창에 그래픽을 표시했다. 또한 북마크와 같은 새로운 기능을 도입했으며 친숙한 GUI를 통해 인기를 얻었다.

  1990년대 말까지, 많은 웹 브라우저가 사용되었다. 넷스케이프나 내비게이터, 인터넷 익스플로러, 오페라, 옴니 웹 및 모질라와 같은 것들이 있었다. 아파치와 Microsoft의 인터넷 정보 서비스(IIS)와 같은 많은 웹 서버도 개발되었다. 매일 새로운 웹 사이트가 등장하고 Amazon과 eBay와 같은 웹의 주축은 1990년대 중반에 설립되었다.

 

  웹은 번성했고 사람들은 점점 더 검색할 수 있는 방법을 필요로 했다. 만약 ebay.com처럼 원하는 웹 주소를 알고 있다면 그냥 브라우저에 입력하면 된다. 하지만 어디로 가야 할지 모르면 어떻게 할까? 처음에 사람들은 다른 웹사이톨 연결되는 하이퍼링크 디렉터리를 웹페이지에 유지했다. 그중 가장 유명한 것은 "Jerry와 David의 Worlde Wide Web Guide"였으며, 1994년에 Yahoo로 바뀌었다.

  웹이 성장하면서 사람이 편집한 디렉터리가 다루기 힘들어지기 시작했고, 이에 검색 엔진이 개발되었다. 오늘날 사용하는 것과 같이 작동했던 가장 초기의 웹 검색 엔진은 1993년 Jirathon Fletcher가 스털링 대학에서 만든 JumpStation이다. 이것은 함께 작동하는 세 가지 소프트웨어로 구성된다.

  첫 번째는 웹 크롤러로, 발견할 수 있는 모든 링크를 따라간다. 언제든지 새 링크가 있는 페이지에 대한 링크를 따라가면 목록에 추가된다. 두 번째 구성 요소는 크롤러가 방문한 페이지에 나타난 텍스트 용어를 기록하는 계속 확장된 색인(Index)이었다. 마지막은 색인을 참고하는 검색 알고리즘이었다.

  예를 들어, "Cat"이라는 단어를 JumpStation에 입력하며 그 단어가 나오는 모든 웹페이지가 목록에 뜬다. 초기 검색 엔진은 매우 단순한 측정 기준을 사용하여 검색 결과의 순위를 매겼으며, 보통 검색단어가 페이지에  나타난 횟수로 순위를 매겼다. 사람들이 자신의 웹페이지에 Cat을 수 백번 작성해서 소통량을 조종하는 편법을 쓰기 전까진 잘 돌아갔다.

 

  Google의 명성은 이 문제를 피하는 영리한 알고리즘 덕분이다. 웹 페이지의 내용을 신뢰하는 대신 다른 웹 사이트가 해당 페이지에 연결된 방식을 살펴보았다. Cat이라는 단어가 반복해서 포함된 스팸 페이지인 경우 어떤 사이트도 링크하지 않았다. 그러나 웹페이지가 Cat에 대한 권위자라면, 다른 사이트가 링크될 가능성이 높다. 따라서 특히 "신뢰할 수 있는 사이트"에서 "backlinks"라고 불리는 항목의 수는 종종 좋은 사인이 되었다. 이것은 1996년 스탠포트 대학의 BackRub이라 불리는 연구 프로젝트로 시작되었다. 2년 후, 오늘날 우리가 알고 있는 Google로 만들어진다.

 

  마지막으로, 이제까지 패킷, 인터넷 라우팅 및 월드 와이드 웹에 대한 이해를 구축했으므로 "네트워크 중립성(Net Neutrality)"에 대해, 적어도 기술적 핵심 요소를 충분히 이해할 수 있을 것이다. 짧게 말하면, 네트워크 중립성은 인터넷상의 모든 패킷이 똑같이 취급되어야 한다는 원칙이다. 패킷이 이메일인지 또는 스트리밍 중인 비디오인지는 중요하지 않다. 모두 동일한 속도와 우선순위를 따라야 한다. 그러나 많은 기업들이 자신의 데이터가 우선적으로 사용자들에게 도착하는 것을 선호한다. 예를 들어 대형 ISP인 Comcast는 NBC와 The Weather Chanel과 같은 많은 TV 채널을 소유하고 있다. 이것들은 온라인 스트리밍이다. Comcast를 선택하지 않아도 되지만 Net중립성 규제가 없는 경우, 예를 들어 그들은 콘텐츠가 매끄럽고 부드럽고 우선순위가 높은 콘텐츠로 전달되기를 원할 수 있다. 하지만 다른 스트리밍 비디오는 압박을 받는다. 즉, 의도적으로 적은 대역폭과 낮은 우선순위가 부여된다. 강조하건대 이것은 단지 추측이다.

  높은 수준의 Net 중립성 옹호론자들은 인터넷 제공업체가 사용료를 근본적으로 책정할 수 있는 능력을 줌으로써 프리미엄 패킷 전달을 제공하여 착취적인 비즈니스 모델의 씨앗을 심는다고 주장한다. ISP는 경재자와 잘 어울리지 않는 강력한 인센티브로 콘텐츠에 대한 문지기가 될 수 있다. 또한 Netflix 및 Google과 같은 대기업들이 특별 대우를 받기 위해 돈을 낼 수 있다면, 신생 기업과 같은 중소기업들은 불리한 입장에 놓일 것이며, 혁신을 억누를 것이다.

  반면 다른 유형의 데이터를 다른 속도로 전송하려는 좋은 기술적인 이유가 있다. 스카이프 통화에는 높은 우선순위가 필요하지만, 이메일을 몇 초 늦게 받는 건 큰 문제는 아닐 것이다. Net 중립성 반대자들은 또한 시장 세력과 경쟁이 나쁜 행동을 억제할 것이라고 주장한다. 왜냐하면 고객들은 그들이 원하는 사이트를 조절하는 ISP를 떠날 것이기 때문이다.

 

  Net 중립성의 함의가 복잡하고 광범위하기 때문에 우리는 바깥으로 나가 더 많이 배워야 한다.

728x90
반응형

'컴퓨터공학 > 기초' 카테고리의 다른 글

해커 및 사이버 공격  (0) 2022.11.13
사이버 보안  (0) 2022.11.06
컴퓨터 네트워크  (0) 2022.10.09
3D 그래픽  (0) 2022.10.02
그래픽 유저 인터페이스(GUI)  (0) 2022.09.24

댓글