IT/SeSAC

[새싹x코딩온] 웹 개발자 부트캠프 과정 10일차 정리 | Protocol, Web Server & WAS, URI & URL, Domain, DNS

eoeung 2023. 8. 7. 20:18

오늘은 NCP(Naver Cloud Platform)을 통해 직접 서버를 만들고, 공인 IP를 받아 내가 만든 서버에 접속하는 것 까지 진행했다.
무료 크레딧 ₩100,000을 3개월 동안 제공해서 간단한 것은 추후 진행해보려 한다.

예전에 GCP(Google Cloud Platform)을 실습으로 사용한 것을 계기로 클라우드를 공부하고 싶어서 AWS를 간단하게 공부한 경험이 있어서 수업이 크게 어렵지는 않았다.
하지만 네트워크나 클라우드 용어가 친근하지는 않아서 이번 글은 용어와 그 개념에 대한 것을 중심으로 정리해보려 한다.

 

1. Protocol (프로토콜)

Protocol은 결론적으로 규칙, 약속 등을 의미하는 용어이다.

현재 공용 언어가 영어인 것과 같다고 생각하면 된다.
무슨 말이냐면, 한국인과 태국인과 만났다고 가정해보자.
두 사람 중 한 사람이 태국어나 한국어를 잘하면 문제가 없겠지만 공용 언어인 영어로 소통을 할 수 있다면 서로 문제 없이 소통할 수 있게 된다.

이렇듯 프로토콜이라는 것은 마치 '영어를 공용 언어로 해서 국적이 다르더라도 영어로 소통할 수 있겠는데!' 같은 규칙이라고 보면 된다.

만약 공용 언어가 없다면(사람들이 공용 언어를 형식적이든 암묵적이든 정하지 않았다면) 한국인은 한국어가 공용 언어라고 주장할 수 있고, 태국인은 태국어를 공용 언어라고 주장할 수 있는 부분이다.

이것을 그대로 컴퓨터에 대입해서 보면 다음과 같다.



컴퓨터 세계로 넘어오면, 사용자는 컴퓨터 설정을 사용자 마음대로 설정을 할 수 있다.

위의 예시와 비슷하게, 따로 규칙(사람의 예에서는 공용 언어)가 없다는 가정 하에 아래 예시를 살펴보자.
A라는 사용자는 본인 PC의 주소를 1.1.1.1, B라는 사용자는 a.a.a.a, C라는 사용자는 a.a.a.a 라고 설정했다고 했을 때, 사실상 문제가 없다.
사용자가 설정하고 싶은 대로 설정했을 뿐이기 때문이다.

하지만 A-B-C가 서로 통신을 하고 싶을 때(데이터를 주고 받는 등의 행위)는 매우 문제가 된다.
B,C는 주소가 중복되며, 설령 중복되지 않는다고 하더라도 추후에 D라는 사용자도 본인PC의 주소를 a.a.a.a라고 설정해서 중복될 수 있는 점도 고려해야한다.
또한 A라는 사용자가 주소를 zzz.aaa.bbb.ccc로 언제든 바꿀 수 있다는 것도 문제가 될 수 있다.

이렇듯 따로 규칙이 없다면 뒤죽박죽 제멋대로가 되어버린다.

'서버-클라이언트간 요청/응답을 할 때는 HTTP라는 규칙을, 파일 전송을 할 때는 FTP라는 규칙을 정해서 진행하자.' 라고 규칙을 정한 것이 프로토콜이라고 보면 된다.
마치 공용 언어를 영어로 정해놓으면, 국적이 달라 서로 소통이 안되더라도 영어를 사용해 소통하는 것과 같은 이치라고 보면 된다.

