서버의 동작 방식과 순서 - seobeoui dongjag bangsiggwa sunseo

DeJa 2021. 12. 11. 16:35

How Does The Web Work?

서버의 동작 방식과 순서 - seobeoui dongjag bangsiggwa sunseo

본 게시글은 원작자(Chuck choi) 께 원문 How Does The Web Work ? 게시글 번역 허락을 구하고 작성한 글입니다. 번역 과정에서 원문 내용에 대한 첨삭이 일어났으므로 원문 내용과 다른 부분이 있을 수 있습니다. 또한, 본 게시글에 사용된 이미지의 사용 권한은 원작자에게 있습니다. 제 이전 Medium Blog 에서 작성된 내용을 옮겼습니다.

웹은 어떻게 동작할까?

자동차, 텔레비전, 난로, 냉장고는 우리가 매일 사용하는 기계로 사용이 상당히 간편합니다. 이것들은 우리 삶의 필수적인 도구입니다. 하지만, 우리는 그것들이 어떻게 작동하는지 완전히 이해하지 못하더라도 문제되지 않으며 그것들을 사용하기 위해 메커니즘을 이해할 필요가 없습니다. 컴퓨터와 모바일 장치 또한 대부분의 사람들이 사용법을 알고 있는 기계이지만 많은 일을 할 수 있는 매우 복잡한 기계입니다.

컴퓨터와 모바일 장치를 사용하여 문서, 오디오, 사진 및 비디오와 같은 다양한 리소스에 액세스할 수 있는 웹(www, World Wide Web)에 연결할 수 있습니다. 웹은 시간이 지남에 따라 복잡함에도 불구하고 사용이 매우 간단해졌고, 심지어 7살 래리도 엄마의 아이패드를 열어 그가 좋아하는 만화를 유튜브에서 볼 수 있습니다.

유튜브에서 동영상을 시청하거나 웹 사이트로 이동할때 그 뒤에서 어떠한 동작들이 이루어지고 있는지, 웹이 동작하기 위한 핵심 요소는 무엇인지 대해서 배워보겠습니다.

월드 와이드 웹(www) 의 역사

영국 컴퓨터 과학자인 팀 버너스리 경(Sir Tim Berners-Lee) 께서 1989년 월드 와이드 웹의 하이퍼텍스트 시스템을 고안하여 개발하였습니다. 인터넷의 기반을 닦은 여러 공로로 웹의 아버지라고 불리는 인물 중 하나입니다.
그의 부모님은 컴퓨터 과학자였지만, Tim 은 기차에 더 관심을 가졌습니다. 그는 기차를 조종할 장치를 만들어야 했기 때문에 전자 공학에 들어갔습니다. 결국, 그는 기차보다 전자제품쪽에 관심을 갖게 되었고 컴퓨터와 소프트웨어로 작업을 시작하게 된 계기가 되었습니다.
Tim 은 옥스포드 대학을 졸업한 후 CERN 이라는 스위스의 물리학 연구소에서 소프트웨어 엔지니어가 되었습니다. 그 당시에는 정보를 저장하기 위해 다른 컴퓨터에 접속해야했으며, 매우 수동적이고 오프라적인 것들이었습니다. 일부 컴퓨터는 서로 다른 프로그램을 사용하므로 두 가지 선택 방안이 있었습니다. 정보에 액세스하기 위해 각 컴퓨터에서 다른 프로그램을 배우거나 작동 방식을 물어보기 위해 동료와 coffee chat 을 해야 했습니다.
인터넷을 통해 수백만 대의 컴퓨터가 함께 연결되는 상황 속에서, Tim 은 전 세계를 정보와 연결하는 기술을 구상하고 CERN 의 상사에게 자신의 아이디어를 제안했습니다. 공식적인 프로젝트는 아니었지만, 그의 상사는 그에게 큰 일을 할 수 있는 시간을 주었습니다.

서버의 동작 방식과 순서 - seobeoui dongjag bangsiggwa sunseo

