노무현 전 대통령 서거 추모글 남기기

2009|0814 회의록

회의 발표자

  • 김이사님

회의 안건

  • 개발 프로세스 세미나 01

이슈 및 논의내용

  • 스펙(사양) => 디자인(설계) => 코딩 => 테스트
  • 기능과 스펙(specification 요구명세서)

    • 기능에서 기능적인 것 외에 더 상세히 적는 것이 스펙(spec)이다.
    • 스펙이 없을 경우 혼돈이 발생한다.

      • "숫자 3개를 주고 정렬하는 프로그램" 을 만들기로 하고 진행 중에 나오는 요구사항
      • -> 만약 실수 3개라면?
      • -> 만약 복소수 포함이라면?
      • -> 만약 핸드폰에 넣을 프로그램이라면?
    • 이와 같이 스펙이 명확하지 않으면 최악의 경우 모두 엎고 다시 만들어야 할 수도 있다.
    • 대부분의 개발자들은 방해받는 것을 싫어한다.

      • 다른 부서와의 명확한 의사소통을 하고 중복 의사소통을 피하기 위해 스펙을 상세히 쓰는 것이 좋다.
  • 디자인 (설계)

    • 완성된 스펙으로 디자인을 시작한다.
    • 프로그래머에 대한 의존도를 최소화 한다.
    • 어떤 TOOL을 이용할 것인가?

      • 자신에 맞는 TOOL을 이용하여 설계한다. 너무 다루기 힘든 TOOL을 사용하려고 하면 TOOL 사용법을 배우는데 시간이 더 많이 든다.
  • 개발

    • 20%의 코딩 + 80%의 예외처리(에러처리)
    • Peer Review

      • 종류 :

        • 설계 리뷰
        • 코드 리뷰 (checkin 하기 전 코드에 대한 review) 등등
      • 방법 :

        • 몇명 모여서 간단히.
        • 보통 상급 프로그래머 + 초급 프로그래머의 조합
      • 코드 리뷰의 목적 :

        • test 이전에 버그를 조기 발견할 수 있다.
        • 정보의 공유를 통해 개인 사정으로 부재시에도 별 문제가 없다.
        • 잘된 코드를 볼 수 있고, 잘못된 코드를 고쳐가면서 빨리 배울 수 있다.
        • 왜 이렇게 만들었느냐 하는 책임을 묻는 자리가 아니다.
  • 테스트

    • Pre-Alpha test (개발버전)
    • Alpha test : 설치, 동작이 되고 주요기능 구현이 되어 있다.
    • Beta test : 모든 기능이 구현되어 있다.
    • RC (Release candidate) : 출시를 위해 만들어 버그가 거의없다.
    • RTM (Release To Manufacturing ==  GA(General Available)) 릴리즈 버전. RC의 마지막 버전
  • 훌륭한 관리자의 역할

  • 예상치 못한 것을 예상하라.

    • Back up Plan을 가지고 A가 안될 경우 B플랜을 실행한다.
    • 예상하는 것까지는 괜찮은 관리자, 예상하여 B플랜을 가지고 B로 하면 된다는 것까지 알고 있으면 훌륭한 관리자.

 

이 글은 스프링노트에서 작성되었습니다.

무한도전 봅슬레이

혼자놀기 | 2009. 8. 11. 00:43 | sweetw

채널 돌리다가 우연히 TV에서 무한도전 봅슬레이 편을 봤다. 아마 재방송일 것이다.

평소에 무한도전은 바보 캐릭터들이 나와서 쓸데없는 이것 저것을 하며 웃기는 프로그램이라고 생각했다. 나도 보면서 재밌기도 하고 배를 잡고 웃기도 했지만 지나면 그냥 그뿐인 나에겐 소비성 강한 프로그램이었다.

봅슬레이에 도전하는 것을 보면서도 처음엔
아, 얘네들 이제 별거 다 도전하는구나.. 생각했다.

