
📌 URI
특정 리소스를 식별하기 위한 통합 자원 식별자(Uniform Resource Identifier)이다.
웹 기술에서 사용하는 논리적 혹은 물리적 리소스를 식별하는 고유한 문자열 시퀀스이다.
URI는 URL과는 다르게 자원을 식별하는데 비중이 있다.
예를 들어 은행계좌에는 계좌번호라는 식별자가, 버스는 노선번호, 사람은 주민등록번호 등으로 구분되는 식별자가 있다. 웹 서버의 리소스 또한 각자의 이름이 있다. 클라이언트가 리소스를 요청할 때 서버 리소스 이름을 통해 리소스의 위치를 식별하여 해당하는 응답을 내놓는다.
URI는 접근과 접근에 대한 방식이라는 의미에서 URL의 의미를 포함하고, 식별이라는 의미에서 URN의 의미를 포함한다.
✔️ URI의 구성

- 스키마(Scheme)
웹 통신에서 사용할 프로토콜을 말하며, 리소스에 어떻게 요청, 접근할 것인지를 명시해준다.
- 웹에서는 주로 http와 https 프로토콜을 사용한다.
- 그 밖에 파일 통신을 위한 file, mailto(이메일), rtsp(스트리밍), ftp, 안드로이드와 아이폰에 다양한 URL 스키마들이 있다. - 유저정보(UserInfo)
해당 URI로 접근하기 위해 별도의사용자 이름과 비밀번호를 요구한다.
- 호스트 앞 단에 작성되며, 특정 서버나 프로토콜(ftp 등등..)에서 데이터 보호의 목적으로 별도의 사용자 이름과 비밀번호를 요구하기도 한다.
- 일반적인 웹사이트에서는 잘 사용되지 않는다. - 서브도메인(Sub Domain)
도메인을 보조하는 도메인으로써, URL로 전송하거나 계정 내의 IP 주소나 디렉토리로 포워딩되는 도메인 이름의 확장자이다.
> 네이버 블로그 : blog.naver.com
> 네이버 메일 : mail.naver.com
> 네이버 금융 : finance.naver.com - 도메인(Domain)
웹 브라우저를 통해 특정 사이트를 진입할 때, IP 주소를 대신하여 사용하는 주소이다.
- 도메인을 이용해 한눈에 파악하기 힘든 IP 주소를 보다 분명하게 나타낼 수 있다.
- 도메인은 도메인 네임 서버에 등록된 해당 도메인 이름을 찾아 매칭된 IP 주소를 연결시켜준다. - 포트(Port)
웹 통신에서 특정 애플리케이션을 특정하기 위한 번호이다.
- 기본적으로 URL에서는 포트 번호를 명시해야하지만, http(80)나 https(443)와 같은 프로토콜은 지정시 접속하는 클라이언트의 소프트웨어가 기본 포트 주소를 붙여서 접속하기 때문에 포트 번호를 생략할 수 있다.
- 기본 포트가 아닌 임의의 포트를 사용할 경우 도메인 이름 뒤에 포트 번호를 명시해야한다. - 폴더 혹은 URL 경로
호스트에서 제공하는 자원의 경로를 말한다.
- URL에서 경로를 지정해줌으로써 접근하려는 파일의 위치를 지정해줄 수 있다.
- URL 경로로는 상대경로와 절대경로를 지정해줄 수 있다. 웹 상에서는 주로 상대경로가 많이 쓰인다.
- 흔히 URL 경로까지를 URL의 범위로 간주한다. - 쿼리(Query) 혹은 파일(Query)
URL의 제일 마지막 부분을 End Point라고 부른다. End Point에는 다양한 요소들이 올 수 있다.
File : 해당 경로 안에 존재하는 파일을 직접적으로 명시함으로써 웹상에서 접근할 수 있다.
Query :클라이언트가 자원을 GET 방식으로 요청할 때, 필요한 데이터를 함께 넘겨 줄 목적으로 사용한다.
Fragment : HTML에서는 각각의 요소에 id 속성을 부여할 수 있다. URL에 프래그먼트를 전달하면 페이지가 해당 id가 있는 곳으로 스크롤이 이동된다.
✔️ URL
URL(Uniform Resource Locator)은 웹에 게시된 어떤 자원을 찾기 위한 브라우저에서 사용되는 메커니즘이다. 인터넷상에서 HTML이나 이미지 등 리소스의 위치를 특정하기 휘한 서식으로써 탄생하였다.
예를 들면, 대전광역시 중구 은행동과 같이 특정 주소를 지정하는 것과 같다. 특정 리소스에 접근하기 위해 어느 위치의 경로까지 접근해야하는지를 명시한다.
또한 추가적으로 리소스의 위치에 접근하는 방식까지를 지정한다. 예를 들자면 대전광역시 중구 은행동에 가기 위해선 택시나 버스를 타야된다고 말해주는 것과 같다. 해당 경로로 접근하기 위한 방법까지를 포괄하여 명시하는 것이 URL이다. 흔히 프로토콜을 통해 해당 경로에 어떤 식으로 요청, 접근할지를 나타낸다.
✔️ URN
통합 자원 이름(Uniform Resource Name)을 말하며 이름으로 리소스를 특정한다.
대전광역시 중구 은행동에 사는 김 아무개 씨를 특정해보자. 은행동에 사는 많은 사람 중 김 아무개 씨를 특정하여 해당하는 사람을 지정하듯이, URN은 특정 리소스를 구체적으로 식별하는데 의미를 둔다.
단, 은행동에 사는 김 아무개 씨를 특정할 뿐, 김 아무개 씨에게 어떤 방식으로 접근할 지, 리소스에 대한 요청과 접근 방법, 즉 프로토콜에 대한 내용은 기술하지 않는다.
📌 DNS(Domain Name System)
DNS(Domain Name System)이란 도메인 주소를 IP주소로 변환해주는 규칙과 레코드들의 모음을 말한다.
※ 도메인(Domain) : 웹 브라우저를 통해 특정 사이트에 진입을 할 때, IP 주소를 대신하여 사용하는 주소를 말한다.
만약 IP 주소가 지번 또는 도로명 주소라면, 도메인 이름은 해당 주소에 위치한 상호로 볼 수 있다.
택시를 타고 목적지에 도착하는 상황을 가정해 보자.
서울 중구 세종대로 110이라는 도로명 주소가 있다. 택시를 타고 기사님께 도로명 주소를 전달하면 무사히 목적지에 도착할 수 있다. 그러나 도로명 주소 특성상 주소 자체가 상당히 길고, 주소지만 보면 어떤 건물이 있는지 파악하기 어렵다.
도로명 주소를 대신해서 상호나 건물의 이름을 택시 기사님께 전달할 수도 있다. 택시를 타고 기사님께 서울시청까지 가달라는 메시지를 전달해도 무사히 목적지에 도착할 수 있다. 이와 유사하게 도메인 이름을 이용하면 한눈에 파악하기 힘든 IP 주소를 보다 분명하게 나타낼 수 있다.
✔️ 도메인은 어떻게 관리될까?

