DNS(Domain Name System)
📌 DNS는 도메인 이름과 IP 주소를 서로 매핑하는 역할을 수행한다. 즉, 사람이 읽을 수 있는 도메인 이름을 컴퓨터가 읽을 수 있는 IP 주소로 변환한다.
- DNS는 도메인 이름과 IP 주소를 매핑해주는 시스템입니다.
사람은 이해하기 쉬운 도메인 이름(예: www.example.com)을 사용하고, 컴퓨터는 IP 주소(예: 192.168.0.1)를 사용합니다. - DNS는 이를 전화번호부처럼 변환해주는 역할을 합니다.
- 도메인 = IP는 기억하기 어렵고 변경되면 통신이 안된다. 그래서 그냥 IP에 별명을 붙인거다.
- DNS = IP 주소와 도메인 이름을 매핑
- 매핑 = 키(key) 역할을 하는 데이터와 값(value) 역할을 하는 데이터를 짝 지어(=연결 지어) 저장하는 데이터 구조
- DNS가 나오게된 이유
- 컴퓨터 간의 통신을 위해선 IP 주소가 필요하다.
- IP 주소는 사이트마다 특징도 없고 길어서 외우기가 힘들다.
- IP 주소가 변경된다면 새로운 IP에 접근할 수 없다.
- IP는 변경되는 주소이다.
- 일반적으로 가정집에서 사용되는 IP는 유동IP 입니다.
- 만약 IP가 변경된다면 새로운 IP에 접근할 수 없습니다.
- 컴퓨터 간의 통신을 위해선 IP 주소가 필요하다.
[1] DNS의 배달 비유:
- 도메인 이름 = 가게 이름
- DNS는 가게 이름(도메인 이름)을 입력하면 **주소(IP 주소)**를 찾아주는 서비스입니다.
- 예를 들어, www.pizzashop.com이라는 가게 이름을 알려주면, DNS는 **정확한 위치(IP 주소)**를 찾아줍니다.
- IP 주소 = 가게의 정확한 위치
- 컴퓨터는 IP 주소를 기반으로 데이터를 주고받기 때문에, 도메인 이름만으로는 실제 통신이 불가능합니다.
- DNS가 이름을 **정확한 위치(IP)**로 변환해야 물건(데이터)을 배달할 수 있습니다.
- DNS 서버 = 전화번호부
- DNS 서버는 도메인 이름과 IP 주소의 매핑 정보를 저장하고 있습니다.
- 사용자가 도메인 이름을 요청하면 DNS 서버가 이를 검색하고 해당 IP 주소를 반환합니다.
- DNS 서버는 도메인 이름을 IP 주소로 변환하는 역할만 할 뿐, 일반적인 서버(예: 웹 서버, 애플리케이션 서버)처럼 데이터를 처리하거나 클라이언트와 직접 통신하는 기능은 수행하지 않습니다.
- 이게 왜 있냐면, DNS로 보면 클라이언트도 서버 주소를 모른다... 그래서 전화번호부에서 서버의 주소로 변환한 것을 찾아서 통신한다는 것....
[2] DNS의 배달 비유:
- DNS 동작 순서
- 1. 원하는 이름의 도메인을 구매 후, DNS 서버에 등록한다.
- 2. 도메인 명을 입력하면 DNS 서버는 IP 주소를 반환한다.
- IP가 변경되면 DNS 서버에 등록된 IP 주소만 바뀌면 된다.
- 우리는 IP주소의 형태가 아닌 https://spartacodingclub.kr/ 의 도메인 이름 형태로 웹에 접속한다.
- 일반적으로 URL이라 알고있는것이 바로 DNS를 활용한 예이다.
URI(Uniform Resource Identifier)
📌 인터넷 자원(Resource)을 나타내는 고유 식별자(Identifier)를 뜻한다.
- URI는 인터넷 상의 자원을 식별하거나 위치를 지정하는 표준 형식입니다.
- 쉽게 말해, 웹이나 네트워크 상에서 어떤 자원을 가리키는 "주소" 또는 "이름표"입니다.
- Uniform: 자원(Resource)을 식별하는 통일된 방식을 의미한다.
- Resource: 자원(페이지, 텍스트, 이미지, 동영상, 파일 등)을 의미한다. URI로 식별할 수 있는 모든 것(제한 없음)
- Identifier: 식별자를 의미한다. 항목과 구분하는데 필요한 정보
- = 자원 통합 식별자
[1] URI & URL & URN :
- URI(Uniform Resource Identifier)
- 인터넷 자원(Resource)을 식별할 수 있는 문자열을 뜻한다.
- URI는 Locator, Name 혹은 둘 다 추가로 분류될 수 있다.
- URL(Uniform Resource Locator)
- 프로토콜을 포함한, 자원(Resource)의 위치를 나타낸다. ex) 튜터가 있는곳은 사무실
- 일반적으로 도메인주소로 알려져있다.
- 프로토콜을 포함한다.(https://spartacodingclub.kr/)
- URL 방식의 한계
- 자원(Resource)의 위치를 변경하면 기존 URL은 사용할 수 없다.
- 브라우저 검색창에 스파르타 코딩클럽 홈페이지를 검색하면https://spartacodingclub.kr/ 사이트가 노출된다.
- 만약 이 주소를 https://spartacodingclub2.kr/ 로 바꾼다면 기존 경로를 아는 사람들은 검색 페이지의 URL이 업데이트되지 않으면 페이지를 찾을 수 없다.
- 이러한 한계를 극복하기 위해서 URN이 등장하게 되었다.
- URN(Uniform Resource Name)
- 자원(Resource)의 이름(Name)을 의미한다. ex) 튜터
- 리소스의 위치가 변경되어도 이름으로 리소스를 찾기 때문에 잘 동작한다.
- 프로토콜을 포함하지 않는다.
- URN으로 실제 리소스에 접근하는 방법은 대중화 되어있지 않다.
- 안씀
[2] URI의 배달 비유:
- URI = 배달 주소
- URI는 특정 자원을 정확히 식별할 수 있도록 주소와 이름표를 제공합니다.
- 배달원에게 물건을 전달하려면 정확한 주소와 대상 이름이 필요하듯, 인터넷에서도 URI가 필요합니다.
- URL과 URN의 차이:
URI는 두 가지로 나뉩니다.- URL (Uniform Resource Locator): 자원의 위치를 나타냄 (예: http://example.com/page).
- URN (Uniform Resource Name): 자원의 고유 이름을 나타냄 (예: urn:isbn:1234567890).
- URL: "서울시 강남구 도산대로 123 (위치)"
- URN: "김철수라는 사람의 주민등록번호 (고유 식별자)"
[3] URI의 구성 요소:
URI는 보통 스키마, 호스트, 경로, 쿼리 등으로 구성됩니다.
scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko#getting-started-introducing-spring-boot
스키마(Scheme): 자원에 접근하는 방식 (예: http, https, ftp).
💡 비유: "택배 방식" (예: 택배, 등기, 퀵).
주로 프로토콜 사용
• 프로토콜: 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙
• 예) http, https, ftp 등등
• http는 80 포트, https는 443 포트를 주로 사용, 포트는 생략 가능
• https는 http에 보안 추가 (HTTP Secure)
호스트(Host): 자원을 제공하는 서버의 위치 (예: example.com).
💡 비유: "건물 주소".
• URL에 사용자정보를 포함해서 인증
• 거의 사용하지 않음 = URL은 보안에 취약하여 사용하지 않는다.
포트 번호: 서버내의 자원을 제공하는 프로세스의 식별 번호
💡 비유: "방 번호".
• 포트(PORT)
• 접속 포트
• 일반적으로 생략, 생략시 http는 80, https는 443
경로(Path): 서버 내에서 자원의 위치 (예: /path).
💡 비유: "건물 내부의 방 위치".
리소스 경로(path), 계층적 구조
• 예)
• /home/le1.jpg
• /members
• /members/100, /items/iphone12
쿼리(Query): 자원에 전달할 추가 정보 (예: ?query=value).
💡 비유: "배달 메시지" (예: "문 앞에 두세요").
• key=value 형태
• ?로 시작, &로 추가 가능 ?keyA=valueA&keyB=valueB
• query parameter, query string 등으로 불림, 웹서버에 제공하는 파라미터, 문자 형태
fragment: html의 내부 북마크등에서 사용한다. 서버로 전송되는 정보는 아니다.
• 잘 안쓴다.
• 전달받은 URL로 접속 시 특정 위치(fragment)로 이동할 수 있음
웹 브라우저 요청 흐름
정리
1. 보낼 서버의 주소와 포트 번호를 생성한다.
2. 웹 브라우저가 HTTP 메시지를 생성한다.
3. Socket 라이브러리르 통해 전달한다 (TCP/IP연결 후 전달)
4. 클라에서 보낸 메시지는 여러 중계 서버를 거쳐 목표 서버에 전달된다.
5. 같은 방식으로 답장한다.
'CS ( Computer Science ) > 네트워크 (Networking)' 카테고리의 다른 글
[Net] HTTP Header (0) | 2024.12.01 |
---|---|
[Net] HTTP Method (2) | 2024.11.30 |
[Net] HTTP (0) | 2024.11.29 |
[Net] JSON (1) | 2024.11.29 |
[Net] 네트워크 (1) | 2024.11.29 |