2025-09-14 14:28
Tags: 프로그래밍 기초
URL
https://user:pass@www.example.co.kr:443/products/laptops?brand=apple&sort=new#specs
구성 요소 | 예시 | 설명 |
---|---|---|
Scheme (스키마) | https | **자원에 접근하는 방법(프로토콜)**을 정의합니다. ‘어떻게’ 통신할지 알려주는 부분으로, 웹 페이지는 보통 http 또는 보안이 강화된 https 를 사용합니다. ftp:// (파일 전송), mailto:// (이메일 클라이언트 실행), file:// (로컬 파일 접근) 등 다양한 스키마가 있습니다. |
Authority | user:pass@www.example.co.kr:443 | 자원의 위치를 식별하는 데 필요한 인증, 호스트, 포트 정보를 포함합니다. Authority는 다시 세부적으로 나뉩니다. |
↳ User Info | user:pass@ | (선택 사항) 해당 자원에 접근하는 데 필요한 사용자 이름과 비밀번호입니다. 보안상 취약하여 현재는 거의 사용되지 않습니다. |
↳ Host (호스트) | www.example.co.kr | 자원이 위치한 서버의 주소입니다. 사람이 읽기 쉬운 도메인 네임(google.com )이나, 컴퓨터가 이해하는 IP 주소(192.168.0.1 )가 올 수 있습니다. |
↳ Port (포트) | :443 | (선택 사항) 서버 내에서 실행되는 특정 프로그램(프로세스)에 접근하는 ‘문’ 번호입니다. 각 스키마는 표준 포트를 가지고 있어(http: 80, https: 443) 보통 생략됩니다. 다른 포트를 사용할 때만 명시적으로 적습니다. |
Path (경로) | /products/laptops | 호스트 서버 내에서 원하는 자원의 **구체적인 위치(파일 경로)**를 나타냅니다. 마치 컴퓨터의 폴더 구조와 같습니다. |
Query (쿼리) | ?brand=apple&sort=new | (선택 사항) 서버에 전달하는 추가적인 데이터입니다. ? 로 시작하며, key=value 형태의 파라미터를 & 로 연결하여 여러 개 전달할 수 있습니다. 주로 검색, 필터링, 정렬 기능에 사용됩니다. |
Fragment (프래그먼트) | #specs | (선택 사항) 특정 자원 **내부의 특정 위치(앵커)**를 가리킵니다. # 으로 시작하며, 이 부분은 서버로 전송되지 않고 웹 브라우저가 받 |
- 브라우저는
https
를 보고 “아, 443번 포트를 통해 안전하게 통신해야겠군”이라고 생각합니다. www.example.co.kr
라는 호스트 주소를 DNS 서버에 물어 실제 IP 주소를 알아냅니다- 알아낸 IP 주소의 서버에 접속하여
/products/laptops
경로에 있는 자원을 요청합니다. - 이때
brand=apple
과sort=new
라는 쿼리 정보를 함께 보내 “애플 브랜드의 노트북 목록을 최신순으로 정렬해서 보여줘”라고 구체적으로 요구합니다. - 서버는 이 요청을 처리한 후 결과(웹 페이지)를 브라우저에 보내줍니다.
- 마지막으로 브라우저는 페이지를 받은 뒤
#specs
프래그먼트를 보고 ‘specs’라는 ID를 가진 요소로 화면을 스크롤해줍니다.
URL vs URI vs URN: 헷갈리는 삼형제
- URI (Uniform Resource Identifier): 통합 자원 식별자 자원을 ‘식별’하는 가장 넓은 개념의 문자열입니다. 사람으로 치면 ‘주민등록번호’처럼 유일하게 구분할 수만 있으면 됩니다. URI는 이름(URN)이거나, 위치(URL)이거나, 둘 다일 수 있습니다. 즉, URI는 URL과 URN을 모두 포함하는 상위 개념입니다.
- URL (Uniform Resource Locator): 통합 자원 위치 지정자 자원이 ‘어디에 있는지(위치)‘를 명확하게 알려주는 URI입니다. 우리가 흔히 쓰는 웹 주소는 모두 URL에 해당합니다. “서울시 강남구 테헤란로 123”처럼 찾아갈 수 있는 구체적인 위치를 알려줍니다.
- URN (Uniform Resource Name): 통합 자원 이름 자원의 위치와 상관없이 ‘이름’ 자체로 자원을 유일하게 식별하는 URI입니다. 예를 들어, 모든 책이 부여받는 고유 번호인 urn:isbn:978-89-6626-178-0은 책의 이름표 같은 역할을 합니다. 이 책이 어느 서점에 있든(위치가 바뀌든) ISBN은 변하지 않습니다.