- 국제인터넷주소관리기구(ICANN, Internet Corporation for Assigned Names and Numbers)
국가인터넷주소자원관리 기구로 지난 1998년에 설립된 비영리 조직이다.
인터넷 도메인 이름 관리, IP 주소 할당, 루트 서버시스템 관리 등의 업무를 관장하는 것이 주요 임무다. 국가도메인 정책을 관장하는 국가최상위도메인지원기구와 루트서버시스템 자문위원회(RSSAC), 인터넷주소자원 관리기구 등이 참여하고 있어 인터넷과 관련한 대부분의 주요 조직들이 이사회에 들어와 있다고 보면 된다. 이른바 명실공히 인터넷 최상위 조직이라고 할 수 있다.
→ ICANN 링크 참조 - 레지스트리(Registry)
각각의 최상위 도메인(TLD)를 관리하는 기관이다.
예를 들어 .kr의 경우 한국 인터넷진흥원이며, .com과 .net의 경우 VeriSign에서 .org의 경우 Public Interest Registry에서 관리한다. 따라서 해당 최상위 도메인은 관리하는 기관의 국적에 따라 그 정책도 달라지게 된다. 여기에서 각각의 TLD를 관리하는 레지스트리 목록을 확인할 수 있다. - 레지스트라(Registrar)
도메인 등록대행업체를 말한다.
등록자로부터 도메인 네임의 등록 신청을 접수하여 그 등록 데이터를 레지스트리의 데이터베이스에 등록한다.
최상위 도메인 당 하나만 존재하는 레지스트리와 달리, 등록 서비스를 제공하는 레지스트라는 레지스트리와의 계약 하에 복수 존재한다. 때문에 도메인 등록•관리 비용은 레지스트라에 따라 차이가 있다.
레지스트라로 인정되기 위해서는 국제 인터넷 주소 관리 기구(ICANN)에 의한 심사에 합격할 필요가 있다.
(아이네임즈, 가비아, IBI 등) - 리셀러(Reseller)
레지스트라를 경유하여 도메인 등록 업무를 대행하는 업자를 말한다.
리셀러는 SRS(Shared Registry System)이라는 도메인 관리 시스템의 접속 권한이 없기 때문에 반드시 레지스트라를 경유하여 도메인을 관리하게 된다. - 웹 에이전시(Web Agency)
웹사이트나 기업, 단체의 홈페이지를 전문적으로 어울리고 그 분야의 느낌에 맞게 제작해 주는 업체를 말한다.
웹페이지를 만드는 에이전시 기업 뿐만 아니라 개인 블로그나 사이트 등을 직접 구현하는 웹 개발자도 포함된다. (적어놓은 웹 에이전시의 개념과는 상충되지만) 제공받은 도메인으로 웹페이지를 구현해 클라이언트에게 서비스를 제공하는 역할을 한다는 의미로 받아들이면 된다.
✔️ 도메인의 계층적 흐름

