URL 문법 (1)
python
http://www.joes-hardware.com/seasonal/index-fall.html
- 스킴 : 어떠한 프로토콜을 쓸 것인가?
http- html이 아니어도 된다.
- ftp, rstp 등도 가능
- 서버의 위치 : 서버의 위치는 어디인가?
www.joes-hardware.com - 리소스의 경로 : 리소스의 위치는 어디인가?
seasonal/index-fall.html
python
< html에서의 URL 구조>
'(스킴)://(서버위치)/(경로)'
URL 문법 (2)
스킴이 http가 아닌 경우, 문법이 조금씩 달라지게 된다.
그러나 기본적으로 다음과 같은 구조를 가진다.
python
'(스킴)://(사용자 이름):(비밀번호)@(호스트):(포트)/(경로);(파라미터)?(질의)(#)(프래그먼트)'
모든 URL이 이 9가지를 가진 것은 아니고, 필요에 따라 선택적으로 가지게 된다.
- 호스트와 포트 : 서버의 호스트명이나 ip주소
- 기본적으로는 80
- 이름 / 비밀번호 : 이름과 비밀번호를 요구하는 서버가 있을 수 있음.
- 값이 삽입되어 있지 않은 경우 기본값을 사용
추가적인 정보를 위한 요소
- 파라미터 : 세미콜론(;) 오른쪽에 위치, 리소스에 접근하기 위한 추가적인 정보
- 질의 문자열 : 물음표(?) 오른쪽에 위치, DB 등에 접근하기 위한 정보
- 프래그먼트 : 샵(#) 오른쪽에 위치, 리소스 안의 절이나 부분을 가리키기 위한 정보
- ex. 누르면 해당 부분으로 스크롤을 내리는 버튼
단축 URL
모든 URL이 위와 같은 3가지 또는 9가지 정보를 다 담고 있는 것은 아니다.
이렇게 정보 중 일부만을 담은 URL을 상대 URL, 전부 담은 것을 절대 URL이라고 한다.
상대 URL을 쓸 경우, 알려지지 않은 정보를 추측하기 위한 URL이 이미 있다.
이를 기저 URL이라고 한다.
상대 URL을 기저 URL로 변경하는 알고리즘이 RFC 2396에 포함되어 있다.
일부 브라우저는 호스트명 확장, 히스토리 확장을 통해서 더 편리한 검색을 지원.
안전하지 않은 문자
정보의 유실 위험 없이 URL이 전송될 수 있도록 문자의 종류를 제한함.
또한 안전하지 않은 문자들을 표현할 수 있게끔 퍼센티지 기호 + 16진수 아스키 코드 로 표기.
추가적으로 기능이 이미 정해진 예약된 문자 역시 설정해 놓음.
여러가지 스킴
- http
- https : SSL 계층이 추가됨
- mailto : 이메일 주소
- ftp : 파일전송
- rtsp : 실시간 스트리밍
- file
- news
- telnet : 대화형 서비스