학습 목표
브라우저의 작동 원리를 이해할 수 있다.
- 보이지 않는 곳의 통신을 이해할 수 있다.
- URL과 URI의 차이를 이해할 수 있다.
- IP 주소와 포트(Port)에 대해 이해할 수 있다.
- DNS와 IP 주소의 관계를 설명할 수 있다.
URL과 URI
- URL
- Uniform Resource Locator, 서버가 제공되는 환경에 존재하는 파일의 위치
- in macOS, 브라우저에 [file://127.0.0.1/Users/username/Desktop](file://127.0.0.1/Users/username/Desktop) 입력 시 브라우저를 파일 탐색기로 사용 가능
- 구성
- scheme: 통신 방식(프로토콜) 결정
- hosts: 웹 서버의 이름이나 도메인, IP를 사용하며 주소를 나타냄
- url-path: 웹 서버에서 지정한 루트 디렉토리로부터 시작하여 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타냄
- URI
- Uniform Resource Identifier
- 브라우저의 검색창을 클릭하면 나타나는 주소
- URL을 포함하는 상위개념으로, ‘URL은 URI다’는 참이고, ‘URI는 URL이다’는 거짓임
- 구성
- 일반적으로 URL의 기본 요소인 scheme, hosts, url-path에 더해 query, bookmark를 포함함
- qurery: 웹 서버에 보내는 추가적인 질문
IP, Port
- IP address
- Internet Protocol address, IP주소
- 네트워크에 연결된 특정 PC의 주소를 나타내는 체계
- nslookup 명령어를 이용하여 확인 가능
- localhpst, 127.0.0.1: 현재 사용 중인 로컬 PC를 지칭함
- 0.0.0.0, 255.255.255.255: breadcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소로, 서버에서 접근 가능 IP 주소를 이로 지정하면 모든 기기에서 서버에 접근할 수 있음
- Port
- IP주소가 가리키는 PC에 접속할 수 있는 통로(채널)
- 이미 사용 중인 포트는 중복해서 사용할 수 없음
- 0~65535까지 사용할 수 있으며, 0~1024번 까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있음
- 22: SSH
- 80: HTTP
- 443: HTTPS
도메인과 DNS
- 도메인 구조
- 오른쪽에서 왼쪽으로 최상위 도메인과 여러 개의 도메인으로 구성됨
- DNS
- Domain Name System
- 호스트의 도메인 이름을 IP 주소로 변환하거나 반대의 경우를 수행할 수 있도록 개발된 데이터베이스 시스템
- 웹 페이지로드와 관련된 DNS 서버
- DNS 리커서
- 웹 브라우저 등의 애플리케이션을 통해 클라이언트 컴퓨터로부터 쿼리를 받도록 고안된 서버
- 일반적으로, 클라이언트의 DNS 쿼리를 충족시키기 위해 추가 요청을 수해함
- 루트 이름 서버
- 사람이 읽을 수 있는 호스트 이름을 IP 주소로 변환하는 첫 번째 단계
- 일반적으로 다른 더욱 특정한 위치에 대한 참조로 사용됨
- TLD 이름 서버
- 최상위 도메인 서버
- 특정 IP 주소 검색의 다음 단계이며 호스트 이름의 마지막 부분을 호스팅함
- 권한 있는 이름 서버
- 최종 이름 서버로 이름 서버 쿼리의 종착점이며, 특정 이름을 해당 정의로 변환함
- 권한 있는 이름 서버가 요청한 레코드에 대한 액세스 권한이 있다면, 요청한 호스트 이름의 IP 주소를 초기 요청을 한 DNS 리커서에게 돌려보냄
- DNS 리커서
- DNS 확인자란?
- DNS 조회의 첫 번째 중단점이며, 최초 요청을 한 클라이언트 처리를 담당함
- URL이 궁극적으로 필요한 IP 주소로 변환되도록 하는 일련의 쿼리를 시작함
- 권한 있는 DNS 서버와 재귀 DNS 확인자의 차이점은?
- 두 개념 모두 DNS 인프라에 통합된 서버를 나타내지만, 각각 다른 역할을 수행하며 DNS 쿼리 파이프라인 내부의 다른 위치에 있음
- 재귀 DNS 확인자
- DNS 쿼리의 시작 부분에 있음
- 클라이언트의 재귀 요청에 응답하고 DNS 레코드를 추적하는 데 시간을 투자하는 컴퓨터
- 요청한 레코드에 대해, 권한 있는 DNS 이름 서버에 도달할 때까지 일련의 요청을 하는 방식으로 이를 수행함(레코드가 없으면 시간 초과되거나 오류를 반환)
- 권한 있는 DNS 서버
- DNS 쿼리의 끝 부분에 있음
- 실제로 DNs 리소스 레코드를 보유하고 담당하는 서버
- 궁극적으로 웹 브라우저가 웹사이트 또는 다른 웹 자원에 액세스하는 데 필요한 IP 주소에 도달하도록 요청할 수 있게 함
- 특정 DNS 레코드의 최종 원천이므로 다른 원천을 쿼리할 필요 없이 자체 데이터의 쿼리를 충족시킬 수 있음
- DNS 조회 단계
- 사용자가 웹 브라우저에 도메인을 입력하면, 쿼리가 인터넷으로 이동하고 DNS 재귀 확인자가 이를 수신함
- 이어서 확인자가 DNS 루트 이름 서버(.)를 쿼리함
- 다음으로, 루트 서버가 도메인에 대한 정보를 저항하는 최상위 도메인(TLD) 서버의 주소로 확인자에 응답함
- 이제, 확인자가 TLD에 요청함
- 이어서, TLD 서버가 도메인 이름 서버의 IP 주소로 응답함
- 마지막으로, 재귀 확인자가 도메인의 이름 서버로 쿼리를 보냄
- 이제, 도메인의 IP 주소가 이름 서버에서 확인자에게 반환됨
- 이어서, DNS 확인자가 처음 요청한 도메인의 IP 주소로 웹 브라우저에 응답함
- 이 8단계를 거쳐 도메인의 IP 주소가 반환되면, 이제 브라우저가 웹 페이지를 요청할 수 있음
- 브라우저가 IP 주소로 HTTP 요청을 보냄
- 해당 IP의 서버가 브라우저에서 렌더링할 웹 페이지를 반환함
- DNS 쿼리
- 재귀 쿼리
- 확인자가 레코드를 찾을 수 없는 경우, DNS 클라이언트는 DNS 서버(일반적으로 DNS 재귀 확인자)가 요청한 자원 레코드 또는 오류 메시지를 사용하여 클라이언트에 응답하도록 요구함
- 반복 쿼리
- DNS 클라이언트는 DNS 서버가 가능한 최상의 응답을 반환하도록 함
- 궈리한 DNS 서버가 쿼리 이름과 일치하는 이름을 갖고 있지 않은 경우, 하위 수준의 도메인 네임스페이스에 대해 권한 있는 DNS 서버에 대한 참조를 반환하고, DNS 클라이언트가 참조 주소를 쿼리함
- 이 프로세스는 오류 또는 제한 시간 초과가 발생할 때까지 추가 DNS 서버가 쿼리 체인을 중단한 상태로 계속 됨
- 비재귀 쿼리
- DNS 확인자 클라이언트의 쿼리를 받은 DNS 서버가 해당 레코드에 대한 권한이 있거나 캐시 내부에 해당 레코드를 갖고 있어, DNS 서버가 액세스 권한을 갖고 있는 레코드를 쿼리할 때 발생
- 일반적으로, DNS 서버는 추가 대역폭 소비 및 업스트림 서버의 부하를 방지하기 위해 DNS 레코드를 캐시함
- 재귀 쿼리
- DNS 캐싱
- 요청하는 클라이언트와 가까운 곳에 데이터를 저장함으로써, DNS 쿼리를 조기에 확인할 수 있고 DNS 조회 체인의 추가 쿼리를 비할 수 있으므로, 로드 시간이 향상되고 대역폭/CPU가 줄어듦
- 브라우저 DNS 캐싱
- 최신 웹 브라우저는 기본적으로 정해진 시간 동안 DNS 레코드를 캐시하도록 설계됨
- DNS 캐싱이 웹 브라우저와 가까울수록 캐시를 확인하고 IP 주소에 대한 올바른 요청을 하기 위해 처리해야 할 단계가 적어짐
- DNS 레코드를 요청할 때 브라우저 캐시에서 처음으로 요청한 레코드를 확인하는 것
- 운영 체제(OS) 수준 DNS 캐싱
- 운영 체제 수준 DNS 확인자는 DNS 쿼리가 컴퓨터를 떠나기 전의 두 번째 중단점이며, 로컬에 있는 마지막 중단점임
- 이 쿼리를 처리하도록 설계된 운영 체제 내부 프로세스를 일반적으로 “스텁 확인자” 또는 DNS 클라이언트라고 함
- 스텁 확인자는 애플리케이션에서 요청을 받으면 먼저 자체 캐시를 검사하여 레코드가 있는지 확인, 레코드가 없으면 로컬 네트워크 외부의 (재귀 플래그가 설정된) DNS 쿼리를 인터넷 서비스 공급자(ISP) 내부의 DNS 재귀 확인자로 보냄
- ISP 내부의 재취 확인자가 모든 이전 단계와 같이 DNS 쿼리를 수신하면, 요청한 호스트-IP-주소 변환이 로컬 지속성 계층 내에 이미 저장되어 있는지도 확인함
출처
https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/
첫 번째 발표
- [C331] public IP와 Private IP의 차이점을 설명하세요.
- 공인 IP는 ISP에 의해 할당되며 인터넷에서 장치를 식별하는 데 사용되는 반면, 사설 IP는 라우터에 의해 할당되며 로컬 네트워크 내의 장치를 식별하는 데 사용됨
- 공인 IP (Public ip)
- 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소
- 공용 IP 주소라고도 불리며 외부에 공개되어 있는 IP 주소임
- 공인 IP는 전세계에서 유일한 IP 주소를 가짐
- 외부에 공개되어 있기에 인터넷에 연결된 다른 PC로부터의 접근이 가능하며, 따라서 공인 IP 주소를 사용하는 경우 방화벽 등의 보안 프로그램을 설치할 필요가 있음
- 사설 IP (Private IP)
- 일반 가정이나 회사 내 등에 할당된 네트워크의 IP 주소
- IPv4의 주소부족으로 인해 서브넷팅된 IP이기 때문에 라우터에 의해 로컬 네트워크상의 PC나 장치에 할당되며, 고유하지 않음
- 사설 IP 주소만으로는 인터넷에 직접 연결할 수 없음
- 라우터를 통해 1개의 공인 IP만 할당하고, 라우터에 연결된 개인 PC는 사설 IP를 각각 할당 받아 인터넷에 접속할 수 있게 됨
- 사설 IP를 할당받은 스마트폰 혹은 개인 PC가 데이터 패킷을 인터넷으로 전송하면, 라우터가 해당 사설 IP를 공인 IP로 바꿔서 전송
- 인터넷에서 오는 데이터 패킷의 목적지도 해당 사설 IP로 변경한 후 개인 스마트폰 혹은 PC에 전송함
- 참고
- [C332] 터미널에서 nslookup 명령을 실행 했을 때 나오는 결과값에 대한 설명을 작성하세요.
- name server lookup
- DNS를 쿼리하여 도메인 이름, IP 주소, 기타 DNS 레코드에 대한 정보를 얻기 위해 사용
- 일반적으로 포함하는 내용
- 조회된 도메인 이름 또는 IP 주소
- 해당 IP 주소 또는 도메인 이름
- 쿼리를 수행하는 데 사용된 DNS 서버
- 반환된 레코드 유형
- 레코드에 대한 TTL 값으로 레코드를 업데이트하기 전에 캐시할 수 있는 기간
- Server와 Address 정보는 어느 DNS 서버에 쿼리를 요청했는지를 의미하며, 별도로 DNS 서버를 지정하지 않으면 시스템에서 사용중인 DNS 서버에서 DNS 정보를 조회함
- Name은 조회한 도메인 이름을 의미하며 Address는 해당 도메인에 연결된 IP 주소임
- 해당 명령어를 사용하여 도메인의 IP 주소를 조회할 때는 프로토콜을 포함하지 않아야함(원하는 결과를 얻을 수 없음)
- 참고
- [C333] 검색창에 http://google.com 을 검색하면, DNS에서 어떤 일이 일어나나요? 이에 대한 설명을 작성하세요.
- 로컬 DNS 캐시를 확인하여 해당 도메인에 대한 IP 주소가 있는지 확인
- DNS 확인자에 DNS 쿼리를 보내고, 리졸버 캐시에 IP 주소가 있으면 컴퓨터로 응답을 보냄
- 리졸버는 최상위 도메인의 IP 주소를 요청하는 재귀 DNS 쿼리를 루트 DNS 서버로 보내고, 루트 DNS 서버는 “.com”에 대한 TLD 서버의 IP 주소로 응답함
- 재귀 확인자가 도메인 이름 서버로 확인을 보냄
- google.com의 IP 주소가 이름 서버에서 확인자에게 반환됨
- DNS 확인자가 google.com의 IP 주소로 웹 브라우저에 응답합
'Code States > TIL' 카테고리의 다른 글
[0317] 웹서비스 개발 기초 - Message States (0) | 2023.03.17 |
---|---|
[0316] 웹서비스 개발 기초 - HTTP 기초 (0) | 2023.03.16 |
[0315] 웹서비스 개발 기초 - 클라이언트-서버 아키텍처 (0) | 2023.03.15 |
[0314] (페어) 리눅스 운영체제 - 리눅스 실습 (0) | 2023.03.14 |
[0314] 리눅스 운영체제 - 시스템 모니터링 (0) | 2023.03.14 |