한국에선 거의 불모지에 가까워 봅슬레이 경기를 하거나 연습할 시설도 없고, 일본에서 경기를 하면서 얼음 상태가 괜찮을때 일본 선수들이 먼저 출전하고 뒤이어 한국이 경기에 임하는 조금은 서글픈 상황이었다.
그럼에도 불구하고 자신이 하고자 하는 것에 열정을 아끼지 않는 우리나라 선수들이 있다는 것을 자연스럽게 보여주면서.. 과연 거의 운동과는 거리가 멀어보이는 이 무한도전 아저씨들이 해낼 수 있을까 하는 기대감을 끌어냈다. 미친듯한 속도로 얼음 터널을 미끄러져 나가는 앞의 선수들 모습에 이어.. 마지막 무한도전팀의 출발 직전 긴장감이 안방까지 전해졌다.

실전에서 최고의 성적을 낸 무한도전 팀의 평소엔 거의 찾아볼 수 없는 합심으로 이루어낸 완주는 참 감동적이었다. 결국 꼴지로 들어오긴 했지만.. 그것도 다른 팀보다 겨우 몇 초 뒤진 속도로 사고없이 참 훌륭하게도 해내었다. 결국 박명수까지 울어대는 상황이..

예전에 라틴댄스스포츠에 도전하면서도 그리 울더니 참 감동 잘하는 모임이구나 했는데..
어떤 도전이든 결심과 노력, 두려움에 대한 극복과 팀원간의 합심 등등.. 많은 것들이 필요하고 이들이 잘 뭉쳐졌을 때, 그로 인해 놀라운 결과가 나왔을 때 자기도 모르게 그만 감동해버리고.. 넘치는 기쁨에 눈물이 저절로 나온 것이라는 걸 알게 되었다.

이들은 참 행복한 사람들이다.
매일 그렇게 새로운 도전을 하고 때론 무모해 보이지만 보통은 저렇게 미치도록 행복해 보이니까..
그들을 보면서 더 힘을 얻는 사람들도 있을 것이다.
그런 의미에서 이제 그들의 무모한 도전을 따뜻한 시선으로 바라보기로 했다. ^^

'혼자놀기' 카테고리의 다른 글

[재미] 댁의 고양이는 당신을 어떻게 생각할까요?  (0) 2009.09.25
현충원 국립 묘지의 봄날  (2) 2008.04.12
심즈 건축 - 화이트씨 댁  (4) 2007.12.28
밤과낮  (0) 2007.08.30
심즈2  (0) 2007.06.13

아랍어 시험문제

상상 | 2009. 6. 30. 09:35 | sweetw

뭔가.. 너무 쉽잖아.

우주에서 얻는 미래 자원 - 헬륨3

상상 | 2009. 6. 26. 15:30 | sweetw

'2020년까지 달에 우주기지를 건설하겠다' 


지난해 10월 미국 부시 대통령이 이런 내용을 담은 우주개발 계획을 발표해 관심을 끌었다. 물, 공기가 없는 황량한 달 표면에 왜 우주기지를 건설하겠다는 것일까? 여러 가지 목적이 있겠지만, 미래 에너지 자원 확보를 선점하기 위한 것으로 보는 시각이 많다. 미국이 달 표면에 널려있는 헬륨3을 가져와, 고갈될 지구의 화석연료를 대체해서 쓸 계획을 세우고 있다는 것이다. 

에너지 전문가들은 지금 추세라면 지구상의 대표적인 화석연료인 석유는 40년, 천연가스도 60년 정도면 고갈될 것으로 보고 있다. 원자력 발전의 연료가 되는 우라늄 역시 재처리해서 쓰지 않는다면 약 65년이면 바닥날 전망이다. 전기 등 에너지가 사라진 지구를 상상할 수 있을까? 과학자들은 태양전지, 풍력, 조력 등으로부터 에너지를 뽑아내기 위해 연구를 하고 있지만, 이러한 자원들이 현재의 화석연료를 대체하기에는 턱없이 부족하다는 게 중론이다. 

그래서 연구되고 있는 것이 핵융합 발전이다. 
태양이 에너지를 만드는 것과 유사하다고 해서 ‘인공태양’이라고도 불리는 핵융합발전은 이중수소와 삼중수소를 결합시켜 헬륨을 만들 때, 손실되는 질량을 에너지로 이용한다. 원자는 핵과 전자로 구성되어 있는데, 에너지는 양자와 중성자로 이루어진 핵에 집중되어 있다. 원자력 발전이 중성자로 핵을 쪼갤 때 발생하는 에너지를 활용한 것이라면, 핵융합은 핵끼리 융합할 때 손실되는 질량(통상 양자나 중성자가 질량을 갖고 있다)이 에너지로 바뀌는 것을 이용한다. 

