컴퓨터 사이언스 (CS)/네트워크

URL과 리소스

한소희DE 2022. 4. 24. 19:27

 

URI는Uniform Resource Identifier의 약자로, 위치 & 이름 또는 둘 다 추가로 분류될 수 있다.
여기서, 위치(Locator)가 URL, 이름(Name)이 URN이다. 오늘은 이 중에서도, 전 세계적으로 통용되는 URL에 대해 포스팅해 볼 것이다.

 

 

목차

URL의 개념

URL의 구성

단축 URL

URL의 인코딩

 


 

 

 

01. URL의 개념

URL은 Uniform Resource Locator의 약자로, 인터넷의 리소스를 가리키는 표준 이름을 말한다. 즉, 원하는 리소스가 어디에 위치하고 어떻게 가져오는지에 대해 정의해주는 기능을 갖고 있다.

 

URL은 우리가 원하는 정보를 가리키고, 그것이 어디에 있으며 어떻게 접근하면 될 지 알려주는 기능을 갖고 있다.

URL이 없었을 땐, 상대방과의 파일 공유를 위해서 많은 소통이 필요했을 것이다.

(예를들어, 어디로 접속해서 & 어느 파일을 어떻게 열어서 & 몇 번째 파일을 열어야 한다고 소통해야 했을 것이다.)

하지만 URL은 한 줄의 주소로 위의 정보들을 모두 전달해주기 때문에, 소통이 더욱 간편해짐에 있어 의미가 있다.

 

 


 

02. URL의 구성

 

URL은 일반적으로 아래와 같은 구성을 지니고 있다.

 

<스킴>://<사용자 이름>:<비밀번호>@<호스트>:<포트>/<경로>;<파라미터>?<질의>#<프래그먼트>

 

이제 이들에 대해서 하나씩 알아보도록 하자.

 

 

 

 

2-1. 스킴

스킴이란, 어플리케이션이 어떤 프로토콜을 사용해서 리소스를 요청해야 하는지 알려준다.

일반적으로 http, https가 그것이다.

 

스킴에 따라서, URL의 구조는 조금씩 달라진다. 대표적으로 많이 쓰는 스킴들의 URL구성을 살펴보자.

 

  • http   : 하이퍼텍스트전송 프로토콜 스킴. 사용자 이름이나 비밀번호가 없다는 것을 제외하곤, 일반 URL 포맷을 지킨다는 특징이 있다. 기본 포트값은 80이다.
    •  http://<호스트>:<포트>//<경로>?<질의>#<프래그먼트>
  • https  : 위 http에 보안 소켓 계층(SSL)이 추가 사용되는 스킴이다. 기본 포트값은 443이다.
    • https://<호스트>:<포트>//<경로>?<질의>#<프래그먼트>
  • mailto   : 이메일 주소를 의미한다. 표준 URL과 다른 포맷을 지닌다.
    • mailto:<RFC-822-addr-spec>
    • 예시) mailto:eng.sohee@gmail.com

 

 

 

2-2. 사용자 이름 & 비밀번호

원하는 리소스에 접근을 허용하기 전에 사용자 이름과 비밀번호를 요구하는 경우가 있는데, 그럴 경우 해당 위치에서 사용자 이름& 비밀번호를 입력한다.

 

 

2-3. 호스트 & 포트

호스트란, 리소스를 갖고 있는 인터넷 상의 호스트 장비를 의미한다. 지정한 IP주소에 데이터를 전달하기 위해 사용한다.

포트란 서버가 열어놓은 네트워크 포트를 의미한다.

 

 

2-4. 경로

경로란, 리소스가 서버의 어디에 있는지 알려준다.

예를 들어서, http://www.engsohee.com:80/test/test.html  이라는 URL이 있다고 가정하자.

이때, 우리가 원하는 파일의 경로는 /test/test.html 을 의미한다. (이런 식으로, 경로는 '/' 문자를 기준으로 여러 경로 조각으로 나뉠 수 있다.)

 

 

2-5. 파라미터

URL에 파라미터가 필요한 이유는, 분명한 요청 처리를 위해서다. 애플리케이션이 서버에 정확한 요청을 하기 위해 필요한 입력 파라미터를 받는 데에 사용한다. 

예를 들어서, 위의 URL 예시 뒤에 파라미터가 추가되어 http://www.engsohee.com/test/test.html;graphics=true 라는 URL이 있다고 가정하자.

이는 값이 true인 graphics 라는 파라미터를 갖는다. (이런 식으로, 파라미터는 ';' 문자를 기준으로 파라미터가 더해질 수 있다.)

 

 

2-6. 질의

질의 문자열은, 요청 받을 리소스 형식의 범위를 좁히기 위해 질문이나 질의를 받는 기능을 한다.

