티스토리 뷰
URL(Uniform Resource Locator)은 네트워크 상에서 자원의 위치를 말한다.
쉽게 말해 웹 상의 동영상이나 이미지, 게시글의 주소라고 할 수 있다.
URL은 Scheme(Protocol), Host, Port, Url-Path로 구분할 수 있으며, 그 구성은 다음과 같다.
Scheme:// Host(Port) / Url-Path
- Scheme(Protocol) : 통신 방식을 결정. 일반적인 웹 브라우저에서는 http(s)를 사용.
- Host : 웹 서버의 이름이나 도메인, IP 주소를 사용. 주소를 나타냄.
- Port: 애플리케이션(작업) 식별 번호
- Url-Path : 웹 서버에서 지정한 루트 디렉토리부터 시작하여 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타냄.
URI(Uniform Resource Identifier)는 지금 바로 브라우저의 주소창을 클릭하면 나오는 주소이다.
Scheme(Protocol), Host, Port, Url-Path에 더해 Query와 Anchor를 포함한다.
즉, URI는 URL과 URN을 포함한 개념이다.
부분 | 명칭 | 설명 |
file://, http://, https:// | Scheme(Protocol) | 통신 프로토콜 |
127.0.0.1, www.google.com | Host | 웹페이지, 동영상등의 주소 또는 IP 주소 |
:80, :443, :3000 | Port | 웹 서버에 접속하기 위한 통로 |
/search, /Users/username/Desktop | Url-Path | 루트 디렉토리부터 파일까지의 경로 |
q=Java | Query Parameter | 웹 서버에 전달하는 추가 질문 |
도메인 이름(Domain Name)은 실제 IP 주소와 연결된 기억하기 쉬운 이름이다.
웹사이트의 주소를 https://142.250.207.78/weather/index.html과 같이 IP 주소로만 작성한다면 기억이 어려울 것이다.
때문에 IP 주소를 대신하여 도메인 이름을 사용한다.
도메인 이름을 사용해서 웹사이트에 접속하려고 할때, 도메인 이름과 IP주소가 매칭 되는지 확인해야 하며
둘 사이의 변환이 이루어져야 한다.
때문에 네트워크에는 도메인과 IP주소 매칭을 확인하기 위한 서버가 별도로 있으며
둘 사이의 변환을 위해 개발된 것이 바로 DNS(Domain Name System)이다.
브라우저 검색 창에 gnidinger.tistory.com을 입력하면 DNS에서 IP 주소(211.231.99.250)를 찾는다.
그리고 IP 주소에 해당하는 웹 서버로 연결 요청을 전달, 클라이언트와 서버 사이에 통신이 이루어지도록 한다.
계속해서 도메인 주소는 오른쪽 탑 레벨 도메인부터 왼쪽 서브 도메인까지 나눌 수 있다.
도메인은 도메인 네임 서버(존)에 의해 관리되며, 도메인 네임 서버는 다시 아래의 셋으로 나뉜다.
- 루트 네임 서버 - 모든 도메인을 관리. 탑 레벨 도메인에 대한 네임 서버 반환.
- TLD 네임 서버 - 탑 레벨 도메인(TLD)을 관리. 권한 있는 네임 서버를 반환.
- 권한 있는 네임 서버 - 실제로 DNS 리소스 레코드를 관리하는 서버. IP주소 반환.
이때 도메인 네임 서버는 하나의 도메인당 최소 두 개의 서버로 구성되는데, 서버 과부하와 서비스 거부 공격에 대응하기 위함이다.
실제 URL에 도메인 이름을 입력하면 DNS Lookup이라는 과정이 실행된다.
여기서 DNS Resolver란 DNS를 이용하는 클라이언트(PC)를 말한다.
원래 리졸버는 DNS 클라이언트 요청을 여러 네임 서버로 반복 전달하고, 찾은 정보를 클라이언트에게 제공하는 기능을 하는데
이 리졸버를 PC에 구현하는 것은 무리가 있기 때문에 대부분의 기능은 DNS 서버에 구현한다.
그 이후 클라이언트 호스트에게는 구현된 네임 서버의 IP주소만 파악하는 기능을 가진 리졸버 루틴이 구현되며,
이 리졸버를 스터브 리졸버(Stub Resolver)라고 한다.
다시 DNS Lookup으로 돌아오면, 그 과정은 다음과 같이 진행된다.
- 브라우저가 리졸버에게 IP주소를 요청
- 리졸버는 도메인 정보가 담긴 캐시 파일을 먼저 살펴보고 해당 도메인이 있으면 바로 IP 주소 리턴
- 해당되는 도메인 정보를 찾지 못하면 2번 진행
- 리졸버가 IP 주소를 얻기 위해 네임 서버들에게 재귀적인 쿼리(query) 진행
- 쿼리는 루트 -> TLD -> 권한 있는 네임 서버 순으로 진행됨
- 이때 리졸버는 쿼리수를 줄일 목적으로 기록되지 않은 도메인 네임 서버의 주소를 저장하기도 함
- 리졸버가 전달받은 IP주소를 기록하고 브라우저에게 전달
도메인 네임 서버는 개별 호스트의 정보를 가진 존(Zone) 파일을 하나 이상 가지고 있다.
도메인과 IP주소가 매핑된 일종의 테이블인 존 파일에 들어있는 상세정보는 다음과 같다.
- 이름 - 'example.com'과 같은 도메인 네임 혹은 서브 도메인의 이름을 저장
- 레코드 클래스 - 네트워크 타입 지정. 일반적으로 IN(인터넷)
- TTL(Time To Live) - 리졸버가 레코드를 몇 초 저장할지 설정
- 레코드 타입 - 데이터 내용의 형식
- A - IPv4 주소임을 명시
- AAAA - IPv6 주소임을 명시
- CNAME - 데이터가 도메인 주소임을 명시
- NS - 데이터가 도메인 네임 서버들의 주소임을 명시
- SOA - 주 서버의 정보들에 대한 데이터(주 네임 서버와 통신할 수 있는 포트 번호, TTL, 도메인 주소 등)
따라서 위 표에 적힌 레코드들은 인터넷 네트워크를 사용하며,
deploy 서브도메인의 주소는 192.168.0.2이고, www 서브도메인은 states.com 도메인으로 연결되어 있음을 알 수 있다.
'Development > Network' 카테고리의 다른 글
[네트워크]AJAX (0) | 2022.08.04 |
---|---|
[네트워크]HTTP (0) | 2022.08.04 |
[네트워크]SSR vs. CSR (2) | 2022.08.03 |
[네트워크]CORS(Cross-Origin Resource Sharing) (1) | 2022.08.03 |
[네트워크]웹(WEB) (0) | 2022.08.03 |
[네트워크]TCP/IP (0) | 2022.08.02 |
- Total
- Today
- Yesterday
- 리스트
- 남미
- a6000
- BOJ
- 세계여행
- 파이썬
- 중남미
- 여행
- 백준
- 세계일주
- 유럽여행
- Backjoon
- 기술면접
- spring
- 스프링
- 면접 준비
- RX100M5
- 동적계획법
- Algorithm
- 스트림
- 세모
- 칼이사
- 자바
- 유럽
- 지지
- 야경
- java
- 맛집
- Python
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |