URL은 스킴에 따라 문법이 모두 다르지만, 아래의 구조를 기반으로 선택적으로 사용합니다.<HTML>
Protocol://<사용자이름>:<비밀번호>@<호스트>:<포트>/<경로>?<질의>#<프레그먼트>
- Protocol
- 사용할 프로토콜을 말하며, 리소스에 어떻게 요청, 접근할 것인지를 명시합니다.
- 웹에서 주로 HTTP 프로토콜을 사용합니다.
- 그 밖에 ftp, mailto(이메일), rtsp(스트리밍), http, https, ssh, file
- 사용자 이름과 비밀번호
- 어떤 서버들은 자신이 가지고 있는 데이터에 접근하기 위해서 사용자의 이름과 비밀번호를 요구합니다.
- ex) ftp://**victolee:12345**@호스트/asd.xls
- 만약 웹 서버에서 사용자이름과 비밀번호를 요구하는 URL 스킴을 사용함에도 클라이언트가 이를 명시하지 않고 URL에 접근한다면, 기본값으로 “사용자 이름 : anonymous , 비밀번호는 브라우저에서 제공하는 기본 값”을 따르게 됩니다.
- 어떤 서버들은 자신이 가지고 있는 데이터에 접근하기 위해서 사용자의 이름과 비밀번호를 요구합니다.
- 호스트와 포트
- 하나의 Host( 컴퓨터 )에는 여러 개의 Process( 프로그램 )이 각각의 Socket( 소켓 )을 사용하여 데이터 통신을 하고 있기 때문에, 각각의 소켓을 구분할 필요가 있습니다.
- 이 때 소켓을 구분하는 역할을 하는 것이 Port( 포트 )입니다.
- 톰캣을 다뤄보셨다면, 로컬에서 개발을 했을 때 접근하는 URL은 localhost:8080 일 것입니다.
- 이처럼 서버에는 포트에 따라 소켓이 연결되어 있고, 포트 번호에 따라 다른 프로토콜이 사용될 수 있습니다.
- HTTP 프로토콜에서 포트 번호를 명시하지 않으면, 80번 포트를 기본 값으로 사용합니다. ( Well-known port – ) 링크
- ex) http://www.google.com:80
- 경로
- 호스트에서 제공하는 자원의 경로를 의미합니다.
- ex) https://movie.naver.com/**movie/running/current.nhn
- 질의
- Query String( 쿼리 스트링 )이라고도 합니다.
- 클라이언트가 자원을 GET 방식으로 요청할 때, 필요한 데이터를 함께 넘겨 줄 목적으로 사용합니다.
- 개발할 때 함수를 호출하면 파라미터를 던져주는데, 이와 비슷하다고 보면 됩니다.
- ex) http://localhost:3000/index?**id=3&page=1
- 프래그먼트
- HTML에는 각각의 요소에 id 속성을 부여할 수 있는데요, URL에 프래그먼트를 전달하면 페이지가 해당 id가 있는 곳으로 스크롤이 이동하게 됩니다.
- 이 글의 URL에 프래그먼트를 추가하면, 가장 마지막으로 이동할 것입니다.
- ex) http://victorydntmd.tistory.com/287#bottom