예를 들어, http://www.engsohee.com:80/test/test.html?item=10 이란 URL이 있다고 하면, 해당 html 에서 item 번호가 10인 리소스 값만 출력된다. 이런 식으로, 물음표의 우측에 있는 값들을 질의 컴포넌트라고 한다.

질의 컴포넌트는 앤드(&) 연산자 등으로 여러 개로 구성될 수 있다.

(ex: http://www.engsohee.com:80/test/test.html?item=10&color=blue)

 

 

2-7. 프래그먼트

프래그먼트는, 리소스의 특정 부분을 가리킬 수 있기 위해 필요하다.

예를 들어, http://www.engsohee.com/test/test.html#test01 이라는 URL이 있다고 한다면, HTTP 서버는 /test/test.html 의 전체리소스를 내려받은 후, 프래그먼트를 통해 /test/test.html#test01 에 해당하는 부분만 보여준다.

 

클라이언트는 프래그먼트를 서버에 전달하지 않는다. 전체 객체를 받은 뒤, 프래그먼트 식별자를 사용해 객체의 일부를 보여준다.

 

 


 

03. 단축 URL

웹 클라이언트는 몇 단축 URL을 인식 및 사용할 수 있다고 한다. 이는 리소스를 간결하게 기술하는 장점이 있을 수 있고, 간편하게 자동확장 될 수 있도록 돕는다.

 

 

3-1. 절대 URL

리소스에 접근하는데 필요한 모든 정보를 지녔다. http:// ~ 로 링크하는 것을 의미한다.

 

 

3-2. 상대 URL

URL을 짧게 표기하는 방식이다.HTML 작성자는 URL에 스킴과 호스트 그리고 다른 컴포넌트들을 모두 입력하지 않아도 된다.

기저 URL이 있으면, 그 URL을 중심으로 다른 파일들을 불러올 수 있다.

예시 ) ./hammers.html

상대 URL을 사용하는 장점은, 유동성이다. 문서 집합의 위치가 변경되더라도, 새로운 기저 URL 기반에서 데이터를 불러올 테니, 잘 동작할 것이라는 장점이 있다.

 

 

 

3-3. URL 확장

3-3-1. 호스트명 확장

웹 클라이언트는 단축된 URL을 확장하여, 온전한 URL을 빠르게 입력하게 도와준다.

예를 들어, 우리가 naver를 입력했을 때  https://www.naver.com/ 로 인식하여 접속하는 것을 떠올릴 수 있겠다.

 

3-3-2. 히스토리 확장

온전한 URL을 입력하는 시간을 줄이고자, 과거에 사용자가 방문했던 URL 기록을 저장해두는 기능이다. 우리가 만약 https://www.na 까지 입력을 했을 때,  https://www.naver.com/  을 선택할 수 있도록 보여주는 예시가 바로 그것이다.

 

 

 


 

04. URL의 인코딩

URL은 US-ASCII 문자 집합을 사용한다고 한다.

하지만 간혹 URL에 이진데이터나 일반적을 안전한 알파벳 외 문자도 포함하려는 때가 존재했다.

URL 설계자들은 모든 정보가 유실될 위험이 없이 URL을 전송하기 위하여, 이스케이프 문자열을 쓸 수 있는 기능을 추가했다.

즉 이스케이프 기능이란, 안전하지 않은 문자를 안전한 문자로 인코딩하는 기능이다.

(여기에서 언급되는 '안전하지 않은 문자'란, US-ASCII에서 사용이 금지된 문자들을 의미한다.)

 

이스케이프 기능은, 안전하지 않은 문자를 퍼센티지(%) 기호로 시작해, ASCII 코드로 표현되는 두 개의 16진수 숫자로 이루어진 이스케이프 문자로 인코딩한다.

이를 통해, 모든 정보가 최대한 유실될 위험이 없이 URL을 전송할 수 있도록 하였다고 한다.

 

 

 

 


 

 

URL은 세상에 존재하는 모든 객체에 이름을 지을 수 있고, 새로운 포맷을 쉽게 추가할 수 있다. URL은 상대적이어서, 리소스가 옮겨지면 URL이 더이상 사용될 수 없다는 단점이 있는데, 이를 해결하기 위해 URN이라는 절대적인 위치 표기 기법(?)이 고안되었다고 한다. 

하지만 이미 세계적으로 URL을 사용하고 있기도 하고, 이런 표준을 바꾸기에는 많은 작업이 필요하기 때문에, 근 미래까지는 URL이 전세계적으로 통용되는 리소스 명명 방법일 것이다.

 

 

 

 

공부를 통해 배운 내용을 작성하고 있습니다. 혹여 해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정 조치 하도록 하겠습니다. 오늘도 읽어주셔서 감사합니다!

 

'컴퓨터 사이언스 (CS) > 네트워크' 카테고리의 다른 글

네트워크란 무엇인가?  (0) 2021.08.19