예를 들어 질량이 2인 중수소(양자1+중성자1)와 질량이 3인 삼중수소(양자1+중성자2)를 결합시키면 어떤 일이 벌어질까? 우선 핵융합 반응에 의해 헬륨(양자2+중성자2)이 생성된다. 이 때 중성자 하나가 남게 되는데, 이 중성자가 연쇄반응을 일으키면서 에너지(E)=질량(m)x빛의 속도(c)2 만큼의 에너지를 만들어낸다. 

헬륨3이 관심을 끄는 것은 3중수소 대신 활용될 수 있기 때문이다. 헬륨3은 보통 헬륨(양자2개+중성자2개)보다 중성자 수가 하나 적다. 즉 양자 2개와 중성자 1개로 구성되어 있는 것이다. 이런 헬륨3에 중수소(양자1개+중성자1개)를 핵융합시키면 헬륨으로 바뀌면서, 양자 1개가 남는데 이것이 에너지로 바뀌게 되는 것이다. 

이러한 핵융합은 무엇보다 적은 양의 연료로 많은 에너지를 생산할 수 있다는 장점이 있다. 즉 화석연료와 핵분열원자력, 핵융합 연료를 비교하여 보면 20톤의 석탄이 탈 때 발생하는 에너지를 1.5kg 의 핵분열 연료로 생성할 수 있는데, 핵융합인 경우는 60g의 핵융합 연료로 가능하게 된다. 게다가 방사선이 없어지는 데 수 만년이 걸리는 원자력발전과는 달리, 반감기도 12년 가량에 불과해 방사성동위원소가 포함된 폐기물을 거의 만들어내지 않는다는 장점까지 갖추고 있다. 

문제는 헬륨3을 지구에서는 거의 얻을 수 없다는 것이다. 반면 달 표면에는 태양풍에 의해 1백만 톤 가량의 헬륨3이 침전되어 있는 것으로 추정된다. 미국 행성지질학연구소의 로런스 테일러 소장은 "헬륨3이 중수소와 결합할 때의 융합 반응은 매우 높은 기온에서 진행되며 놀라운 양의 에너지를 생산할 수 있다"며 "우주왕복선 한 대로 운송할 수 있는 헬륨 25t이면 미국이 1년 동안 쓸 전기를 공급하기에 충분하다" 고 말한다. 과학자들은 헬륨3이 매장된 지역에 800도 이상의 열을 가해 헬륨을 분리해 내고, 이를 지구로 가져온다면 전 세계인들이 5백년 가량 쓸 수 있는 에너지를 확보할 수 있을 것으로 보고 있다. 

물론 넘어야 할 산이 많다. 
무엇보다 핵융합 반응을 안정적으로 유지하여 ‘인공태양’을 만들기 위해서는 우선 섭씨 1억도 이상의 온도를 유지할 수 있는 기술이 필요하다. 금속 가운데 녹는점이 가장 높다는 텅스텐도 섭씨 3410도가 넘으면 녹아 버린다. 다행히 초전도 자석 안에서 고온의 플라즈마 상태를 만들고, 1억 도의 온도를 만들어 내는 데는 성공했다. 그러나 핵융합을 에너지원으로 이용하기 위해서는 고온의 플라즈마를 오랫동안 유지하면서 그 안정성을 검증하는 일이 남아 있다. 그런데 수 분 동안 초고온 플라즈마를 유지하는 핵융합 실험로를 짓는 데만 100억 달러 이상의 예산이 투입된다. 이 때문에 미국ㆍ유럽연합(EU)ㆍ러시아ㆍ일본 등이 국제 컨소시엄을 구성해 ‘국제핵융합실험로(ITER)’를 짓기로 했는데 사업이 순조롭게 진행된다고 해도 2015년 경에야 완성될 전망이다. 전문가들은 실용화단계까지 가자면 2050년은 되어야 할 것으로 보고 있다. 