Tim 은 1990년까지 오늘날 웹의 기초가 되는 세 가지 기본 기술인 HTML, URI 및 HTTP 를 개발했습니다. 시간이 지남에 따라 웹은 성장했고 Tim 은 웹의 진정한 잠재력은 비용이나 허가 없이 어디서나 누구나 액세스할 수 있어야만 가능하다는 것을 깨달았습니다. CERN 은 웹을 영원히 무료로 만들기로 동의했고 1993년 4월에 그 결정을 발표했습니다. 그 이후로, 웹은 2021년 4월 현재 총 18억 개의 웹 사이트 수를 갖게 되었습니다.

“Had the technology been proprietary, and in my total control, it would probably not have taken off. You can’t propose that something be a universal space and at the same time keep control of it.” — Sir Tim Berners-Lee

오늘날의 웹(Modern Days of the Web)

웹의 역사에 대해서 충분히 들었으므로, 웹의 흐름에 대해서 배워보겠습니다.웹의 흐름을 요약하자면, 브라우저는 HTTP 요청을 서버로 보내 특정 컨텐츠에 접근을 하고, 서버는 요청된 데이터에 대한 HTTP 응답을 브라우저에 반환합니다. 자세한 내용은 다음과 같습니다.

서버의 동작 방식과 순서 - seobeoui dongjag bangsiggwa sunseo

웹의 핵심 요소에 대해서 살펴보겠습니다.

Client, Server, and HTTP

7살 래리는 유튜브 동영상을 보기 위해 웹사이트에 접속하고 다음과 같은 단계를 거쳐 동영상을 보게 됩니다.

  • 내 컴퓨터 열기
  • 구글 크롬 열기
  • 브라우저에서 유튜브 주소 입력(www.youtube.com)
  • 웹 사이트에 도착
  • 동영상 보기

이 예에서 래리는 YouTube 데이터베이스에 있는 비디오에 대한 액세스를 요청 하는 클라이언트(Client) 입니다. YouTube 는 동영상에 액세스할 수 있는 웹 서비스를 제공하는 서버 (Server) 입니다 .

클라이언트 는 웹 브라우저와 같은 클라이언트 소프트웨어를 사용하여 인터넷에 연결된 컴퓨터 하드웨어입니다. 컴퓨터와 모바일 장치는 Chrome, Firefox 또는 Safari 와 같은 브라우저를 사용하는 클라이언트입니다. 우리는 종종 장치, 브라우저 및 장치를 사용하는 사용자를 클라이언트라고 합니다. 클라이언트는 서버가 저장하는 콘텐츠에 대한 액세스를 요청할 수 있습니다.

반면에 서버 는 클라이언트의 요청을 수신하고 그에 따라 응답을 반환함으로써 클라이언트 에게 서비스를 제공하는 컴퓨터 소프트웨어 및 하드웨어입니다 . 서버는 웹 페이지를 표시하고, 이메일을 주고받고, 파일을 저장하고 공유하거나, 사용자 계정을 식별하고 승인할 수 있습니다.

즉, 요청하는 쪽이 클라이언트, 응답을 반환하여 서비스를 제공하는 쪽이 서버 입니다.
저는 공공 도서관의 후원자이자 사서로서 클라이언트와 서버 관계를 비교하는 것을 좋아합니다. 고객은 사서에게 자신이 찾고 있는 책을 물을 수 있으며, 사서는 해당 책의 사본이 있는 경우 해당 책의 위치를 ​​알려줄 것입니다. 마찬가지로 클라이언트는 웹 문서를 보기 위해 서버에 요청을 보낼 수 있습니다.

서버의 동작 방식과 순서 - seobeoui dongjag bangsiggwa sunseo

인간은 서로 의사소통을 하기 위해 공유된 언어를 사용하고 그 문법 구조를 따라 메시지를 전달합니다. 클라이언트와 서버는 서로 의사소통(데이터를 교환)을 하기 위해 요청-응답 프로토콜인 HTTP(Hypertext Transfer Protocol) 를 사용하여 동일한 작업을 수행합니다 .

