What is a URL? - URL은 무엇인가?
인터넷에 있는 모든 파일들이 대도시에 위치 해 있다고 상상 해 보세요,
우리 중 일부는 대도시에 집을 가져 운이 좋을 겁니다.
최종적으로, 주어진 인터넷의 스케일을 고려해 봤을 때, 이를 대도시로 비유한다면
상상할 수 없는 수의 단지들과 길이 있을 겁니다.
예를 들어, 대도시의 집들 중 한 곳에 사는 당신의 친구에게 공유하고 싶은 흥미로운 글을 가지고 있습니다.
당신은 이 글이 정확히 어디에 있는지 어떻게 설명할까?
맞습니다. 당신은 도시에 있는 모든 주소들의 이름을 지을 수 있는 하나의 표준을 생각 해 낼 필요가 있으며,
그리고 나선 당신의 친구에게 길 이름과 집 번호를 주는 겁니다. 마치 진짜 도시처럼요!
인터넷에 존재하는 모든 문서들은 개인적인 주소를 가지고 있습니다.
예를 들어, JetBrains 의 웹사이트 URL은 이와 같이 생겼습니다 :
https://www.jetbrains.com/
웹 페이지, 이미지, 비디오, 그 외 컴퓨터에 저장할 수 있는 문서들 또한 주소를 가지고 있습니다.
인터넷 상에서 이것들을 똑같이 보이게 만들기 위해서,
1990년에 World Wide Web의 창시자들이
주소들은 이렇게 생겨야 하는 것에 대한 정의를 내리는 특별한 표준을 개발했습니다.
이 표준은 URL 이라 부르는데, 이는 Uniform Resource Locator 의 약자입니다.
이는 인터넷에서 파일의 주소를 기록하는 것의 표준화 된 방식을 표현합니다.
이 표준은 하나의 특정 기능을 가졌습니다 : URLs 에는 모든 문자가 사용 될 수 없습니다.
허용된 문자들이 포함 된 리스트는 밑과 같습니다 :
- 라틴 알파벳 (혹은 영어 알파벳 심볼들)
- 국제적 리소스 식별자 (IRI), URL의 형식은 Unicode (유니코드) 문자를 포함해야 합니다.
- 숫자들
- 예약된 문자들은 특별한 의미를 가집니다.
!#$&'()*+,/:;=?@[]
- 예약되지 않은 문자들은 이와 같습니다 :
-_.~
Basic URL Structure - URL의 기본적인 구조
여기 URL 주소의 예제가 있습니다.
https://material.io/design/material-theming/#material-theming
|
이를 보기 좋게 표로 나눠 봅시다.
https:// | material.io | /design/material-theming/ | #material-theming |
---|---|---|---|
PROTOCOL | DOMAIN | PATH | ANCHOR |
URL 주소는 밑의 템플릿을 기반으로 하는 확실한 구조를 가지고 있습니다.
<scheme>://<login>:<password>@<host>:<port>/<path>?<request parameters>#<anchor>
자 이제 이 템플릿의 자세한 정보를 봅시다 :
<scheme>
는 리소스 기반의 데이터를 교환하는 방식입니다.
당신이 아마 가장 익숙한 것은 http 와 https URL 템플릿일 텐데, 다른 것들도 있습니다.<login>
,<password>
는 필요하면 몇몇 프로토콜을 위해 인증 데이터를 전송하는 접두사입니다.<host>
는 사이트가 위치 해 있는 IP 주소 혹은 도메인 이름입니다.
Domain 은 사이트의 이름이며, IP는 네트워크 내부에서의 주소입니다.<port>
는 지정된 호스트 내 연결을 위해 필요합니다.
HTTP 연결의 공식적인 기본 포트는 80이며, 8080이기도 합니다만, 다른 포트를 사용할 수 있습니다.
HTTPS의 기본 세팅은 443입니다.<path>
는 도메인 내의 특정한 파일 혹은 페이지의 정확한 주소를 지정합니다.<request parameters>
는 서버로 전송되는 파라미터들입니다.
사이트는 요청 파라미터들에 의존하여 디스플레이가 약간 다를 수 있습니다.
예를 들어, 서로 다른 순서로 아이템을 정렬 할 수 있습니다.<anchor>
는 웹 페이지 혹은 문서의 세부적인 부분에 연결하게 해 줍니다.
이는 대부분의 URLs에 대한 일반적인 구조입니다.
대부분의 경우, 웹 서버에 위치하는 웹 페이지 혹은 문서에 접속 할 때,
대부분의 파라미터는 필수적이지 않으며 자동적으로 세팅됩니다.
당신이 그저 인터넷 웹 브라우저에 있는 특정 페이지를 보고 싶다면, URL 템플릿은 더 보기 쉬워집니다.
<scheme>://<host>
예를 들어, 다음 형식으로 기록 될 수 있습니다 :
https://www.google.com
이런 단순함은 일반적인 인터넷 유저들의 삶을 쉽게 만들어 주지만,
대부분의 프로그래머는 완벽한 템플릿을 알 필요가 있습니다. 그리고 당신도요.
Absolute and relative URLS - 절대적, 상대적 URL
우리가 아는 것 처럼, URL은 여러 부분으로 구성되어 있으며,
당신이 같은 사이트를 통해 브라우징 할 때, 몇 가지 요소들은 그대로 똑같습니다.
JetBrains에서 만든 어떠한 IDE 에 대한 정보를 읽던 간에,
schema (스키마) 와 host (호스트) 는 언제나 동일합니다.
예를 들어, https://www.jetbrains.com 가 됩니다.
해당 도메인에서 IDE에 대한 정보를 읽고 싶다면,
- https://www.jetbrains.com/pycharm/ PyCharm IDE 에 대한 정보
- https://www.jetbrains.com/go/ GoLand IDE 에 대한 정보
- https://www.jetbrains.com/idea/ IntelliJ IDEA 에 대한 정보
각 링크에 있는 새로운 정보는 <path>
입니다.
이들은 같은 사이트 위에서 리소스들이 다른 방식으로 위치하는데, <path>?<request parameters>#<anchor>
로 존재합니다.
완성된 웹 주소는 absolute (절대적인) URL로 불리는 동안,
이에 대한 더 짧은 버전은 relative (상대적인) URL 로 부릅니다.
이러한 용어들은 밑의 예시에서 보여줍니다.
| 절대적 경로 (absolute url) |
<scheme>://<login>:<password>@<host>:<port>/<path>?<request parameters>#<anchor>
| 상대적 경로 (relative url) |
| 절대적 경로 |
https://www.jetbrains.com/pycharm/
https://www.jetbrains.com/go/
https://www.jetbrains.com/idea/
| 상대적 경로 |
이는 같은 사이트에서만 동작하며, 다른 사이트에서는 상대적 경로를 참조 할 수 없다는 것을 기억해야 합니다.
우리는 인터넷에서 절대적 경로 (absolute URLs) 를 통해 쉽게 리소스를 찾을 수 있다는 걸 알고 있습니다.
그러나, 우리에게 왜 상대적 경로 (relative URLs) 가 필요할까요?
여기에 그에 대한 주요적인 이유들이 있습니다 :
- 이는 짧으며, 코딩에 더 접근성이 좋아집니다.
- 우리는 사이트에서 다른 호스트로 움직이기 더 쉬워지는데,
이는 상대적 경로가 특정 도메인에 의존하지 않기 때문입니다. - 브라우저에서 조금 더 검색하기 빠릅니다.
Conclusion - 결론
이번 주제에서 URLs 에 대해 배운 것들을 요약 해 봅시다 :
- URL 을 통해 인터넷에 있는 리소스를 위치할 수 있습니다.
- 각 URL은 여러 부분으로 이루어져 있지만, 그 중 일부는 선택적입니다.
- 우리는 절대적 URL 에 의해 리소스를 검색하며, 그리고 나선 상대적 경로로 검색합니다.
words to remember
megalopolis : 거대 도시, 대도시
Given : 주어진
come up with : 생각 해 내다
transmit : 전송, 부치다
ordinary : 평범한, 보통의, 보통 수준의
whichever : 어느 쪽이든, 어느 것이든지, 어느 쪽이 ... 든지
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Git' 카테고리의 다른 글
Start with git - git 시작하기 (0) | 2024.05.19 |
---|---|
Introduction to Linux - 리눅스 소개 (0) | 2024.05.16 |
Files - 파일의 의미와 정의 (2) | 2024.05.13 |
What are bugs - 버그란 무엇인가? (0) | 2024.05.11 |
Libraries - 라이브러리 (0) | 2024.05.10 |