그러나 벌써 경쟁은 시작됐다. 
중국이 최근 다섯번째 달 탐사선을 보낼 계획을 발표하고, 핵융합 연구에 적극적인 일본 역시 달에 탐사선을 보내 헬륨3를 가져오기 위한 계획을 추진하고 있다. 러시아 국영 우주개발 회사인 에너지아(Energia)가 달에서 헬륨3 성분을 캐내 지구의 핵융합 발전소 연료로 쓰겠다는 계획을 발표한 것도 바로 이러한 맥락이다. 미국에서는 광물이 있는 장소를 조사하고 헬륨3이 묻힌 장소를 표시하는 자원지도를 만들자는 논의도 나오고 있다. 자원의 서부 개척시대가 선언된 것이다. (글 : 유상연 – 과학칼럼니스트) 

출처 : NDSL과학향기

'상상' 카테고리의 다른 글

포천에서 스님을 만나고..  (5) 2009.08.23
아랍어 시험문제  (6) 2009.06.30
차세대 비디오 프로젝션 기술영상  (2) 2008.12.09
맑은 고딕체 흐리게 보일 때  (2) 2008.09.08
구글 브라우저 '크롬' 베타  (4) 2008.09.03
[RFC 2133] Basic Socket Interface Extensions for IPv6)
좋은 참고가 되었다.
http://www.ietf.org/rfc/rfc2133.txt?number=2133

추천받은 사이트 (Powerd by DNS)

'개발자가 뭐길래 > Network' 카테고리의 다른 글

Longest Prefix  (0) 2010.01.12
IPv4 compatible address와 IPv4 mapped address의 차이는?  (0) 2009.08.26
PTR  (0) 2009.06.26
RR(resource records) 자원 레코드  (0) 2009.06.26
FQDN  (0) 2009.06.26

PTR

개발자가 뭐길래/Network | 2009. 6. 26. 15:25 | sweetw
DNS 서비스의 PTR 레코드를 수정하는 기능입니다.
사용자가 등록한 IP주소에 호스트이름을 지정할 수 있습니다.
예를 들어 10.168.192.in-addr.arpa를 등록한 사용자는

domain.com           A    192.168.10.1
www.domain.com   A    192.168.10.1

 의 역으로

1.10.168.192.in-addr.arpa    PTR    domain.com
1.10.168.192.in-addr.arpa    PTR    www.domain.com

식으로 등록, IP주소를 가지고 도메인을 매핑할 수 있습니다. 

출처 : http://kr.dnsever.com/help/wiki/wiki.php/EditPTRHelp
DNS 서버의 기본 동작은 클라이언트에서 질의 메시지를 받아 그 내용에 따라서 등록 정보를 회신하는 것입니다.
질의 메시지에는 다음과 같은 세 가지 정보가 포함되어 있습니다.

 문의 항목
설 명 
 이름 서버나 메일 배송처(메일 주소의 @ 이후의 주소)등의 이름 
 클래스  이름의 클래스를 나타냅니다. DNS의 구조가 고안되었을 때는 인터넷 이외의 네트워크에서의 이용도 고려되어 있었기 때문에 클래스를 두었습니다. 하지만 지금은 인터넷 이외에서는 별로 사용되지 않으므로 클래스는 인터넷을 나타내는 IN이라는 값을 취합니다.
 타입  이름의 타입을 나타냅니다. 그 타입에 따라서 클라이언트에 회답하는 정보의 내용이 달라집니다. A, AAAA, MX ... )
표1

DNS 서버는 본질적으로 데이터베이스 서버의 한 유형입니다.
다음 1건분의 데이터베이스 항목을 자원레코드(RR)라 합니다.

 이름 클래스
타입 
클라이언트에 회답하는 항목 
 www.lab.cyber.co.kr IN 

192.0.2.226 
 cyber.co.kr IN 
MX  10 mail.cyber.co.kr
 mail.cyber.co.kr IN 

192.0.2.227 
표2