- 루트 도메인(Root Domain)
ICANN이 직접 관리하며, TLD DNS 서버 IP들을 저장해두고 안내하는 역할을 한다.
루트 존의 레코드의 요청에 직접 응답하고 적절한 최상위 도메인(TLD)에 대해 권한이 있는 네임 서버 목록을 반환함으로써 다른 요청에 응답한다. 루트 네임 서버들은 인터넷 인프라스트럭처의 중요한 부분인데, 그 이유는 해당 서버들이 인간이 읽을 수 있는 호스트 이름을 인터넷 호스트 간 통신에 사용되는 IP 주소로 변환(리졸브)하는 첫 단계이기 때문이다. - 특수/리버스 도메인(Reverse Domain)
IP 주소를 도메인 이름으로 변환하기 위해 네임 서버에 설정하는 특수 도메인이다.
리버스도메인을 네임서버에 등록해 놓으면 IP주소에 대응하는 도메인 이름(kr, com 등의 최상위 도메인을 포함한 도메인 이름)을 조회할 수 있다. 진흥원 202.30.50.51에 해당하는 리버스도메인을 네임서버에 설정하였으며, 이에 따라 누구든지 202.30.50.51에 대해 네임서버에 질의하면 mail.nic.or.kr이라는 도메인 이름을 얻을 수 있다. 또한 이와 같이 IP주소를 이용하여 도메인 이름을 조회하는 것을 역질의라고 한다. - 일반 최상위 도메인(gTLDs, Generic Top Level Domain)
루트 바로 아래 있는 최상위 도메인으로, 전세계에서 공통적으로 사용하는 도메인이다.
일반 최상위 도메인으로 .com, .net, .org 등이 존재한다.
일반 최상위 도메인 종류 - 국가 코드 최상위 도메인(ccTLDs, Country-Code Top Level Domain)
루트 바로 아래 있는 최상위 도메인으로, 국가별로 구분되어 사용하는 도메인이다.
.kr(Korea, Republic of) : 대한민국
.au(Australia) : 호주
.de(Germany) : 독일
.jp(Japan) : 일본
.tw(Taiwan, Province of China) : 대만
.us(United States) : 미국
등 국가별로 사용하는 도메인이 존재한다.
국가 코드 최상위 도메인 종류
✔️ 도메인은 어떻게 가져올까?

