Host Name과 IP address
- host name
사람이 읽기 편한 형태로 되어있다.
길이가 가변적이며, 전부 알파벳으로 되어있다. (근래에는 한글 도메인 등 다른 character값도 지원한다.)
location에 대한 작은 정보만을 제공한다.
- IP address
라우터가 다루기 쉬운 형태로 되어있다.
길이가 고정되어 있으며, 32bits의 binary number로 이루어진다. (보기 편하게 8bits의 decimal number로 표현)
계층적이며, 각 숫자가 location과 연관된다.
Host name이 사용되는 이유
- 가장 큰 이유는 사람들이 외우기 편하다는 편리함일 것이다.
- 이용하고자 하는 서비스의 IP address가 변하더라도 host name이 변하지 않는다면, 사용자는 더욱 편리할 것이다.
- host name에 여러 개의 IP address를 할당해 load balancing이 가능하다.
서버의 부하를 줄여주어 서버가 비교적 안정적이다.
또한, 클라이언트와 가까운 서버를 선택하게 해주어 지연율을 낮출 수 있으며
사용자에 따라 다른 컨텐츠를 제공해줄 수 있다.
- 한 IP address에 여러 hostname을 연결해 편리함을 증대시킬 수도 있다.
(ex. youtube.com, youtu.be)
DNS가 나오기 전에는?
- FTP를 통해 중앙 서버에서 hosts.txt를 받아 hostname과 IP address를 연결지었다.
DNS (Domain Name Server)
- 여러 개의 Zone으로 나뉘어 저장되어있다.
- Root - TLD(Top-Level Domain) - Authoritative DNS server 의 계층적 구조
- Local DNS server와 클라이언트의 Resolver Software의 통신으로 변환된다.
Distributed Hierarchichal Database
- 도메인 정보가 한 서버에 다 저장되어 있다면 트래픽을 감당할 수 없을 것이다.
- 또한, 서버가 공격받으면 모든 네트워크에 지장이 생기기 때문에 보안에 취약하다.
TLD (Top-Level Domains)
- TLD는 세 개의 타입이 있다.
Generic Top Level Domains (gTLD): 3-character가 기관을 나타낸다.
ex) gov, mil, edu, org, com, net
Country Code Top Level Domains (ccTLD): 2-character가 국가나 지역을 나타낸다.
ex) cn, kr, us, jp
Reverse Domains : IP address로 Host name를 찾기 위한 특수한 도메인이다.
-gTLD는 공신력있는 ICANN(include IANA)에서 관리된다.
- FQDN(fully qualified domain name) : host name + domain name
ex) sports.naver.com
- 200개 이상의 TLD가 존재
- 투바라는 섬을 가리키는 .tv 도메인은 다른 용도로 사용된다.
이를 이용한 domain hack은 사용자를 헷갈리게 해, 사용자가 원하는 사이트가 아닌 다른 사이트에 접속하게 만든다.
ex) cnn.tv
DNS Root
- A부터 M까지 라벨링된 13개의 root server가 존재한다.
DNS example
Reverse Mapping (IP address to Host name)
- IP address를 통해 Host name을 알아낸다.
- IP address는 상위 숫자가 더 넓은 범위의 정보를 담는 반면에
host name은 하위 캐릭터가 더 넓은 범위의 정보를 담는다.
ex) 12.123.123.11, www.abc.com
- in-addr.arpa 서버의 계층적 구조가 위와 같기 때문에 IP address를 뒤집어 요청해야한다.
ex) 12.123.123.11 -> 11.123.123.12.in-addr.arpa
DNS Caching
- host name을 이용할 때 마다, DNS query를 하는 것은 지연율을 높여주고 비효율적일 것이다.
- Caching은 이러한 오버헤드를 줄여준다.
- TLD server의 정보가 변경되는 일은 정말 흔치 않고, 같은 사이트를 방문하는 일은 비일비재하다.
- Local DNS server가 이러한 정보를 캐싱한다.
- 캐시된 정보가 클라이언트에게 주어진다면, 서버는 'unauthoritative'한 정보라고 명시해주며, TTL값을 함께 제공해준다.
DNS message format
QR | Indicates if the message is a query (0) or a reply (1) | 1 |
OPCODE | The type can be QUERY (standard query, 0), IQUERY (inverse query, 1), or STATUS (server status request, 2) | 4 |
AA | Authoritative Answer, in a response, indicates if the DNS server is authoritative for the queried hostname | 1 |
TC | TrunCation, indicates that this message was truncated due to excessive length | 1 |
RD | Recursion Desired, indicates if the client means a recursive query | 1 |
RA | Recursion Available, in a response, indicates if the replying DNS server supports recursion | 1 |
Z | Zero, reserved for future use | 3 |
RCODE | Response code, can be NOERROR (0), FORMERR (1, Format error), SERVFAIL (2), NXDOMAIN (3, Nonexistent domain), etc.[33] | 4 |
DNS compression format
DNS resource records
- RR format : name, value, type, ttl
- type 별 값의 의미
A : name is hostname, value is IP address
PTR : name is reversed IP quads, value is hostname
NS : name is domain, value is hostname of authoritative name server for this domain
CNAME : name is alias name, value is canonical name
MX : name, value is name of mail server
DNS 취약점
- DNS는 기본적으로 authentication가 없다.
DNS reply가 올바른 곳에서 전송된지 모르고, 올바른 곳에서 전송됐을지어도 그 정보가 확실하다고 할 수 없다.
'컴퓨터 사이언스 > 네트워크' 카테고리의 다른 글
[모바일 컴퓨팅] NAT (Network Address Translation) (0) | 2021.06.08 |
---|---|
[모바일 컴퓨팅] SIP (Session Initiation Protocol) (0) | 2021.06.08 |
[모바일 컴퓨팅] DHCP (Dynamic Host Configuration Protocol) (0) | 2021.06.07 |
[모바일 컴퓨팅] Transmission Control Protocol (TCP) (0) | 2021.04.22 |
[모바일 컴퓨팅] User Datagram Protocol (UDP) (0) | 2021.04.21 |