IP 주소를 문의할 때는 A라는 타입을 쓰지만 메일 보낼 곳을 질의할 때는 MX(Mail eXchange)라는 타입을 씁니다. 표2에서 예를 들면, webmaster@cyber.co.kr이라는 메일 주소가 있고, 보낼 곳을 알아야 할 경우는 @ 뒤에 있는 이름이 메일을 보낼 곳이 되므로 그 이름을 문의해야 합니다. 문의 내용은 다음과 같습니다.

(a) 이름 = cyber.co.kr
(b) 클래스 = IN
(c) 타입 = MX 

그러면 DNS 서버는 10 mail.cyber.co.kr 이라는 내용을 클라이언트로 회신합니다. 타입이 MX인 경우 회신할 항목은 2가지로, 우선순위(10) 와 메일 서버이름(mail.cyber.co.kr)입니다. 또 MX인 경우는 mail.cyber.co.kr 이라는 메일 서버의 IP 주소도 함께 회신해야 합니다. 표1의 3행에서 IP 주소를 등록한 행이 있으므로 mail.cyber.co.kr이라는 이름에서 그 행을 찾아내어 함께 회신하게 됩니다.

타입에는 A 와 MX 이외에도 다음과 같은 여러가지가 있습니다. (모두보기)

 RR유형값 RR 문자 코드 
RR 유형 
설명 
 1  A 
 주소 
32비트 IP 주소를 포함합니다. 이 유형은 네임 변환을 위한 노트의 주소가 지정되는 곳이기 때문에 DNS의 "본질"이라고 할 수 있습니다. 
 2  NS 
 네임 서버
 DNS 구역을 위한 권한 DNS 네임 서버의 네임을 나타냅니다. 각 구역은 1차 네임 서버를 가리키는 NS 레코드를 하나 이상 가지고 있어야 하며 네임은 유효한 주소 레코드(A)를 가지고 있어야 합니다.
 5  CNAME  정규 네임
 노드의 실제 네임을 가리키도록 정의한 별칭(alias)을 위해 사용합니다. CNAME 레코드는 이 별칭과 노드의 정규 네임 사이의 매핑을 제공합니다. CNAME은 기관의 필요에 따라 내부 네임은 수정하면서도 사용자는 변하지 않는 별칭을 사용하게 함으로써 사용자에게 DNS 구조의 내부 변경을 숨기는데 주로 이용합니다.
 6  SOA  권한 개시 정보
 DNS 구역의 시작을 표시하는 데 사용하며 DNS 구역에 대한 중요한 정보를 제공합니다. 모든 구역은 정확히 하나의 SOA 레코드를 가져야 합니다. 이 레코드는 구역의 네임, 1차(마스터)권한 서버의 네임뿐만 아니라 관리자의 이메일 주소, 슬레이브(2차)네임 서버를 갱신하는 대기 시간등과 같은 기술적 세부 사항까지 포함합니다.
 12  PTR  포인터  네임 공간의 다른 위치를 가리키는 포인터를 제공합니다. 이 레코드는 IN-ADDR.ARPA 도메인을 통한 역방향 전환에 주로 이용합니다.
 15  MX  메일 교환
 도메인으로 오는 이메일을 처리하는 위치를 명시합니다.
 16  TXT  문자열  도메인과 관련해 저장해야 할 임의의 문자를 나타냅니다.
표3 일반적인 DNS RR 유형 요약

함께 보기 : http://www.dns.net/dnsrd/rr.html

FQDN

개발자가 뭐길래/Network | 2009. 6. 26. 15:13 | sweetw
전체 주소 도메인 네임 (FQDN, Fully qualified domain name)
 기술적으로 최상위 도메인 A가 하위 도메인 B를 포함하고 B는 다시 C라는 하위 도메인을 포함한다면 C의 전체 도메인 네임은 "C.B.A"다 .이 네임을 해당 노드의 전체 주소 도메인 네임 (FQDN, Fully qualified domain name)이라고 한다. C.B.A라는 도메인 네임은 특정 도메인의 위치를 정확히 알려주기 때문에 완전한 도메인 네임이다. 전체 주소 도메인 네임은 전체 DNS 네임 공간에서 생성한 네임이다.