아래 사이트에 매우 잘 정리되어 있어 참고하면 좋을 듯 하다.
[[넷알못 사전] 프로토콜은 무엇인가요?] (https://it.donga.com/31842/)

 

2. Web Server & WAS(Web Application Server)

간단한 개념만 설명하고자 한다.
일단 두 가지 개념 모두 서버라는 것은 공통점이다.

Web Server는 HTTP나 HTTPS라는 프로토콜을 통해서 정적인 파일을 처리하는 역할을 한다.
HTML, CSS, Javascript같이 웹 사이트에서 크게 변함이 없는 틀을 정적인 파일이라고 생각하면 이해가 쉽다.

WAS는 Web Server와는 반대로 동적인 파일을 처리하는 역할을 한다.
주로 DB에서 정보를 가지고 와야할 때 사용한다고 생각하면 이해가 쉽다.
예를 들어 로그인을 하면 '000님 환영합니다!'라는 것을 구현할 때, 로그인하는 아이디마다 DB에 저장된 이름 혹은 닉네임이 모두 다른데, 이 부분은 절대로 정적으로 처리할 수가 없다.
사용자마다 달라야하는데, 이러한 부분들을 WAS가 처리해준다고 생각하면 편하다.

또한 두 가지의 서버를 굳이 사용하는 이유는 부하를 서로 줄여주기 위함도 크다고 봐야한다.
설명만 보면 WAS가 Web Server의 상위 호환이라고 느껴질텐데, 맞다.
그러면 WAS만 사용하면 된다고 생각할 수 있지만, 그렇게 되면 부하가 너무 커지게 되어 역할도 나누고 부하를 줄이는 효과가 있다.

3. URI & URL

  • URI(Uniform Resource Identifier) : 하나의 리소스를 가리키는 문자열(통합 자원 식별자)
  • URL(Uniform Resource Locator) : 웹에서 주어진 고유 리소스 주소

위의 개념으로는 무슨 차이가 있는지 확인하기 쉽지는 않다.
URI가 상위 개념으로써 '완전한 고유의 식별자'라고 생각하면 되고, URL은 웹 상에서 우리가 흔히 사용하는 https://~~~ 등의 고유 식별자라고 생각하면 된다.

 

아래의 그림이 URI와 URL을 자세하게 설명하고 있다.

[그림 1] URI와 URL

*출처 : [URI와 URL 이미지] (https://programming119.tistory.com/194)


저 그림에서 자주 마주치는 개념은 6가지가 있다.

  • Protocol (http://)
  • Domain (www.google.com)
  • Port (:80)
  • Path (/hakawati/)
  • Parameter (?url=urn)
  • Anchor (#Rnfwoa)

 

4. Domain

웹에서의 Domain은 위에 적었던 www.google.com이라고 볼 수 있다.
이게 무슨 말이냐면, 원래라면 구글이라는 사이트에 접속하고 싶다면 IP 주소로 접속해야만 한다.
하지만 IP 주소를 외우는 것도 힘들 뿐더러 우리는 한 사이트만 접속하는 것이 아니기 때문에 일일이 IP 주소로 접속하는 것 보다는 사람이 알기 쉬운 문자로 표현하는 것이 훨씬 편리하고 간단하고, 외우기도 쉽다.

그래서 IP 주소를 사람이 알기 쉬운 문자로 표현해준 것이 Domain이라고 할 수 있다.

다시 정리해보자.
우리가 구글 사이트에 접속하기 위해서는 172.217.25.164라는 IP 주소로 접속해야만 하는데,
Domain을 사용해서 www.google.com 이라는 문자열로 구글 사이트에 접속할 수 있다.

그렇다면 이건 자동으로 되는 기능일까?
그건 아니다.

아래에 서술할 DNS가 그 기능을 담당한다.

5. DNS(Domain Name System)

위에서 구글 사이트의 예시를 들면서 Domain에 대해 설명했다.
DNS는 도메인을 IP주소로 바꿔주는 기능을 한다.

이게 무슨 말이냐면 172.217.25.164 라는 IP 주소는 www.google.com을 가리킨다고 미리 설정을 해야한다.
이 기능을 해주는 것이 DNS라고 할 수 있다.

 

 


[Reference]

1) [[넷알못 사전] 프로토콜은 무엇인가요?] (https://it.donga.com/31842/)

2) [URI vs URL vs URN] (https://programming119.tistory.com/194)

 


[Image]

1) [URI와 URL 이미지] (https://programming119.tistory.com/194)