HTML

웹 서버의 동작 원리 & HTML의 역할

이소금 2019. 11. 2. 17:34
반응형

하나의 어플리케이션이 동작하려면 한대의 컴퓨터만 필요합니다. 하지만, 웹이 동작하려면 최소 두 대의 컴퓨터가 있어야 합니다. 두 대의 컴퓨터는 서버 컴퓨터와 클라이언트 컴퓨터를 지칭합니다.

이런 서버 컴퓨터와

이런 클라이언트의 컴퓨터가 필요합니다.

서버 컴퓨터라는게 대단한 것이 아닙니다. 대개 일반 컴퓨터라 함은 모니터, 키보드, 마우스 등을 갖추어야 컴퓨터의 모양을 띄지만 서버 컴퓨터는 그런 것 없이 본체만 있기 때문에 처음 서버라는 것을 접하시는 분들은 컴퓨터라고 바로 생각이 들지 않고 어떤 연산하는 것이라고만 생각하게 될 것 같습니다. 왜냐하면 제가 그랬거든요. (뭔가 무섭게 생겼어요)

서버도 컴퓨터라는데 왜 본체도 없고 마우스도 없고 키보드도 없어! 그랬는데 알고보니 서버 컴퓨터는 클라이언트의 요청에 응답만 하면 되는 특별한 임무만을 수행하기 때문에 사용자와의 직접적인 상호작용이 일반 컴퓨터만큼 필요 없는 것이죠. 그리고 서비스가 커짐에 따라 응답해야 하는 요청이 많아지기 때문에 이 무수히 많은 요청들을 모두 수행할 수 있어야 합니다. 이렇기 때문에 서버 컴퓨터는 점점 이런 식으로 특화되어서 저렇게 무섭게 본체들만 저렇게 일렬종대 되는 것이죠.

이 말은 즉슨, 우리가 지금 사용하는 컴퓨터도 용도만 바꾸면 클라이언트의 요청을 받을 수 있는 서버 컴퓨터로 사용이 가능합니다. 너무 신기하죠.

이런 식으로 웹이 아무리 발전해도 절대 변하지 않는 이론입니다. 웹은 꼭 두 대 이상의 컴퓨터가 필요합니다. 클라이언트 컴퓨터와 서버 컴퓨터.

클라이언트의 컴퓨터는 두 대가 될수도, 다섯대가 될수도, 무수히 많을 수도 있습니다. 예를 들어, 구글에 접속 요청을 하는 컴퓨터는 한대가 아니고 전 세계 사람들, 혹은 이 글을 검색하기 위해 구글을 통해 들어오신 분들 모두 포함한 엄청나게 많은 컴퓨터가 있을 것입니다. 이 모든 컴퓨터의 요청을 처리하기 위해서 구글은 엄청나게 큰 서버들을 가지고 있겠죠.

예를 들어 네이버에 접속하고 싶다고 가정합시다. 그럼 클라이언트는 접속하려고 하는 내가 되겠고, 서버는 네이버가 되겠죠. 제가 네이버에 접속하고 싶어! 하면 보통 어떻게 하시나요? 다들 http://www.naver.com 을 타이핑 하실 겁니다. 이 행위는 클라이언트가 서버에게 URI 요청을 한다 라고 바꾸어 이야기 할 수 있습니다.

URI는 Uniform Resource Identifier로 데이터가 어디에 있는지 알려주는 주소가 됩니다. 이 URI는 두 개의 하위 요소들을 포함하는데요, 이 요소들은 다음과 같습니다.

  • URN (Uniform Resource Name)
  • URL (Uniform Resource Locator)

URN은 리소스, 자원의 독립적인 이름입니다. 내용이 변하더라도 이름만 같으면 여전히 작동합니다. 그렇지만, 요새는 거의 사용하지 않죠.

URL 많이 들어보셨을 겁니다. 이름처럼 Locator로 컨텐츠의 구체적인 위치를 가리킵니다. 위치는 곧 인터넷 주소가 되겠죠. 우리가 말하는 www.naver.com의 도메인은 URL입니다.

여기서 클라이언트가 서버에게 URI 요청을 하면, 서버에서는 요청을 받아 응답을 하는데, 응답의 결과물, 즉 HTML로 응답을 합니다. 그럼 클라이언트는 응답받은 HTML의 페이지를 받게 되는 것이죠. 이렇게 네이버에 접속할 수 있게 됩니다.

 

 HTTP

http는 hypter text transfer protocol로 문서와 문서 사이를 서로 오갈 수 있게 해줍니다. 또 www 안에서 정보를 서로 주고받을 수 있게 합니다. 이렇게 데이터를 가져온다면 어떻게 이 데이터를 표현할 것인가? 에 대한 물음은 HTML이 답해줄 수 있게 됩니다.

HTML

HTML은 웹 브라우저가 처리할 수 있는 언어입니다. 이 말은 웹 브라우저는 HTML을 읽을 수 있다로 치환할 수 있게 됩니다. 앞서 설명한 바와 같이, HTML은 마크업 언어입니다. 태그를 이용해서 문서와 데이터의 구조를 표시하는 언어입니다.

여기서 태그란, 데이터와 정보의 분류를 위해 부여된 키워드가 됩니다.

단락, 목록, 구조 혹은 링크 항목들을 이런 태그<>로 나누어서 만드는, HTML은 구조적인 언어입니다.

 

이 멋잇는 언어에도 한계가 있습니다. 클라이언트 컴퓨터에 설치된 웹 브라우저를 통해 서버 컴퓨터의 HTML 페이지에 접근하면 (URI 요청),  서버가 응답을 하여 클라이언트 컴퓨터에 HTML을 띄운다고 배웠습니다. 하지만, 한 대의 컴퓨터가 아닌 수많은 컴퓨터가 요청을 하게 된다면 서버에서 모든 작업을 다 감당할 수 없게 됩니다. 이렇게 되면 서버가 과부하가 걸리게 되겠죠.

그래서 사람들은 생각했습니다. 서버에서 모든 작업을 감당하는 것이 아니라 클라이언트 컴퓨터에서 바로 작동할 수 있게 만들면 어떨까? 라는 방법을 고안해낸 것이죠. 이것이 언어 안의 언어 입니다. HTML(내부언어)의 하이퍼링크 태그로 안에서 CSS, JavaScript(외부언어)를 불러와 서버에서 매번 신호를 받아 동작하는 것이 아닌 클라이언트 컴퓨터 자체에서 동작할 수 있게끔 하는 것이죠.

이런 원리로 이 세가지의 언어가 유기적으로 얽혀 웹사이트를 더욱 예쁘고, 멋있게 동작할 수 있게 하는것이죠.

이것은 곧, CSS와 JS가 HTML의 구성 안으로 들어가 작동하게 된다 라고 말할 수 있게 됩니다.

 

그럼 모두 즐코하세용

반응형

'HTML' 카테고리의 다른 글

HTML 웹표준 검사하기: W3C Validator  (0) 2019.09.26
HTML의 확장기능, Beautify (Mac ver.)  (0) 2019.09.21
HTML  (0) 2019.09.06