{"componentChunkName":"component---src-templates-blog-post-js","path":"/Computer-Network/2020-11-11-네트워크-DHCP/","result":{"data":{"site":{"siteMetadata":{"title":"Hun's Footsteps 🥷","author":"전여훈","siteUrl":"https://jeonyeohun.netlify.app","comment":{"disqusShortName":"","utterances":"jeonyeohun/jeonyeohun.github.io"},"sponsor":{"buyMeACoffeeId":"jeonyeohun"}}},"markdownRemark":{"id":"f173284e-20de-5404-b633-d65ee4bc62a3","excerpt":"참고도서: 컴퓨터 네트워킹 : 하향식 접근. 7판. James F. Kurose , Keith W.Ross 지음 DHCP  은 호스트가 자신의 ip 주소를 동적으로 얻을 수 있게하는 방법이다. 호스트는 가장 처음에는 고유한 ip주소를 가지고 있지 않다가 DHCP 서버에서 사용가능한 ip주소를 전달받아 사용하고, 사용을 마친 이후에는 다시 DHCP 서버에 반납하게 된다. DHCP는 총 네 번에 요청과 응답을 호스트와 DHCP…","html":"<p><em><strong>참고도서: 컴퓨터 네트워킹 : 하향식 접근. 7판. James F. Kurose , Keith W.Ross 지음</strong></em></p>\n<h2 id=\"dhcp\" style=\"position:relative;\"><a href=\"#dhcp\" aria-label=\"dhcp permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>DHCP</h2>\n<p><code class=\"language-text\">DHCP(Dynamic Host Configuration Protocol)</code> 은 호스트가 자신의 ip 주소를 동적으로 얻을 수 있게하는 방법이다. 호스트는 가장 처음에는 고유한 ip주소를 가지고 있지 않다가 DHCP 서버에서 사용가능한 ip주소를 전달받아 사용하고, 사용을 마친 이후에는 다시 DHCP 서버에 반납하게 된다. DHCP는 총 네 번에 요청과 응답을 호스트와 DHCP서바가 주고 받으며 동작한다.</p>\n<ol>\n<li>호스트가 자신의 트랜잭션 아이디를 설정하고 <code class=\"language-text\">255.255.255.255, 67</code> 에 요청을 보낸다. 이 주소는 브로드캐스트 주소로 현재 같은 네트워크 안에 있는 모든 호스트들에게 67번 포트(UDP의 well-known port number)로 <code class=\"language-text\">DHCP discover</code> 메세지를 보낸다.</li>\n<li>DHCP 서버는 67번 포트를 열어놓고 기다리다가 클라이언트가 보낸 요청을 받게 된다. 그리고 DHCP 서버 역시 브로드캐스트 주소로 응답을 보내면서, 요청 받았던 호스트의 <code class=\"language-text\">트랜잭션 id</code>, <code class=\"language-text\">lifetime</code>, <code class=\"language-text\">yiaddrr</code> 을 담아 보낸다. 여기서 yiaddrr은 호스트에게 할당할 수 있는 ip주소이고, lifetime은 호스트가 할당받은 주소를 사용할 수 있는 기간을 의미한다. 이렇게 클라이언트에게 보내는 응답 메세지를 <code class=\"language-text\">DHCP offer</code> 라고 한다.</li>\n<li>클라이언트는 응답을 받은 뒤에 바로 전달받은 ip를 자신에게 할당하지 않는다. 대신 DHCP에 요청을 보내서 정식으로 yiaddrr에 있는 주소의 사용을 요청한다. 이 요청 메세지를 <code class=\"language-text\">DHCP Request</code> 라고 한다.</li>\n<li>그 사이에 다른 클라이언트가 DHCP에 요청해 해당 ip 주소를 할당했다면, DHCP 서버는 <code class=\"language-text\">NACK</code> 을 보내고, 아직 해당 주소가 사용이 가능하다면, <code class=\"language-text\">ACK</code> 을 보낸다.</li>\n<li>클라이언트는 <code class=\"language-text\">ACK</code>을 받으면 이제 자신의 ip주소를 yiaddrr 에 있는 값으로 사용하고, <code class=\"language-text\">NACK</code>을 받으면 1번부터 다시 반복한다.</li>\n</ol>\n<h2 id=\"dynamic-case\" style=\"position:relative;\"><a href=\"#dynamic-case\" aria-label=\"dynamic case permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Dynamic Case</h2>\n<p>DHCP도 역시 패킷을 주고받는 것으로 작업이 수행되기 때문에 예외상황들이 발생할 수 있다.</p>\n<ol>\n<li>\n<p>DHCP request 에 대한 응답을 받지 못하는 경우:</p>\n<ul>\n<li>DHCP request 를 다시 보낸다.</li>\n</ul>\n</li>\n<li>\n<p>DHCP 서버가 NACK을 보내는 경우</p>\n<ul>\n<li>DHCP discover 단계부터 다시 시작한다.</li>\n</ul>\n</li>\n<li>\n<p>네트워크 사용을 종료하게 되면</p>\n<ul>\n<li>클라이언트가 DHCP release 를 보내서 사용한 ip주소를 반납한다.</li>\n</ul>\n</li>\n</ol>\n<h2 id=\"정리\" style=\"position:relative;\"><a href=\"#%EC%A0%95%EB%A6%AC\" aria-label=\"정리 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>정리</h2>\n<ol>\n<li>순서: DHCP discover -> DHCP offer -> DHCP request -> DHCP ack -> DHCP release</li>\n<li>서버와 클라이언트의 통신방식: DHCP ack을 받을 때까지 broadcast(255.255.255.255) 로 통신한다.</li>\n</ol>","frontmatter":{"title":"[네트워크] IP : DHCP","date":"November 11, 2020"}}},"pageContext":{"slug":"/Computer-Network/2020-11-11-네트워크-DHCP/","previous":{"fields":{"slug":"/Computer-Network/2020-11-10-네트워크-Internet-Protocol/"},"frontmatter":{"title":"[네트워크] IP : Internet Protocol - IPv4","category":"Computer-Network","draft":false}},"next":{"fields":{"slug":"/Problem-Solving/2021-01-26-10815번-숫자카드/"},"frontmatter":{"title":"[백준 알고리즘] 10815번: 숫자 카드","category":"Problem-Solving","draft":false}}}},"staticQueryHashes":["2486386679","3128451518"]}