들어가기전, URL의 구조 해부
http://www.smartchoice.co.kr:80/smc/smartreport/smarttalkview.do
?sm_Seq=1596&searchType=tc&searchKeyword=&pg=2
(출처: https://hihoyeho.tistory.com/entry/URL과-URN-그리고-URI [하이호예호])
http: - 프로토콜(protocol)
-> Hyper Text Transfer Protocol
-> 정보를 교환할 때 필요한 약속으로 어떤 정보를 요청하는 것인지 미리 해석할 수 있음
-> http 이외에도 https, file, mailto, news 등등
-> http 프로토콜의 경우 브라우저의 UI에서 지원하기때문에 직접 입력하지않아도 자동 인식
www - 호스트(host)
-> 연결할 서버의 주소로 world wide web의 약자, 간단히 줄여서 web이라고 부름
-> www이외에도 여러 관리서버를 가지고 있을 경우 다른 이름 사용 (http://news.naver.com)
smartchoice.co.kr - 도메인(domain)
-> 네트워크상에 존재하는 위치(주소..?)
-> URL을 구성하는 가장 기본적인 요소
-> com / org / net / gov
-> 도메인은 [도메인 이름 or IP 주소] 중 하나로 표현 가능 (로컬 호스트에 접근하고자 할 때)
① http://localhost/
② http://127.0.0.1/
:80 - 포트(port)
-> 포트번호는 콜론(:)으로 구분하며, 80포트의 경우 컴퓨터의 TCP/IP 연결이 기본포트로 보통은 생략이 기본
-> 정상적으로 찾아가는 것으로 봐서 daum은 기본포트를 80으로 사용 http://www.daum.net:80
/smc/smartreport/smarttalkview.do - 경로(path)
-> 파일 이름 or 디렉토리 이름
-> 너무 많은 정보가 있는 웹사이트의 경우 페이지나 디렉토리별로
분류해서 관리하지않으면 뒤범벅이 되기때문에 그룹화하여 계층별로 관리하는 것이 일반적이다.
?sm_Seq=1596&searchType=tc&searchKeyword=&pg=2 - 쿼리(query)
-> 해당 페이지 구성에 필요한 파라미터들로
요즘은 많은 웹사이트들이 RESTFul URL 구조를 많이 사용하며 위와 같은 쿼리를 표현하지 않는 추세
1. URL (Uniform Resource Locator) - 자원
- resource의 위치를 나타내는 것
- 흔히 알고 있는 웹사이트 주소, FTP주소, mail주소도 포함
- 예전에는 URL이 가리키는게 파일 소스였으나 요즘은 Rewrite 등의 아파치 톰캣 등의 핸들러때문제 자원이라고 부름
- 웹사이트 주소가 요청하는 파일이라기보다는 구분자로 본다.
- 웹 상에 서비스를 제공하는 각 서버들에 있는 파일의 위치를 표시하기 위한 것
- http://blong.com/work/test.pdf 는 blog.com서버에서 work폴더안의 test.pdf를 요청
2. URI (Uniform Resource Identifier) - 통합 자원 식별자
- resource를 가리키는 식별자 -> URL과 URN도 리소스를 가리키는 말이나 URI는 더 넓은 의미
- 모든 정보의 리소스를 가리키는 식별자로 두목격
- 인터넷에 있는 자원을 나타내는 유일한 주소
- http://test.com/test.pdf?docid=111 이라는 주소는 URI이지만 URL은 아니다.
http://test.com/test.pdf 까지만 URL임(주소의 위치)
docid=111이라는 쿼리스트링의 값에 따라 결과가 달라지게됨, 따라서 식별자 역할을 하고 있음
- http://test.com/test.pdf?docid=111 / http://test.com/test.pdf?docid=112는같은 URL을 가지고 다른 URI를 가짐
3. URN (Uniform Resource Name)
- resource의 이름을 나타내는 것
- URL의 경우 위치를 기반으로 두고있기때문에 해당 위치에 있는 자원이 없어지거나 할 경우 검색 수단으로써의 기능 상실
이를 보안하고자 만들어진 것이 URN이며 URN은 위치에 의존하는 것이 아닌 리소스의 '이름' 그 자체를 지시하는 것
- URL이 http와 같은 프로토콜로 시작한다면, URN의 경우 urn으로 시작하여 콜론(:)으로 구분하여 표현한다.
urn : isbn : 9788982814471
String uri = request.getRequestURI();
String conPath = request.getContextPath();
String com = uri.substring(conPath.length());
// url : 주소전체 -> http://localhost:8080/coding02/list.do
// uri : 인터넷 기본 주소 제외 -> /coding02/list.do
// conPath(= ContextPath) : 파일명or프로젝트명 -> coding02
// com = uri.substring(conPath.length()) : 프로젝트명 뒤의 주소 -> list.do
// console에서 출력해보기
System.out.println(uri); // /coding02/*.do
System.out.println(conPath); // /coding02
System.out.println(com); // /*.do
▶ URI에는 URN, URL이 포함되어 있고, URL은 URI이지만 URI는 URL이 아니다.
▶ URL은 인터넷 상의 자원 위치를 나타냄
▶ URI는 인터넷 상의 자원을 식별하기 위한 문자열의 구성
URI / URN | URL |
blog.com/page.html | http://blog.com/page.html |
'Programming > Web' 카테고리의 다른 글
[WEB] Web Server(웹서버) / WAS(웹어플리케이션) / Web Container (0) | 2020.07.30 |
---|---|
[WEB] HTTP Method GET / POST의 차이 (0) | 2020.07.23 |
[WEB] 웹 프로그래밍(Web Programming) (0) | 2020.07.22 |
[WEB] HTTP / 쿠키(Cookie)와 세션(Session) (0) | 2020.07.20 |
[Web Application Server] Apache Tomcat 9 디렉토리 구조 (0) | 2020.07.15 |