부분 주소 도메인 네임 (PQDN, Partially qualified domain name)
 때로는 불완전한 네임으로 장비를 찾아낼 수도 있다. 이를 PQDN이라고 한다. PQDN은 장비의 위치를 부분적으로 지정하여 이것만 가지고는 도메인의 전체 경로를 알수 없기 때문에 모호하다. 그러므로 PQDN은 절대 도메인 네임을 알고 있는 특정 부모 도메인 안에서만 사용할 수 있다. 부모 도메인의 절대 네임을 부분 네임에 붙이면 그 부분 주소 도메인의 FQDN을 알 수 있다. 예를 들어 FQDN "Y.X" 안에 Z라는 PQDN이 있다면 Z의 FQDN은 "Z.Y.X"이다.

 예를 들어, boriya.tistory.com 이 FQDN이라면, boriya 는 PQDN 이 되는 것이다.

 PQDN을 사용하는 이유는 바로 편리함이다. 도메인 관리자는 매번 전체 주소 네임을 반복할 필요 없이 PQDN을 이용해 장비나 하위 도메인을 알아낼 수 있다. 예를 들어 "cs.widgetopia.edu."라는 도메인 네임을 가지는 Widgetopia 대학 컴퓨터 공학부의 관리자가 있다고 하자. 그는 개개의 호스트를 과일 네임을 따서 명명했따. 이 경우 관리자는 기본적으로 자신이 관리하는 DNS 파일에서 "apple.cs.widgetopia.edu." 나 "banana.cs.widgetopia.edu."와 같은 FQDN으로 각 장비를 찾아낼 수 있다. 그러나 "부분 주소 네임이면 cs.widgetopia.edu 도메인 안의 것으로 간주하라"와 같은 명령을 미리 소프트웨어에 입력해 둠으로써 apple, banana만으로도 각각에 해당하는 장비를 찾을 수 있다. 즉 DNS 소프트웨어는 kiwi와 같은 PQDN을 "kiwi.cs.widgetopia.edu."로 인식한다.

<도메인 마지막에 오늘 점(.)에 대해서..>
  일반적으로 널 루트 도메인의 마지막에 오는 점(.)은 주로 생략한다. 실제로 사용자가 애플리케이션에서 도메인 네임을 입력할 때와 같은 일반적인 상황에서는 주로 마지막의 점을 생략한다. 예를 들어 웹 브라우저에 도메인 네임을 입력할 때 마지막 점을 입력하는 경우는 거의 없다. 그러나 DNS 마스터 파일에서는 FQDN과 PQDN을 명확히 구분하기 위해서 마지막에 오는 점을 사용한다. 앞선 예에서 apple은 "apple.cs.widgetopia.edu."를 가리키지만 "apple.com."은 Apple Computer, Inc.의 FQDN을 가리킨다. 여기서 "apple.com."의 마지막에 오는 점은 중요하다. 마지막에 점이 없는 apple.com은 PQDN으로 애플컴퓨터의 도메인이 아니라 "apple.com.cs.widgetopia.edu."을 가리키기 때문이다.
도메인네임이 IPv4 주소(A RR)와 IPv6 주소(AAAA RR)를 모두 갖고 있는 경우 
IPv4 인터넷에서는 도메인 네임이 갖는 IP 주소는 IPv4 주소 한 종류 뿐이었습니다.

그러나 이제 IPv6 인터넷이 도입되면서, 하나의 도메인네임이 IPv4 주소와 IPv6 주소 모두를 갖는 경우가 발생하게 됩니다.

예를 들어 아래와 같은 경우,
"examp.co.kr" 도메인 설정 내용
ftp.examp.co.kr.  1800  IN  A    192.0.2.200
ftp.examp.co.kr.  1800  IN  AAAA 2001:dc5:f::200

단말 호스트의 IPv6 어플리케이션은 getaddrinfo() 함수 호출의 결과로 ftp.examp.co.kr.  도메인네임에 대해 "192.0.2.200" IPv4 주소와 "2001:dc5:f::200"의 2개 주소를 얻게 됩니다.

이 경우, 어플리케이션은 "이 2개의 주소 중 어느 주소를 선택하여 접속을 시도해야 하는가?" 하는 문제가 발생하게 됩니다.

