DNS (Domain Name System)
도메인 이름과 IP 주소를 서로 변환하는 역할 수행
즉, 사람이 읽을 수 있는 도메인 이름을 컴퓨터가 읽을 수 있는 IP 주소로 변환하는 것
DNS 동작 순서
- 원하는 이름의 도메인 구매 후, DNS 서버에 등록
- DNS 서버에 도메인 이름을 입력하면 IP 주소를 반환함
- IP가 변경되면 DNS 서버에 등록된 IP 주소만 바꾸면 됨
- 사용자는 IP 주소의 형태
192.108.10.1 가 아닌, 도메인 이름 형태 https://naver.com 로 웹에 접속함
- 일반적으로 URL이라 알고있는 것이 DNS를 활용한 예
인터넷 자원(Resource)을 나타내는 고유 식별자(Identifier)를 뜻함
- Uniform: 자원(Resource)를 식별하는 통일된 방식
- Resource: 자원 - 텍스트, 이미지, 파일 등
- Identifier: 식별자
- URI(Uniform Resource Identifier)
- 인터넷 자원(Resource)를 식별할 수 있는 문자열
- URI는 Locator, Name 혹은 둘 다 추가로 분류될 수 있음
- URL(Uniform Resource Locator)
- 자원(Resource)의 위치를 의미
- 일반적으로 도메인 주소로 알려져있음
- 프로토콜을 포함함
https://naver.com
- 한계
- 자원(Resource)의 위치를 변경하면 기존 URL 사용 불가
https://naver.com -> https://naver2.com 으로 주소 변경 시
URL이 업데이트되지 않으면 페이지를 찾을 수 없음
- URN(Uniform Resource Name)
- 자원(Resource)의 이름(Name)을 의미
- URL 방식의 한계를 극복하기 위해 등장함
- 자원의 위치가 변경되어도 이름으로 리소스를 찾기 때문에 잘 동작함
- 프로토콜을 포함하지 않음
- 거의 사용하지 않음
프로토콜을 포함한 자원(Resource)의 위치를 나타냄
URL 구조
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
-> https://www.google.com:443/search?q=스파르타
scheme
- 주로 프로토콜을 사용함
- 웹에서는
http , https , ftp 를 주로 사용함
user[:password]
host[:port]
- 도메인 명
www.google.com or IP 주소 127.0.0.1 를 직접 사용함
- http : 80, https : 443 포트 사용
- 포트는 일반적으로 생략함
[/path]
- 리소스의 경로
- 계층 구조로 구성되어 있음
ex) 프로토콜://쇼핑몰주소/products/macbookPro
ex) https://nbcamp.spartacodingclub.kr/backend
[?query]
key=value
- Query Parameter, Query String 이라고도 함
- ?로 시작되고 &으로 구분함
ex) ?key1=value1&key2=value2
[#fragment]
- html 내부 북마크 등에 사용함
- 전달받은 URL로 접속 시 특정 위치(fragment)로 이동할 수 있음
- ex)
https://www.google.com/index.html#image
URL 입력 시 요청 흐름
https://www.google.com/search?q=스파르타+코딩클럽&hl=ko URL 입력
- DNS 서버를 조회하여
www.google.com 에 해당하는 IP 주소를 응답받음
www.google.com 의 IP주소는 뭐야?
- 브라우저에서 HTTP 요청 메세지 생성
스파르타 코딩클럽 을 /search 엔드포인트에 전달해줘
- 요청 패킷(HTTP 요청 메세지 포함)을 해당 페이지의 서버로 전송
- 해당 서버에서 HTTP 요청 메세지를 기반으로 응답 HTTP 메세지를 만들어 응답
- HTML이 응답 패킷으로 도착하면 결과가 브라우저에 그려짐
참고자료
Spring 입문 - 1주차