Chapter2
URL과 리소스
이준환
 URI(Uniform Resource Identifiers)
 URL – 위치(Location)로 리소스르 식별
 URN – 이름(Name)만으로 리소스를 식별
 고유한이름: 주민번호, ISBN, Hash value!
 Resource
 텍스트, 이미지, 동영상등의 자원
URL, Resource
http://www.joes-hardware.com/seasonal/index-fall.html
Scheme(프로토콜) + Host(서버의 위치) + Path(리소스의 경로)
2.1 인터넷의 리소스 탐색하기
2.1 인터넷의 리소스 탐색하기
mailto:president@whitehouse.gov
ftp://ftp.lots-o-books.com/pub/complete-price-list.xls
rtsp://www.joes-hardware.com:554/interview/cto_video
magnet:?xt=urn:btih:33B7D3E151FF6777423BBB15183D0
4D9F185121&dn=%5bJTBC%5d%20program%20name%
20HDTV.H264.720p.mp4
URL이 없던 시절엔 복잡한 설명을 해야했다.
2.2 URL 문법
<Scheme>://<사용자이름>:<비밀번호>@<호스트>:<포
트>/<경로>; <파라미터>? <질의>#<프레그먼트>
2.2.1 Scheme: 사용할 프로토콜
http://www.joes-hardware.com
알파벳으로 시작해야 함
대소문자 구분 안함
2.2.2 호스트와 포트
http://www.joes-hardware.com:80/index.html
http://161.58.228.45:80/index.html
2.2.3 사용자 이름과 비밀번호
ftp://ftp.prep.ai.mit.edu/pub/gnu
ftp://anonymous@ftp.prep.ai.mit.edu/pub/gnu
ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu
2.2.4 경로
http://www.joes-hardware.com/seasonal/index-fall.html
2.2.5 파라미터
ftp://prep.ai.mit.edu/pub/gnu;type=d
http://www.joeshardware.com/hammers;sale=false/index.h
tml;graphics=true
2.2.5 질의 문자열
http://www.joes-
hardware.com/inventorycheck.cgi?item=12731
http://www.joes-
hardware.com/inventorycheck.cgi?item=12731&color=blue
2.2.5 프래그먼트
http://www.joes-hardware.com/tools.html#drills
Magnet example
magnet:?xt=urn:btih:33B7D3E151FF6777423C82215183D0
4D9F185121&dn=%5bJTBC%5d%20program%20name%20
HDTV.H264.720p.mp4
magnet:? xl = [Size in Bytes] & dn = [file name (URL
encoded)] & xt = urn: btih:[ BitTorrent Info Hash (Hex) ]
 xt(Exact Topic)
 dn(Display Name)
 xl(Exact Length)
2.3 URL Shortcuts
 상대URL
 절대URL
2.3 URL Shortcuts
view-source:http://www.joes-hardware.com/tools.html
<html>
<body>
<A href=“./hammers.html”>hammers</A>
</body>
</html>
2.3 URL Shortcuts
1. html파일을 보면 ./hammers.html은 상대URL이다
2. 상대URL에는 스킴이 없다.(있다면 그건 절대URL)
3. Base url(상대URL을 사용한 tools.html의 URL에서)을
얻는다.
4. 최소 host+port는 있으니 상속받는다.
5. 상대URL(./hmmers.html)과 scheme, host, port를 합
치면 절대 URL이 나온다.
2.3 URL Shortcuts
해석한 절대URL
http://www.joes-hardware.com/hammers.html
2.3 URL 확장
 호스트명 확장
 자동완성
 히스토리 확장
 히스토리, 캐시
2.4 안전하지 않은 문자
 이기종간에 URL로 모든 리소스가 잘 전달되
길 원함
 안전한 전송은 정보유실 없는 URL전송
 전송의 유효성+가독성을 원함
 아스키문자외에 문자도 사용가능해야 함
 이스케이프 기능 추가
2.4.1 URL 문자 집합
 이스케이프 문자열은 US-ASCII에서 사용이 금
지된 문자들
 특정 문자/데이터를 인코딩해서 이동성+완성
도를 높임
2.4.2 인코딩 체계
 Percet incoding이라고도 함
 Percent(%)로 시작해서 ASCII로 표현되는 16
진수의 ‘이스케이프’ 문자로 바꿈
2.4.3 문자 제한
 % / . .. # ? ; : $ + @ 등의 예약어가 있다.
 예약어를 사용하려면 인코딩 해서 사용해야
한다.
 ex; %=%25