물론 이것은 원칙적으로 어플리케이션을 작성하는 개발자의 선택에 따라 결정될 것입니다.
어플리케이션이 getaddrinfo() 함수로부터 얻은 IP 주소 중 하나를 다시 Socket API에 인자로 전달함으로써 통신이 개시될 수 있기 때문입니다. 
이 동작은 프로그래머가 정하여 프로그램 코드를 작성할 수 있습니다.


디폴트 IP 주소 선택 알고리듬 (Default Address Selection)

IETF RFC3484 문서는 이 문제를 다루고 있습니다.

Ref Docs : RFC3484 "Default Address Selection for Internet Protocol version 6 (IPv6)"

일반적으로 어플리케이션은 도메인네임의 IP 주소 변환 함수 gethostbyname() 이나 getaddrinfo()가 리턴하는 IP 주소 목록에서 첫 번째 IP 주소를 선택하여 이 IP 주소로 Socket을 열고 통신을 개시합니다.

이러한 일반 사항을 기반으로 RFC3484는 getaddrinfo() 함수가 도메인네임의 IPv4 주소와 IPv6 주소를 함께 파악한 경우, 일정한 디폴트 알고리듬을 적용하여 어플리케이션으로 리턴하는 IP 주소 목록을 정렬(sort)하여 반환하는 동작을 정의합니다.

getaddrinfo() 함수는 일정한 규칙으로 IP 주소 목록을 반환하여 어플리케이션이 접속 시도하는 IP 주소를 일정하게 제어하는 역할을 하게 됩니다.

접속대상 주소 선택 알고리듬에 사용되는 디폴트 정책 테이블(default poliy table)은 아래와 같습니다.

    Prefix        Precedence     Label      비고
----------       -------------------  ----------  --------------------
::1/128                            50             0     IPv6 LoopBack 주소
::/0                                   40              1    이외의 모든 IPv6 주소
2002::/16                        30             2     6to4 IPv6 주소
::/96                                20             3     IPv4-compatible IPv6 주소
::ffff:0:0/96                      10             4     IPv4-mapped IPv6 주소, IPv4 주소를 의미


Source : RFC3484 "Default Address Selection for Internet Protocol version 6 (IPv6)"
                2.1. Policy Table


이 주소 선택 알고리듬의 개략적인 내용은 아래와 같이 정리할 수 있습니다.

1. IPv4 주소와 IPv6 주소가 함께 리스트에 있는 경우, IPv6 주소가 디폴트로 리스트 중 첫 번째 IP 주소로 리턴됩니다.

IPv4 주소(::ffff:0:0/96) 보다 IPv6 주소(::1/128, ::/0, 2002::/16, ::/96)들이  Precedence에서 모두 우선순위가 높습니다.
이에 따라 IPv6 어플리케이션이 getaddrinfo() 함수로부터 반환받는 IP 주소 리스트에 IPv4와 IPv6가 혼재하는 경우, 디폴트 동작으로 그 첫 번째 IP 주소는 IPv6 주소가 됩니다.

결과적으로 IPv6 어플리케이션은 IPv4와 IPv6 주소 모두 가진 도메인네임에 대해서는 IPv6를 먼저 접속 시도 주소로 선택하는 동작을 하게 됩니다.

2. IPv6 주소가 다수 존재하는 경우, IPv6 루프백(loopback) 주소, 일반적인 IPv6 주소, 6to4 IPv6 주소, IPv4-compatible IPv6 주소의 순으로 정렬(sort)하여 리턴합니다.

IPv6 주소 "2001:dc5:f::200"와 IPv6 주소 "2002:c000:02c8::c000:02c8"가 도메인네임에 함께 지정되어 있는 경우, APNIC을 통해 할당된 native IPv6 주소 "2001:dc5:f::200"가 6to4 tunnelling 방식의 자동생성된 6to4 IPv6 주소 "2002:c000:02c8::c000:02c8"보다 우선하게 됩니다.

곧 어플리케이션은 native IPv6 주소와 6to4 IPv6 주소가 있는 경우, native IPv6 주소로 먼저 접속시도하게 됩니다.