클라이언트는 클라이언트가 찾고자 하는 정보가 포함된 HTTP 요청을 서버에게 전송하여 통신합니다. 그리고 서버는 요청 결과로 HTTP 응답을 반환합니다. HTTP 요청과 응답 모두 클라이언트와 서버가 서로를 더 잘 이해할 수 있도록 HTTP Header 를 가지고 있습니다. HTTP 헤더에는 클라이언트의 설정(브라우저, 운영 체제), 브라우저 쿠키 및 클라이언트가 연결할 도메인 이름과 같은 정보가 포함됩니다.

HTTP 응답에는 종종 요청된 리소스 데이터 와 성공 여부를 나타내는 요청된 작업의 상태 가 포함됩니다. “Hypertext”라는 이름에서 알 수 있듯이 HTTP 요청 및 응답은 텍스트 이상의 컨텐츠를 전송합니다. 컨텐츠는 HTML, CSS, JavaScript와 같은 코드 파일 또는 이미지, 오디오, 비디오, 문서 등과 같은 자산일 수 있습니다.

해커들이 중간중간 데이터를 가로채 교환되는 데이터를 볼 수 있습니다. 이로 인해 은행 계좌, 이메일 또는 의료 보험에 로그인하는 끔찍한 결과가 발생할 수 있습니다. 따라서 데이터를 암호화하기 위해 HTTPS(Hypertext Transfer Protocol Secure) 가 도입되었습니다. HTTPS 를 사용하면 데이터를 가로채더라도 암호화된 무의미한 문자를 볼 수 있습니다. 클라이언트와 서버 간의 공유된 비밀 키를 사용하여 데이터의 암호를 해독할 수 있습니다.

서버의 동작 방식과 순서 - seobeoui dongjag bangsiggwa sunseo

인터넷, TCP/IP 및 DNS

클라이언트와 서버가 통신할 수 있도록 인터넷 이라는 글로벌 컴퓨터 네트워크 시스템에 연결합니다 . 우리는 네트워크에 연결하기 위해 인터넷 서비스 제공자(ISP) 에게 월 사용료를 지불 합니다. 인터넷은 인터넷 프로토콜 스위트(TCP/IP)을 사용하여 컴퓨터 간에 데이터 패킷을 교환합니다.
이러한 패킷 은 데이터를 안정적이고 효율적으로 전송할 수 있는 데이터 조각입니다. 패킷 대신 대용량 파일을 전송하는 것은 데이터 전송 속도가 전송 방식(광 케이블, 구리선 또는 위성)에 따라 달라지므로 비효율적입니다. 예기치 않은 데이터 손실 또는 패킷 순서 변경이 발생할 수 있습니다. 여기서부터 인터넷 프로토콜 스위트 가 작동하게 됩니다.

서버의 동작 방식과 순서 - seobeoui dongjag bangsiggwa sunseo

