DNS.C. ¼øÀ§ ¹× ¿ä¾à
- °Ô½ÃÀÚ À̸§:
- William Ahern
- °Ô½ÃÀÚ À¥»çÀÌÆ®:
- http://25thandclement.com/~william/projects/zoned.html
DNS.C. ű×
DNS.C. ¼³¸í
Àç±Í Àû, ÀçÁøÀÔ DNS ¸®Á¹¹ö DNS.C´Â SINCLE .C ÆÄÀÏ¿¡ »óÁÖÇÏ´Â ÀçÁøÀÔÀÚ, Àç±ÍÀûÀÌ°í Â÷´ÜµÇÁö ¾Ê´Â DNS ¸®Á¹¹ö ¶óÀ̺귯¸®ÀÔ´Ï´Ù. ¶ÇÇÑ ½ºÅÓ resolver·Î ÈǸ¢ÇÏ°Ô ÀÛµ¿ÇÕ´Ï´Ù. ½ÇÁ¦ DNS ÆÐŶ ÁÖÀ§¿¡ ±¸Ãà µÈ API; ÀϹÝÀûÀ¸·Î DNS ÀÚü·Î¼. ÀÌ·¸°ÔÇϸé AAAA ¹× PTR ÀÌ¿ÜÀÇ ·¹Äڵ带 Äõ¸®ÇÏ°í Á¶ÀÛ ÇÒ ¼ö ÀÖÀ¸¸ç »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ Á¤·ÄÀ» »ç¿ëÇÏ¿© ÈξÀ ½¬¿î ·¹ÄÚµå ¹Ýº¹ÀÚ°¡ ÈξÀ ½¬¿öÁý´Ï´Ù. ÀÇ¹Ì ·ÐÀû ¼ø¼ (Áï, ¼±È£µµ ¹× ¿ì¼± ¼øÀ§)¿¡¼ MX ¶Ç´Â SRV ·¹Äڵ带 ¹Ýº¹ÇÏ´Â °ÍÀº ´ÙÀ½°ú °°½À´Ï´Ù : DNS_RR_FOREACH (RR, Packet, .Type = DNS_T_SRV, .sort = DNS_T_SRV, .sort = DNS_RR_IIORDER) {...} ¶Ç´Â Àç½ÃÀÛ °¡´ÉÇÑ ¹æ½ÄÀ¸·Î : ½ºÀ§Ä¡ (My -> »óÅÂ) {CASE 0 : DNS_RR_I_INIT (MY-> RR_I); MY-> RR_I.TYPE = DNS_T_SRV; my-> rr_i.sort = dns_rr_iorder; MY-> State ++; »ç·Ê 1 : while (dns_rr_grep (rr, 1, my-> rr_i, my-> my-> rr_i, my-> packet, error)) {... / * À̺¥Æ® ·çÇÁ·Î µ¹¾Æ °¡±â * /}} "SMART"Äõ¸®¸¦ Áö¿øÇÕ´Ï´Ù. ÇÙ½É ÇØ°á±â¿¡¼ È°¼ºÈ µÈ °æ¿ì NS, MX ¹× SRV ·¹Äڵ忡 ´ëÇÑ Äõ¸®´Â Ç×»ó RDATA Canonical È£½ºÆ® À̸§À» ·¹ÄÚµå·Î ÇØ°áÇÏ·Á°í ½ÃµµÇÕ´Ï´Ù. BAILIWICK ¹× / ¶Ç´Â ½Å·ÚÇÒ ¼öÀÖ´Â ¼¹ö°¡ Á¢ÂøÁ¦¸¦ Á¦°øÇÏÁö ¾Ê´Â È£½ºÆ®´Â ´äº¯ ÆÐŶ¿¡¼ ÀÚµ¿À¸·Î ÇØ°áµÇ°í ¹ÝȯµË´Ï´Ù. ½ºÅÓ ¹× Àç±Í È®ÀÎ ÀνºÅϽº ¸ðµÎ¿¡ ´ëÇØ Áö¿øµË´Ï´Ù. "SMART"Çػ󵵴 ÁÖ¼Ò Á¤º¸ (Áï, GETADDRINFO ()) API.Randomized ¼Ò½º Æ÷Æ® ¹× QIDS.NON-BLOCKING, RE-ENTRATTER ±â¹Ý GETADDRINFO () ÀÎÅÍÆäÀ̽º : DNS_AI_OPEN (), DNS_AI_NEXTENT (), DNS_AI_CLOSE (). GetAddrinfo ()¸¦ ÀǹÌÇÏÁö¸¸ ·¹ÄÚµå À¯ÇüÀ» ÃëÇÕ´Ï´Ù. MX, NS, SRV (et al) È£½ºÆ®¸¦ Äõ¸® ÇÒ ¶§¿¡µµ ¿À¹ö (Struct AddRinfo) °´Ã¼¸¦ ¹Ýº¹ÇÕ´Ï´Ù. ÇÊ¿äÇÑ Àç±Í°¡ ¿¬±â µÉ ¼ö ÀÖÀ¸¹Ç·Î "½º¸¶Æ®"Äõ¸®°¡ ÀÌ·¸°Ô ÀûÀº ´ë±â ½Ã°£ÀÌ Àû¾îÁ³À¸¸ç ù ¹ø° È£½ºÆ®°¡ ÃæºÐÇϱ⠶§¹®¿¡ ¸ðµç °¡´É¼ºÀÌ ÇÊ¿äÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸±¸®½º¿¡¼´Â »õ·Î¿î ±â´É : ¡¤ ÀçÈ®ÀÎ Ç÷¡±×°¡ ºñÈ°¼ºÈ µÈ °æ¿ì "ÆÄÀÏ"¸Þ¼Òµå¿¡¼ "¹ÙÀεå"¸Þ¼Òµå¿¡¼ "ÆÄÀÏ"¸Þ¼Òµå¿¡¼ "ÆÄÀÏ"¸Þ¼Òµå¿¡¼ "ÆÄÀÏ"¿¡¼ Æú¹éÇÏÁö ¾ÊÀº ¹ö±× ¼öÁ¤. ¡¤ °Ë»ö »ý¼º±â°¡ QNameÀ» º¯°æÇßÀ» ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼ DNS_AI_NEXTENT ()¿¡¼ QNAME¿¡¼ QNAMEÀÌ ¿ø·¡ ÇØ°á ÇÁ·Î±×·¥¿¡ Á¦Ãâ µÈ QNAMEÀÌ ¾Æ´Ñ QNAMEÀ» ÁöÁ¤ÇÕ´Ï´Ù.
DNS.C. °ü·Ã ¼ÒÇÁÆ®¿þ¾î