
지난 번 URI VS URL VS URN 글에 이어
이번에는 Http URL의 구조를 보다 자세히 정리했습ㄴ디ㅏ
URL의 구조는 아래와 같은 형식으로 구성됩니다
http://<host>:<port>/<path>?<searchpart>
실제 예시를 통해 살펴보겠습니다
https://velog.io/@hwangjeyeon/posts?page=1
각 구성 요소에 대해 자세히 알아보겠습니다
URL의 첫 번째 부분으로 브라우저가 리소스를 요청할 때 사용하는 프로토콜을 나타냅니다
일반적으로 Http나 Https 프로토콜을 사용합니다
URL의 두번째 부분으로 도메인 이름과 포트번호를 포함하는 영역입니다
SCHEME와 :// 패턴으로 구분됩니다
http://192.168.0.5:8080/index.html
서버 배포경험이 있는 백엔드 개발자라면 위와같이 포트번호가 포함된 주소를 자주 접했을 것입니다!
자원의 경로를 의미합니다
/@hwangjeyeon/posts
예시 주소에서 위 영역이 자원의 경로를 의미합니다
?page=1
웹 서버에 전달되는 쿼리 파라미터로 요청한 리소스에 대한 추가적인 작업을 수행할 수 있도록 합니다
서버는 이 파라미터를 활용해 사용자의 요청에 맞는 결과를 반환할 수 있습니다
fragment 영역으로 엄밀히 말하면 URL의 영역이 아닌 URI의 영역입니다
https://velog.io/@hwangjeyeon/posts?page=1#top
위와같이 #(fragment)를 붙여 표현하며,
웹 페이지 내, 특정 위치로 이동할 떄 사용합니다
위 URI는 페이지 내 특정 지점인 최상단으로 이동하는 역할을 합니다
또한 fragment는 서버에 요청되지 않으며, 브라우저가 클라이언트 측에서 처리합니다
위에서 정리한 내용은 http URL에 대한 구조입니다.
그러나 scheme에 따라 URL의 구조는 차이가 있을 수 있습니다
프로토콜 이름 뒤에는 ':'을 사용해 구분합니다.
만약 IP나 도메인 이름 정보가 필요한 프로토콜이라면 추가로 '//'을 적습니다
https://velog.io/@hwangjeyeon/posts/my.gif
HTTP 프로토콜은 도메인 이름가 필요합니다.
따라서 '://'가 작성되었습니다
malito:kingpele9018@gmailc.om
그러나 위와같이 이메일 주소를 나타내는 malito 프로토콜의 경우,
IP나 도메인 이름이 필요하지 않습니다.
따라서 ':'만 작성되었습니다
HTTP URL은 Scheme, Authority, Path, Parameter로 이루어져 있습니다
Scheme는 프로토콜을 작성하는 영역이며, 프로토콜에 따라 작성방식이 달라집니다
Authority는 IP주소나 도메인 이름을 작성하는 영역입니다.
80, 443 포트가 아닌 경우 필수로 포트번호도 작성해야합니다
Path 영역은 자원의 경로를 의미합니다
Parameter는 웹 리소스에 대한 추가적인 작업을 할 수 있습니다
Fragment(Anchor)는 현재 리소스의 특정 부분으로 이동할 수 있습니다.
서버에 요청하지 않으며, 엄밀히 말하면 URI의 영역입니다
ip주소나 도메인 이름을 필요로 하는 프로토콜인 경우 구분자를 '://'로,
그 외의 경우는 구분자를 ':'로 사용합니다