What is a URL? - URL은 무엇일까?
인터넷의 모든 파일이 대도시에 위치해 있으며,
각각의 파일은 운 좋게도 대도시의 집에 살고 있다고 가정 해 봅시다.
주어진 인터넷의 스케일을 고려 해 봤을 때,
상상하지 못한 수의 블록과 거리가 있을 겁니다.
예를 들어, 당신이 대도시의 집들 중 하나에 살고있는, 당신의 친구에게 공유하고 싶은 흥미로운 기사를 가지고 있다고 해 봅시다.
당신은 이 기사를 정확히 어디서 찾을 수 있는 지 어떻게 설명 할 건가요?
맞습니다, 당신은 도시의 모든 주소들을 부를 수 있는 단 하나의 기준을 생각 해 낼 필요가 있으며,
그리고 나서 당신의 친구에게 거리의 이름과 집 번호를 줍니다, 마치 진짜 도시처럼요!
인터넷의 모든 문서들에는 개인 주소를 가지고 있습니다.
예를 들어, JetBrains 의 URL 은 이렇게 생겼습니다 :
https://www.jetbrains.com/
웹 페이지, 이미지, 비디오, 그리고 당신의 컴퓨터에 저장 될 수 있는 문서들 또한 주소를 가지고 있습니다.
이러한 것들을 인터넷 상에서 동일하게 보여주기 위해서,
World Wide Web 의 창조자가 "주소는 이렇게 생겨야 한다" 라는 특별한 기준을 정의했습니다.
이 기준은 URL 이라고 불리며, Uniform Resource Locator 의 약자입니다.
이는 인터넷 상의 파일 주소를 기록하는 표준화된 방식을 표현합니다.
이 표준은 하나의 지정된 기능을 가지고 있습니다 : URL 에 모든 문자가 사용될 수 없다.
밑에 허용된 문자들의 목록이 있습니다 :
- 라틴 알파벳 (아니면 영어 알파벳 심볼)
- 국제화 리소스 식별자 (IRI), URL 의 형식은 유니코드 문자들을 포함해야 한다.
- 숫자들
!#$&'()*+,/:;=?@[]이 문자들은 특별한 의미를 제공한다.- 제한되지 않은 문자 :
-_.~
Basic URL Structure - 기본적인 URL 구조
여기 URL 주소에 대한 예시가 있습니다 :
https://material.io/design/material-theming/#material-theming
https --> PROTOCOL
material.io --> DOMAIN
design/material-theming --> PATH
#material-theming --> ANCHOR
URL 주소는 밑의 템플릿을 따르는 확실한 구조를 가지고 있습니다 :
<scheme>://<login>:<password>@<host>:<port>/<path>?<request parameters>#<anchor>
이제 이 템플릿에 대해서 더 자세히 봅시다 :
<scheme>
<scheme> 는 리소스 데이터를 교환하는 방식입니다.
당신은 아마 http 와 https URL 스키마에 가장 익숙할 텐데, 다른 것들도 있습니다.
<login>, <password>
<login> 과 <password> 는 몇 가지 프로토코을 위해 인증 데이터를 전송하는 접두어입니다.
<host>
<host> 는 사이트가 위치한 도메인 이름이거나, IP 주소입니다.
Domain 은 사이트의 이름이며, IP 는 이에 대한 네트워크 내부의 주소입니다.
<port>
<port> 는 지정된 호스트 내에서 연결을 위해 필요합니다.
HTTP 연결을 위한 공식적인 기본 포트값은 80이며, 대체적인 포트넘버는 8080 입니다.
하지만, 어떠한 다른 포트를 사용할 수 있습니다.
HTTPS 의 기본적인 포트넘버 세팅은 443 입니다.
<path>
<path> 는 도메인 내의 특정한 파일이나 페이지의 정확한 주소를 가르킵니다.
<request parameters>
<request parameters> 는 서버로 전송되는 파라미터들입니다.
요청 파라미터 값들에 의존하여, 사이트는 표시를 약간 다르게 변화할 겁니다.
예를 들어, 서로 다른 명령에 따라 목록 안의 아이템들을 정렬 할 수 있습니다.
<anchor>
<anchor> 는 특정 부분의 웹 페이지나 문서에 연결 할 수 있게 해 줍니다.
이것이 대부분의 URL 의 일반적인 구조입니다.
가장 흔하게, 웹 페에지나 웹 서버에 위치한 문서들에 접근 할 때,
대부분의 파라미터들은 필수적이진 않으며, 자동적으로 세팅됩니다.
당신이 브라우저와 인터넷 내의 특정한 페이지를 보고 싶다면,
URL 템플릿은 보기에 많이 쉬워집니다 :
<scheme>://<host>
예를 들어, 이러한 형식으로 기록 될 수 있습니다.
https://www.google.com
이러한 단순함은 일반적인 인터넷 유저들에게 삶을 더 쉽게 만들어 주지만,
대부분의 프로그래머들은 완벽한 템플릿을 알고 있어야 합니다.
그리고 당신도 말이죠.
Absolute and relative URLS - URL 절대, 상대 경로
우리가 알고 있는 것 처럼, URL 은 여러 부분들로 구성되어 있습니다.
그리고 당신이 같은 사이트를 통해 브라우징할 때, 몇 개의 요소들은 여전히 같습니다.
JetBrains 의 IDE 에 대한 것을 읽고 싶다면,
URL의 host, scheme 부분들이 언제나 https://jetbrains.com 으로 매칭 될 겁니다.
예를 들어, 이러한 링크들을 봅시다 :
- https://www.jetbrains.com/pycharm - PyCharm 에디터에 대한 것.
- https://www.jetbrains.com/go - GoLand 에디터에 관한 것.
- https://www.jetbrains.com/idea - IntelliJ IDEA 에디터에 관한 것
각각의 링크에서 새로운 정보는 <path> 부분에 해당합니다ㅏ.
같은 사이트에 있는 리소스들을 위치시키는 또 다른 방식이 존재하는데,
이는 <path>?<request parameters>#<anchor> 로 가능합니다.
완벽한 웹 주소를 absolute URL (절대경로) 라고 부르며,
반면에 이에 대한 짧은 버전은 relative URL (상대경로) 라고 부릅니다.
이러한 용어들은 밑의 예시에서 보여집니다.
<scheme>://<login>:<password>@<host>:<port>/<path>?<request parameters>#<anchor>
| --- relative URL (상대경로) --- |
| --------- absolute URL (절대경로) ------------ |
또 다른 예시 :
https://www.jetbrains.com/pycharm/
https://www.jetbrains.com/go/
https://www.jetbrains.com/idea/
| - 상대경로 - |
| -- 절대경로 -- |
상대 경로로 리소스를 찾는 것은 오로지 같은 사이트 (도메인) 에서만 작동한다는 것을 기억해야 합니다.
우리는 절대경로로 인터넷을 통하여 리소스를 찾는 것이 쉬워질 수 있다는 것을 압니다.
하지만, 왜 상대경로가 필요할까요? 여기에 이 질문에 대한 주요한 이유들이 있습니다 :
- 상대경로는 짧으며, 상대경로와 함께라면 코딩에 접근성이 더 좋아집니다. - 절대경로는 너무 길다.
- 우리는 쉽게 또다른 호스트로 이동할 수 있는데, 이는 상대 경로가 특정 도메인에 의존하지 않기 때문입니다.
- 브라우저에서 검색하는 데 조금 더 빠릅니다.
Conclusion - 결론
이번 주제에서 URL 에 대해 배운 것 들을 요약 해 봅시다 :
- 우리는 URL 을 통해 인터넷에 어떠한 리소스이던 배치시킬 수 있습니다.
- 각각의 URL 은 여러 부분들로 구성되어 있는데, 하지만, 그중 몇 개는 선택적입니다.
- 우리는 절대경로로 리소스들을 탐색할 수 있으며, 상대 경로를 통해 이들을 검색 할 수 있습니다.
words to remember
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Docker' 카테고리의 다른 글
| REST - REST 란 무엇인가 (0) | 2024.07.19 |
|---|---|
| HTTP messages - HTTP 프로토콜 메세지 (0) | 2024.07.18 |
| MVC - MVC 패턴 (0) | 2024.07.16 |
| Introduction to software architecture - 소프트웨어 아키텍쳐 기초 (0) | 2024.07.15 |
| Documentation - 프로그램 문서 작성 (2) | 2024.07.15 |