본 내용은 책 'HTTP 완벽 가이드'를 참고해 작성했습니다.
2-1. URL 이란?
Uniform Resource Locator의 약자. 인터넷 리소스를 가리키는 표준이름. 브라우저가 정보를 찾는데 필요한 리소스의 위치를 가리킴
2-2. URL의 문법
동일한 문법으로 모든 사람이 동일한 규칙으로 리소스를 찾을 수 있음
<스킴>://<사용자이름>:<비밀번호>@<호스트>:<포트>/<경로>;<파라미터>?<질의>#<프래그먼트>
주로 사용되는 URL 구조
<스킴>//<호스트>:<포트>/<경로>
예시
HTTP의 URL <http://www.joes-hardware.com/seasonal/index-fall.html>
- 그 외 프로토콜의 URL
FTP => , FTP 서버에 올라간 파일 가리킴
rtsp => rtsp://www.joes-hardware.com:554/interview/cto_video, 스트리밍을 제공하기 위해 비디오 서버에 호스팅하고 있는 영화를 가리킴
- 스킴
- 웹 클라이언트가 리소스에 어떻게 접근하는지 알려줌
- 사용자 이름과 비밀번호 : FTP URL 스킴을 사용하면 사용자 이름과 비밀번호를 입력,
- 사용자 이름 : 기본값 anonymous
- 비밀번호 : 브라우저마다 기본값 다름(크롬, chrome@example.com)
- 호스트 : 서버의 위치 www.naver.com www.boosters.kr
- 경로 : 서버에서의 리소스 경로 /brand.php
- 파라미터
- 서버에 정확한 요청을 하기 위해 필요한 값
- 필요한 파라미터가 없으면 서버가 해당 요청을 잘못 처리하거나 처리하지 않을 수 있음
- 형식
- ; 로 구분 ;sale=false
- 이름/값 의 형태
<http://www.joes-hardware.com/hamers;sale=false/index.html;graphics=true> hammers 경로 조각 -> 파라미터 sales의 값 false index.html 경로 조각 -> 파라미터 graphics 값 true
- 질의 문자열
- 요청받을 리소스 형식의 범위를 좁히는 용도
- 형식
- & 구분 ?item=123
- 이름=값 의 형태
<http://www.joes-hardware.com/inventory-check.cgi?item=12731> -> 판매되지 않은 상품의 재고리스트에서 아이템 번호 12731의 재고가 있는지 조회하는 url
- 프래그먼트
- 형식 : #~
- DOM의 id가 됨
2-3. 단축 URL
- 절대 URL
- 리소스에 접근하기 위한 모든 정보를 가지고 있는 url
- http://www.joes-hardware.com/index.html
- 상대 URL
- URL을 짧게 표기하는 방식
<a href="./hammer.html"> html 작성자는 url에 스킴, 호스트, 다른 컴포넌트를 입력하지 않아도 됨 기저 url을 통해 기술하지 않은 정보를 추측할 수 있기 때문. 여기서 기저 url은 <http://www.joes-hardware.com/tools.html>
- 장점
- HTML 페이지 같은 리소스 집합을 쉽게 변경할 수 있음
- 리소스의 위치를 변경하더라도 잘 동작함
- URL 확장
- 브라우저 사용자에게 편의성 제공하는 용도
- 브라우저 특징
- 호스트명 확장
- 해당 기능을 지원하는 브라우저는 단순한 단어를 입력해 url을 제공
yahoo -> www.yahoo.com
- 히스토리 확장
- 검색 자동완성
- URL 기록을 저장해 시작 부분이 같은 url을 보여주는 것
- http://www.joes- => <http://www.joes-hardware.com>
2-4. 안전하지 않은 문자
다양한 인터넷 프로토콜과 장치에도 데이터를 안전하게 송수신 하기 위한 URL 설계와 좋은 가독성이 필요했다. 그를 위해 사용하는 것이 인코딩.
- URL 문자 집합
- 주로 영어와 US-ASCII 기반
- 비영어 언어와 특정 이진데이터의 경우
- URL 이스케이프 문자열을 사용해 지원
- 안전하지 않은 문자를 % 기호로 시작해서 ASCII 코드로 표현되는 두 개의 16진수 숫자로 이루어진 '이스케이프' 문자로 바꿈
~ | 126(0x7E) | %7E |
빈 문자 | 32(0x20) | %20 |
% | 37(0x25) | %25 |
- URl에 사용 시 반드시 인코딩해야 하는 문자
US-ASCII 문자 집합에 포함되지 않거나 인터넷 게이트웨이와 프로토콜에서 사용돼 혼란을 줄 것이라 예상되는 문자들
마무리
하지만 URL의 치명적 단점은 리소스 자체가 아닌 리소스의 위치를 의미하기 때문에 리소스 위치가 변경되면 더이상 찾지 못하는 것이다. 그렇기에 위치에 상관없이 리소스를 찾을 수 있는 URN 아이디어가 나왔지만, 아직 실현되기까지는 갈 길이 멀다.
'네트워크 > HTTP' 카테고리의 다른 글
[HTTP] 4장 : 커넥션 관리 (2) | 2023.12.04 |
---|---|
[HTTP] 3장 : HTTP 메시지 (0) | 2023.12.04 |
[HTTP] 1장 : HTTP 개관 (0) | 2023.12.04 |