DNS (Domain Name System)
인터넷에서 사용자가 입력한 도메인 이름을 IP 주소로 변환하는 시스템
인터넷에 연결된 각 기기에는 다른 컴퓨터가 기기를 찾는 데 사용하는 고유한 IP 주소가 있다.
DNS 작동 방식
1.사용자가 브라우저에 boanog.com을 입력
브라우저는 Local DNS Resolver에게 요청한다.
/*
리졸버는 DNS 서버에 조회 메세지를 보내는 DNS 클라이언트로 보면 된다.
리졸버의 실체는 Socket 라이브러리에 들어있는 부품이다.
Socket 라이브러리는 OS에 있는 네트워크 기능을 호출하기 위한 프로그램의 부품집
*/
2.리졸버는 (로컬) 캐시를 먼저 확인하고 캐시에 없다면 Root 네임서버에게 요청한다.
그러면 (.com 같은 TLD) 최상위 도메인 네임서버의 위치를 알려준다.
3.리졸버는 받은 정보를 이용하여 해당 TLD 네임서버(.com TLD 네임서버)에게 요청한다.
해당 도메인(boanog.com)의 권한 있는네임서버의 위치를 알려준다.
4.리졸버는 해당 권한 있는 네임 서버에 최종적으로 요청하여 IP주소를 받아온다.
5.해당 IP 주소는 사용자의 컴퓨터와 리졸버 서버에 캐시되고 해당 IP 주소로 웹 서버에 접속한다.
/*
DNS 캐시 테이블이란 도메인 네임과 IP 주소의 대응관계를 저장한 것
ipconfig /displaydns : DNS 캐시테이블 출력 (없을 경우 DNS 확인자 캐시를 표시할 수 없습니다 라고 출력됨)
ipconfig /flushdns : DNS 캐시테이블 삭제 (플러시)
1 | 사용자가 도메인 네임을 입력 |
2 | 도메인 네임에 대응하는 IP를 hosts 파일에 검색 |
3 | hosts 파일에 입력한 도메인이 없을 경우 DNS 캐시 테이블에서 해당 도메인에 대응하는 IP 주소를 검색하고 테이블안에 있을 경우 IP 주소를 참고해 사이트에 접속 |
4 | DNS 캐시 테이블에 없을 경우 로컬 DNS 서버의 IP 주수로 입력한 도메인 네임에 대한 질의를 요청 |
5 | 로컬 DNS 서버로부터 도메인 네임에 대한 IP 주소를 응답 받으면 DNS 캐시테이블에 반영 |
ARP 캐시 테이블 : IP와 목적지 MAC 주소의 대응 관계를 저장 ( 출발지, 목적지의 네트워크 ID 비교 부터 시작 )
DNS 캐시 테이블 : 도메인 네임과 목적지 IP 주소의 대응 관계를 저장 ( hosts 파일 검색 부터 시작)
*/
DNS 레코드
권한 있는 DNS 서버에 있는 명령으로서 도메인에 연계된 IP 주소 및 해당 도메인에 대한 요청의 처리 방법에 대한 정보를 제공한다. (출처 : Cloudflare)
도메인 이름을 IP 주소나 기타 네트워크 정보로 변환하여 사용자가 원하는 리소스를 쉽게 접근할 수 있도록 해준다.
A 레코드 (Address)
도메인의 IPv4 주소를 갖고 있음
IP는 그대로 유지
1대1 아니어도 1대다 / 다대1 가능
예: tistory.com - 123.12.123.123 으로 연결
PTR 레코드 (Pointer)
IP 주소를 도메인 이름으로 변환하는 정보를 갖고 있음 (역방향 조회)
1대1 만 가질 수 있다.
예 : 123.12.123.123 - tistory.com
CNAME 레코드 (Canonical Name)
도메인의 별칭을 다른 도메인으로 설정함
도메인 그대로 유지
예: boanog2.com - boanog.com 으로 연결
AAAA 레코드 (IPv6 Address)
도메인의 IPv6 주소를 갖고 있음
예:boanog.com - 2001:db8::1
MX 레코드 (Mail Exchange )
도메인으로 수신되는 이메일을 처리할 메일 서버 정보를 갖고 있음
해당 도메인과 연동되어있는 메일서버를 확인하는데 사용하는 레코드
예: boanog.com - mx.boanog.com 이메일 주소로 사용 가능하다.
NS 레코드 ( Name Server )
도메인의 권한 있는 네임서버를 지정함
도메인 이름의 DNS 정보를 관리하는 서버이다.
예: boanog.com - ns1.boanog.com
/*
설정한 네임서버에서 도메인 관리를 해준다. 서버비용이랑은 별개다.
*/
SOA 레코드 ( Start of Authority )
도메인의 관리 정보를 갖고 있음 (네임서버, 관리자 이메일 등)
네임서버에게 어떤 기준에 의해 이 도메인을 관리하여야하는지 알려주는 역할
예 : 권한 있는 기본네임서버(주요 dns 서버 역할) / 관리자 이메일 주소(. 대신 @) / 일련번호(ZONE파일업데이트시 최신정보 여부) / 갱신 간격(초) / 재시도 간격 / 만료시간 / dns 레코드가 캐시될 수 있는 시간 등등
TXT 레코드
주로 메모를 낙미는 용도이다. 도메인과 관련된 텍스트 데이터를 저장함 (보안, 인증 등)
예 : 구글로부터 제공받는 특정 텍스트값을 DNS에 설정함으로써 소유권을 증명하거나 특정 IP 대역에서만 이메일을 발송할 수 있도록 설정한다는 의미로 텍스트 값으로 적어놓는다.
출처
https://www.cloudflare.com/ko-kr/learning/dns/dns-records/
https://learn.microsoft.com/en-us/azure/dns/dns-zones-records
'프로그래밍 기초' 카테고리의 다른 글
HTTPS (0) | 2024.09.30 |
---|---|
Github 기본 (0) | 2024.09.25 |
0.웹에 관한 중요 키워드 (0) | 2024.07.02 |