ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 이석복 네트워크 DNS
    Network/Network 2022. 11. 10. 07:00

    ---

    2014년 2학기

    http://www.kocw.net/home/cview.do?cid=95113bbb8242160d#.Y2wiZV9rfow.link 

     

    컴퓨터네트워크

    인터넷에서 데이터는 어떠한 방법으로 목적지까지 전달되는가?’ <br/><br/>본 강의에서는 인터넷의 동작 원리와 그 내부의 다양한 프로토콜들을 학습한다. 응용계층으로부터 링크계층까지 Top-dow

    www.kocw.net

     

    3강~50분까지, DNS부분, pdf는 3강 것, 파이어폭스 창 분리로 보기

     

    ---

    상대방 프로세스와 통신하기 위해 IP(호스트)와 PORT(프로세스)를 알아야

    웹브라우저는 IP주소와 PORT를 입력하는 것. 어차피 PORT는 80번으로 고정돼 있어. 내가 안넣어도 웹브라우저가 넣어준다.

    그럼 이제 IP주소를 집어넣어야 하는데 naver의 IP주소 우리 몰라. 우리는 IP주소가 아니고 네이버의 hostname을 집어넣어서 찾아가지. 실제로는 IP주소를 갖고 찾아갈텐데 기억하기 어려우니까 누가 대신해준다. 우리 폰의 전화번호부에서 이름을 찾는것처럼

     

    그 일을 해주는게 DNS, DNS라는 디렉토리 시스템에 전화번호를 적어놓는것. 결국 데이터베이스다

     

    ---

    전화번호부 컬럼 2개뿐이다

    이름 전화번호

     

    DNS도

    hostname IP

    두개다

     

    end user가 사람이기 때문에(외우기 어려워서) 어쩔 수 없이 거쳐가는 중간단계일 뿐. 별거 아닌것 같지만 필수. 우리가 기계였으면 필요 없었다

     

    ---

    가장 단순하게 DNS 구현하는 방법은 그냥 컬럼 2개인 DB니까

    그래 앞으로 전세계사람들 이거 궁금하면 이리와서 물어보세요 하고 서버하나 만들어놓고 접속하면 된다

     

    근데 한군데에, 이렇게 안써. 무슨 문제가 있을까?

    1.부하

    2.서버하나면 얘 다운되면 전세계 사람들 인터넷 못한다

    3.그 서버 하나 위치 근처의 사람들은 좋아. 한국에 두면 미국 사람들 멀리 돌아온다

    4.단순히 DB인데, 하나에다 두면 레코드 개수가 무수히 많다. 하나에다 못 둬

     

    그래서 전세계 곳곳에 분산, 계층화 시켜 놨다. 가장 가까운곳에 가서 알아서 잘 쓰라고

    (뭔가 스케일러블 문제가 나오면 계층화 시키면 해결돼)

    현재 DNS의 개념적인 구조

    제일 위에 root(모르면 얘한테 물어보면 된다)

    그 밑에 상위 도메인을 관리하는 DNS 서버들 .com의 정보를 알고 있는애 .org정보를 알고 있는애.. 이런 애들 많다

    그 밑에 실제로 운영하는 기관들이 갖고 있는 DNS서버

    www.amazon.com 이라는 호스트의 이름, 여기에 접속하고 싶으면 IP주소를 알아야 해. 이 DNS 시스템을 사용해서 알아낸 것

     

    ---

    제일 처음에 root한테 물어본다. 이거 IP주소 가르쳐주세요

    root은 이 host의 ip주소를 알고 있진 못한다. 정답은 몰라도 .com을 관리하는 애의 주소는 알아. 걔한테 가서 물어봐

    그 밑에 애도 www.amazon.com은 모르지만, amazon.com 을 관리하는 애를 알려준다

    그럼 걔한테 물어보면 정답을 알려주는 시스템이다

     

    ---

    분산, 계층

    root가 정보 다 갖고있을 필요 없다. 각각 자기가 들고 있을 부분만이면 돼

    root가 개념상으론 출발점이지만 root도 한군데만 있는게 아니라 여러가지 상황을 고려해서 13군데에 분포 시켜놓음

     

    ---

    root바로 밑에 Top Level Domain을 관리하는 서버들이 있다 .com을 관리하는 서버 하나 .net을 관리하는 서버 특정 하나... .org .edu...

    그리고 가장 하위에 authoritative DNS servers: 인터넷에 붙어있는 어떤 기관이든 간에 자신이 보유하고 있는 호스트들의 이름을 매핑할 수 있는 authoritative DNS server를 운영해야한다. 그래야 네트워크 내부에 있는 서버들이 외부에 접근 가능하다.

     

    회사를 차려서 도메인 하나 가져. 그럼 하나의 인터넷 기관인 것. 그럼 우리는 기관에 authoritative DNS server를 하나 운영해야해. 이게 하는일은 우리가 운영하고 있는 내부에 호스트들의 매핑을 남들한테 알려주도록 하는 것

     

    ---

    이 계층 이외에 현실세게에서 중요한 component가 하나 있다

    내 네트워크 내부에 name server cache가 있어서 걔한테 항상 먼저 물어보게 된다

    지난 시간의 web cache, web proxy와 동일한 것

     

    네트웍 내부의 로컬 네임서버한테 먼저 물어보고 걔가 캐시하고 있는거면 알려주고 모르면 걔가 밖으로 나가면 됨. 우리는 모르지만 무조건 여기로 방문한다

     

    ---

    뉴욕시의 폴리테크라는 학교에서 웹브라우저가 작동하려고 한다. 저기 메사추세스 대학의 컴퓨터랑

    1.쟤 IP주소를 알아야 해

    2.제일 처음에 같은 네트워크 내부에 있는 local name server에게 물어본다. 캐시가 돼 있으면 바로 답 줘

    3.몰랐으면 루트한테 가. 알면 줄텐데 얜 아마 모르고, 루트는 난 그건 모르는데 .edu 관장하는 앤 알아 걔주소 알려줌

    4.따라가다보면

    5.gs.umass.edu를 관장하는 authoriatative 서버가 있다

     

    우리들은 local DNS server한테 쿼리를 넘기고 궂은 일은 얘가 다 알아서 하는 것. 내가 밖으로 나가는 일은 드물고 얘가 다 알아서 해준다

    어차피 우리가 방문하는곳도 뻔해서 웬만하면 여기서 다 해결

     

    ---

    좋은데, 저번 시간 웹캐시 웹프록시 할 때와 마찬가지로 똑같은 문제점이 있다

    실제 세상과는 약간 다를 수 있어. 네이버 IP가 바뀌면?

     

    그 문제 완화 시키기 위해 레코드에다가 필드를 하나 추가시켰다 TTL이라는 필드 Time to leave. 레코드가 유효한 기간을 적어뒀다. 기간이 지나면 캐시에서 삭제한다. 보통 trade off를 생각해서 하루~이틀이다. 사실 IP주소가 자주 바뀌는 건 아니다

     

    ---

    4개의 필드 name value type ttl

    지금까지 설명에서 type이 하나 추가되는 것

    Answer : type=A는 레코드 자체가 Answer라는 것. 호스트의 IP주소와 매핑

    Name Server : type=NS는 어떤 도메인을 어떤 서버가 관리한다

     

    이거 두개 이해하면 기본적인건 다 이해한 것. CNAME, MX는 무시하고

     

    ---

    모든 기관은 각자 자기 자신의 authoritative dns server를 갖고 있어야 한다

    ROOT - EDU - hanyang.edu 라고 치면

     

    TLD인 EDU도 authoritative dns server인 dns.edu(7.7.7.7)이 있고

     

    hanyang.edu안에 authoritative dns server의 IP 가 2.2.2.2

     

    hanyang.edu안에 호스트가 많을 것

    여기서 가장 유명한 호스트는 www라는애. www.hanyang.edu 이거  --이런게 호스트구나??

    cse.hanyang.edu(2.2.2.4라고 치고)라는애도 있고 이런게 다 컴퓨터 이름이다 호스트이름

     

    얘네들이 다 IP주소가 있고, 누군가가 얘네들 도메인과의 매핑을 다 알고 있어야 한다

    이게 다 authoritative dns server의 DB에 들어있다

     

    ---

    ROOT에 www.hanyang.edu의 주소가 뭐예요 하고 물어볼 건데

    name value type ttl 레코드가 있는데. 얘는 TLD의 정보가 다 있는애. edu면 걔를 관리하는애는 dns.edu

    edu dns.edu NS 라고 써있어. 이러면 dns.edu의 IP주소를 알아야 거기로 갈 거 아녀. 그래서 ROOT는 2개쌍을 갖고 있다

    dns.edu 7.7.7.7 A

    그래서 물어보면 2개쌍을 한꺼번에 나한테 준다

     

    ---

    마찬가지로 TLD에서도

    dns.edu안에

    hanyang.edu dns.hanyang.edu NS

    dns.hanyang.edu 2.2.2.2 A  ▽잘 안보임 내가 씀

     

    ---

    그럼 이제 dns.hanyang.edu의 레코드에는 전부 A타입만 있다

     

    NS랑 A같이 주는건 난 답을 모른다 얘한테 물어봐라

    따라가다가 A하나만 주면 최종 답이다

     

    ---

    DNS도 프로토콜이라 메시지가 있고 헤더가 있다. 크게 중요하진 않다

     

    ---

    현실적인 이야기

    www.amazon.com

    간다? 로컬로 먼저

    로컬NS에 캐시가 있으면 OK

    로컬에 캐시가 없으면 ? ROOT로 가 ? 그게 또 아니야

     

    로컬NS가 모든걸 다 캐시한다 .com .net 등 TLD 서버들 다 캐시해놔

    얘한테 .com누가 관리하는지 정보도 얘한테 있어

    ROOT로 가도 되는데 갈 필요가 없어 이미 알아. 그래서 ROOT에 몰리지 않고 TLD에 몰려

     

    ---

    스타트업 회사를 하나 차려

    hu.com 하나 받았어

    웹서비스를 www.hu,com여기다 운영하고 있어  --www.가 무슨 뜻인지 계속 모르는 중인데 이런걸로 감잡기

     

    그럼 DNS 계층에다 뭔가를 심어놔야 사람들이 찾아올수 있다

    뭘 해야할까?

     

    0.등록해서 hu.com을 받은 상태(.com밑에)

    1.인터넷에 붙은 하나의 기관이 된 것 => 내 도메인의 authoritative dns server를 운영해야한다

     : dns.hu.com 5.5.5.5로 운영하고 있다고 하기. 여기 DB에 www.hu.com 5.5.5.5 A 등이 있다. 남들이 도메인의 IP를 알고 있으면 우리가 최종적으로 답해주는거야

     

    2.1.은 우리까지 찾아왔을 때 답을 해주는거고 우리까지 찾아오게 만드려면? TLD에다 레코드 2개를 넣어야 해

    NS와 A

    hu.com dns.hu.com NS

    dns.hu.com 5.5.5.5 A

    두개를 심어놔야 해

     

    3.회사 자리 배치를 다시 해서 www.의 IP주소가 바뀌었어. 5.5.5.10으로

    이때 authoritative dns server의 DB만 업데이트 해주면, 10으로 바꿔주면 끝이야 TLD건드릴 필요 없다

    (맨 처음에 DNS쓰는 이유중에 사람들이 까먹으니까 DNS를 썼었는데)DNS를 쓰니까 우리회사 내부적으로 공사, 확장해서 IP가 바뀌어도 우리는 몰라도 된다. 중간에 indirection 간접 두개 거치면서

    친구 전화번호가 바뀌어도 자동적으로 바꿔주는 주소록이 있는 것

     

    근데 authoritative dns server의 IP가 바뀌었으면 TLD를 건드려야 한다. 얘는 자주 안바뀐다

     

    ---

    단점

    돈?은 내야해 외우기 힘드니까 (▽서비스를 받는건데)

     

    DNS가 나쁜 사람이 장난칠 수 있어. 로컬 DNS서버를 해킹해서 은행 도메인에 자기 사이트를 심는다든지

    매핑돼서 IP주소가 바뀌는건 우리 눈에 안보여서 헛점이 많다

     

    ---

    학생 질문

    홍은채.kt.com : kt도메인 내부에 홍은채가 호스트 받은 것. kt가 알아서 해줘

    근데 만약에 www.홍은채.com 이걸 아예 만들었으면 컴퓨터 한대 뿐만 아니라 홍은채 도메인까지 갖고 있는 것 큰 돈 내고

    이럴때는 authoritative dns server를 운영해야 찾아올 수 있어

     

    ---

    CNAME 따로 찾아봄

    https://dev.plusblog.co.kr/30

    서브도메인을 메인도메인에 연결하는 타입

    - A로만 할 때 172.17.0.2가 여러 도메인을 처리하고 있다고 치면, IP변경시 모든 레코드를 전부 바꿔야 한다

    -대신 여러번 거쳐야 한다

Designed by Tistory.