1. URL이란?
URL은 Uniform Resource Locator의 약자로 인터넷에 존재하는 리소스의 위치를 나타내는 주소이다.
자원을 식별하기 위해 사용하는 URI는 URL를 포함하는 더 넓은 개념이다.
2. 구성 요소
- 프로토콜(Protocol)
- 스키마(Scheme)라고도 하며, 사용하는 프로토콜의 이름이다.
- URL에서 사용되는 프로토콜의 유형을 지정하는 역할로 주로 http, https, ftp 등이 사용된다.
- 서브 도메인(Subdomain)
- 도메인의 하위 요소로 웹 사이트의 기능을 구분하거나 특정 서비스를 나타내기 위해 사용된다.
- 예를 들어, 'blog.naver.com', 'webtoon.naver.com' 처럼 도메인 내에서 다른 서비스에 접근할 수 있다.
- 2차 수준 도메인(Second-Level Domain, SLD)
- 도메인이란 리소스를 제공하는 서버의 논리적 주소인 IP 대신 알기 쉬운 이름을 붙여놓은 것이다.
- 2차 수준 도메인은 도메인 이름의 중심 부분이다.
- 주로 기업, 브랜드, 상호 등의 이름이 사용된다. (naver, tistory 등)
- 최상위 수준 도메인(Top-Level Domain, TLD)
- 계층 구조를 가진 DNS에서 최상위에 위치한 도메인이다.
- 일반 최상위 도메인(.com, .org, .net)과 국가 코드 최상위(.kr, .jp) 도메인으로 이뤄진다.
- 포트(Port)
- 호스트(Host)의 특정 프로세스를 나타내는 번호로서, 생략이 가능하다.
- 생략 시 프로토콜에 따라 기본 포트 번호가 사용된다. (HTTP: 80번, HTTPS: 443번)
- 경로(Path)
- 서버 시스템 내부에 리소스가 위치한 경로를 나타낸다.
- 주로 파일 경로 또는 디렉토리 경로가 해당된다.
- 쿼리(Query)
- URL의 매개변수로서 ?뒤에 키-값 쌍으로 추가적인 정보를 전달하기 위해 사용한다.
- 주로 요청할 리소스를 검색하거나 필터링할 때 사용한다.
- 프래그먼트(Fragment)
- 앵커(Anchor)라고도 부르며 리소스 내의 특정 위치를 지정하고 이동할 때 사용한다.
- 경로와 쿼리 다음에 # 기호를 붙여 위치를 지정한다.
- 예를 들어, 위키피디아 페이지 내에서 특정 섹션으로 이동하고 싶을 때 사용한다.
2~4번 요소를 합쳐서 호스트(Host)라고 표현하는데, 리소스를 제공하는 주체를 나타내며 IP 주소 또는 도메인 이름을 사용한다.
도메인 이름은 도메인 이름 시스템(DNS)에 의해 IP 주소로 변환된다.
3. 웹 통신 과정
- URL 입력
- 사용자가 URL을 입력 시, 브라우저는 URL을 파싱한다.
- 프로토콜, 호스트 이름, 포트, 경로 등 URL의 구성 요소를 추출한다.
- IP주소 탐색
- 로컬 DNS 캐시에서 URL의 호스트 이름에 해당하는 IP주소를 검색한다.
- 이미 접속한 기록이 있다면, 브라우저는 로컬 DNS 캐시에 도메인 이름과 IP 주소 쌍을 저장하므로
DNS 서버에 쿼리을 보내지 않고 빠르게 리소스를 요청할 수 있다. - 저장된 값이 없다면, 브라우저는 호스트 이름에 해당하는 IP 주소를 찾기 위해 DNS 서버에 쿼리를 보낸다.
- TCP/IP 연결 설정
- 브라우저는 DNS 서버로부터 받은 웹 서버의 IP 주소와 포트 번호를 사용하여 요청을 보낸다.
- 3-way handshake 과정을 통해 웹 서버와 논리적 연결을 설정한다.
- HTTP 메시지 송수신
- 브라우저는 HTTP 요청 메시지를 생성하고 서버로 전송한다.
- 웹 서버는 해당 요청을 수행하고 HTTP 응답 메시지를 생성하여 클라이언트(브라우저)로 전송한다.
- 이때 메시지에는 웹 페이지, 미디어 파일 등이 포함될 수 있다.
- 렌더링
- 브라우저는 서버의 응답을 해석하고 웹 페이지를 렌더링하여 사용자에게 보여준다.
- HTML, CSS, JavaScript 등의 리소스를 처리하여 화면에 출력한다.
'CS' 카테고리의 다른 글
HTTP 버전별 특징 정리 (0) | 2023.03.02 |
---|---|
HTTP 메시지와 구성 요소 (0) | 2023.03.01 |
HTTP vs HTTPS (feat. 대칭키, 공개키) (0) | 2023.02.28 |
TCP vs UDP (0) | 2023.02.26 |
OSI 7계층에 대하여 (0) | 2023.02.24 |