All Articles

Web - 웹 동작원리

사용자가 브라우저에 주소를 쳐서 원하는 사이트 화면을 볼 수 있는 원리는 무엇일까? 느낌으로 애매하게 알던 부분을 예리님 강의 들으면서, 그리고 블로그로 정리하면서 더 명확하게 배웠다.

호스팅(Hosting)

내가 어떤 사이트를 운영한다고 가정해보자. 사용자가 언제 어디서 접속할지 알 수 없기 때문에 24시간 불침번을 서면서 사용자가 사이트를 요청할 때마다 응답을 해주어야 한다.

만약 자리를 비우거나 사이트 정보가 든 컴퓨터를 종료해버렸을 때 사용자가 내 사이트를 방문하길 원한다면? 이런 참사를 막기 위해 365일 24시간 켜져있으면서 내가 신경쓰지 않아도 사용자가 사이트를 요청할 때마다 응답해주는 컴퓨터를 빌려서 써야한다. 이러한 서비스를 호스팅이라고 한다.


IP

인터넷에 연결해서 쓸 수 있는 모든 장비에는 숫자로 된 고유 주소가 있다. 이것을 IP라고 한다. 32비트 값을 가진 숫자로, 8비트씩 끊어서 4개 영역으로 표기한다.(영역간 구분자는 .) 각 자리는 00000000부터 11111111까지이며 이것을 10진수로 표현하면 0부터 255까지다.

IP 주소를 가지는 단말이 점차 늘어남에 따라 IPv4 주소는 거의 고갈되었고, 차기 주소 체계로 128비트 값을 가지는 IPv6를 할당하고 있다. IPv6는 16진수로 표현한 네 자리 숫자를 8개 영역으로 표기한다. (영역간 구분자는 :)


도메인(Domain)

내가 A라는 사이트에 들어가고 싶을 때, A 사이트만 가진 고유 IP 주소를 통해 들어간다. 하지만 보통 사용자 입장에서 숫자로만 이루어진 IP 주소를 기억하기란 쉽지 않다. 따라서 인식을 위해 IP 대신 특징이 있는 이름을 쓰게 되었다. 그것이 도메인이다.

예를 들어, 네이버 도메인은 www.naver.com 이고, 구글 도메인은 www.google.com 이다. 숫자보다 훨씬 기억하기 쉽다.

도메인은 protocol, sub domain, domain, top level domain, port, path와 parameter(또는 query string)로 구성된다.

아래 주소를 예시로 들면,

http://item.gmarket.co.kr/Item?goodscode=1510637585&ver=637269671480572731

  • https - 프로토콜
  • item - 서브도메인
  • gmarket - 도메인
  • co.kr - 탑 레벨 도메인
  • Item - 패스
  • goodscode=1510637585 - 파라미터 1
  • ver=637269671480572731 - 파라미터 2

패스와 파라미터는 ?로 구분하고 각 파라미터는 &로 연결한다.


DNS(Domain Name System)

사용자는 사이트를 도메인 주소로 인지하지만 호스트 서버에서는 여전히 IP 주소로 인지한다. 따라서 사용자가 입력한 도메인 주소만으로도 알맞은 IP 주소를 찾아갈 수 있게 하려면 도메인과 IP 주소를 연결해주는 작업이 필요하다. 이것을 DNS라고 한다.

사용자가 브라우저에서 특정 도메인을 입력하면, DNS 서버는 그 도메인에 맞는 IP 주소를 브라우저에 보내준다. 그럼 브라우저는 다시 그 IP 주소를 호스트 서버에 보내, 사용자가 방문하려는 사이트의 정보(HTML, CSS, JavaScript 정보)를 브라우저에게 보내준다. 이런 과정을 통해 사용자는 도메인 주소만으로도 사이트에 방문할 수 있다.


배포(deploy)

내가 로컬에서 열심히 개발한 서비스가 있다고 가정해보자. 아주 멋있는 동적 사이트를 만들어내서 자랑하고 싶지만, 가족이나 지인에게 내 컴퓨터를 내밀거나 카톡으로 사진을 찍어보내는 방법밖에 없을 것이다.

따라서 전세계에서 내 서비스에 24시간 접속 가능하도록 하려면 호스트 서버에 띄워야 하는데, 이것을 배포라고 한다. 즉, 개발자에게 배포란 내 자식 출생신고 하는 것과 다름없는 기념비적인 일이다.