NOTE!: DNS의 IPv6 주소 설정오류가 야기하는 어플리케이션의 접속 시간 지연 문제
일반적으로 어플리케이션은 getaddrinfo() 등의 함수로부터 리턴받은 IP 주소 목록 중 첫 번째 IP 주소로 접속을 시도한 후 접속에 실패하면 다음의 IP 주소를 사용하여 접속을 시도합니다.
따라서 IPv4와 IPv6 주소가 하나씩 있는 경우, IPv6 주소로 먼저 접속을 시도하고, 이에 실패하게 되면, IPv4 주소로 접속을 시도합니다.
만일 DNS의 특정 도메인네임에 존재하지 않는 IPv6 주소가 설정되어 있는 경우, 어플리케이션에서는 접속시도와 그 timeout에 따르는 시간지연이 발생한 후 IPv4 주소로 접속이 성공함으로써, 사용자는 접속이 느린 현상을 경험하게 됩니다.


위에서 정리된 디폴트 주소 선택 알고리듬 내용은 개략적인 것으로 이외에 시스템 환경조건에 의한 주소 선택 및 정렬 알고리듬을 RFC3484 문서에서 정의하고 있습니다.

주의할 점은 RFC3484에서 정의한 주소선택 알고리듬은 디폴트 알고리듬일 뿐이며 어플리케이션에서 별도의 선택 알고리듬을 사용하여 특정한 주소 선택을 하거나, 디폴트 주소 선택 정책 테이블의 내용을 변경하는 경우, 선택 방식이 변경될 수 있다는 
사실입니다.

Windows 2003 서버의 경우, 아래와 같이 default policy table 내용을 볼 수 있으며, 이 테이블에서 각 필드 값을 변경하여 getaddrinfo() 함수의 정렬 순서를 변경할 수 있습니다.

C:>netsh interface ipv6 show prefixpolicy
Querying active state...
Precedence  Label  Prefix
----------------  ---------  --------------------------------
                  10         4  ::ffff:0:0/96
                  20         3  ::/96
                  30         2  2002::/16
                  40         1  ::/0
                  50         0  ::1/128

출처 : http://dstein.egloos.com/2324104#

'개발자가 뭐길래 > Network' 카테고리의 다른 글

PTR  (0) 2009.06.26
RR(resource records) 자원 레코드  (0) 2009.06.26
FQDN  (0) 2009.06.26
IPv6 멀티캐스트 범위  (2) 2009.06.26
ND (Neighbor Discovery)  (0) 2009.06.25

 멀티캐스트를 사용하면 한 데이터그램을 그룹 수신자 모두에게 한꺼번에 전송할 수 있다.  콜론 16진 표기법으로 썼을 때 FF(숫자로 1111 1111)  로 시작하는 주소는 모두 IPv6 멀티캐스트 주소이다.

멀티캐스트 범위

 멀티캐스트 주소의 범위에 대한 정확한 이해가 매우 중요하다. 전 범위 멀티캐스트 주소는 모든 인터넷을 통틀어 고유한 주소를 가져야 하지만 로컬 범위 멀티캐스트 주소라면 해당 기관에서만 고유하면 된다. 따라서 주소 할당이 매우 유연하다. 모든 유형의 멀티캐스트 주소가 다양한 형태로 나타날 수 있다. 어떤 멀티캐스트 주소는 한 노드에만 속할 수도 있고 어떤 주소는 한 로컬 링크 (로컬 네트워크)에만 멀티캐스팅하고 다른 것은 로컬 사이트에 멀티캐스팅하는 등이다. 범위를 지정하면 라우터가 멀티캐스트 데이터그램의 주소를 보고 데이터그램을 얼마나 멀리까지 전달해야 하는지 곧바로 결정할 수 있으므로 좀더 효율적이며, 원했던 범위 이상으로 트래픽이 전달되지 않도록 할 수 있다.

'개발자가 뭐길래 > Network' 카테고리의 다른 글

PTR  (0) 2009.06.26
RR(resource records) 자원 레코드  (0) 2009.06.26
FQDN  (0) 2009.06.26
IPv6 어플리케이션은 IPv4와 IPv6 주소 중에서 어느 것으로 접속을 하나요?  (0) 2009.06.26
ND (Neighbor Discovery)  (0) 2009.06.25