- 리졸버(Resolver)
DNS 클라이언트의 요청을 네임 서버로 전달하고 네임 서버로부터 캐싱된 정보(도메인 이름과 IP 주소)를 받아 클라이언트에게 제공하는 기능을 수행한다.
이 과정에서 리졸버는 하나의 네임 서버에게 DNS 요청을 전달하고 해당 서버에 정보가 없으면 다른 네임 서버에게 요청을 보내 정보를 받아온다. 받아 온 정보는 리졸버에 캐싱한 후 사용자에게 전달한다.
추가로, 리졸버의 모든 기능을 PC와 같은 클라이언트 호스트에 구현하는 것은 단말 시스템 자원의 한계와 같은 제약이 있다. 이에 따라 리졸버의 대부분의 기능은 DNS 서버(Local DNS 서버)에 구현하고, 클라이언트 호스트에는 리졸버의 단순한 기능만을 지닌 리졸버 루틴을 구현하는 옵션이 많이 사용된다. - 루트 서버(Root Server)
최상위 레벨 도메인의 목록을 반환한다.
리졸버(Local DNS에 존재하는)에 캐싱된 서버가 없을 경우 루트 서버에 최상위 레벨 도메인을 요청한다. 루트 서버는 최상위 도메인의 주소를 리졸버에 반환한다. - 최상위 도메인 서버(TLD DNS Server)
Authoritative DNS Sever 주소를 저장해두고 리졸버의 요청에 따라 주소를 반환한다.
최상위 도메인 서버는 해당 서버 제공 업체의 DNS 서버에 요청을 보내라고 리졸버에게 알려준다.
ex) google.com - Authoritative DNS Server
실제 개인 도메인 IP 주소의 관계가 기록/저장/변경되는 서버이다.
일반적으로 도메인/호스팅 업체의 네임서버를 말하지만, 개인 DNS 서버 구축을 한 경우도 여기에 해당한다.
ex) www.google.com, mail.google.com 등
✔️ Zone File
특정 정보나 서비스를 제공하는 호스트(서버)에 접속하기 위해서는 그 영역의 정보, 즉 존 파일(Zone File)을 가지고 있는 네임서버로 우선 접근해야 한다.
존 파일은 네임과 클래스, TTL, 레코드 타입, 레코드 데이터로 구성된 레코드들로 구성되어 있다. 네임 서버들은 이러한 존 파일들을 바탕으로 요청에 해당되는 레코드를 리턴한다. 리졸버는 이 레코드를 살펴보고 리턴해야할 IP 혹은 다음에 쿼리를 진행할 서버의 주소를 확인한다.
✔️ 레코드(Record)
- 이름(Name)
'example.com'과 같은 도메인 네임 혹은 서브 도메인의 이름 등을 저장한다. - 레코드 클래스(Record Class)
네트워크 타입을 지정한다.
일반적으로 IN(인터넷)으로 지정된다. - TTL(Time To Live)
리졸버가 레코드를 몇 초동안 저장할지를 명시한다.
해당 시간이 지나면 리졸버는 해당 레코드를 삭제한다. - 레코드 타입(Record Type)
반환할 데이터의 형식을 말한다. - 레코드 데이터(Record Data)
반환되는 데이터를 말한다.
✔️ 대표적인 레코드 타입 형식
- A, AAAA 형식
IPv4, IPv6 주소임을 명시한다.
A : IPv4 주소임을 명시
AAAA : IPv6 주소임을 명시 - CNAME 형식
데이터가 도메인 주소임을 명시한다. - NS 형식
데이터가 도메인 네임서버들의 주소임을 명시한다. - SOA 형식
데이터가 도메인 네임 서버들 중 주 서버의 정보들에 대한 데이터임을 명시한다.
주 네임 서버와 통신할 수 있는 포트 번호, TTL, 도메인 주소 등이 적혀있다.
댓글