일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- data structure
- jest
- 자료구조
- hokeys
- 힛잇
- HTML
- 리액트 예제
- 개발자
- 호키도키
- 리액트
- javascript
- 계명대
- 계명대 이종호
- 비동기
- 이종호
- Svelte
- Hitit
- 자스민
- 스벨트
- 개발
- IOS
- 자바스크립트 자료구조
- hokidoki
- queue
- 자바스크립트
- 호키스
- react
- TDD
- SWIFT
- 스위프트
- Today
- Total
Dog foot print
통신 속도 향상을 위한 노력 (DNS편) 본문
서론
만약 도메인
이 뭔지, IP주소와 포트
에 대한 개념이 정립이 되지 않았다면 이전 포스트를 보고 이 포스트를 읽기를 추천한다.
DNS
도메인은 인간이 이해하기 쉽고 기억하기 쉬운 문자열로 이루어진 네트워크 식별자
라고 이야기 했다.
그렇다면, 이 도메인을 가지고 어떻게 특정 컴퓨터를 식별 할 수 있을까 ? 답은 누군가는 해당 도메인에 해당하는 IP주소를 가지고 있다.
이다. 즉 DNS
란 도메인과 IP주소를 연결 지어주는 서버
를 말한다. 그러나, 세상에 얼마나 도메인이 많은데, 한개의 컴퓨터가 이 모든 도메인과 IP주소를 알고 있고, 모든 요청을 다 처리 할 수는 없다.
DNS를 이용해서, IP를 찾는 방법
만약 우리가 www.naver.com을 찾는다고 가정하자, 그럼 컴퓨터는 일단 먼저 자신이 해당 IP를 알고 있는지를 먼저 확인 한다. 만약 모른다고 하면 자신이 속하고 있는 LocalDNS
에 IP를 요청한다. 만약 존재 한다면 위와 같이 IP를 Local DNS
가 응답해 줄 것이다.
만약 Local DNS
도 해당 도메인에 해당되는 IP를 모르는 경우, 가장 높은 곳에 있는 Root DNS
에게 요청 한다. 동일하게 Root DNS
도 IP를 모르지만 대신 .com
Top Level DNS
에게 물어본다. 이 과정은 도메인의 최하위 도메인 네임서버에 도착 할 때 까지 재귀적으로 이루어진다. 만약 중간에 naver.com에 해당하는 도메인 네임서버가 존재하지 않으면 이 과정은 더 이상 진행되지 않는다.
그럼 이런 생각이 들 것이다. 호스팅 되어 있는 웹과 API서버가 다르다면 API서버는 어차피 일반인들이 사용 할 일이 잘 없으니, IP형태로 작성하여 요청을 보내면 더 빨라지는 것 아닌가 ? 결론은 맞긴하다. DOMAIN을 IP형태로 찾기까지의 시간을 단축 할 수 있으니 말이다. 그러나 이는 만약 가까운 어딘가에 IP주소가 저장만 되어 있다면 무시할 수 있는 수준이니, 실제 프로덕트를 구축한다면 이런 생각은 하지 말자 !
새로운 도메인 구매 시 바로 적용되지 않을 때.
도메인을 구매하고, 도메인 공급 업체에서 시키는대로 설정하였지만, 바로 도메인으로 접속하지 못하는 경우가 존재한다. 이는 DNS
가 새로운 네임서버를 갱신하는데, 시간이 걸리기 때문이다. 만약 www.naver.com
의 하위 네임서버로 v.www.naver.com
을 등록 하였다면 www.naver.com
은 각 DNS
가 주소를 알고 있어 v.www.naver.com
으로 연결을 해줄 수 있지만 아예 새로운 도메인인 vvv.com
을 만들어 등록한 경우, .com
같은 최상위 루트 DNS는 새로운 네임서버를 갱신하는데 시간이 걸려 갱신 시간과 맞물리지 못한다면 최대 6시간 이후에 갱신되어 사용이 가능 할 수도 있다.
DNS 레코드 타입
도메인을 구입하고, 이제 서버와 연결을 하려고 하면 Cname
, A recorde
설정 옵션들이 있다. 내가 helloworld.xyz
라는 도메인을 구입 했을 때, 각 레코드 타입들이 무엇을 의미 하는지 알아보자.
A 레코드
현재 도메인과 연결 할 IP주소를 의미합니다. 사용자가 helloworld.xyz
만 쳤을 때, 특정 IP로 연결 되게 하고 싶다면 이 레코드에 연결할 IP주소를 입력합니다.
AAAA레코드
A레코드와 역할과 동일합니다. 그러나, A레코드는 IPv4
주소와 연결되고, AAAA레코드는 IPv6
와 연결 할 수 있습니다. 프로덕트가 IPv6
의 성능상의 이점을 취하는 목적이라면 AAAA
레코드를 사용하시면 되고, IPv6
를 지사용하지 않는다면 A레코만 사용해도 문제가 없습니다.
두 방식의 차이는 아래의 링크를 참조해주세요 .
CNAME
helloworld.xyz
도메인을 확장하여, cafe.helloworld.xyz
, m.helloworld.xyz
를 따로 연결 하고 싶다면 CNAME
를 사용합니다.
만약 m.helloworld.xyz
에 연결할 IP가 111.111.111.111
이면 CNAME
의 name은 m.helloworld.xyz
value는 111.111.111.111
이 됩니다.
TXT
주로 도메인의 소유권을 확인하기 위해서 사용 되는 값입니다. 예를 들어 구글 서치 콘솔이나 아날리틱스 같은 서비스를 사용하려면 도메인의 소유권을 확인 해야 합니다. 그럴 때, 서비스 제공자가 이 도메인의 소유권을 확인하기 위한 수단으로 주로 TXT를 사용합니다.
MX
메일 서버의 주소를 의미합니다. 예를 들어 xxx@hellowrold.xyz
에게 메일을 보내려면 helloworld.xyz
는 이 MX가 준비되어 있어야 합니다.
NS
이 도메인을 IP로 바꿔줄 수 있는 name server
주소를 의미합니다. 즉 위와 같은 경로로 찾지 않아도 되는 마지막 name server
를 의미합니다.
'기술' 카테고리의 다른 글
통신 속도 향상을 위한 노력 (기본 지식편) (0) | 2022.06.01 |
---|---|
WEB CACHE (0) | 2021.06.20 |
Under 1px line (0) | 2021.06.07 |