2.4.4 좀 더 알아보기
 ~ 인코딩하지 않음
 브라우저가 인코딩하기 가장 좋은 위치(layer)
 극단적으로 모든 문자열을 인코딩할 수 있지
만 규약되어 있지 않아서 오동작을 일으킬 수
있음
 악의적인 문자열은 패턴매칭으로 필터링
2.5 Scheme의 바다
 Scheme(e.g. http, https, mailto, ftp)별로 기본
형식이 있으나 URL문법에서 크게 벗어나지
않음.
 텔넷
telnet://<user>:<password>@<host>:<port>/
2.6 미래
 URL은 강력한 tool이지만 완벽하지는 않다.
 URL은 항상 유효하지 않아서 서비스 제공이
불가할 수 있다.
 URN으로 해결할 수 있다.
 Object의 real name을 사용해서 리소스가 이
동해도 잘 찾아가도록
 PURL(Persistent URL)은 resolver를 통해서 실
제 resource의 위치를 찾아감.
2.6 미래
 PURL도 결국은 DNS처럼 서버와 클라이언트
사이에 resolver 서버를 두어 우회적으로 서비
스함.
2.6.1 지금이 아니면, 언제?
 URN을 미디어 콘텐츠류에 적용하려고 시도
한적이 있었음
 MPEG21 리소스를 표준화하려고 정통부(2003)
에서 시도했지만 2003년 이후 아무 정보가 없
음
Magnet example
magnet:?xt=urn:btih:33B7D3E151FF6777423C82215183
D04D9F185121&dn=%5bJTBC%5d%20program%20name
%20HDTV.H264.720p.mp4
magnet:? xl = [Size in Bytes] & dn = [file name (URL
encoded)] & xt = urn: btih:[ BitTorrent Info Hash (Hex) ]
 xt(Exact Topic)
 dn(Display Name)
 xl(Exact Length)
Magnet example
magnet:?xt=urn:btih:05A3AAABBBFC5A78777AA961D64
4BBDB60886FFA

http 완벽가이드 Chap2

Editor's Notes

  • #3 Hash value 고정된 길이의 메시지 축약 정보
  • #5 URL의 예 암흑시절에 Ftp도 ftp application으로 접속해서 host 알려주고 path 알려주고 접속해서 ?.xls를 찾아라.
  • #9 생략방식 Id만 이땐 브라우저별 기본pw Id:pw 예약어는 콜론과 @
  • #11 세미콜론으로 paramater를 넘김
  • #13 브라우저가 # 해석해서 서버에 보내지않음
  • #14 Good sample URN + url syntax
  • #15 상대URL와 절대 URL로 리소스를 기술=description함 걍 상대경로 절대경로임 *닉스에서
  • #16 Tools.html의 상대URL내용을 절대URL로 만들기! 현재디렉토리의 hammers.html로 연결하라
  • #17 Tools.html의 상대URL내용을 절대URL로 만들기! 4. (질의 같은 컴포넌트를 제외한)
  • #18 포트생략
  • #19 브라우저 애플리케이션에서 지원하는 기능 주소입력창에서 호스트명 확장은 자동완성 기능(휴리스틱)이고 히스토리확장은 실제 히스토리/캐시 내역에서 브라우저는 자동완성 시킴
  • #21 이스케이프 문자열은 ‘가’를 uXXXXX로 변환한 ‘문자열’을 뜻함
  • #25 텔넷은 브라우저가 지원안하니까ㄱ 브라우저로 시작하는게 아니라 프로토콜별 애플리케이션이 존재함 브라우저가 꽤 막강하고 URL을 사용하므로 생각하지만 브라우저는 지원안하는 프로토콜은 the other 앱에 연결시켜줄 수 있고 플러그인/확장 프로그램등으로 사용할 수 있고 Custom protocol방식의 URL scheme을 지원해서 따로 원하는 scheme을 추가해서 추가한 URL이 들어오면 외부 app에 연결해줄 수 있음
  • #29 실제로 xt=urn:btih:???까지만 넣어줘도 잘됨
  • #30 극한의 확률적 collision을 제외한 hash value는 고유하고 변하지 않기때문에 URN의 매우 적절한 형태로 절대적 resource 위치를 표시해줄 수 있음! 실제로 xt=urn:btih:???까지만 넣어줘도 잘됨 토렌트 애플리케이션이 프로토콜을 해석하고 토랭 프로토콜이 트래커에게 피어리스트 요청(HTTP로)해서 피어 리스트 받아오고 피어에게 세션열어서(BitTorrent protocol) 파일 받아옴 DHT 이용해서 peer를 찾아서 파일조각을 배분받음