인터넷 프로토콜 스위트(Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음 입니다. 인터넷 프로토콜 스위트 중 TCP 와 IP 가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 스위트 라고도 불립니다.

TCP 는 데이터 모델을 정의하고 전송되는 각 데이터 패킷에 번호를 할당하는 전송 제어 프로토콜(Transmission Control Protocol) 의 약자입니다 . 각 패킷에 할당된 번호를 통해 전송 중 데이터 손실을 감지하여 데이터를 수정하고 올바른 순서로 다시 하나의 파일로 조립할 수 있습니다. 복잡성으로 인해 TCP는 매우 안정적입니다.

데이터가 컴퓨터 사이의 올바른 위치에 도달하기 위해서는 각 컴퓨터의 주소가 필요합니다. IP 는 데이터를 올바른 위치로 라우팅하는 인터넷 프로토콜 을 나타냅니다 . IP 는 192.158. 1.38(IPv4) 와 같이 숫자와 마침표가 혼합된 고유한 컴퓨터 주소의 숫자 입니다. 웹의 크기가 매일 증가함에 따라 더 많은 인터넷 주소에 대한 요구를 충족시키기 위해 새로운 버전의 IP 인 IPv6 가 배포되었습니다. 32비트 바이너리 IP 주소를 사용하는 이전 버전과 비교하여 IPv6 는 128비트 바이너리 IP 주소를 사용하여 340 undecillion 의 고유 주소 공간을 허용합니다. 다음은 IPv6 주소의 예입니다.

2001:0db8:85a3:0000:0000:8a2e:0370:7334

서버의 동작 방식과 순서 - seobeoui dongjag bangsiggwa sunseo

하지만, 이 IP 주소는 사람이 읽을 수 있는 것이 아니며 모든 웹사이트의 IP 주소를 유지하려면 주소록이 필요합니다. 그리고 매번 구글에 접속하기 위해 브라우저에 IP 주소 http://142.250.188.238/ 를 입력해야 한다면 매우 불편할 것 입니다. 이 문제를 해결하기 위해 DNS(Domain Name System) 가 도입되었습니다. DNS 는 인터넷의 주소록과 같습니다. 우리는 google.com , youtube.com 또는 facebook.com 과 같이 사람이 읽기 쉬운 웹사이트 주소인 DNS 제공업체로부터 도메인을 구매합니다 . 웹 사이트용으로 구매한 도메인의 경우 DNS 공급자는 도메인 URL을 클라이언트의 IP 주소로 교환하는 일을 담당합니다.

서버의 동작 방식과 순서 - seobeoui dongjag bangsiggwa sunseo

웹의 전형적인 흐름

사용자가 YouTube 홈페이지에 접속할 때 그 뒤에서 어떤 일들이 벌어지고 있는지 분석해 보겠습니다.

서버의 동작 방식과 순서 - seobeoui dongjag bangsiggwa sunseo
  1. 사용자는 인터넷에 연결된 노트북(클라이언트 )을 열고 Google 크롬(브라우저 )을 엽니다.
  2. 사용자가 브라우저 주소 표시줄에 웹 주소(도메인) www.youtube.com 을 입력합니다.
  3. 브라우저는 DNS 서버 로 이동 하여 웹 주소(도메인)를 IP 주소 로 교환합니다.
  4. 브라우저는 IP 주소 를 사용 하여 웹사이트 페이지에 액세스 하기 위해 YouTube 서버 에 HTTP 요청을 보냅니다 .
  5. YouTube 서버는 HTTP 요청을 보고 데이터를 패킷 및 TCP 번호로 준비합니다.(많은 회사가 Oracle Cloud 또는 AWS 와 같은 서비스에 데이터를 저장함)
  6. YouTube 서버는 사용자의 브라우저에 “200 OK” 상태 코드(요청이 성공적으로 처리되었음을 의미)를 HTTP 응답 시작줄에 담아 응답합니다.
  7. TCP 는 패킷 을 다시 데이터 전체로 조합하고 HTML , CSS , JavaScript 및 이미지 및 비디오와 같은 자산을 파싱하여 웹 페이지를 표시 합니다.

끝맺음

웹이 없는 세상을 상상해 보십시오. 인터넷 기능이 없던 시절처럼 Google 에 액세스하지 않고 프로젝트를 수행한다고 상상해 보십시오. 당신은 책, 신문 또는 잡지와 같은 오프라인 문서에 액세스해야 합니다. 연구원들은 데이터를 수집할 수 있는 적임자를 찾기 위해 전국을 돌아다녀야 했습니다.

웹은 전 세계의 인류를 연결하여 정보를 교환함으로써 많은 것을 가능하게 했습니다. 이제는 DVD 매장에 가서 DVD 를 빌리지 않고 인터넷을 통해 Netflix 를 어디에서나 시청할 수 있습니다. 특히 COVID-19 팬더믹(세계적 대유행)은 장소에 구애받지 않고 세상을 연결해 웹의 위력을 제대로 보여줬습니다. 원격근무, 음식배달 서비스, 누구나 쉽고 빠르게 COVID-19 가이드라인에 접근할 수 있도록 해 우리 사회의 피해를 최소화했습니다.

웹을 사용하기 위해 어떻게 작동하는지 완전히 이해할 필요는 없지만 웹이 작동하는 방식에 대한 약간의 역사와 지식을 제공하고자 했습니다. 긴 글을 읽어주셔서 정말 감사합니다.