CoAP 위 DNS

DNS over CoAP

제약 있는 장치가 CoAP 요청에 DNS 메시지를 실어 이름을 조회합니다.

···
html
<div class="n-demo"><div class="n-head"><strong>DNS MESSAGE IN COAP</strong><span>LIVE TRACE</span></div><div class="n-stage"><div class="doc"><div class="doc-device n-box">DEVICE<br><small>name?</small></div><div class="doc-wire"><div id="doc-packet" class="n-box"><small>CoAP FETCH</small><br>DNS query</div><div id="doc-arrow">→</div></div><div class="doc-device n-box">RESOLVER<br><small>address</small></div></div></div><div class="n-foot">tap to step · auto replay</div></div>
css
.n-demo{width:min(94vw,760px);height:min(88vh,324px);padding:clamp(9px,2.2vmin,18px);border:1px solid var(--line);border-radius:13px;background:var(--surface);display:flex;flex-direction:column;gap:clamp(5px,1.3vmin,10px);font:600 clamp(12px,2.4vmin,16px)/1.3 "Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo",sans-serif;overflow:hidden}.n-head,.n-foot{display:flex;justify-content:space-between;align-items:center;color:var(--muted)}.n-head strong{color:var(--accent)}.n-head span,.n-foot{font-size:12px}.n-stage{flex:1;min-height:0;position:relative;display:flex;align-items:center;justify-content:center;gap:clamp(4px,1vmin,10px)}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.n-box{padding:clamp(5px,1.5vmin,11px);border:1px solid var(--line);border-radius:8px;background:var(--bg);text-align:center}.n-on{border-color:var(--accent)!important;color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 12%,var(--surface))!important}.n-muted{color:var(--muted)}@media(max-width:400px){.n-head span{display:none}}.doc{width:96%;display:flex;align-items:center;gap:4px}.doc-device{width:27%;padding:7px 2px}.doc-device small,.doc-wire small{font-size:10px;color:var(--muted)}.doc-wire{width:46%;display:grid;justify-items:center;gap:3px}.doc-wire .n-box{padding:4px;width:96%;font-size:11px}.doc-wire>div:last-child{color:var(--accent)}@media(min-width:500px){.doc-device small,.doc-wire small,.doc-wire .n-box{font-size:12px}}
js
let step=0;function advance(){document.getElementById('doc-packet').innerHTML=step<2?'<small>CoAP FETCH</small><br>DNS query':'<small>CoAP response</small><br>DNS answer';document.getElementById('doc-arrow').textContent=step<2?'→':'←';document.getElementById('doc-packet').classList.toggle('n-on',step===1||step===3);step=(step+1)%4}
const clickTarget=document.querySelector('.n-demo');if(clickTarget&&typeof advance==='function'){advance();const timer=setInterval(advance,1050);clickTarget.addEventListener('pointerdown',()=>{clearInterval(timer);advance()})}

RFC 9953은 DNS 메시지를 CoAP로 교환하는 방식을 정의합니다. 작은 메시지와 CoAP의 기능을 이용해 제약 있는 네트워크의 장치가 이름을 조회할 수 있습니다.

데모는 장치의 DNS 질문이 CoAP 요청에 실려 리졸버로 가고 주소 응답이 돌아오는 흐름입니다. CoAP를 쓴다고 DNS 데이터가 자동으로 암호화되는 것은 아니므로 보안 전송과 배포 구성을 별도로 살펴야 합니다.

언제 쓰나

저전력·제약 네트워크에서 장치의 DNS 조회 방식을 설계할 때 검토합니다.

페이지로 열기 ↗