<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>일단 이것저것 해 보는 블로그</title>
    <link>https://gyeonkangkim.tistory.com/</link>
    <description>2026 &amp;quot;일단 부담 내려놓기&amp;quot;</description>
    <language>ko</language>
    <pubDate>Wed, 3 Jun 2026 15:03:50 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>뷔구룽</managingEditor>
    <image>
      <title>일단 이것저것 해 보는 블로그</title>
      <url>https://tistory1.daumcdn.net/tistory/6109598/attach/c7a1430921d541dbab453136df2c06ad</url>
      <link>https://gyeonkangkim.tistory.com</link>
    </image>
    <item>
      <title>(Do it 네트워크, 3주차) 260309~260313</title>
      <link>https://gyeonkangkim.tistory.com/36</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;시작하며&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;시작한게 엊그제 같은데 벌써 마지막 주라고?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 스터디 3주차다. 벌써 마지막 주차다. 시간 엄청 빠르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 Do it 스터디(자바 기초 언어)에서 스스로에게 아쉬웠던 점도 많아 이번엔 무사히 해낼 수 있을까 걱정도 많았지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 무사히 마지막 주까지 오게 되었다. 성취감도 있지만 벌써 끝난다니 시원섭섭하기도 하다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 고지가 눈앞이니 끝까지 최선을 다해 완주해보려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 이제는 마지막이 될 이번 주 공부 인증부터&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lrjLX/dJMcaaEurTb/rfCaJxaTEgzKmxsj3EQL8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lrjLX/dJMcaaEurTb/rfCaJxaTEgzKmxsj3EQL8K/img.png&quot; data-alt=&quot;3주차 공부 인증, 마지막은 항상 시원섭섭하다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lrjLX/dJMcaaEurTb/rfCaJxaTEgzKmxsj3EQL8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlrjLX%2FdJMcaaEurTb%2FrfCaJxaTEgzKmxsj3EQL8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;4032&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;3주차 공부 인증, 마지막은 항상 시원섭섭하다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;9장. HTTP 통신 응답&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 2주차에 학습했던 8장(HTTP 통신 요청)과 이어지는 부분이다. 어떤 프로토콜이든 요청을 했으면 반드시 응답이 있어야겠지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 9장은 웹 서비스가 구체적으로 어떤 과정으로 이루어지는지 설명한다. 기본적인 클라이언트와 웹 서버 이외에도, 자바스크립트 등 동적 프로그램 코드를 처리해 결과를 전송하는 웹 애플리케이션 서버와, 웹 사이트의 회원 정보 등 각종 데이터를 보관 및 처리하는 데이터베이스 서버 등 웹 서비스에서 활용되는 여러 서버가 있음을 알 수 있었다. 더불어 일상적인 웹 서핑 중에도 하나의 웹 페이지를 브라우저로 열어보기까지 클라이언트와 여러 서버가 수많은 과정을 거침을 깨달았다. 역시 컴퓨터는 사용하기 쉬우면서도 알면 알 수록 복잡한 도구인 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 웹 개발자 취업을 준비한다면 반드시 알아야 한다는 프런트엔드와 백엔드 구분을, 9장을 공부하며 좀 더 자세히 정리해볼 수 있었다. 웹에 관심이 많다면 특히 이 장은 꼼꼼히 학습해보는 것도 좋겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2026-03-09 145903.png&quot; data-origin-width=&quot;822&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2OohD/dJMcafZ3RhY/BkgA7nfk8V9kthyZhedQ80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2OohD/dJMcafZ3RhY/BkgA7nfk8V9kthyZhedQ80/img.png&quot; data-alt=&quot;9장 실습. 여기서는 컴퓨터에 웹 서버를 실행시키고 직접 URL을 입력해 서버에 요청을 보내보았다. 사용한 웹 서버 프로그램은 엔진엑스(nginx)이며, 프로그램 기본 경로에 임의의 폴더와 파일을 만든 다음 URL로 해당 파일을 찾아 응답하도록 해봤다. 결과, 서버 프로그램이 정상적으로 요청에 응답했고 웹 브라우저에 해당 파일 내용이 출력됨을 확인할 수 있었다. 참고로 화면에 출력된 문구는 이상하게 자주 생각나는 영어 문장인데, Adele의 &amp;amp;lt;Hello&amp;amp;gt;라는 곡의 첫 가사이다 ㅎㅎㅎ&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2OohD/dJMcafZ3RhY/BkgA7nfk8V9kthyZhedQ80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2OohD%2FdJMcafZ3RhY%2FBkgA7nfk8V9kthyZhedQ80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;822&quot; height=&quot;316&quot; data-filename=&quot;화면 캡처 2026-03-09 145903.png&quot; data-origin-width=&quot;822&quot; data-origin-height=&quot;316&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;9장 실습. 여기서는 컴퓨터에 웹 서버를 실행시키고 직접 URL을 입력해 서버에 요청을 보내보았다. 사용한 웹 서버 프로그램은 엔진엑스(nginx)이며, 프로그램 기본 경로에 임의의 폴더와 파일을 만든 다음 URL로 해당 파일을 찾아 응답하도록 해봤다. 결과, 서버 프로그램이 정상적으로 요청에 응답했고 웹 브라우저에 해당 파일 내용이 출력됨을 확인할 수 있었다. 참고로 화면에 출력된 문구는 이상하게 자주 생각나는 영어 문장인데, Adele의 &amp;lt;Hello&amp;gt;라는 곡의 첫 가사이다 ㅎㅎㅎ&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(9장&amp;nbsp;되새김&amp;nbsp;문제&amp;nbsp;풀이) &lt;br /&gt;1.&amp;nbsp;서버&amp;nbsp;컴퓨터에&amp;nbsp;저장된&amp;nbsp;웹&amp;nbsp;페이지나&amp;nbsp;멀티미디어&amp;nbsp;파일&amp;nbsp;등을&amp;nbsp;HTTP&amp;nbsp;응답&amp;nbsp;프로토콜에&amp;nbsp;담아&amp;nbsp;클라이언트에&amp;nbsp;보내는&amp;nbsp;서버&amp;nbsp;-&amp;gt;&amp;nbsp;웹&amp;nbsp;서버&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 웹 서버는 &lt;u&gt;파일 내용이 변하지 않는 정적 데이터&lt;/u&gt;를 전송&lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;서버에&amp;nbsp;저장된&amp;nbsp;프로그램&amp;nbsp;코드&amp;nbsp;실행&amp;nbsp;후&amp;nbsp;그&amp;nbsp;결과를&amp;nbsp;HTTP&amp;nbsp;응답&amp;nbsp;프로토콜에&amp;nbsp;담아&amp;nbsp;보내는&amp;nbsp;서버&amp;nbsp;-&amp;gt;&amp;nbsp;웹&amp;nbsp;애플리케이션&amp;nbsp;서버&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 웹 애플리케이션 서버는 &lt;u&gt;코드 상태나 페이지에 따라 데이터가 변하는 동적 데이터&lt;/u&gt;를 전송&lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;다음&amp;nbsp;빈칸&amp;nbsp;채우기 &lt;br /&gt;&quot;일반적으로&amp;nbsp;웹&amp;nbsp;사이트에서&amp;nbsp;데이터&amp;nbsp;저장&amp;nbsp;용도로&amp;nbsp;사용하는&amp;nbsp;데이터베이스&amp;nbsp;서버는&amp;nbsp;데이터를&amp;nbsp;(&amp;nbsp;&lt;u&gt;표&lt;/u&gt;&amp;nbsp;)&amp;nbsp;형태로&amp;nbsp;저장&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 실제로 데이터베이스 파일을 명령 프롬프트나 전용 프로그램 등으로 실행시키면 표 형태의 데이터를 확인할 수 있다고 함&lt;br /&gt;&lt;br /&gt;4. 데이터 저장이나 전송 시 많이 사용되는 형식, &lt;u&gt;키-값 쌍&lt;/u&gt;으로 표현 -&amp;gt; JSON&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* JSON이 여기서 나오네&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 데이터베이스 서버가 SQL 실행 결과를 표 형식의 데이터로 웹 애플리케이션 서버에 보내면, 웹 애플리케이션 서버에서 이를 키-값 쌍 형식의 JSON으로 변환해 웹 서버로 전달. 웹 서버는 데이터를 따로 해석하지 않으니 전달받은 JSON 형식 데이터를 그대로 클라이언트에 넘겨줌. 클라이언트가 이 데이터를 웹 브라우저 화면에 표시&lt;br /&gt;&lt;br /&gt;5.&amp;nbsp;&lt;u&gt;클라이언트가&amp;nbsp;웹&amp;nbsp;서버에&amp;nbsp;요청한&amp;nbsp;파일이&amp;nbsp;서버에&amp;nbsp;없을&amp;nbsp;때&lt;/u&gt; 서버가 보내는 HTTP 프로토콜의 상태 코드와 상태 문구 -&amp;gt; 404 Not Found&amp;nbsp;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;* &lt;/span&gt;&lt;u style=&quot;letter-spacing: 0px;&quot;&gt;Not Found('못 찾겠다')&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 웹 서핑 중 가장 흔하게 볼 수 있는 문구, 네트워크 몰라도 404 Not Found가 뭔지는 대강 알 수 있을 정도...ㅎㅎㅎ &lt;br /&gt;&lt;br /&gt;6. 클라이언트가 &lt;u&gt;권한이 없는 파일을 웹 서버에 요청&lt;/u&gt;했을 때 서버가 보내는 HTTP 프로토콜의 상태 코드와 상태 문구 -&amp;gt; 403 Forbidden &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;* &lt;/span&gt;&lt;u style=&quot;letter-spacing: 0px;&quot;&gt;forbidden(금지된-&amp;gt; 권한이 없으니 접근 금지)&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 404만큼은 아니더라도 이쪽도 본 적이 꽤 있음&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;여담으로 과거 '썩던콩'으로 인터넷에서 유명했던 Southern Cross라는 곡을 부른 밴드 이름이 403이다. 그래서인지 어릴 적에는 403 Forbidden 메시지를 볼 때마다 썩던콩이 떠올라 머릿속에 더 잘 들어왔던 기억이 있다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;7.&amp;nbsp;웹&amp;nbsp;서버가&amp;nbsp;&lt;u&gt;클라이언트&amp;nbsp;요청을&amp;nbsp;처리하다&amp;nbsp;오류&amp;nbsp;발생&lt;/u&gt; 시 서버가 보내는 HTTP 프로토콜의 상태 코드와 상태 문구 -&amp;gt; 500 Internal Server Error *&lt;u&gt;internal(내부의 -&amp;gt; 즉 서버 내부에서 오류가 생김)&lt;/u&gt;&lt;br /&gt;*&amp;nbsp;클라이언트&amp;nbsp;요청을&amp;nbsp;서버가&amp;nbsp;처리하다&amp;nbsp;발생한&amp;nbsp;오류는&amp;nbsp;500번&amp;nbsp;대&amp;nbsp;상태에&amp;nbsp;해당 &lt;br /&gt;한편&amp;nbsp;클라이언트&amp;nbsp;요청이&amp;nbsp;잘못되었다면&amp;nbsp;400번&amp;nbsp;대&amp;nbsp;상태 &lt;br /&gt;&lt;br /&gt;8.&amp;nbsp;웹&amp;nbsp;서버에&amp;nbsp;접속한&amp;nbsp;&lt;u&gt;사용자가&amp;nbsp;너무&amp;nbsp;많거나&amp;nbsp;디도스&amp;nbsp;공격을&amp;nbsp;받을&amp;nbsp;때&lt;/u&gt; 서버가 보내는 HTTP 프로토콜의 상태 코드와 상태 문구 -&amp;gt; 503 Service Unavailable *&lt;u&gt;unavailable(사용 불가한 -&amp;gt; 서버 내부 사정으로 서버를 사용할 수 없음)&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;9.&amp;nbsp;&lt;u&gt;클라이언트&amp;nbsp;컴퓨터에서&amp;nbsp;실행&lt;/u&gt;되는&amp;nbsp;코드,&amp;nbsp;대표적으로&amp;nbsp;HTML,&amp;nbsp;CSS,&amp;nbsp;자바스크립트-&amp;gt;&amp;nbsp;프런트엔드&amp;nbsp;코드 &lt;br /&gt;&lt;br /&gt;10.&amp;nbsp;&lt;u&gt;웹&amp;nbsp;애플리케이션&amp;nbsp;서버에서&amp;nbsp;실행&lt;/u&gt;되는&amp;nbsp;코드,&amp;nbsp;요청에&amp;nbsp;따른&amp;nbsp;실행&amp;nbsp;결과만&amp;nbsp;응답으로&amp;nbsp;전송-&amp;gt;&amp;nbsp;백엔드&amp;nbsp;코드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;* 프런트엔드와 백엔드는 '코드가 어디서 실행되는지'에 따라 구분&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;10장. 공유기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 10장은 웹 서비스 등 중요한 부분을 학습한 뒤 잠시 쉬어가는 과정으로 느껴졌다. 공유기 자체를 일상에서 많이 쓰는 만큼 공유기 설정 확인과 간단한 설정 작성 같이 실생활에서도 유용하게(?) 사용할 수 있는 꿀팁도 담겨있었기 때문이다. 물론 중요한 개념도 다른 장에 비해서는 상당히 적은 편이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 10장에서는 다음 키워드만 잘 이해하면 될 것 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) DHCP(동적 호스트 구성 프로토콜; 가정용 공유기에서 많이 사용하는 동적 혹은 유동 IP와 관련이 깊어보인다, DHCP 활용한 통신 과정도 같이 알아두면 Good)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) NAT(네트워크 주소 변환; 아이피 주소 부족 문제를 해결하기 위한 하나의 기술로, 공유기에서는 주로 PAT(포트 주소 변환) 방식을 사용하므로 이쪽과 묶어서 알아두면 좋아보인다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 포트 포워딩(외부에서 특정 서버 컴퓨터에 접속하려고 할 때, 서버 컴퓨터에 할당된 하나의 공인 아이피와 포트 번호만으로, 외부와 다른 사설 아이피 주소를 사용하는 서버에도 접속할 수 있도록 공유기에 미리 작성해두는 설정)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 단 하나 걸리는 점은, 실습을 제대로 해보지 못한 것이다. 공유기의 IP 주소를 직접 설정하거나 직접 포트 포워딩을 작성해 외부에서도 내 컴퓨터 서버에 접속할 수 있도록 해본 실습이었는데...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 가족들이 다 같이 사용하는 공유기인 만큼 설정 잘못 건드리면 큰 사고가 날 수 있음 ㅎㅎㅎ;; 뭐 과감히 설정 바꿔보고 고쳐보는 것도 큰 공부가 되겠지만, 역시 혼자서만 사용하는 공유기가 아니다보니 개인적인 이유 말고도 생각할 게 많았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 책에서 나온 순서대로 포트 포워딩을 작성해봤는데, 내 스마트폰이 이상한 건지 공유기에 설정을 잘못 쓴 건지 해당 주소와 포트 번호를 올바르게 입력했는데도 저자 분처럼 웹 서버 메인 페이지가 정상적으로 뜨지 않음. 작성한 설정에 오류가 없는지 여러 번 확인해보고 다른 네트워크를 사용해봤는데도 같은 오류가 반복됨. 일단 이쪽 실습은 보류하고 추후 복습하거나 할 때 한번 더 꼼꼼히 해 봐야할 듯함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 가지 이유로 실습을 제대로 끝내지 못한 게 아쉬울 따름이다.&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignLeft&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;016&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/016.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/016.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그래도 되새김 문제는 한번 풀어보자!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(10장&amp;nbsp;되새김&amp;nbsp;문제&amp;nbsp;풀이) &lt;br /&gt;1.&amp;nbsp;DHCP&amp;nbsp;이용&amp;nbsp;통신&amp;nbsp;과정&amp;nbsp;중&amp;nbsp;첫&amp;nbsp;번째,&amp;nbsp;클라이언트가&amp;nbsp;&lt;u&gt;같은&amp;nbsp;랜(LAN)에&amp;nbsp;존재하는&amp;nbsp;DHCP&amp;nbsp;서버를&amp;nbsp;찾기&amp;nbsp;위해&lt;/u&gt;&amp;nbsp;브로드캐스트로&amp;nbsp;보내는&amp;nbsp;패킷&amp;nbsp;-&amp;gt;&amp;nbsp;Discover&amp;nbsp;패킷 &lt;br /&gt;* 아이피 주소가 필요하니 먼저 주소를 내려줄 &lt;u&gt;서버를&amp;nbsp;Discover(발견)&lt;/u&gt;해야함 &lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;DHCP&amp;nbsp;이용&amp;nbsp;통신&amp;nbsp;과정&amp;nbsp;중&amp;nbsp;두&amp;nbsp;번째,&amp;nbsp;서버가&amp;nbsp;클라이언트에게&amp;nbsp;받은&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;패킷에&amp;nbsp;대한&amp;nbsp;응답,&amp;nbsp;&lt;u&gt;클라이언트가&amp;nbsp;사용할&amp;nbsp;아이피(IP),&amp;nbsp;서브넷&amp;nbsp;마스크,&amp;nbsp;공유기&amp;nbsp;아이피,&amp;nbsp;DNS&amp;nbsp;서버&amp;nbsp;아이피,&amp;nbsp;IP&amp;nbsp;주소&amp;nbsp;사용&amp;nbsp;가능&amp;nbsp;임대&amp;nbsp;기간&lt;/u&gt;&amp;nbsp;등을&amp;nbsp;브로드캐스트로&amp;nbsp;알리는&amp;nbsp;패킷&amp;nbsp;-&amp;gt;&amp;nbsp;Offer&amp;nbsp;패킷 &lt;br /&gt;*&amp;nbsp;서버는&amp;nbsp;남은&amp;nbsp;아이피&amp;nbsp;중&amp;nbsp;적당한&amp;nbsp;걸로&amp;nbsp;&lt;u&gt;클라이언트에&amp;nbsp;Offer(제안)&lt;/u&gt; &lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;DHCP&amp;nbsp;이용&amp;nbsp;통신&amp;nbsp;과정&amp;nbsp;중&amp;nbsp;세&amp;nbsp;번째,&amp;nbsp;서버가&amp;nbsp;보낸&amp;nbsp;두&amp;nbsp;번째&amp;nbsp;패킷에&amp;nbsp;대한&amp;nbsp;응답,&amp;nbsp;클라이언트가&amp;nbsp;&lt;u&gt;서버에게&amp;nbsp;받은&amp;nbsp;아이피&amp;nbsp;주소를&amp;nbsp;사용하겠다는&amp;nbsp;요청&lt;/u&gt;을&amp;nbsp;보내는&amp;nbsp;패킷&amp;nbsp;-&amp;gt;&amp;nbsp;Request&amp;nbsp;패킷 &lt;br /&gt;*&amp;nbsp;Offer받은&amp;nbsp;아이피&amp;nbsp;주소&amp;nbsp;확인&amp;nbsp;후&amp;nbsp;마음에&amp;nbsp;들면&amp;nbsp;&lt;u&gt;'이거&amp;nbsp;쓰겠다'고&amp;nbsp;Request(요청)&lt;/u&gt; &lt;br /&gt;&lt;br /&gt;4.&amp;nbsp;DHCP&amp;nbsp;이용&amp;nbsp;통신&amp;nbsp;과정&amp;nbsp;중&amp;nbsp;네&amp;nbsp;번쨰,&amp;nbsp;서버가&amp;nbsp;클라이언트에게&amp;nbsp;&lt;u&gt;아이피&amp;nbsp;주소를&amp;nbsp;사용해도&amp;nbsp;된다는&amp;nbsp;의미&lt;/u&gt;로&amp;nbsp;보내는&amp;nbsp;패킷&amp;nbsp;-&amp;gt;&amp;nbsp;Ack&amp;nbsp;패킷 &lt;br /&gt;*&amp;nbsp;클라이언트의&amp;nbsp;Request를&amp;nbsp;받았으며&amp;nbsp;&lt;u&gt;'OK&amp;nbsp;너&amp;nbsp;이&amp;nbsp;주소&amp;nbsp;써도&amp;nbsp;좋음'이라고&amp;nbsp;Ack(acknowledge;&amp;nbsp;통보)&lt;/u&gt; &lt;br /&gt;&lt;br /&gt;5.&amp;nbsp;왜&amp;nbsp;서버를&amp;nbsp;실행&amp;nbsp;중인&amp;nbsp;컴퓨터는&amp;nbsp;고정된&amp;nbsp;아이피&amp;nbsp;주소를&amp;nbsp;사용해야&amp;nbsp;할까? &lt;br /&gt;-&amp;gt;&amp;nbsp;서버&amp;nbsp;컴퓨터가&amp;nbsp;유동&amp;nbsp;아이피&amp;nbsp;주소를&amp;nbsp;사용하면&amp;nbsp;클라이언트가&amp;nbsp;서비스를&amp;nbsp;이용할&amp;nbsp;때마다&amp;nbsp;매번&amp;nbsp;다른&amp;nbsp;아이피&amp;nbsp;주소로&amp;nbsp;접속해야&amp;nbsp;하기&amp;nbsp;때문(매우&amp;nbsp;불편) &lt;br /&gt;-&amp;gt;&amp;nbsp;만약&amp;nbsp;&lt;u&gt;서버의&amp;nbsp;아이피&amp;nbsp;주소가&amp;nbsp;변경되면&amp;nbsp;클라이언트가&amp;nbsp;서버에&amp;nbsp;접속할&amp;nbsp;수&amp;nbsp;없는&amp;nbsp;상황이&amp;nbsp;일어날&amp;nbsp;수도&lt;/u&gt;&amp;nbsp;있음 &lt;br /&gt;&lt;br /&gt;6.&amp;nbsp;NAT&amp;nbsp;방식&amp;nbsp;중&amp;nbsp;하나로,&amp;nbsp;&lt;u&gt;사설&amp;nbsp;아이피와&amp;nbsp;공인&amp;nbsp;아이피&amp;nbsp;주소를&amp;nbsp;각각&amp;nbsp;일대일로&amp;nbsp;미리&lt;/u&gt;&amp;nbsp;설정-&amp;gt;&amp;nbsp;정적&amp;nbsp;NAT &lt;br /&gt;&lt;br /&gt;7.&amp;nbsp;NAT&amp;nbsp;방식&amp;nbsp;중&amp;nbsp;하나로,&amp;nbsp;사설&amp;nbsp;아이피&amp;nbsp;주소를&amp;nbsp;사용하는&amp;nbsp;컴퓨터가&amp;nbsp;공인&amp;nbsp;아이피&amp;nbsp;주소&amp;nbsp;목록에서&amp;nbsp;사용&amp;nbsp;가능한&amp;nbsp;하나의&amp;nbsp;&lt;u&gt;공인&amp;nbsp;아이피&amp;nbsp;주소를&amp;nbsp;필요할&amp;nbsp;때마다&amp;nbsp;할당&lt;/u&gt;받아&amp;nbsp;사용-&amp;gt;&amp;nbsp;동적&amp;nbsp;NAT &lt;br /&gt;&lt;br /&gt;8.&amp;nbsp;NAT&amp;nbsp;방식&amp;nbsp;중&amp;nbsp;하나로,&amp;nbsp;&lt;u&gt;사설&amp;nbsp;아이피&amp;nbsp;주소&amp;nbsp;사용&amp;nbsp;컴퓨터가&amp;nbsp;하나의&amp;nbsp;공인&amp;nbsp;아이피&amp;nbsp;주소를&amp;nbsp;공유하되,&amp;nbsp;각&amp;nbsp;컴퓨터는&amp;nbsp;고유한&amp;nbsp;포트&amp;nbsp;번호&lt;/u&gt;로&amp;nbsp;구분해&amp;nbsp;사용-&amp;gt;&amp;nbsp;PAT(포트&amp;nbsp;주소&amp;nbsp;변환) &lt;br /&gt;&lt;br /&gt;9.&amp;nbsp;공유기에&amp;nbsp;연결해&amp;nbsp;사설&amp;nbsp;아이피&amp;nbsp;주소를&amp;nbsp;사용하는&amp;nbsp;컴퓨터에&amp;nbsp;서버&amp;nbsp;프로그램&amp;nbsp;실행&amp;nbsp;중알&amp;nbsp;때,&amp;nbsp;&lt;u&gt;서버&amp;nbsp;프로그램에&amp;nbsp;외부&amp;nbsp;클라이언트&amp;nbsp;접속할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;하기&amp;nbsp;위해&amp;nbsp;공유기에&amp;nbsp;설정&lt;/u&gt;해야&amp;nbsp;하는&amp;nbsp;것&amp;nbsp;-&amp;gt;&amp;nbsp;포트&amp;nbsp;포워딩 &lt;br /&gt;*&amp;nbsp;포트&amp;nbsp;포워딩:&amp;nbsp;외부에서&amp;nbsp;내부로&amp;nbsp;요청이&amp;nbsp;올&amp;nbsp;때,&amp;nbsp;공유기의&amp;nbsp;&lt;u&gt;공인 아이피 주소에 속하는 특정 포트를 확인 후 각 포트에 해당하는 기기를 찾아갈 수 있도록 미리 작성&lt;/u&gt;해두는&amp;nbsp;참고&amp;nbsp;자료(설정) &lt;br /&gt;*&amp;nbsp;port(찾으려는&amp;nbsp;특정&amp;nbsp;기기의&amp;nbsp;포트로)&amp;nbsp;+&amp;nbsp;forwarding(향해&amp;nbsp;가는&amp;nbsp;것) &lt;br /&gt;&lt;br /&gt;10.&amp;nbsp;공유기&amp;nbsp;설정이&amp;nbsp;다음과&amp;nbsp;같음 &lt;br /&gt;-&amp;nbsp;&lt;u&gt;공인&amp;nbsp;아이피&amp;nbsp;주소:&amp;nbsp;123.123.123.123&lt;/u&gt; &lt;br /&gt;-&amp;nbsp;포트&amp;nbsp;포워딩&amp;nbsp;설정 &lt;br /&gt;내부&amp;nbsp;아이피:&amp;nbsp;100.100.100.100 &lt;br /&gt;&lt;u&gt;외부&amp;nbsp;포트:&amp;nbsp;TCP(1234~1234)&lt;/u&gt; &lt;br /&gt;내부&amp;nbsp;포트:&amp;nbsp;TCP(80~80) &lt;br /&gt;이때&amp;nbsp;다음&amp;nbsp;공유기를&amp;nbsp;연결한&amp;nbsp;서버에&amp;nbsp;외부&amp;nbsp;클라이언트가&amp;nbsp;접속하기&amp;nbsp;위해&amp;nbsp;입력해야&amp;nbsp;하는&amp;nbsp;아이피&amp;nbsp;주소와&amp;nbsp;포트&amp;nbsp;번호 &lt;br /&gt;-&amp;gt;&amp;nbsp;&lt;u&gt;123.123.123.123:1234&lt;/u&gt; &lt;br /&gt;*&amp;nbsp;공유기&amp;nbsp;포트&amp;nbsp;포워딩&amp;nbsp;설정을&amp;nbsp;마친&amp;nbsp;뒤&amp;nbsp;외부&amp;nbsp;클라이언트가&amp;nbsp;공유기에&amp;nbsp;연결된&amp;nbsp;내부&amp;nbsp;기기에&amp;nbsp;접속하려면&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;주소&amp;nbsp;입력 &lt;br /&gt;-&amp;gt;&amp;nbsp;&quot;&lt;u&gt;공인&amp;nbsp;아이피&amp;nbsp;주소:미리&amp;nbsp;설정한&amp;nbsp;외부&amp;nbsp;포트&amp;nbsp;번호&lt;/u&gt;&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;11장. DNS 서버&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 아마 도메인 주소는 많은 분들에게 친숙할 듯하다. 한국인이 브라우저에 정말 많이 입력하는 'www.naver.com' 이나 'www.google.com', 지금 보고 있는 블로그 주소인 'gyeonkangkim.tistory.com'이 전부 도메인 주소라고 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DNS 서버는 이런 도메인 주소를 실제로 해당 컴퓨터로 찾아갈 수 있는 아이피 주소로 바꿔주는 역할을 한다. 웹 서핑에 꼭 필요한 존재라고 할 수 있겠지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 이전 10장만큼 크게 부담스럽지 않은 분량과 난이도였다. 특히 DNS 서버와 도메인 주소(책에서는 '도메인 이름'이라는 용어를 더 많이 사용한다)를 도입하기까지 과정이나, 내 컴퓨터에서 입력한 도메인 주소가 아이피 주소로 바뀌기까지 과정은 한 편의 스토리를 읽듯 차분히 읽어내려가며 이해하는 재미도 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 다만 10장과 마찬가지로 실습 부분이 아쉬웠다. 10장에서는 개인적인 문제로 실습이 어려웠다면 11장에서는 책이 출간되고 그 사이에 실습 프로그램 구성이 바뀌었는지, 프로그램이 책에서 설명한 구조와 달라 당황스러웠다(책에서는 zip 파일을 다운로드 받아 압축 풀라고 설명하는데 프로그램 공식 사이트에는 zip 파일이 없다던지, 압축을 푼 다음 exe 파일을 지정 디렉터리에 넣어 실습 준비를 하라는데 정작 압축을 푼 폴더에는 exe 파일이 없거나 책에서 설명하는 구성과 전혀 다르다던지).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;책 출간 시기가 2024년 7월경인데 그 사이에 변경된 내용이 많아 책과 맞지 않는 점이 아쉽다. 이 부분은 변화가 굉장히 빠른 IT 분야 특성 상 어쩔 수 없는 부분으로 보인다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(이와 비슷하게, 최근 2020년대 초반에 출간된 책을 참고해 클론 코딩 프로젝트를 며칠 진행해 봤는데, 최신 버전 프레임워크에서는 책에서 제시하는 코드나 기능이 더 이상 지원되지 않는다거나 최신 기술과 안 맞아 오류가 발생해서 애로사항을 겪기도 했다. 이때는 어떻게든 구글링으로 버전을 내리거나 하는 식으로 해결한 기억이 있다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2026-03-11 113622.png&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YRaW5/dJMcadHWlKN/YN2WNS4VEPQ7ixKKRgogyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YRaW5/dJMcadHWlKN/YN2WNS4VEPQ7ixKKRgogyK/img.png&quot; data-alt=&quot;11장 실습. nslookup 명령어는 DNS(도메인 이름 시스템) 서버 설정을 확인하거나 테스트할 때 사용한다. 사진과 같이 www.naver.com 도메인을 확인해 본 결과, 8.8.8.8 DNS 서버가 클라이언트를 대신해 알아온 네이버 서버의 아이피 주소가 출력됨을 알 수 있었다(아이피 주소는 확인할 때마다 달라질 수 있다고 함). 여기서 8.8.8.8 DNS 서버는, 사용자 컴퓨터를 대신해 특정 도메인의 아이피 주소를 알아오는 권한 없는 DNS 서버라고 한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YRaW5/dJMcadHWlKN/YN2WNS4VEPQ7ixKKRgogyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYRaW5%2FdJMcadHWlKN%2FYN2WNS4VEPQ7ixKKRgogyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;618&quot; height=&quot;257&quot; data-filename=&quot;화면 캡처 2026-03-11 113622.png&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;257&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;11장 실습. nslookup 명령어는 DNS(도메인 이름 시스템) 서버 설정을 확인하거나 테스트할 때 사용한다. 사진과 같이 www.naver.com 도메인을 확인해 본 결과, 8.8.8.8 DNS 서버가 클라이언트를 대신해 알아온 네이버 서버의 아이피 주소가 출력됨을 알 수 있었다(아이피 주소는 확인할 때마다 달라질 수 있다고 함). 여기서 8.8.8.8 DNS 서버는, 사용자 컴퓨터를 대신해 특정 도메인의 아이피 주소를 알아오는 권한 없는 DNS 서버라고 한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그래도 되새김 문제를 안 풀 수는 없겠지!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(11장&amp;nbsp;되새김&amp;nbsp;문제&amp;nbsp;풀이) &lt;br /&gt;1.&amp;nbsp;DNS는&amp;nbsp;무엇의&amp;nbsp;약자인지&amp;nbsp;-&amp;gt;&amp;nbsp;&lt;u&gt;Domain&amp;nbsp;Name&amp;nbsp;System(도메인&amp;nbsp;이름&amp;nbsp;시스템) &lt;/u&gt;&lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;DNS&amp;nbsp;서버&amp;nbsp;기본&amp;nbsp;기능&amp;nbsp;-&amp;gt;&amp;nbsp;&lt;u&gt;도메인&amp;nbsp;이름을&amp;nbsp;아이피&amp;nbsp;주소로&amp;nbsp;변환&lt;/u&gt; &lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;다음&amp;nbsp;설명이&amp;nbsp;나타내는&amp;nbsp;파일 &lt;br /&gt;-&amp;nbsp;운영체제에&amp;nbsp;저장되어&amp;nbsp;있는&amp;nbsp;파일 &lt;br /&gt;-&amp;nbsp;&lt;u&gt;네트워크에&amp;nbsp;연결된&amp;nbsp;각&amp;nbsp;컴퓨터&amp;nbsp;이름과&amp;nbsp;아이피&amp;nbsp;주소를&amp;nbsp;매칭&lt;/u&gt;해&amp;nbsp;둔&amp;nbsp;파일 &lt;br /&gt;-&amp;gt;&amp;nbsp;호스트&amp;nbsp;파일 &lt;br /&gt;&lt;br /&gt;4.&amp;nbsp;다음&amp;nbsp;빈칸&amp;nbsp;채우기 &lt;br /&gt;권한&amp;nbsp;없는&amp;nbsp;DNS&amp;nbsp;서버:&amp;nbsp;클라이언트&amp;nbsp;대신해&amp;nbsp;(&amp;nbsp;)&amp;nbsp;-&amp;gt;&amp;nbsp;(&amp;nbsp;)&amp;nbsp;-&amp;gt;&amp;nbsp;(&amp;nbsp;)&amp;nbsp;순으로&amp;nbsp;도메인&amp;nbsp;주소에&amp;nbsp;해당하는&amp;nbsp;아이피&amp;nbsp;주소를&amp;nbsp;알아냄 &lt;br /&gt;-&amp;gt;&amp;nbsp;(순서대로)&amp;nbsp;&lt;u&gt;루트&amp;nbsp;DNS&amp;nbsp;서버,&amp;nbsp;최상위&amp;nbsp;DNS&amp;nbsp;서버,&amp;nbsp;책임&amp;nbsp;DNS&amp;nbsp;서버(혹은&amp;nbsp;권한&amp;nbsp;있는&amp;nbsp;DNS&amp;nbsp;서버)&lt;/u&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;* 클라이언트 컴퓨터에서 입력한 도메인 이름이 어떻게 아이피 주소로 바뀔까?&lt;br /&gt;1) 사용자인 내 컴퓨터에서 gyeonkangkim.tistory.com 도메인 이름을 입력 -&amp;gt; 로컬 DNS 서버에 아이피 주소 변경 요청&lt;br /&gt;2) 요청을 받은 로컬 DNS 서버 -&amp;gt; 가장 먼저 루트 DNS 서버에 'com'이라는 도메인을 사용하는 컴퓨터 아이피 주소 확인&lt;br /&gt;루트 DNS 서버 -&amp;gt; 'com' 도메인에 매칭된 아이피 주소 전달&lt;br /&gt;3) 주소를 받은 로컬 DNS 서버 -&amp;gt; 최상위 DNS 서버에 'tistory.com' 도메인의 아이피 주소 확인&lt;br /&gt;최상위 DNS 서버 -&amp;gt; 'tistory.com' 도메인에 매칭된 아이피 주소 전달&lt;br /&gt;4) 주소를 받은 로컬 DNS 서버 -&amp;gt; 책임 DNS 서버(권한 있는 DNS 서버)에 'gyeonkangkim.tistory.com' 도메인의 아이피 주소 확인&lt;br /&gt;책임 DNS 서버 -&amp;gt; 호스트 이름이 'gyeonkangkim'인 컴퓨터 아이피 주소 전달&lt;br /&gt;5) 최종 주소를 받은 로컬 DNS 서버 -&amp;gt; gyeonkangkim.tistory.com의 아이피 주소를 내 컴퓨터에 전달&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 다음 설명이 나타내는 키워드 &lt;br /&gt;-&amp;nbsp;전&amp;nbsp;세계&amp;nbsp;컴퓨터&amp;nbsp;구분 &lt;br /&gt;-&amp;nbsp;&lt;u&gt;DNS&amp;nbsp;서버를&amp;nbsp;통해&amp;nbsp;아이피&amp;nbsp;주소로&amp;nbsp;바꿀&amp;nbsp;수&amp;nbsp;있음&lt;/u&gt; &lt;br /&gt;-&amp;gt;&amp;nbsp;도메인&amp;nbsp;이름(혹은&amp;nbsp;도메인&amp;nbsp;주소,&amp;nbsp;FQDN) &lt;br /&gt;&lt;br /&gt;6.&amp;nbsp;다음&amp;nbsp;설명이&amp;nbsp;나타내는&amp;nbsp;파일 &lt;br /&gt;-&amp;nbsp;DNS&amp;nbsp;서버가&amp;nbsp;관리 &lt;br /&gt;-&amp;nbsp;&lt;u&gt;실제&amp;nbsp;컴퓨터&amp;nbsp;이름과&amp;nbsp;아이피&amp;nbsp;주소&lt;/u&gt;가&amp;nbsp;레코드로&amp;nbsp;작성되어&amp;nbsp;있음 &lt;br /&gt;-&amp;gt;&amp;nbsp;영역&amp;nbsp;파일 &lt;br /&gt;&lt;br /&gt;7.&amp;nbsp;영역&amp;nbsp;파일에서&amp;nbsp;&lt;u&gt;호스트&amp;nbsp;이름과&amp;nbsp;IPv4&amp;nbsp;주소를&amp;nbsp;매핑&lt;/u&gt;한&amp;nbsp;레코드 &lt;br /&gt;-&amp;gt;&amp;nbsp;A(IPv4&amp;nbsp;address) &lt;br /&gt;&lt;br /&gt;8.&amp;nbsp;영역&amp;nbsp;파일에서&amp;nbsp;&lt;u&gt;호스트&amp;nbsp;이름과&amp;nbsp;IPv6&amp;nbsp;주소를&amp;nbsp;매핑&lt;/u&gt;한&amp;nbsp;레코드 &lt;br /&gt;-&amp;gt;&amp;nbsp;AAAA(IPv6&amp;nbsp;address) &lt;br /&gt;&lt;br /&gt;9.&amp;nbsp;영역&amp;nbsp;파일에서&amp;nbsp;&lt;u&gt;해당&amp;nbsp;도메인의&amp;nbsp;DNS&amp;nbsp;서버&amp;nbsp;정보&lt;/u&gt;를&amp;nbsp;저장해&amp;nbsp;둔&amp;nbsp;레코드 &lt;br /&gt;-&amp;gt;&amp;nbsp;NS(name&amp;nbsp;server) &lt;br /&gt;&lt;br /&gt;10.&amp;nbsp;영역&amp;nbsp;파일에서&amp;nbsp;시작&amp;nbsp;부분에&amp;nbsp;위치,&amp;nbsp;&lt;u&gt;해당&amp;nbsp;도메인에&amp;nbsp;대한&amp;nbsp;기본&amp;nbsp;정보를&lt;/u&gt;&amp;nbsp;저장해&amp;nbsp;둔&amp;nbsp;레코드 &lt;br /&gt;-&amp;gt;&amp;nbsp;SOA(start&amp;nbsp;of&amp;nbsp;authority)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;12장. HTTPS - 암호화 통신&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 결국 마지막 장에 오고 말았다. 우선 여기까지 무사히 달려온 내게 격려의 박수를 보내고 싶다.&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignLeft&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;001&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 12장은 암호화, HTTPS, SSL 등 주로 보안과 관련된 개념으로 구성되어 있다. 특히 암호화에서는 예상하신 분들도 계시겠지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;정보처리기사 필기 5과목에서 중요하게 다뤄지는 그 암호화 맞다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(개인 키, 공개 키, 대칭 키, 비대칭 키, 해시, .... 참 많은 용어가 있던)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다행히 책에서는 왜 암호화가 필요하고 각 암호화 개념의 정의와 활용 과정, 이와 관련된 기타 개념까지 정말 차근차근 설명해주고 있다. 덕분에 필기시험 준비할 때는 딥다 외웠던 내용들을 흐름 중심으로 차분히 재정리해볼 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 장도 새롭게 공부한다기보다는&lt;b&gt; 기존에 시험용으로 빠르게 때려박았던 지식을 다시 복습한다는 느낌으로 편하게 접근할 수 있었다&lt;/b&gt;. 아, 물론 암호화는 필기 공부 때와 마찬가지로 여전히 복잡하다... CS라는 게 파면 팔 수록 쉽지 않다는 걸 느낀다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 실습은, 원인을 알 수 없는 오류로 진행이 안 돼 일단 보류해 두고 있다. 현재 스터디 질문방에 질문을 올려둔 상황이고, 구글링도 병행해서 나름대로 문제를 해결하는 게 먼저일 듯하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;이제 마지막으로 되새김 문제를 풀어보자.&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(12장&amp;nbsp;되새김&amp;nbsp;문제&amp;nbsp;풀이) &lt;br /&gt;1.&amp;nbsp;평문을&amp;nbsp;암호화한&amp;nbsp;것&amp;nbsp;=&amp;gt;&amp;nbsp;암호문&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;* 암호화 관련 주요 키워드&lt;br /&gt;평문:&amp;nbsp;누구나&amp;nbsp;쉽게&amp;nbsp;이해할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;메시지&amp;nbsp;형태,&amp;nbsp;암호화&amp;nbsp;전&amp;nbsp;상태&lt;br /&gt;암호문:&amp;nbsp;평문을&amp;nbsp;암호화한&amp;nbsp;결과물,&amp;nbsp;인가되지&amp;nbsp;않은&amp;nbsp;사용자는&amp;nbsp;알아볼&amp;nbsp;수&amp;nbsp;없음&lt;br /&gt;암호화:&amp;nbsp;평문&amp;nbsp;-&amp;gt;&amp;nbsp;암호문&lt;br /&gt;복호화:&amp;nbsp;암호문&amp;nbsp;-&amp;gt;&amp;nbsp;평문&lt;br /&gt;키:&amp;nbsp;암호화와&amp;nbsp;복호화&amp;nbsp;과정에서&amp;nbsp;사용하는&amp;nbsp;비밀&amp;nbsp;정보,&amp;nbsp;인가된&amp;nbsp;사용자&amp;nbsp;외에&amp;nbsp;가져서는&amp;nbsp;안&amp;nbsp;됨&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;2.&amp;nbsp;&lt;u&gt;암호화&amp;nbsp;시&amp;nbsp;사용한&amp;nbsp;키&amp;nbsp;=&amp;nbsp;복호화&amp;nbsp;시&amp;nbsp;사용한&amp;nbsp;키&lt;/u&gt;인&amp;nbsp;암호화&amp;nbsp;방식 &lt;br /&gt;=&amp;gt;&amp;nbsp;대칭&amp;nbsp;키&amp;nbsp;암호화&amp;nbsp;방식 &lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;&lt;u&gt;암호회&amp;nbsp;시&amp;nbsp;사용한&amp;nbsp;키&amp;nbsp;!=(같지&amp;nbsp;않음)&amp;nbsp;복호화&amp;nbsp;시&amp;nbsp;사용한&amp;nbsp;키&lt;/u&gt;인&amp;nbsp;암호화&amp;nbsp;방식 &lt;br /&gt;=&amp;gt;&amp;nbsp;비대칭&amp;nbsp;키&amp;nbsp;암호화&amp;nbsp;방식 &lt;br /&gt;&lt;br /&gt;4.&amp;nbsp;&lt;u&gt;암호화한&amp;nbsp;데이터를&amp;nbsp;다시&amp;nbsp;원래대로&amp;nbsp;복호화할&amp;nbsp;수&amp;nbsp;없는&lt;/u&gt;&amp;nbsp;암호화&amp;nbsp;방식 &lt;br /&gt;=&amp;gt;&amp;nbsp;단방향&amp;nbsp;암호화(=해시,&amp;nbsp;해시&amp;nbsp;암호화,&amp;nbsp;해시&amp;nbsp;알고리즘)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 주로 해시가 들어간 용어가 익숙해 보임&lt;br /&gt;&lt;br /&gt;5.&amp;nbsp;10대&amp;nbsp;컴퓨터가&amp;nbsp;서로&amp;nbsp;비대칭&amp;nbsp;키&amp;nbsp;암호화&amp;nbsp;방식을&amp;nbsp;이용해&amp;nbsp;통신&amp;nbsp;시&amp;nbsp;필요한&amp;nbsp;키의&amp;nbsp;수&amp;nbsp;=&amp;gt;&amp;nbsp;2&amp;nbsp;*&amp;nbsp;10&amp;nbsp;=&amp;nbsp;20개 &lt;br /&gt;*&amp;nbsp;&lt;u&gt;n명의&amp;nbsp;사용자가&amp;nbsp;서로&amp;nbsp;비대칭&amp;nbsp;키&amp;nbsp;암호화&amp;nbsp;통신을&amp;nbsp;할&amp;nbsp;때&amp;nbsp;필요한&amp;nbsp;키의&amp;nbsp;총&amp;nbsp;개수는&amp;nbsp;2n개&amp;nbsp;(-&amp;gt;&amp;nbsp;각&amp;nbsp;사용자가&amp;nbsp;자신의&amp;nbsp;개인&amp;nbsp;키와&amp;nbsp;공개&amp;nbsp;키&amp;nbsp;총&amp;nbsp;2개를&amp;nbsp;가지므로)&lt;/u&gt; &lt;br /&gt;&lt;br /&gt;6.&amp;nbsp;다음이&amp;nbsp;설명하는&amp;nbsp;기술 &lt;br /&gt;-&amp;nbsp;&lt;u&gt;데이터의&amp;nbsp;해시값을&amp;nbsp;생성하고&amp;nbsp;해시값을&amp;nbsp;특정&amp;nbsp;대상&amp;nbsp;개인&amp;nbsp;키로&amp;nbsp;암호화&lt;/u&gt; &lt;br /&gt;-&amp;nbsp;&lt;u&gt;암호화한&amp;nbsp;데이터가&amp;nbsp;위조&amp;nbsp;혹은&amp;nbsp;변조되었는지&amp;nbsp;확인&lt;/u&gt;하거나&amp;nbsp;특정&amp;nbsp;대상&amp;nbsp;신원&amp;nbsp;확인&amp;nbsp;시&amp;nbsp;사용하는&amp;nbsp;기술 &lt;br /&gt;=&amp;gt;&amp;nbsp;디지털&amp;nbsp;서명 &lt;br /&gt;* 디지털 서명: 1) 해시 암호화 방식을 활용해, 2) 암호화된 데이터가 위조 혹은 변조되었는지 확인할 때 사용 &lt;br /&gt;&lt;br /&gt;7.&amp;nbsp;다음이&amp;nbsp;설명하는&amp;nbsp;파일 &lt;br /&gt;-&amp;nbsp;서버&amp;nbsp;도메인&amp;nbsp;주소와&amp;nbsp;공개&amp;nbsp;키를&amp;nbsp;인증해&amp;nbsp;줌 &lt;br /&gt;-&amp;nbsp;제3의&amp;nbsp;인증&amp;nbsp;기관이&amp;nbsp;발급 &lt;br /&gt;=&amp;gt;&amp;nbsp;인증서&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;* 개인적으로는 간편한 금융인증서(핸드폰 인증만 하면 바로 사용할 수 있음)나 클라우드 인증서 등이 있어 잘 사용하지 않지만, 은행 업무나 행정 서류 발급 등에 활용하던 &lt;b&gt;공인인증서&lt;/b&gt;가 여기 속한다고 한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;* 추가로 디지털 인증과 인증서를 활용한 공개 키 기반 구조를 PKI(public key infrastructure)라고 함.&lt;br /&gt;공인인증서를 사용해 보신 분들은 아실 거라 믿는데, 인증서 발급 후 컴퓨터에서 확인할 수 있는 NPKI 폴더명의 PKI가 바로 이 PKI인 걸로 보인다.&lt;br /&gt;**&amp;nbsp;infra+structure: 사회(공공) 기반 + 구조 -&amp;gt; PKI: 공개 키 기반 구조&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;8.&amp;nbsp;다음&amp;nbsp;중&amp;nbsp;인증서에&amp;nbsp;포함되지&amp;nbsp;않는&amp;nbsp;것 &lt;br /&gt;-&amp;nbsp;발급&amp;nbsp;대상 &lt;br /&gt;-&amp;nbsp;발급&amp;nbsp;기관 &lt;br /&gt;-&amp;nbsp;발급&amp;nbsp;대상의&amp;nbsp;공개&amp;nbsp;키 &lt;br /&gt;- &lt;b&gt;&lt;u&gt;클라이언트의 공개 키&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;=&amp;gt;&amp;nbsp;인증서&amp;nbsp;주요&amp;nbsp;구성&amp;nbsp;요소:&amp;nbsp;발급&amp;nbsp;대상의&amp;nbsp;공개&amp;nbsp;키,&amp;nbsp;발급&amp;nbsp;기관의&amp;nbsp;디지털&amp;nbsp;서명,&amp;nbsp;기타&amp;nbsp;필요한&amp;nbsp;추가&amp;nbsp;정보&amp;nbsp;등 &lt;br /&gt;&lt;br /&gt;9. SSL 프로토콜은 OSI 몇 계층? =&amp;gt; OSI 4계층&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;* SSL(Secure&amp;nbsp;Socket&amp;nbsp;Layer):&amp;nbsp;암호화&amp;nbsp;소켓&amp;nbsp;계층으로,&amp;nbsp;암호화&amp;nbsp;계층이자&amp;nbsp;프로토콜 &lt;br /&gt;-&amp;gt;&amp;nbsp;OSI&amp;nbsp;7계층&amp;nbsp;중&amp;nbsp;4계층 &lt;br /&gt;-&amp;gt;&amp;nbsp;원래&amp;nbsp;SSL은&amp;nbsp;지금은&amp;nbsp;보안&amp;nbsp;취약점으로&amp;nbsp;사용하지&amp;nbsp;않지만,&amp;nbsp;대체된&amp;nbsp;TLS(transport&amp;nbsp;layer&amp;nbsp;security)과&amp;nbsp;아직까지&amp;nbsp;이름이&amp;nbsp;혼용되어&amp;nbsp;불림&lt;br /&gt;&lt;br /&gt;10.&amp;nbsp;해시&amp;nbsp;암호화의&amp;nbsp;특징으로&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것을&amp;nbsp;고르면? &lt;br /&gt;- &lt;b&gt;&lt;u&gt;입력하는 데이터 크기가 크면 암호화 데이터 크기도 큼&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;-&amp;nbsp;대표적인&amp;nbsp;알고리즘으로&amp;nbsp;MD5,&amp;nbsp;SHA &lt;br /&gt;-&amp;nbsp;주로&amp;nbsp;데이터&amp;nbsp;무결성&amp;nbsp;검증에&amp;nbsp;사용 &lt;br /&gt;-&amp;nbsp;다시&amp;nbsp;원본으로&amp;nbsp;복호화&amp;nbsp;불가 &lt;br /&gt;**&amp;nbsp;무결성:&amp;nbsp;정보가&amp;nbsp;저장&amp;nbsp;및&amp;nbsp;처리,&amp;nbsp;전송되는&amp;nbsp;과정에서&amp;nbsp;원래&amp;nbsp;상태를&amp;nbsp;정확하고&amp;nbsp;일관적으로&amp;nbsp;유지하는&amp;nbsp;특성 &lt;br /&gt;참고: &lt;a href=&quot;https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AC%B4%EA%B2%B0%EC%84%B1&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AC%B4%EA%B2%B0%EC%84%B1&lt;/a&gt;&amp;nbsp;(데이터&amp;nbsp;무결성,&amp;nbsp;260312&amp;nbsp;최종접속) &lt;br /&gt;=&amp;gt;&amp;nbsp;해시(단방향)&amp;nbsp;암호화는,&amp;nbsp;&lt;u&gt;암호화한&amp;nbsp;데이터&amp;nbsp;크기가&amp;nbsp;일정하다&lt;/u&gt;는&amp;nbsp;특징을&amp;nbsp;지님&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;* 참고: 해시 암호화 특징&lt;br /&gt;-&amp;nbsp;암호화한&amp;nbsp;데이터&amp;nbsp;크기&amp;nbsp;일정&lt;br /&gt;-&amp;nbsp;데이터가&amp;nbsp;미세하게&amp;nbsp;달라져도&amp;nbsp;전혀&amp;nbsp;다른&amp;nbsp;값이&amp;nbsp;됨&lt;br /&gt;-&amp;nbsp;데이터를&amp;nbsp;암호화&amp;nbsp;자체보다는&amp;nbsp;데이터&amp;nbsp;위조&amp;nbsp;혹은&amp;nbsp;변조&amp;nbsp;확인(무결성&amp;nbsp;검증)에&amp;nbsp;주로&amp;nbsp;사용&lt;br /&gt;-&amp;nbsp;대표적인&amp;nbsp;방식으로&amp;nbsp;MD5,&amp;nbsp;SHA&amp;nbsp;등&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;스터디를 마치며&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝났다! 짧다면 짧고 길다면 또 긴 3주 간의 네트워크 스터디가 드디어 끝났다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;막연하게 네트워크 분야에 호기심이 생겨 시작한 스터디였지만, 좀 더 성장할 수 있는 시간이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(물론 아직 자신 있게 네트워크에 대해 설명할 수 있는 단계는 아니라고 생각한다. 이제 필요할 때마다 그때그때 반복하면서 익숙해지는 게 중요하겠지.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일상생활에서 네트워크라는 말을 익숙하게 접할 수 있고 실제로 컴퓨터나 스마트폰으로 자주 사용하고 있지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정작 하나하나 공부해 보니 또 어렵고 복잡한 분야가 네트워크임을 알 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;그래도 책 분량이 그렇게 많지 않았고 최대한 쉽고 자세하게 설명해 주신 저자 분의 노고로 부담없이 네트워크의 맛을 볼 수 있는 시간이었다! (좋은 책 써 주신 저자 분께 감사드립니다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아쉬운 건 역시나 실습 부분인데, 특히 후반부 실습 진행이 잘 안 된 점이 마음에 걸린다. 실제 웹 서버를 가동시키고 이를 외부에 공개하는 작업이 잘 되지 않았다. 책에서 다뤄지지 못한 오류가 발생한 게 문제인 듯한데 아직까지도 그 원인을 찾지 못하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 부분에서 네트워크라는 분야가 쉽지만은 않음을 느꼈다. 아마 실무 현장에서는 이보다 더한 오류도 많을 텐데, 이를 마주하고 정확한 원인을 파악해 해결하는 역량이 중요하겠구나 싶다. 물론 이 정도 수준에 도달하기까지는 정말 많은 시행착오와 경험이 필요하겠지만.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;약간의 아쉬움도 있지만 그래도 3주 동안 거르지 않고 다시 스터디를 완주할 수 있어 뜻깊은 경험이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 생각을 정리하면서 다음 할 일을 다시 고민해 보려고 한다!&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignLeft&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;027&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/027.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/027.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;사용한 학습 자료&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot;&gt;https://product.kyobobook.co.kr/detail/S000213766983&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1773382289690&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Do it! IT 서비스 이해를 위한 네트워크 기초 | 심준보 - 교보문고&quot; data-og-description=&quot;Do it! IT 서비스 이해를 위한 네트워크 기초 | 개발자에게 필요한 네트워크의 기초부터 응용까지 그림으로 이해하고 실습으로 체험하며 배운다!개발을 하다가 네트워크 지식의 부족함을 느꼈다&quot; data-og-host=&quot;product.kyobobook.co.kr&quot; data-og-source-url=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot; data-og-url=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/w6lhu/dJMb82MBB7o/6o4vMy12hMgtsKP1nJE3O0/img.jpg?width=458&amp;amp;height=626&amp;amp;face=0_0_458_626,https://scrap.kakaocdn.net/dn/ba5s8J/dJMb88F3ooL/PhLhY2gLEg80Qqsg1oL7tk/img.jpg?width=458&amp;amp;height=626&amp;amp;face=0_0_458_626,https://scrap.kakaocdn.net/dn/qRfZe/dJMb85vNrI8/ykNGVrNErPKrCwLPwf8Bt1/img.jpg?width=599&amp;amp;height=608&amp;amp;face=0_0_599_608&quot;&gt;&lt;a href=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/w6lhu/dJMb82MBB7o/6o4vMy12hMgtsKP1nJE3O0/img.jpg?width=458&amp;amp;height=626&amp;amp;face=0_0_458_626,https://scrap.kakaocdn.net/dn/ba5s8J/dJMb88F3ooL/PhLhY2gLEg80Qqsg1oL7tk/img.jpg?width=458&amp;amp;height=626&amp;amp;face=0_0_458_626,https://scrap.kakaocdn.net/dn/qRfZe/dJMb85vNrI8/ykNGVrNErPKrCwLPwf8Bt1/img.jpg?width=599&amp;amp;height=608&amp;amp;face=0_0_599_608');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Do it! IT 서비스 이해를 위한 네트워크 기초 | 심준보 - 교보문고&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Do it! IT 서비스 이해를 위한 네트워크 기초 | 개발자에게 필요한 네트워크의 기초부터 응용까지 그림으로 이해하고 실습으로 체험하며 배운다!개발을 하다가 네트워크 지식의 부족함을 느꼈다&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;product.kyobobook.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(밀리의 서재에서 이용)&lt;/p&gt;</description>
      <category>2026/Do it 네트워크 스터디(2026.02.23~)</category>
      <author>뷔구룽</author>
      <guid isPermaLink="true">https://gyeonkangkim.tistory.com/36</guid>
      <comments>https://gyeonkangkim.tistory.com/36#entry36comment</comments>
      <pubDate>Mon, 9 Mar 2026 11:49:24 +0900</pubDate>
    </item>
    <item>
      <title>(Do it 네트워크, 2주차) 260302~260306</title>
      <link>https://gyeonkangkim.tistory.com/35</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;시작하며&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;벌써 3월이다. 네트워크 스터디는 이제 2주차를 맞이한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 스터디와 달리 3주라는 짧은 기간이다보니 벌써 반환점을 돌아버린 느낌이다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스피디하다면 스피디할 수도 있지만 짧은 기간에 네트워크의 많은 개념을 정리하고 있으니 그래도 &lt;s&gt;운동&lt;/s&gt;공부 많이 된다. &lt;s&gt;스트롱 스트롱. 다행히도(?) 잘 때 생각 많이 나거나 하진 않았다.&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자 이제 1주차보다 많은 분량을 자랑하듯 보이는 2주차로 들어가보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 이번 주 공부 인증부터.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8QNIA/dJMcag5HsGv/hvzvSYLKbT5LbnLwfbBIB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8QNIA/dJMcag5HsGv/hvzvSYLKbT5LbnLwfbBIB0/img.png&quot; data-alt=&quot;2주차 공부 인증샷&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8QNIA/dJMcag5HsGv/hvzvSYLKbT5LbnLwfbBIB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8QNIA%2FdJMcag5HsGv%2FhvzvSYLKbT5LbnLwfbBIB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;763&quot; height=&quot;1017&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2주차 공부 인증샷&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;6장. 광역 통신 방법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 목차와 핵심 키워드를 먼저 훑어보니 3계층(네트워크 계층)에서 다룬 IPv4 프로토콜의 심화 과정이 될 것으로 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정보처리기사 같은 자격증 시험에서도 그렇고, 네트워크와 기본 컴퓨터 과학 분야에서 특히 IP가 갖는 비중이 큼을 짐작할 수 있겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ICMP 프로토콜이 정확히 무엇을 나타내는 지 사실 잘 몰랐다. 그나마 들어본 거로는 'Ping of Death와 같은 분산 서비스 공격(DDoS)에서 ICMP 패킷이 활용된다' 정도겠다. 아직까지는 CS 지식이 정보처리기사 필기 수준에 머물러 있음을 깨달았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 장에서는 ICMP 프로토콜에 대해 조금 더 자세히 알아갈 수 있을 것으로 기대한다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 라우팅 테이블은 사실 1주차 분량인 4장(네트워크 계층) 라우팅 부분에서 먼저 공부한 개념이긴 하다. 다만 당시에는 이게 정확히 어떤 건지 감이 잡히지 않았는데, 6장을 공부하고 실습하며 라우팅 테이블을 직접 눈으로 확인해보고 이해도를 높일 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(아래 실습 장면 참고)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2026-03-02 153451.png&quot; data-origin-width=&quot;996&quot; data-origin-height=&quot;423&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/llxKc/dJMcab4m7QR/EIOIowGIjVqvPRyN0hCOx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/llxKc/dJMcab4m7QR/EIOIowGIjVqvPRyN0hCOx1/img.png&quot; data-alt=&quot;6장 실습. 사진은 명령 프롬프트에서 netstat -r 명령어를 입력해 확인한 개인 노트북 라우팅 테이블이다. IPv4 경로 테이블의 '활성 경로' 부분이 컴퓨터의 라우팅 테이블이라고 한다. 라우팅 테이블은 IP 주소로 통신하는 컴퓨터나 네트워크 장치들이 가지고 있는, 목적지 IP 주소로 향하는 경로가 작성된 표다. 추가로 네트워크 대상과 네트워크 마스크는 목적지 IP 주소 대역, 인터페이스는 통신 대상 컴퓨터와 통신하기 전 나서야 할 내 컴퓨터의 출구 주소, 게이트웨이는 내 컴퓨터와 통신할 다른 장치의 기본 경로 주소라고 한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/llxKc/dJMcab4m7QR/EIOIowGIjVqvPRyN0hCOx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FllxKc%2FdJMcab4m7QR%2FEIOIowGIjVqvPRyN0hCOx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;996&quot; height=&quot;423&quot; data-filename=&quot;화면 캡처 2026-03-02 153451.png&quot; data-origin-width=&quot;996&quot; data-origin-height=&quot;423&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;6장 실습. 사진은 명령 프롬프트에서 netstat -r 명령어를 입력해 확인한 개인 노트북 라우팅 테이블이다. IPv4 경로 테이블의 '활성 경로' 부분이 컴퓨터의 라우팅 테이블이라고 한다. 라우팅 테이블은 IP 주소로 통신하는 컴퓨터나 네트워크 장치들이 가지고 있는, 목적지 IP 주소로 향하는 경로가 작성된 표다. 추가로 네트워크 대상과 네트워크 마스크는 목적지 IP 주소 대역, 인터페이스는 통신 대상 컴퓨터와 통신하기 전 나서야 할 내 컴퓨터의 출구 주소, 게이트웨이는 내 컴퓨터와 통신할 다른 장치의 기본 경로 주소라고 한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(6장 되새김 문제 풀이)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 처음으로 문제가 굉장히 어렵다고 느꼈다. 6장을 적어도 두 번 이상 꼼꼼히 읽어야 풀 수 있을 정도로 특히 개념 이해와 응용력이 필요했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대학 때 오픈북 시험을 봤던 경험이 떠올라, 어려웠지만 재밌었다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&amp;nbsp;IPv4&amp;nbsp;프로토콜&amp;nbsp;길이가&amp;nbsp;20bytes&amp;nbsp;-&amp;gt;&amp;nbsp;프로토콜에서&amp;nbsp;인터넷&amp;nbsp;헤더&amp;nbsp;길이&amp;nbsp;필드&amp;nbsp;값?&amp;nbsp;&lt;b&gt;5&lt;/b&gt; &lt;br /&gt;*&lt;b&gt;인터넷&amp;nbsp;헤더&amp;nbsp;길이는&amp;nbsp;주로&amp;nbsp;5&lt;/b&gt;로&amp;nbsp;표기 &lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;IPv4&amp;nbsp;프로토콜로&amp;nbsp;1300bytes&amp;nbsp;데이터&amp;nbsp;전송&amp;nbsp;시,&amp;nbsp;프로토콜의&amp;nbsp;총&amp;nbsp;길이&amp;nbsp;필드&amp;nbsp;값?&amp;nbsp;&lt;b&gt;1320&lt;/b&gt; &lt;br /&gt;*&amp;nbsp;&lt;b&gt;총&amp;nbsp;길이=데이터+상위&amp;nbsp;프로토콜+IPv4&amp;nbsp;프로토콜&amp;nbsp;크기(20)&lt;/b&gt; &lt;br /&gt;* 문제에는 상위 프로토콜이 주어지지 않았으므로 &lt;br /&gt;데이터+IPv4&amp;nbsp;프로토콜&amp;nbsp;크기만&amp;nbsp;계산해보면&amp;nbsp;&lt;b&gt;1300+20=1320&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;IPv4&amp;nbsp;프로토콜로&amp;nbsp;MTU를&amp;nbsp;넘는&amp;nbsp;데이터를&amp;nbsp;조각화해&amp;nbsp;보낸다고&amp;nbsp;가정 &lt;br /&gt;첫&amp;nbsp;번째&amp;nbsp;데이터를&amp;nbsp;캡슐화한&amp;nbsp;프로토콜&amp;nbsp;아이디:&amp;nbsp;1111 &lt;br /&gt;-&amp;gt;&amp;nbsp;나머지&amp;nbsp;데이터를&amp;nbsp;캡슐화한&amp;nbsp;프로토콜의&amp;nbsp;아이디?&amp;nbsp;&lt;b&gt;1111&lt;/b&gt; &lt;br /&gt;*&amp;nbsp;아이디는,&amp;nbsp;조각화된&amp;nbsp;데이터가&amp;nbsp;원래&amp;nbsp;하나의&amp;nbsp;데이터임을&amp;nbsp;입증하는&amp;nbsp;값으로&amp;nbsp;&lt;b&gt;하나의&amp;nbsp;큰&amp;nbsp;데이터에서&amp;nbsp;쪼개진&amp;nbsp;각&amp;nbsp;데이터는&amp;nbsp;모두&amp;nbsp;같은&amp;nbsp;아이디&amp;nbsp;값&lt;/b&gt;을&amp;nbsp;가진다! &lt;br /&gt;&lt;br /&gt;4. IPv4 프로토콜로 MTU를 넘는 데이터를 조각화해 보낸다고 가정 시 첫&amp;nbsp;번째&amp;nbsp;데이터&amp;nbsp;캡슐화한&amp;nbsp;패킷으로&amp;nbsp;보낸&amp;nbsp;데이터:&amp;nbsp;1480bytes &lt;br /&gt;-&amp;gt;&amp;nbsp;두&amp;nbsp;번째&amp;nbsp;데이터&amp;nbsp;캡슐화한&amp;nbsp;프로토콜의&amp;nbsp;조각&amp;nbsp;오프셋?&amp;nbsp;&lt;b&gt;1480&amp;nbsp;/&amp;nbsp;8&amp;nbsp;=&amp;nbsp;185&lt;/b&gt; &lt;br /&gt;*&amp;nbsp;조각&amp;nbsp;오프셋은,&amp;nbsp;큰&amp;nbsp;데이터를&amp;nbsp;조각화해&amp;nbsp;보낼&amp;nbsp;때&amp;nbsp;여러&amp;nbsp;개로&amp;nbsp;쪼개진&amp;nbsp;데이터&amp;nbsp;순서를&amp;nbsp;의미하는&amp;nbsp;값으로&amp;nbsp;수신&amp;nbsp;쪽에서&amp;nbsp;이&amp;nbsp;값을&amp;nbsp;참고해&amp;nbsp;나뉜&amp;nbsp;데이터를&amp;nbsp;다시&amp;nbsp;원래대로&amp;nbsp;조립&amp;nbsp;-&amp;gt;&amp;nbsp;&lt;b&gt;원래&amp;nbsp;데이터&amp;nbsp;크기&amp;nbsp;값을&amp;nbsp;8로&amp;nbsp;나눈&amp;nbsp;값&lt;/b&gt;에&amp;nbsp;해당! &lt;br /&gt;&lt;br /&gt;5.&amp;nbsp;IPv4&amp;nbsp;프로토콜로&amp;nbsp;보낸&amp;nbsp;패킷이&amp;nbsp;&lt;b&gt;인터넷에서&amp;nbsp;영원히&amp;nbsp;떠돌아다니지&amp;nbsp;못하도록&lt;/b&gt;&amp;nbsp;하는&amp;nbsp;기능?&amp;nbsp;&lt;b&gt;TTL(time&amp;nbsp;to&amp;nbsp;live;&amp;nbsp;생존시간)&lt;/b&gt; &lt;br /&gt;* TTL(time to live): '생존 기간,' 패킷이 네트워크에서 생존 가능한 기간으로, 하나의 패킷이 네트워크에서 영속성(영원히 존재하는 속성)을 가지지 않도록 함 -&amp;gt; 기본값으로. 윈도우는 128, 리눅스는 64 &lt;br /&gt;-&amp;gt;&amp;nbsp;프로토콜이&amp;nbsp;하나의&amp;nbsp;LAN을&amp;nbsp;넘어갈&amp;nbsp;때마다&amp;nbsp;1씩&amp;nbsp;줄어들며,&amp;nbsp;TTL이&amp;nbsp;0이&amp;nbsp;되는&amp;nbsp;순간&amp;nbsp;해당&amp;nbsp;패킷&amp;nbsp;폐기(네트워크&amp;nbsp;장비&amp;nbsp;설정&amp;nbsp;오류로&amp;nbsp;잉여&amp;nbsp;패킷이&amp;nbsp;영원히&amp;nbsp;순환함으로&amp;nbsp;패킷을&amp;nbsp;처리하는&amp;nbsp;장비의&amp;nbsp;리소스를&amp;nbsp;낭비하는&amp;nbsp;상황을&amp;nbsp;방지할&amp;nbsp;필요&amp;nbsp;있음) &lt;br /&gt;&lt;br /&gt;6.&amp;nbsp;IPv4&amp;nbsp;프로토콜에서,&amp;nbsp;어떤&amp;nbsp;상위&amp;nbsp;프로토콜이&amp;nbsp;캡슐화되었는지&amp;nbsp;표시하는&amp;nbsp;'프로토콜'&amp;nbsp;필드에&amp;nbsp;들어가는&amp;nbsp;값으로&amp;nbsp;ICMP,&amp;nbsp;TCP,&amp;nbsp;UDP를&amp;nbsp;의미하는&amp;nbsp;값을&amp;nbsp;각각&amp;nbsp;쓰면?&amp;nbsp;&lt;b&gt;ICMP(1),&amp;nbsp;TCP(6),&amp;nbsp;UDP(17)&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;7.&amp;nbsp;ICMP&amp;nbsp;프로토콜&amp;nbsp;통싱&amp;nbsp;시&amp;nbsp;확인할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;주요&amp;nbsp;유형값은? &lt;br /&gt;&lt;b&gt;1)&amp;nbsp;8:&amp;nbsp;통신&amp;nbsp;확인&amp;nbsp;요청 &lt;/b&gt;&lt;br /&gt;&lt;b&gt;2)&amp;nbsp;0:&amp;nbsp;통신&amp;nbsp;확인에&amp;nbsp;정상&amp;nbsp;응답 &lt;/b&gt;&lt;br /&gt;&lt;b&gt;3)&amp;nbsp;3:&amp;nbsp;목적지에&amp;nbsp;패킷이&amp;nbsp;정상적으로&amp;nbsp;도착하지&amp;nbsp;못힘(오류) &lt;/b&gt;&lt;br /&gt;&lt;b&gt;4)&amp;nbsp;11:&amp;nbsp;목적지에&amp;nbsp;패킷이&amp;nbsp;도착했지만&amp;nbsp;응답&amp;nbsp;시간&amp;nbsp;초과(오류)&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;8.&amp;nbsp;다음&amp;nbsp;라우팅&amp;nbsp;테이블에&amp;nbsp;따를&amp;nbsp;때,&amp;nbsp;목적지&amp;nbsp;IP&amp;nbsp;주소가&amp;nbsp;8.8.8.8이면&amp;nbsp;해당&amp;nbsp;패킷이&amp;nbsp;전송되는&amp;nbsp;위치는?&amp;nbsp;&lt;b&gt;192.168.30.2&lt;/b&gt; &lt;br /&gt;(라우팅&amp;nbsp;테이블) &lt;br /&gt;&lt;b&gt;0.0.0.0&amp;nbsp;-&amp;gt;&amp;nbsp;192.168.30.2&lt;/b&gt; &lt;br /&gt;192.168.10.0/24&amp;nbsp;-&amp;gt;&amp;nbsp;192.168.10.2 &lt;br /&gt;192.168.20.0/24&amp;nbsp;-&amp;gt;&amp;nbsp;192.168.20.2 &lt;br /&gt;* 주어진 라우팅 테이블에서 0.0.0.0(네트워크 대상 혹은 네트워크 마스크로 예상)으로 시작하는 첫 번째 줄은 기본 게이트웨이 관련 내용을 나타냄 &lt;br /&gt;&lt;b&gt;특정 목적지의 IP 주소로 통신할 때, 특정 예외 상황을 제외하고 어떤 IP든 우선 기본 설정된 게이트웨이 주소로 가도록 설정되어 있음&lt;/b&gt; &lt;br /&gt;따라서&amp;nbsp;출발지에서&amp;nbsp;만들어진&amp;nbsp;패킷은&amp;nbsp;우선&amp;nbsp;기본&amp;nbsp;게이트웨이&amp;nbsp;주소인&amp;nbsp;192.168.30.2로&amp;nbsp;전송될&amp;nbsp;것! &lt;br /&gt;&lt;br /&gt;9.&amp;nbsp;MTU가&amp;nbsp;1500인&amp;nbsp;네트워크&amp;nbsp;장치들로&amp;nbsp;4000bytes인&amp;nbsp;데이터&amp;nbsp;전송할&amp;nbsp;때,&amp;nbsp;몇&amp;nbsp;개의&amp;nbsp;데이터로&amp;nbsp;조각화되고&amp;nbsp;마지막&amp;nbsp;패킷으로&amp;nbsp;보내는&amp;nbsp;데이터&amp;nbsp;크기는?&amp;nbsp;&lt;b&gt;3개&lt;/b&gt;로&amp;nbsp;조각화,&amp;nbsp;마지막&amp;nbsp;패킷으로&amp;nbsp;보내는&amp;nbsp;데이터&amp;nbsp;크기:&amp;nbsp;&lt;b&gt;1040&lt;/b&gt; &lt;br /&gt;*&amp;nbsp;각&amp;nbsp;장치는&amp;nbsp;MTU인&amp;nbsp;1500&amp;nbsp;이상&amp;nbsp;크기로&amp;nbsp;데이터&amp;nbsp;전송이&amp;nbsp;불가하므로&amp;nbsp;우선&amp;nbsp;MTU보다&amp;nbsp;작은&amp;nbsp;값으로&amp;nbsp;데이터를&amp;nbsp;조각화해야&amp;nbsp;함 &lt;br /&gt;각각의&amp;nbsp;데이터&amp;nbsp;크기를&amp;nbsp;MTU에서&amp;nbsp;IPv4&amp;nbsp;프로토콜의&amp;nbsp;기본&amp;nbsp;크기인&amp;nbsp;20을&amp;nbsp;뺀&amp;nbsp;1480으로&amp;nbsp;설정하면&amp;nbsp;4000=1480+1480+1040,&amp;nbsp;총&amp;nbsp;3개로&amp;nbsp;나눌&amp;nbsp;수&amp;nbsp;있음 &lt;br /&gt;따라서&amp;nbsp;3개의&amp;nbsp;데이터로&amp;nbsp;조각화할&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;마지막&amp;nbsp;패킷의&amp;nbsp;데이터&amp;nbsp;크기는&amp;nbsp;1040 &lt;br /&gt;&lt;br /&gt;10.&amp;nbsp;ping&amp;nbsp;테스트를&amp;nbsp;통해&amp;nbsp;받은&amp;nbsp;응답&amp;nbsp;패킷으로&amp;nbsp;IPv4&amp;nbsp;프로토콜&amp;nbsp;확인&amp;nbsp;시&amp;nbsp;TTL이&amp;nbsp;119&amp;nbsp;-&amp;gt;&amp;nbsp;목적지&amp;nbsp;컴퓨터의&amp;nbsp;운영체제를&amp;nbsp;예상해&amp;nbsp;보면?&amp;nbsp; &lt;br /&gt;&lt;b&gt;윈도우&lt;/b&gt; &lt;br /&gt;*윈도우의 TTL 값은 기본 128, 인터넷 상에서는 최대 16개 네트워크를 거쳐 목적지까지 도달하므로 예상되는 최대 TTL은 119+16 = 135 &lt;br /&gt;&lt;b&gt;해당 값이 윈도우의 기본 TTL인 128보다 크므로, 목적지 컴퓨터의 운영체제는 윈도우로 예상 가능&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;7장. OSI 4계층&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 개인적으로 정보처리기사 필기 시험 준비하면서 가장 많이 들어본 부분이 아닐까 싶다. 그렇게 TCP와 UDP가 중요하다고 책이나 강의에서는 들었는데 정작 이 둘이 구체적으로 뭔지, 왜 중요한지 잘 모르고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책을 읽고 실습을 해 보니 정말로 OSI 4계층은 TCP와 UDP가 거의 전부일 정도로 그 비중이 상당했다. 그 외에 체크섬, 데이터 송수신 등 시험 공부할 때는 아무것도 모르고 일단 딥다 외웠던 용어와 개념들을 조금이나마 직접 체득해본 유익한 시간이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 특히 TCP 프로토콜로 데이터를 주고받는 과정이 굉장히 복잡하다!! 어떤 내용이 있는지 대략은 파악했지만 과정을 모두 이해하기 마냥 쉽지 않았다. 7장은 일단 '퀘스트를 깨듯' 많은 실습 과정을 하나하나 해 보고 무사히 네트워크를 분석해내는 데 초점을 맞춰 공부한 듯하다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2026-03-05 113731.png&quot; data-origin-width=&quot;477&quot; data-origin-height=&quot;407&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HeRI3/dJMcaaRZqSZ/ZKdvS6SiH7veIft9dJ25N1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HeRI3/dJMcaaRZqSZ/ZKdvS6SiH7veIft9dJ25N1/img.png&quot; data-alt=&quot;7장 실습 1. 4계층 프로토콜 중 UDP 그 중에서 TFTP(단순 파일 전송 프로토콜)을 활용해 직접 서버와 클라이언트 간 통신 과정을 확인해 봤다. tftpd32라는 프로그램으로 내 컴퓨터에 가상 서버를 구축하고 파일을 클라이언트로 전송하는 과정이었다. UDP는 TCP에 비해 비교적 과정이 단순한 편이어서 직관적이었고, 어쨌든 미리 준비해둔 테스트 파일이 클라이언트(내 컴퓨터)에 정상적으로 전송된 모습이 신기했다!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HeRI3/dJMcaaRZqSZ/ZKdvS6SiH7veIft9dJ25N1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHeRI3%2FdJMcaaRZqSZ%2FZKdvS6SiH7veIft9dJ25N1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;477&quot; height=&quot;407&quot; data-filename=&quot;화면 캡처 2026-03-05 113731.png&quot; data-origin-width=&quot;477&quot; data-origin-height=&quot;407&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;7장 실습 1. 4계층 프로토콜 중 UDP 그 중에서 TFTP(단순 파일 전송 프로토콜)을 활용해 직접 서버와 클라이언트 간 통신 과정을 확인해 봤다. tftpd32라는 프로그램으로 내 컴퓨터에 가상 서버를 구축하고 파일을 클라이언트로 전송하는 과정이었다. UDP는 TCP에 비해 비교적 과정이 단순한 편이어서 직관적이었고, 어쨌든 미리 준비해둔 테스트 파일이 클라이언트(내 컴퓨터)에 정상적으로 전송된 모습이 신기했다!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2026-03-05 115828.png&quot; data-origin-width=&quot;963&quot; data-origin-height=&quot;327&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dzUGk4/dJMcabcfwUL/bUHRGlVXUdbp7QDXeCBKmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dzUGk4/dJMcabcfwUL/bUHRGlVXUdbp7QDXeCBKmk/img.png&quot; data-alt=&quot;7장 실습 2. 이번엔 TCP 프로토콜을 활용한 실습이다. 사진은 명령 프롬프트에서 netstat -ano 명령어로, 실행 중인 프로그램과 해당 프로그램이 사용 중인 포트 번호를 확인하는 모습이다. 흔히 사용하는 네이버 웹 사이트를 웹 브라우저로 열어본 뒤 명령어를 실행한 결과 중 일부인데, 블록 친 부분을 해석해보면 다음과 같다. &amp;quot;TCP를 사용해 192.168.0.101 IP 주소인 내 컴퓨터에서 프로그램 아이디(PID)가 20040인 프로그램(네이버를 열어본 웹 브라우저)이 포트 번호 49379를 사용 중. 그리고 151.101.129.44 IP 주소를 가진 컴퓨터(아마 네이버 웹 서버려나)에서 실행 중인 프로그램이 포트 번호 443을 사용 중이고 양쪽 포트는 ESTABLISHD 상태(클라이언트와 서버 양쪽 프로그램이 연결 수립되어 '데이터를 주고받을 준비가 되어 있는' 상태 )로 서로 연결되어 있음.&amp;quot; TCP는 UDP에 비해 복잡한 데이터 주고받기 과정을 거치기에, 그 과정을 이해하고 실습하기도 다소 빡센 편이었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dzUGk4/dJMcabcfwUL/bUHRGlVXUdbp7QDXeCBKmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdzUGk4%2FdJMcabcfwUL%2FbUHRGlVXUdbp7QDXeCBKmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;963&quot; height=&quot;327&quot; data-filename=&quot;화면 캡처 2026-03-05 115828.png&quot; data-origin-width=&quot;963&quot; data-origin-height=&quot;327&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;7장 실습 2. 이번엔 TCP 프로토콜을 활용한 실습이다. 사진은 명령 프롬프트에서 netstat -ano 명령어로, 실행 중인 프로그램과 해당 프로그램이 사용 중인 포트 번호를 확인하는 모습이다. 흔히 사용하는 네이버 웹 사이트를 웹 브라우저로 열어본 뒤 명령어를 실행한 결과 중 일부인데, 블록 친 부분을 해석해보면 다음과 같다. &quot;TCP를 사용해 192.168.0.101 IP 주소인 내 컴퓨터에서 프로그램 아이디(PID)가 20040인 프로그램(네이버를 열어본 웹 브라우저)이 포트 번호 49379를 사용 중. 그리고 151.101.129.44 IP 주소를 가진 컴퓨터(아마 네이버 웹 서버려나)에서 실행 중인 프로그램이 포트 번호 443을 사용 중이고 양쪽 포트는 ESTABLISHD 상태(클라이언트와 서버 양쪽 프로그램이 연결 수립되어 '데이터를 주고받을 준비가 되어 있는' 상태 )로 서로 연결되어 있음.&quot; TCP는 UDP에 비해 복잡한 데이터 주고받기 과정을 거치기에, 그 과정을 이해하고 실습하기도 다소 빡센 편이었다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(7장 되새김 문제 풀이)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 그렇게나 많은 분량을 자랑한 7장임에도 정작 되새김 문제에서 다뤄진 핵심 개념은 그리 많지 않아보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;1.&amp;nbsp;다음&amp;nbsp;각&amp;nbsp;설명이&amp;nbsp;나타내는&amp;nbsp;프로그램 &lt;br /&gt;-&amp;nbsp;서비스를&amp;nbsp;제공하는&amp;nbsp;프로그램:&amp;nbsp;서버 &lt;br /&gt;-&amp;nbsp;서비스를&amp;nbsp;이용하는&amp;nbsp;프로그램:&amp;nbsp;클라이언트 &lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;대표적인&amp;nbsp;&lt;u&gt;4계층&amp;nbsp;프로토콜&lt;/u&gt;로,&amp;nbsp;&lt;u&gt;데이터를&amp;nbsp;안전하게&amp;nbsp;주고받기&amp;nbsp;위해&lt;/u&gt;&amp;nbsp;클라이언트와&amp;nbsp;서버가&amp;nbsp;지속적으로&amp;nbsp;통신하는&amp;nbsp;프로토콜&amp;nbsp;-&amp;gt;&amp;nbsp;TCP &lt;br /&gt;cf) UDP: 단순 파일 전송에 초점이 맞춰져 데이터 통신의 안전이 보장되지 않는 프로토콜 &lt;br /&gt;&lt;br /&gt;3. 클라이언트가 서버에 연결을 요청하기 위해 TCP 프로토콜을 캡슐화해 패킷을 보낼 때, 가장 먼저 보내는 패킷의 TCP에 설정하는 플래그 -&amp;gt; SYN 플래그&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* SYN 플래그: TCP 연결 설정 초기화를 위해 순서 번호 동기화를 시작했음을 알리는 플래그&lt;br /&gt;&lt;br /&gt;4. 클라이언트와 서버가 맨 처음 데이터를 주고받기 위해 서로 연결을 수립하는 과정 -&amp;gt; 3방향 핸드쉐이크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 클라이언트와 서버가 마치 악수하듯 서로 패킷을 주고받는 과정을 총 3번 반복하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 3-way(총 3번; 세 방향으로) handshake(악수하듯 데이터를 주고 받으며 연결을 수립)&lt;br /&gt;&lt;br /&gt;5. 4계층에서 사용하는 주소 -&amp;gt; 포트 번호&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 포트 번호: 2계층의 MAC, 3계층의 IP처럼 4계층에서 사용하는 주소 역할을 하는 번호 -&amp;gt; 목적지 컴퓨터에서 실행 중인 여러 프로그램 중 데이터를 필요로 하는 특정 프로그램을 찾아가기 위한 번호&lt;br /&gt;&lt;br /&gt;6.&amp;nbsp;다음&amp;nbsp;빈칸&amp;nbsp;채우기 &lt;br /&gt;- 연결이 수립된 두 프로그램이 ( &lt;b&gt;순서&lt;/b&gt; ) 번호와 ( &lt;b&gt;응답&lt;/b&gt; ) 번호로 서로 연결을 동기화 하며 통신&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*&amp;nbsp;서로&amp;nbsp;연결&amp;nbsp;수립을&amp;nbsp;완료한&amp;nbsp;클라이언트와&amp;nbsp;서버는&amp;nbsp;서로의&amp;nbsp;통신을&amp;nbsp;동기화하며&amp;nbsp;순서&amp;nbsp;번호와&amp;nbsp;응답&amp;nbsp;번호를&amp;nbsp;주고&amp;nbsp;받음 &lt;br /&gt;순서&amp;nbsp;번호:&amp;nbsp;TCP&amp;nbsp;연결&amp;nbsp;수립&amp;nbsp;과정에서&amp;nbsp;&lt;u&gt;데이터&amp;nbsp;순서를&amp;nbsp;식별&lt;/u&gt;하는&amp;nbsp;번호 &lt;br /&gt;응답&amp;nbsp;번호:&amp;nbsp;데이터&amp;nbsp;수신&amp;nbsp;측이&amp;nbsp;보내는&amp;nbsp;'&lt;u&gt;데이터&amp;nbsp;잘&amp;nbsp;받았다&lt;/u&gt;'는&amp;nbsp;신호&amp;nbsp;-&amp;gt;&amp;nbsp;순서&amp;nbsp;번호&amp;nbsp;+&amp;nbsp;1&lt;br /&gt;&lt;br /&gt;7. 서버가 클라이언트 연결을 기다리고 있는 상태 -&amp;gt; LISTENING 상태&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 클라이언트의 요청을 '&lt;u&gt;귀 기울여 듣고 있는&lt;/u&gt;' 상태&lt;br /&gt;&lt;br /&gt;8. 클라이언트와 서버가 잘 연결된 상태 -&amp;gt; ESTABLISHED 상태&lt;br /&gt;&lt;br /&gt;9. 프로그램끼리 연결된 상태 확인 명령어 -&amp;gt; netstat -ano&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 위 7장 실습 2에도 정리해 둠&lt;br /&gt;&lt;br /&gt;10. 서버와 클라이언트 중 항상 연결을 요청하는 쪽 -&amp;gt; 클라이언트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;8장. HTTP 통신 요청&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 8장부터는 본격적으로 웹 서비스와 관련된 네트워크 지식이 등장하는 걸로 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹에 대해서는 최근 관심있게 찍먹해 본 경험이 있다(아직 제대로 된 웹 페이지를 만들어보진 않았지만 기본적인 웹 프로그래밍 책을 읽거나 구글링을 하며 기본 개념과 흐름을 공부해 본 정도). 일본 취업 교육과정에서도 주로 웹 개발에 대해 다루다 보니, 일본 취업이라는 목표를 위해서도 웹 개발에 더욱 관심을 가지게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 8장에는 기본적인 HTTP 프로토콜에 더해 프런트엔드와 백엔드, GET과 POST, URL 주소 등 웹 개발에 관심을 가진다면 한 번쯤 들어볼 수 있는 친숙한 용어들이 등장해 흥미롭게 공부했다. 실제 웹 개발 교육과정을 수강하며 취업 준비를 할 때도 실질적으로 도움이 될 만한 지식들로 구성되어 다른 장에 비해 좀 더 몰입이 잘 된 것 같기도 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;s&gt;다만 아직 실습을 해 보지는 못했다. 실습에 사용할 프로그램을 다운로드 받아야 할 사이트가 계속 먹통인 상황이라 일단 보류 중이다(추후 사이트에 정상적으로 접속되면 다시 시도해 볼 예정)&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; (260309 추가) 사이트 정상적으로 접속됨, 설치 파일 다운로드에도 문제가 없어 실습을 해볼 수 있었다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2026-03-09 144427.png&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;447&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkdQOB/dJMcabch6PP/ezQI77kg5QfUoGOlJXgpJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkdQOB/dJMcabch6PP/ezQI77kg5QfUoGOlJXgpJk/img.png&quot; data-alt=&quot;8장 실습. 위 세 줄은 ncat 프로그램을 활용해 네이버 웹 서버로 직접 보낸 HTTP 요청 프로토콜이다. 나머지 부분은 그에 대한 네이버 웹 서버의 응답 프로토콜로 보인다. 기본적인 요청 프로토콜 형식만 알아도 사용자가 직접 웹 서버에 HTTP 요청을 보낼 수 있음을 확인했다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkdQOB/dJMcabch6PP/ezQI77kg5QfUoGOlJXgpJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkdQOB%2FdJMcabch6PP%2FezQI77kg5QfUoGOlJXgpJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;557&quot; height=&quot;447&quot; data-filename=&quot;화면 캡처 2026-03-09 144427.png&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;447&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;8장 실습. 위 세 줄은 ncat 프로그램을 활용해 네이버 웹 서버로 직접 보낸 HTTP 요청 프로토콜이다. 나머지 부분은 그에 대한 네이버 웹 서버의 응답 프로토콜로 보인다. 기본적인 요청 프로토콜 형식만 알아도 사용자가 직접 웹 서버에 HTTP 요청을 보낼 수 있음을 확인했다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(8장&amp;nbsp;되새김&amp;nbsp;문제&amp;nbsp;풀이) &lt;br /&gt;1.&amp;nbsp;7계층&amp;nbsp;대표&amp;nbsp;프로토콜,&amp;nbsp;웹&amp;nbsp;서버와&amp;nbsp;웹&amp;nbsp;브라우저가&amp;nbsp;데이터&amp;nbsp;주고받을&amp;nbsp;때&amp;nbsp;사용&amp;nbsp;-&amp;gt;&amp;nbsp;HTTP &lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;웹&amp;nbsp;브라우저(클라이언트)가&amp;nbsp;웹&amp;nbsp;서버에&amp;nbsp;특정&amp;nbsp;데이터를&amp;nbsp;요청하는&amp;nbsp;과정에서,&amp;nbsp;&lt;u&gt;요청에&amp;nbsp;필요한&amp;nbsp;정보(데이터)를&amp;nbsp;URL에&amp;nbsp;포함해&amp;nbsp;보내는&lt;/u&gt;&amp;nbsp;HTTP&amp;nbsp;메서드&amp;nbsp;-&amp;gt;&amp;nbsp;GET&amp;nbsp;메서드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* GET 메서드 사용 시 전송 데이터가 URL 주소에 그대로 노출되므로 중요한 정보 전송에는 적합하지 않음&lt;br /&gt;* POST 메서드: 요청에 필요힌 데이터를 요청 프로토콜의 보디 부분에 포함해, URL 주소 등 &lt;u&gt;외부에 노출되지 않도록&lt;/u&gt; 함(아래 3번 문제 참고)&lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;2과&amp;nbsp;같은&amp;nbsp;과정에서,&amp;nbsp;요청에&amp;nbsp;필요한&amp;nbsp;데이터를&amp;nbsp;&lt;u&gt;HTTP 보디에 포함해 &lt;u&gt;(외부에 노출되지 않도록 함)&lt;/u&gt;&amp;nbsp;보내는&lt;/u&gt;&amp;nbsp;HTTP&amp;nbsp;메서드&amp;nbsp;-&amp;gt;&amp;nbsp;POST&amp;nbsp;메서드 &lt;br /&gt;&lt;br /&gt;4.&amp;nbsp;웹&amp;nbsp;브라우저에&amp;nbsp;표시되는&amp;nbsp;웹&amp;nbsp;페이지&amp;nbsp;중&amp;nbsp;&lt;u&gt;화면에&amp;nbsp;표시되는&amp;nbsp;실제&amp;nbsp;내용&lt;/u&gt;에&amp;nbsp;해당하는&amp;nbsp;문서&amp;nbsp;파일&amp;nbsp;-&amp;gt;&amp;nbsp;HTML&amp;nbsp;파일 &lt;br /&gt;&lt;br /&gt;5.&amp;nbsp;웹&amp;nbsp;페이지&amp;nbsp;중&amp;nbsp;&lt;u&gt;표시&amp;nbsp;내용의&amp;nbsp;디자인&lt;/u&gt;을&amp;nbsp;정의하는&amp;nbsp;파일&amp;nbsp;-&amp;gt;&amp;nbsp;CSS&amp;nbsp;파일 &lt;br /&gt;&lt;br /&gt;6.&amp;nbsp;웹&amp;nbsp;페이지&amp;nbsp;중&amp;nbsp;&lt;u&gt;특정&amp;nbsp;기능&amp;nbsp;실행&lt;/u&gt;을&amp;nbsp;담당하는&amp;nbsp;스크립트&amp;nbsp;코드&amp;nbsp;파일&amp;nbsp;-&amp;gt;&amp;nbsp;자바스크립트 &lt;br /&gt;&lt;br /&gt;*&amp;nbsp;HTML:&amp;nbsp;웹&amp;nbsp;페이지의&amp;nbsp;&lt;b&gt;틀,&amp;nbsp;구조(화면에&amp;nbsp;표시되는&amp;nbsp;실제&amp;nbsp;내용)&lt;/b&gt; &lt;br /&gt;CSS:&amp;nbsp;웹&amp;nbsp;페이지의&amp;nbsp;&lt;b&gt;디자인(HTML&amp;nbsp;파일을&amp;nbsp;더&amp;nbsp;예쁘게&amp;nbsp;꾸며줌)&lt;/b&gt; &lt;br /&gt;자바스크립트:&amp;nbsp;웹&amp;nbsp;페이지의&amp;nbsp;&lt;b&gt;세부&amp;nbsp;기능(-&amp;gt;&amp;nbsp;웹&amp;nbsp;페이지에&amp;nbsp;구체적으로&amp;nbsp;일&amp;nbsp;시키기)&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;7.&amp;nbsp;프런트엔드는&amp;nbsp;&lt;b&gt;클라이언트&lt;/b&gt;&amp;nbsp;컴퓨터에서&amp;nbsp;실행,&amp;nbsp;백엔드는&amp;nbsp;&lt;b&gt;(웹)&amp;nbsp;서버&lt;/b&gt;&amp;nbsp;컴퓨터에서&amp;nbsp;실행 &lt;br /&gt;*&amp;nbsp;프런트엔드&amp;nbsp;코드:&amp;nbsp;HTML,&amp;nbsp;CSS,&amp;nbsp;자바스크립트&amp;nbsp;등으로&amp;nbsp;작성된&amp;nbsp;내용 &lt;br /&gt;-&amp;gt; 서버로부터 내용을 다운로드 받아 클라이언트 파일에서 실행(&lt;u&gt;사용자에게 직접 보이는 내용&lt;/u&gt;)&lt;br /&gt;클라이언트&amp;nbsp;컴퓨터에서&amp;nbsp;실행&amp;nbsp;결과를&amp;nbsp;확인하고&amp;nbsp;해당&amp;nbsp;코드를&amp;nbsp;변경할&amp;nbsp;수&amp;nbsp;있음 &lt;br /&gt;백엔드&amp;nbsp;코드:&amp;nbsp;자바,&amp;nbsp;PHP,&amp;nbsp;파이썬&amp;nbsp;등으로&amp;nbsp;작성된&amp;nbsp;내용 &lt;br /&gt;-&amp;gt;&amp;nbsp;클라이언트&amp;nbsp;요청을&amp;nbsp;받아&amp;nbsp;서버에서&amp;nbsp;실행한&amp;nbsp;뒤&amp;nbsp;그&amp;nbsp;결과만&amp;nbsp;클라이언트에게&amp;nbsp;전달 &lt;br /&gt;클라이언트 컴퓨터에서 코드를 확인하기 어려움(&lt;u&gt;사용자에게 파일 내용이 직접 보이지 않음&lt;/u&gt;)&lt;br /&gt;&lt;br /&gt;8.&amp;nbsp;서버&amp;nbsp;프로그램&amp;nbsp;실행&amp;nbsp;중인&amp;nbsp;컴퓨터의&amp;nbsp;&lt;u&gt;특정&amp;nbsp;파일&amp;nbsp;저장&amp;nbsp;위치&lt;/u&gt;를 찾아가기 위한 주소 -&amp;gt; UR&lt;u&gt;L&lt;/u&gt; 주소(*locator: 특정 위치)&lt;br /&gt;&lt;br /&gt;9.&amp;nbsp;클라이언트가&amp;nbsp;파일을&amp;nbsp;다운로드&amp;nbsp;받을&amp;nbsp;때&amp;nbsp;서버가&amp;nbsp;지정한&amp;nbsp;&lt;u&gt;식별자&lt;/u&gt;를 이용하도록 하는 주소 -&amp;gt; UR&lt;u&gt;I&lt;/u&gt; 주소(*identifier: 식별자)&lt;br /&gt;&lt;br /&gt;10. 클라이언트에서 서버로 POST 메서드를 이용해 데이터를 HTTP 프로토콜의 보디에 포함할 때, &lt;u&gt;사진이나 파일 업로드 등 데이터 전송&lt;/u&gt; 시 사용하는 콘텐트 형식 -&amp;gt; multipart/form-data &lt;br /&gt;*&amp;nbsp;application/x-www-form-urlencoded:&amp;nbsp;&lt;u&gt;기본&amp;nbsp;문자&amp;nbsp;형태의&amp;nbsp;데이터&lt;/u&gt;&amp;nbsp;전송&amp;nbsp;시&amp;nbsp;사용,&amp;nbsp;키-값(key-value)&amp;nbsp;쌍 &lt;br /&gt;application/json:&amp;nbsp;&lt;u&gt;자바스크립트&amp;nbsp;기반&amp;nbsp;JSON&amp;nbsp;형식&lt;/u&gt;&amp;nbsp;데이터&amp;nbsp;전송&amp;nbsp;시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 참고 자료: JSON이란? &lt;a href=&quot;https://www.json.org/json-ko.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.json.org/json-ko.html&lt;/a&gt; (JSON 개요, 260306 최종접속)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 이전 Do it 자바 기초 언어 스터디 기록을 다시 꺼내보았다. 아마 컬렉션 프레임워크 부분에서 나왔던 걸로 기억한다. Map 인터페이스가 JSON과 비슷한 속성-값 쌍 구조였나?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(헷갈리면 다시 확인해보자)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gyeonkangkim.tistory.com/25&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://gyeonkangkim.tistory.com/25&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1772846214275&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;(Do it! 자바, 4주차) JDK 기본 클래스와 컬렉션 프레임워크 (260126~260130)&quot; data-og-description=&quot;개요4주차는, 자바 개발 환경에서 기본적으로 제공되는 클래스와 함께프로그래밍 더 나아가 컴퓨터 과학의 기초가 된다는 자료 구조와 관련이 깊은 컬렉션 프레임워크가 등장한다.이제는 자바&quot; data-og-host=&quot;gyeonkangkim.tistory.com&quot; data-og-source-url=&quot;https://gyeonkangkim.tistory.com/25&quot; data-og-url=&quot;https://gyeonkangkim.tistory.com/25&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ciHHXy/dJMb9dHlZLQ/ceYk4ErDfcVdhM0GqTqkM1/img.png?width=800&amp;amp;height=1066&amp;amp;face=0_0_800_1066,https://scrap.kakaocdn.net/dn/bu68Xl/dJMb8Z3pcKf/9itgnjX1QNbkzclSGst9F0/img.png?width=800&amp;amp;height=1066&amp;amp;face=0_0_800_1066,https://scrap.kakaocdn.net/dn/bN2wEG/dJMb82eKY5r/5yDY9W4OTyuemeUnJKHaJ1/img.png?width=3024&amp;amp;height=4032&amp;amp;face=0_0_3024_4032&quot;&gt;&lt;a href=&quot;https://gyeonkangkim.tistory.com/25&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://gyeonkangkim.tistory.com/25&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ciHHXy/dJMb9dHlZLQ/ceYk4ErDfcVdhM0GqTqkM1/img.png?width=800&amp;amp;height=1066&amp;amp;face=0_0_800_1066,https://scrap.kakaocdn.net/dn/bu68Xl/dJMb8Z3pcKf/9itgnjX1QNbkzclSGst9F0/img.png?width=800&amp;amp;height=1066&amp;amp;face=0_0_800_1066,https://scrap.kakaocdn.net/dn/bN2wEG/dJMb82eKY5r/5yDY9W4OTyuemeUnJKHaJ1/img.png?width=3024&amp;amp;height=4032&amp;amp;face=0_0_3024_4032');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;(Do it! 자바, 4주차) JDK 기본 클래스와 컬렉션 프레임워크 (260126~260130)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;개요4주차는, 자바 개발 환경에서 기본적으로 제공되는 클래스와 함께프로그래밍 더 나아가 컴퓨터 과학의 기초가 된다는 자료 구조와 관련이 깊은 컬렉션 프레임워크가 등장한다.이제는 자바&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;gyeonkangkim.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;한 주를 마치며&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 1주차가 누구나 즐길 수 있는 달콤한 맛으로 시작해 극상의 매운맛으로 끝났다면, 2주차는 처음부터 강력한 매운맛을 선사하면서도 후반에는 매운맛 먹느라 고생했다며 적당히 쿨피스도 준 느낌이었다(특히 6장 문제풀이와 7장 TCP 프로토콜 부분이 많이 매웠다). &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;아무래도 말미에 웹 서비스 같이 비교적 친숙하면서 관심있던 개념이 등장해서가 아닐까 싶다. 웹 분야는 내 목표인 일본 IT 업계 취업에도 적지 않게 관련이 있다 보니 더 흥미있게 공부할 수 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;역시 사람은 자신의 목표와 관련된 지식을 배울 때 더욱 힘이 솟는 존재인가보다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 네트워크는 역시 프로그래밍 언어에 비해 좀 더 친숙하게 다가온다. 아무리 AI나 바이브 코딩 시대가 도래한다고 한들 누구나 자바나 C 언어로 프로그램을 짤 수 있는 건 아니지만, 최소한 집에 와이파이 공유기는 하나씩 두고 쓰지 않는가. 즉 네트워크는 컴퓨터를 잘 모르는 사람도 일상에서 자주 접할 수 있는 분야인 것이다. 그래서일까.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;개념이나 용어가 다소 어렵긴 해도 일상 속 문제를 퀘스트 깨듯 해결한다고 생각하니 나름 재미있게 공부할 수 있는 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용한 학습 자료&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot;&gt;https://product.kyobobook.co.kr/detail/S000213766983&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1772775130339&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Do it! IT 서비스 이해를 위한 네트워크 기초 | 심준보 - 교보문고&quot; data-og-description=&quot;Do it! IT 서비스 이해를 위한 네트워크 기초 | 개발자에게 필요한 네트워크의 기초부터 응용까지 그림으로 이해하고 실습으로 체험하며 배운다!개발을 하다가 네트워크 지식의 부족함을 느꼈다&quot; data-og-host=&quot;product.kyobobook.co.kr&quot; data-og-source-url=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot; data-og-url=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bKUTNY/dJMb82eKU14/TkZ2y29KfmbgF3X6IO769K/img.jpg?width=458&amp;amp;height=626&amp;amp;face=0_0_458_626,https://scrap.kakaocdn.net/dn/bhUMIu/dJMb8Xkdfcm/KS4ZRaGK1A1WjJYKZv1Pk1/img.jpg?width=458&amp;amp;height=626&amp;amp;face=0_0_458_626,https://scrap.kakaocdn.net/dn/hv9Yv/dJMb8Qej42b/l1k0QeTG7utuNFj4ByB35k/img.jpg?width=814&amp;amp;height=8010&amp;amp;face=0_0_814_8010&quot;&gt;&lt;a href=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bKUTNY/dJMb82eKU14/TkZ2y29KfmbgF3X6IO769K/img.jpg?width=458&amp;amp;height=626&amp;amp;face=0_0_458_626,https://scrap.kakaocdn.net/dn/bhUMIu/dJMb8Xkdfcm/KS4ZRaGK1A1WjJYKZv1Pk1/img.jpg?width=458&amp;amp;height=626&amp;amp;face=0_0_458_626,https://scrap.kakaocdn.net/dn/hv9Yv/dJMb8Qej42b/l1k0QeTG7utuNFj4ByB35k/img.jpg?width=814&amp;amp;height=8010&amp;amp;face=0_0_814_8010');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Do it! IT 서비스 이해를 위한 네트워크 기초 | 심준보 - 교보문고&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Do it! IT 서비스 이해를 위한 네트워크 기초 | 개발자에게 필요한 네트워크의 기초부터 응용까지 그림으로 이해하고 실습으로 체험하며 배운다!개발을 하다가 네트워크 지식의 부족함을 느꼈다&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;product.kyobobook.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(밀리의 서재에서 이용 중)&lt;/p&gt;</description>
      <category>2026/Do it 네트워크 스터디(2026.02.23~)</category>
      <author>뷔구룽</author>
      <guid isPermaLink="true">https://gyeonkangkim.tistory.com/35</guid>
      <comments>https://gyeonkangkim.tistory.com/35#entry35comment</comments>
      <pubDate>Mon, 2 Mar 2026 15:56:33 +0900</pubDate>
    </item>
    <item>
      <title>(Do it 네트워크, 1주차) 260223~260227</title>
      <link>https://gyeonkangkim.tistory.com/34</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;개요(장문 주의)&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;대략 일주일 만에 다시 Do it 스터디! 그런데 왜 하필 네트워크?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Do it 자바 기초 언어 스터디를 마친 게 2월 13일이니 약 일주일(정확히는 열흘)만에 다시 Do it 스터디에 참가하게 되었다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 스터디는 '취업 준비 스터디'를 콘셉트로 네트워크와 몇몇 언어 코딩테스트(이하 코테) 중 한 곳을 선택할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론부터 쓰자면 나는 &lt;b&gt;네트워크 스터디&lt;/b&gt;에 들어갔다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니 웬만큼 규모 있는 IT 업계에 취직하려면 코테가 우선 아니야? 왜 굳이 네트워크?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나도 그렇고 혹시라도 이 글을 읽는 분들도 이렇게 생각할지 모르겠다. 왜 하필 네트워크 스터디인가 하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 솔직히 말해서 아직 구체적으로 가고 싶은 기업이 없다. 정확히는 &lt;b&gt;한국에서 IT 업계 취업은 생각하지 않는다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 스터디 기록에도 적은 듯하지만 내 목표는 '일본 IT 업계 취업'이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 일본도 중견 이상 규모의 IT 테크 기업은 간단한 코테를 본다고는 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 아무래도 이 정도 기업에 가려면 관련 전공(아무래도 컴공 등 전공이나 일본 대학을 나온 경우가 유리해보임), 나이(일본 취업에서 나이는 어릴 수록 유리한 편), 프로젝트 경험 등 갖춰야 할 조건이 나름 까다로운 듯하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 나처럼 IT 비전공자, 일본에서 쌩신입(신졸)으로 들어가기에는 다소 많은 나이와 제약 사항(만 20대 후반, 이미 신졸로 타 업계에 취직한 경험 있음), 아직 어엿한 프로젝트를 할 만큼 충분하지 못한 실력이라는 &lt;s&gt;삼진 에바&lt;/s&gt; 조건을 지닌 사람에겐 현실적으로 무리라고 판단했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 현실적인 방법으로는 k-move 등 국비 과정을 이수한 뒤 (일부 블랙기업 우려도 있지만) 중소기업에 최대한 빠르게 들어가 경력을 시작하는 것일텐데, 이 정도 규모 기업은 거의 대.부.분 코테 같은 실력 평가보다는 일본어 능력, 인성(흔히 포텐셜, 잠재력이라고 함), 간단한 프로젝트 경험(기본적인 게시판과 웹 서비스 구현, 작은 팀플 등)으로 지원자를 평가할 가능성이 높다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;다시 말해, 국내 IT 취업을 목표로 하는 다른 분들을 따라서 급하게 코테 준비를 할 필요가 없겠다는 결론이다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 목표라면 차라리 하루 빨리 일본 IT 취업을 전문으로 교육하는 곳에 들어가 커리큘럼을 따르는 게 더 효율적이라고 생각했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 네트워크 영역은 IT 업계 실무에서 꼭 필요한 기본 컴퓨터 지식 중 하나이며, 정보처리기사 등 자격증 시험에서도 중요하게 다뤄진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스터디를 신청하기 전 사용할 교재( &lt;span style=&quot;color: #000000; text-align: center;&quot;&gt;Do it! IT 서비스 이해를 위한 네트워크 기초&lt;/span&gt; )를 밀리의 서재에서 미리 훑어봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목차를 보니 의외로 낯설지 않은 용어들이 눈에 띄었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;OSI 7계층, TCP, UDP, IP, 유니캐스트, 라우팅...&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 정보처리기사에 합격하셨거나 공부 중인 분들은 눈치채셨겠지만 4과목 중 네트워크 영역에서 중요한 키워드들임을 알 수 있다. 특히 필기에서 출제 확률이 매우 높은.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교재 앞부분에 저자 분 머리말에서도 '&lt;u&gt;네트워크 지식은 개발자 취업과 실무에서 중요함&lt;/u&gt;'이 강조된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시험 준비를 위한 서적으로 공부해도 합격에는 충분하겠지만, 보다 쉽게 네트워크를 이해할 수 있다면 자격증 시험을 넘어 훗날 취업 후 실무에서도 많은 도움이 될 것이라고 판단했다. (+순전히 내 호기심을 충족하기 위함도 있지만)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 역시 내 성향에는 어느 정도 구체적이고 소소한 커리큘럼(방향성)과 동기부여가 필요함을 깨달았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 굉장히 노파심이 많은 완벽주의자다. 인터넷에 떠돌아다니는 무분별한 정보에 쉽게 흔들리거나, 머릿속에 너무 많은 계획을 세워두고(마치 짝사랑 중인 여자와 실제 사귀지도 않는데 이미 2세 계획까지 세워두듯) 정작 시작하려고 하면 뇌가 철벽 치고 시작하기를 거부하는 성향이다. 이 탓인지 왕성한 지적 호기심과는 달리 혼자서 100% 독학을 힘들어하는 편이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 내게 지난번 Do it 자바 스터디 참여가 많은 도움이 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;책에서 제시하는 일정 계획표를 토대로 하루에 수십 페이지를 꾸준히 하도록 유도와 격려하는 시스템이, 혼자서 시작하기 힘들어하고 왜 공부 시작을 못하지 하며 걱정과 자책만 쌓는 내 성향을 보완해줌&lt;/b&gt;을 느꼈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거기에 스터디를 무사히 완주하면 출판사에서 감사하게도 무료로 도서 한 권을 보내주시거나 서점에 서적 리뷰를 작성하고 인증하면 소소한 기프티콘을 선물해주시는 동기부여 장치도 공부에 큰 힘이 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조금 과장해서 말하자면 &lt;u&gt;3~6주 동안 2~3만원 어치의 책 한 권에 소소하게 용돈도 벌 수 있는 부업을 한다&lt;/u&gt;고 뇌를 속일 수 있었다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 생각하니 한 주 동안 꼭 매일 하지는 못해도 그 주 안에는 정해진 분량을 모두 공부해 인증하겠다는 강한 동기가 생겼고, 그렇게 틈틈이 공부하며 아무것도 몷랐던 자바 기초를 그래도 간단하게나마 설명할 수 있을 정도로 이해할 수 있게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거기에 덤으로 스터디를 무사히 완주한 덕에, 출판사 도서 중 관심이 있었던 C언어 책 한 권을 선물 받아 현재 배송을 기다리고 있다. 감사합니다 이지스퍼블리싱!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 (노파심 많은 성격답게) '개발자는 결국 스스로 부족한 부분을 찾아 공부할 줄 알아야 하는데 너무 구체적인 커리큘럼만 따르려고 하면 나중에 힘들어지지 않을까?'하고 또 걱정이 들기도 한다. 하지만 &lt;b&gt;일단 아무것도 안하는 것보다는 사소한 일이라도 시작하는 게 중요&lt;/b&gt;하니까.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 개인적인 이유이면서 나름대로 미래를 고민한 끝에 이번 주부터 네트워크 스터디에서 다시 달려보려고 한다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래부터는 본격적으로 1주차 공부 기록을 써 내려가보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1주차 공부 기록&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1장. 네트워크 기초&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20260223_153420279.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O3UqO/dJMcaiPQJpN/vpXMaOafOOAQ4zwCVHqqu0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O3UqO/dJMcaiPQJpN/vpXMaOafOOAQ4zwCVHqqu0/img.jpg&quot; data-alt=&quot;1주차 공부 인증&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O3UqO/dJMcaiPQJpN/vpXMaOafOOAQ4zwCVHqqu0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO3UqO%2FdJMcaiPQJpN%2FvpXMaOafOOAQ4zwCVHqqu0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;742&quot; height=&quot;989&quot; data-filename=&quot;KakaoTalk_20260223_153420279.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1주차 공부 인증&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 주의 시작은 공부 인증부터&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1047&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lYxxG/dJMcachQPVO/krwvabyUGv1msXj7CDtNL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lYxxG/dJMcachQPVO/krwvabyUGv1msXj7CDtNL0/img.png&quot; data-alt=&quot;1장 실습 1. 개인 노트북 와이파이 통신 내용(패킷)과 프로토콜 종류를 와이어샤크로 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lYxxG/dJMcachQPVO/krwvabyUGv1msXj7CDtNL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlYxxG%2FdJMcachQPVO%2FkrwvabyUGv1msXj7CDtNL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1047&quot; height=&quot;720&quot; data-origin-width=&quot;1047&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1장 실습 1. 개인 노트북 와이파이 통신 내용(패킷)과 프로토콜 종류를 와이어샤크로 확인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1051&quot; data-origin-height=&quot;721&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/efC6pj/dJMcah4wTLi/rFoKoVyDi5Uj4KZdAP61Pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/efC6pj/dJMcah4wTLi/rFoKoVyDi5Uj4KZdAP61Pk/img.png&quot; data-alt=&quot;1장 실습 2. 웹 브라우저로 몇몇 사이트에 접속하는 동안 잡히는 패킷 수가 계속 늘어남을 알 수 있었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/efC6pj/dJMcah4wTLi/rFoKoVyDi5Uj4KZdAP61Pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FefC6pj%2FdJMcah4wTLi%2FrFoKoVyDi5Uj4KZdAP61Pk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1051&quot; height=&quot;721&quot; data-origin-width=&quot;1051&quot; data-origin-height=&quot;721&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1장 실습 2. 웹 브라우저로 몇몇 사이트에 접속하는 동안 잡히는 패킷 수가 계속 늘어남을 알 수 있었다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(1장 되새김 문제 풀이)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인터넷&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 세상에 존재하는 수많은 통신망 중 &lt;b&gt;가장 규모가 큰 네트워크&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. LAN&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 집, 사무실 등 특정 장소에서 &lt;b&gt;가까운 곳에 있는 컴퓨터와 네트워크 장비 등을 연결한 네트워크&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cf) WAN: 멀리 떨어져 있는 광범위 지역을 연결하는 네트워크 단위. 하나 이상의 수많은 개별 LAN이 하나로 합쳐진 단위로 이해하면 쉬움. 대표적으로 전 세계에서 가장 큰 WAN 단위인 인터넷.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 프로토콜&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 네트워크에서 데이터를 주고받을 때 &lt;b&gt;여러 주소 작성에 사용하는 '특정 양식&lt;/b&gt;'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 우체국에서 편지나 소포를 부칠 때 정해진 양식의 송장에 올바른 주소를 적어 맡기는 과정과 비슷&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 웹 서비스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 흔히 &lt;b&gt;웹&lt;/b&gt;이라고도 여겨지는 개념으로, 인터넷 등 네트워크 통신망으로 HTML, CSS, 자바스크립트 등 웹 페이지 파일과 멀티미디어 등 &lt;b&gt;웹 페이지 관련 파일을 내려받아 브라우저에 바로 표시&lt;/b&gt;하도록 하는 서비스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 유니캐스트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; &lt;b&gt;특정 컴퓨터 1대만을 대상으로 데이터를 전송&lt;/b&gt;하는, 가장 일반적인 네트워크 통신 양식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* unicast의 접두어 uni-는 영어의 one(하나, 단일)이라는 뜻&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고) 네트워크에서 데이터를 주고받는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 유니캐스트(unicast): 특정 컴퓨터 1대만(uni- == 영어의 one) 대상으로. 가장 일반적인 네트워크 통신 방식&lt;br /&gt;- 멀티캐스트(multicast): 같은 네트워크 내 특정 컴퓨터 여러 대(multi)를 대상으로. 특수한 케이스&lt;br /&gt;- 브로드캐스트(broadcast): 같은 네트워크 내 모든 컴퓨터(broad: 광범위하게)를 대상으로. 특정 대상을 지정할 수 없을 때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2장. 네트워크 모델&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20260224_134654775.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dxFxBr/dJMcaadhWxj/pkga4RIeAgMkaABSUP9Xik/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dxFxBr/dJMcaadhWxj/pkga4RIeAgMkaABSUP9Xik/img.jpg&quot; data-alt=&quot;대표적인 네트워크 모델인 TCP/IP 모델과 OSI 7계층 모델을 비교 정리한 표(악필 주의)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dxFxBr/dJMcaadhWxj/pkga4RIeAgMkaABSUP9Xik/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdxFxBr%2FdJMcaadhWxj%2Fpkga4RIeAgMkaABSUP9Xik%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot; data-filename=&quot;KakaoTalk_20260224_134654775.jpg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;대표적인 네트워크 모델인 TCP/IP 모델과 OSI 7계층 모델을 비교 정리한 표(악필 주의)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2026-02-24 132606.png&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;586&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d28Mte/dJMcabcasRB/v2nEVgYp254HORRTIgni70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d28Mte/dJMcabcasRB/v2nEVgYp254HORRTIgni70/img.png&quot; data-alt=&quot;2장 실습. 와이어샤크를 이용해 직접 개인 와이파이의 패킷 하나를 분석. 패킷은 전송할 데이터 앞에, 용도에 맞는 프로토콜을 여러 개 붙어 포장된 형태이다. 실제로 데이터 앞에 TCP, IPv4, Ethernet 등 다수 프로토콜이 연결된 형태를 확인할 수 있었다. 이때 프로토콜은 상위 계층 것 앞에 하위 계층 것이 순서대로 붙는다. * TCP(OSI 4계층-전송), IPv4(3계층-네트워크), 이더넷(2계층-데이터 링크) 순&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d28Mte/dJMcabcasRB/v2nEVgYp254HORRTIgni70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd28Mte%2FdJMcabcasRB%2Fv2nEVgYp254HORRTIgni70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;981&quot; height=&quot;586&quot; data-filename=&quot;화면 캡처 2026-02-24 132606.png&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;586&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2장 실습. 와이어샤크를 이용해 직접 개인 와이파이의 패킷 하나를 분석. 패킷은 전송할 데이터 앞에, 용도에 맞는 프로토콜을 여러 개 붙어 포장된 형태이다. 실제로 데이터 앞에 TCP, IPv4, Ethernet 등 다수 프로토콜이 연결된 형태를 확인할 수 있었다. 이때 프로토콜은 상위 계층 것 앞에 하위 계층 것이 순서대로 붙는다. * TCP(OSI 4계층-전송), IPv4(3계층-네트워크), 이더넷(2계층-데이터 링크) 순&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(2장 되새김 문제 풀이)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. TCP/IP 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; &lt;b&gt;실제 인터넷에서 통신하는 방식을 그대로 표현&lt;/b&gt;한 네트워크 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2, OSI 7계층 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; &lt;b&gt;기존 TCP/IP를 좀 더 세분화해, 국제 표준화&lt;/b&gt;를 목적으로 만든 이론적 네트워크 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 물리 계층(OSI 1계층)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 랜카드와 랜선 따위를 사용해 &lt;b&gt;물리적인 전기 신호(비트)&lt;/b&gt;를 전송&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 데이터 링크 계층(OSI 2계층)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 데이터 전송 시 &lt;b&gt;같은 LAN에 있는 장치를 추적&lt;/b&gt;하는 역할&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 네트워크 계층(OSI 3계층)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 데이터 전송 목적지를 찾아가기 위한 &lt;b&gt;최적의 경로를 찾는(라우팅)&lt;/b&gt; 역할&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 전송 계층(OSI 4계층)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 찾아간 목적지의 &lt;b&gt;프로그램과 연결&lt;/b&gt;해 데이터 공유&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; TCP, UDP 프로토콜&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. 세션 계층(OSI 5계층)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 장치 간 &lt;b&gt;세션&lt;/b&gt; 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 세션: 네트워크가 연결된 상태&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 웹 페이지 로그인 후 장시간 지났을 때 &quot;세션이 만료되었습니다. 다시 로그인해 주세요.&quot;라고 알려주는 계층도 이쪽&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8. 표현 계층(OSI 6계층)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 전송할 데이터를 &lt;b&gt;구체적인 형태(그림 파일? 압축 파일?)&lt;/b&gt;로 표현&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; JPG, GIF 등 명확한 파일 확장자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9. 응용 계층(OSI 7계층)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 사용자 컴퓨터의 &lt;b&gt;프로그램 양식에 따라&lt;/b&gt; 데이터 공유&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 사용자가 지금 웹 브라우저를 쓰는지? 게임을 하는지? 카톡을 하는지?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10. 캡슐화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 데이터를 보내는 쪽에서 데이터에 여러 프로토콜(헤더)을 조합해 패킷을 만드는 과정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 보내는 쪽에서 &lt;b&gt;물건을 꼼꼼히 포장&lt;/b&gt;해 소포로 보내기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;11. 역캡슐화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 데이터를 받는 쪽에서 패킷의 낮은 계층부터 높은 계층의 프로토콜(헤더)를 차례로 확인하는 과정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 받는 쪽에서 소포를 겉포장부터 차근차근 &lt;b&gt;언박싱&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3장. 데이터 링크 계층&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2026-02-25 142438.png&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Hp5US/dJMcagkguUZ/1TdilbSdK2p3sYh0E2kqY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hp5US/dJMcagkguUZ/1TdilbSdK2p3sYh0E2kqY0/img.png&quot; data-alt=&quot;3장 실습 1. 명령 프롬프트에서 ipconfig /all을 실행하면 현재 연결된 네트워크의 자세한 정보를 확인할 수 있다. 이를 통해 확인한 개인 와이파이 정보. 물리적 주소(MAC 주소)의 앞 6자리(블록 영역)는 OUI로, 각 랜카드 제조사에 할당된 고유 번호라고 한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hp5US/dJMcagkguUZ/1TdilbSdK2p3sYh0E2kqY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHp5US%2FdJMcagkguUZ%2F1TdilbSdK2p3sYh0E2kqY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;972&quot; height=&quot;410&quot; data-filename=&quot;화면 캡처 2026-02-25 142438.png&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;3장 실습 1. 명령 프롬프트에서 ipconfig /all을 실행하면 현재 연결된 네트워크의 자세한 정보를 확인할 수 있다. 이를 통해 확인한 개인 와이파이 정보. 물리적 주소(MAC 주소)의 앞 6자리(블록 영역)는 OUI로, 각 랜카드 제조사에 할당된 고유 번호라고 한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2026-02-25 142902.png&quot; data-origin-width=&quot;777&quot; data-origin-height=&quot;572&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhBZx6/dJMcacoDRjE/2yWk3OQ8qCPj5CakKqNkcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhBZx6/dJMcacoDRjE/2yWk3OQ8qCPj5CakKqNkcK/img.png&quot; data-alt=&quot;3장 실습 2. 위에서 확인한 OUI를 검색해 사용 중인 랜카드의 제조사를 조회할 수도 있었다. 내가 사용중인 랜카드는 Liteon이라고 처음 들어본 대만 회사에서 제조했다고 한다. 책에서 소개한 사이트에서는 정보가 검색되지 않아 OUI를 직접 구글링해 찾은 사이트. (https://macaddress.io/macaddress/)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhBZx6/dJMcacoDRjE/2yWk3OQ8qCPj5CakKqNkcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhBZx6%2FdJMcacoDRjE%2F2yWk3OQ8qCPj5CakKqNkcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;777&quot; height=&quot;572&quot; data-filename=&quot;화면 캡처 2026-02-25 142902.png&quot; data-origin-width=&quot;777&quot; data-origin-height=&quot;572&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;3장 실습 2. 위에서 확인한 OUI를 검색해 사용 중인 랜카드의 제조사를 조회할 수도 있었다. 내가 사용중인 랜카드는 Liteon이라고 처음 들어본 대만 회사에서 제조했다고 한다. 책에서 소개한 사이트에서는 정보가 검색되지 않아 OUI를 직접 구글링해 찾은 사이트. (https://macaddress.io/macaddress/)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2026-02-25 145058.png&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;447&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btBGkz/dJMcajgW5Z5/qi8DsEgfJuBLZT5dR7bq61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btBGkz/dJMcajgW5Z5/qi8DsEgfJuBLZT5dR7bq61/img.png&quot; data-alt=&quot;3장 실습 3. 사용중인 랜카드의 Ethernet 프로토콜을 와이어샤크로 캡처해 직접 분석해볼 수 있었다. Destination은 목적지(최종 목적지는 아님) MAC 주소, Sourse는 출발지 즉 사용중인 랜카드의 MAC 주소, Type은 데이터를 패킷으로 캡슐화해 보낼 때 OSI 3계층(네트워크 계층)에서 사용한 프로토콜(대표적으로 ARP, IPv4)을 나타낸다고 한다. 여기서는 ARP가 사용되었구나.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btBGkz/dJMcajgW5Z5/qi8DsEgfJuBLZT5dR7bq61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtBGkz%2FdJMcajgW5Z5%2Fqi8DsEgfJuBLZT5dR7bq61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;966&quot; height=&quot;447&quot; data-filename=&quot;화면 캡처 2026-02-25 145058.png&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;447&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;3장 실습 3. 사용중인 랜카드의 Ethernet 프로토콜을 와이어샤크로 캡처해 직접 분석해볼 수 있었다. Destination은 목적지(최종 목적지는 아님) MAC 주소, Sourse는 출발지 즉 사용중인 랜카드의 MAC 주소, Type은 데이터를 패킷으로 캡슐화해 보낼 때 OSI 3계층(네트워크 계층)에서 사용한 프로토콜(대표적으로 ARP, IPv4)을 나타낸다고 한다. 여기서는 ARP가 사용되었구나.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(3장 되새김 문제 풀이)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. &lt;b&gt;스위칭&lt;/b&gt; &lt;br /&gt;-&amp;gt; 스위칭은 네트워크의 흐름을 관리하는 기능 &lt;br /&gt;&lt;br /&gt;2. &lt;b&gt;CRC(순환 중복 검사)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 패킷을 보낼 때 패킷 정보를 이용해 계산한 값을 함께 보내고, 받을 때 받은 정보로 계산한 값을 비교하는 오류 점검 방식&lt;br /&gt;&lt;br /&gt;3. &lt;b&gt;MAC 주소&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 데이터 링크 계층(OSI 2계층)에서 사용하는 주소. 네트워크 장치 포트에 랜선으로 연결된 컴퓨터가 갖는 고유 주소로, 데이터 링크 계층은 이 주소로 데이터를 전송할 컴퓨터가 연결된 포트를 구분&lt;br /&gt;&lt;br /&gt;4. 총 &lt;b&gt;6bytes&lt;/b&gt; &lt;br /&gt;-&amp;gt;&amp;nbsp;MAC&amp;nbsp;주소는&amp;nbsp;12자리의&amp;nbsp;16진수&amp;nbsp;숫자로&amp;nbsp;구성 &lt;br /&gt;16진수&amp;nbsp;한&amp;nbsp;자리&amp;nbsp;=&amp;nbsp;2진수&amp;nbsp;네&amp;nbsp;자리 &lt;br /&gt;2진수&amp;nbsp;한&amp;nbsp;자리가&amp;nbsp;1bit이므로&amp;nbsp;16진수&amp;nbsp;한&amp;nbsp;자리는&amp;nbsp;4bits &lt;br /&gt;MAC 주소는 16진수 12개이므로 길이는 &lt;b&gt;총 48bits = 6bytes&lt;/b&gt; &lt;br /&gt;&lt;u&gt;*&amp;nbsp;1bit&amp;nbsp;=&amp;nbsp;8bytes(8자리&amp;nbsp;바이트)&lt;/u&gt; &lt;br /&gt;&lt;br /&gt;5.&amp;nbsp;MAC&amp;nbsp;주소&amp;nbsp;표현&amp;nbsp;방식&amp;nbsp;2가지 &lt;br /&gt;1)&amp;nbsp;콜론&amp;nbsp;활용&amp;nbsp;16진수&amp;nbsp;표기&amp;nbsp;-&amp;gt;&amp;nbsp;B8:1E:A4:68:E4:9D &lt;br /&gt;2)&amp;nbsp;하이픈&amp;nbsp;활용&amp;nbsp;16진수&amp;nbsp;표기&amp;nbsp;-&amp;gt;&amp;nbsp;B8-1E-A4-68-E4-9D &lt;br /&gt;&lt;br /&gt;6. MAC 주소의 앞 3바이트(6자리)의 의미: &lt;b&gt;OUI&lt;/b&gt; &lt;br /&gt;-&amp;gt;&amp;nbsp;OUI는&amp;nbsp;각&amp;nbsp;랜카드&amp;nbsp;제조사마다&amp;nbsp;고유하게&amp;nbsp;할당되는&amp;nbsp;번호 &lt;br /&gt;&lt;br /&gt;7.&amp;nbsp;MAC&amp;nbsp;주소를&amp;nbsp;확인할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;명령&amp;nbsp;프롬프트의&amp;nbsp;명령어 &lt;br /&gt;-&amp;gt; &lt;b&gt;ipconfig /all&lt;/b&gt; (위 3장 실습 1 사진 참고)&lt;br /&gt;&lt;br /&gt;8.&amp;nbsp;랜선으로&amp;nbsp;전기&amp;nbsp;신호를&amp;nbsp;주고받을&amp;nbsp;때&amp;nbsp;어디서부터&amp;nbsp;Ethernet&amp;nbsp;프로토콜이&amp;nbsp;시작되는지&amp;nbsp;알려주는&amp;nbsp;기능:&amp;nbsp;&lt;b&gt;프리엠블(Preamble)&lt;/b&gt; &lt;br /&gt;-&amp;gt;&amp;nbsp;프리엠블:&amp;nbsp;전송의&amp;nbsp;동기와와&amp;nbsp;시작을&amp;nbsp;알리기&amp;nbsp;위해&amp;nbsp;프레임(데이터&amp;nbsp;전송&amp;nbsp;단위?&amp;nbsp;데이터&amp;nbsp;운반체)&amp;nbsp;단위별로&amp;nbsp;각&amp;nbsp;프레임&amp;nbsp;맨&amp;nbsp;앞에&amp;nbsp;붙이는&amp;nbsp;영역 &lt;br /&gt;&lt;br /&gt;9.&amp;nbsp;Ethernet&amp;nbsp;프로토콜&amp;nbsp;길이:&amp;nbsp;&lt;b&gt;14bytes&lt;/b&gt; &lt;br /&gt;=&amp;nbsp;목적지&amp;nbsp;MAC&amp;nbsp;주소(6)&amp;nbsp;+&amp;nbsp;출발지&amp;nbsp;MAC&amp;nbsp;주소(6)&amp;nbsp;+&amp;nbsp;상위&amp;nbsp;프로토콜의&amp;nbsp;유형(2) &lt;br /&gt;&lt;br /&gt;10.&amp;nbsp;Ethernet&amp;nbsp;프로토콜&amp;nbsp;구성:&amp;nbsp;&lt;b&gt;목적지&amp;nbsp;MAC&amp;nbsp;주소,&amp;nbsp;출발지&amp;nbsp;MAC&amp;nbsp;주소,&amp;nbsp;상위&amp;nbsp;프로토콜의&amp;nbsp;유형&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;11.&amp;nbsp;Ethernet&amp;nbsp;프로토콜&amp;nbsp;중&amp;nbsp;상위&amp;nbsp;프로토콜의&amp;nbsp;종류와&amp;nbsp;각&amp;nbsp;표기 &lt;br /&gt;-&amp;gt;&amp;nbsp;상위&amp;nbsp;프로토콜의&amp;nbsp;유형:&amp;nbsp;데이터&amp;nbsp;캡슐화&amp;nbsp;시&amp;nbsp;사용한&amp;nbsp;3계층&amp;nbsp;프로토콜이&amp;nbsp;무엇인지&amp;nbsp;알려줌 &lt;br /&gt;대표적인&amp;nbsp;프로토콜로&amp;nbsp;ARP와&amp;nbsp;IPv4가&amp;nbsp;있으며&amp;nbsp;표기는&amp;nbsp;아래와&amp;nbsp;같음 &lt;br /&gt;&lt;b&gt;ARP:&amp;nbsp;0x0806 &lt;/b&gt;&lt;br /&gt;&lt;b&gt;IPv4:&amp;nbsp;0x0800&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4장. 네트워크 계층&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 네트워크 계층의 주요 개념이 IP 주소인 만큼 이쪽 비중이 특히 높았다. 앞장과 비교해 공부할 양이 많아 빡센 부분이었지만, 정보처리기사 필기 준비 중에 봤던 용어가 대부분이라 다행히 그리 낯설지도 않았다(IPv4, IPv6, 서브넷 마스크, 서브네팅, 네트워크 ID, 브로드캐스트 주소 등). 4장은 100% 새로 배운다기보다는 &lt;u&gt;70% 복습에 30% 새로운 개념 공부(시험용으로 외운 지식을 흐름으로 다시 정리한 것 포함)&lt;/u&gt; 느낌이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 되새김 문제 중 IP 주소의 네트워크 대역과 브로드캐스트 주소, 사용 가능한 주소 범위를 구하라는 문제가 있다. 이쪽은 &lt;u&gt;정보처리기사 기출 문제 중 '서브네팅' 계산식 유형&lt;/u&gt;과 꽤 비슷했다. 혹시 정보처리기사 시험 준비하시는 분들은 해당 문제들을 꼼꼼히 풀어보면 도움 많이 될 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 실습 사진은 못 남겼지만, 3장에서도 활용한 명령 프롬프트의 ipconfig /all 명령어와, 제어판(ncpa.cpl)을 활용해 내 컴퓨터의 IP 주소 정보를 확인하고 직접 주소를 바꿔볼 수 있었다. 주소를 바꾸는 중간에 와이파이 연결이 끊겨 당황하기도 했지만 그래도 바꾼 IP 주소로도 인터넷 연결이 정상적으로 이루어짐을 확인할 수 있었다. 잠깐이나마 네트워크 엔지니어가 돼 본 느낌이라 신선했다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(4장 되새김 문제 풀이)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&amp;nbsp;OSI&amp;nbsp;3계층에서&amp;nbsp;멀리&amp;nbsp;떨어진&amp;nbsp;네트워크&amp;nbsp;대역을&amp;nbsp;찾아가기&amp;nbsp;위해&amp;nbsp;패킷&amp;nbsp;경로를&amp;nbsp;결정하고&amp;nbsp;전달하는&amp;nbsp;과정&amp;nbsp;-&amp;gt;&amp;nbsp;&lt;b&gt;라우팅&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;라우팅&amp;nbsp;정보는&amp;nbsp;최종&amp;nbsp;목적지까지&amp;nbsp;가는&amp;nbsp;경로를&amp;nbsp;모두&amp;nbsp;포함하고&amp;nbsp;있다.&amp;nbsp;(O/X) &lt;br /&gt;-&amp;gt; (X) 라우터에는 일반적으로 &lt;b&gt;다음 목적지로 가는 기본 경로만 포함&lt;/b&gt;되어 있음. 가령 출발지인 한국 라우터와 최종 목적지인 미국 라우터가 직접적으로 연결되어 있지 않더라도 대략적으로 설정된 기본 경로를 활용, 미국 라우터 방향의 다른 국가 라우터를 다음 목적지로 설정해 패킷을 넘기는 방법으로 찾아갈 수 있음. &lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;3계층에서&amp;nbsp;사용하는&amp;nbsp;주소&amp;nbsp;-&amp;gt;&amp;nbsp;&lt;b&gt;IP&amp;nbsp;주소&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;4.&amp;nbsp;IP&amp;nbsp;주소의&amp;nbsp;길이&amp;nbsp;-&amp;gt;&amp;nbsp;일반적으로&amp;nbsp;많이&amp;nbsp;사용하는&amp;nbsp;IPv4&amp;nbsp;주소는&amp;nbsp;총&amp;nbsp;&lt;b&gt;4bytes(32bits)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 각 필드(옥텟)당 8비트 씩 총 4개 필드로 구성&lt;br /&gt;&lt;br /&gt;5.&amp;nbsp;IP&amp;nbsp;주소&amp;nbsp;표기&amp;nbsp;형식 &lt;br /&gt;-&amp;gt;&amp;nbsp;(예시)192.168.0.1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; .(점)을 기준으로 4개의 공간으로 나누고 각 공간에 10진수 표기&lt;br /&gt;&lt;br /&gt;6.&amp;nbsp;192.168.100.100&amp;nbsp;-&amp;gt;&amp;nbsp;어떤&amp;nbsp;클래스의&amp;nbsp;IP&amp;nbsp;주소? &lt;br /&gt;-&amp;gt;&amp;nbsp;&lt;b&gt;C&amp;nbsp;클래스(192.0.0.0~223.255.255.255)&lt;/b&gt; &lt;br /&gt;* 클래스풀 IP 구분&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A 클래스(0.0.0.0~127.255.255.255): 첫 번째 필드(옥텟)까지 네트워크 대역, 두 번째부터 LAN에 연결된 각 컴퓨터 구분&lt;br /&gt;B 클래스(128.0.0.0~191.255.255.255): 두 번째 필드까지 네트워크 대역, 세 번째부터 각 컴퓨터 구분&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C 클래스(192.0.0.0~223.255.255.255): 세 번째 필드까지 네트워크 대역, 네 번째가 각 컴퓨터 구분&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;D, E 클래스도 있지만 일반 용도로는 잘 사용되지 않는다고 함&lt;br /&gt;&lt;br /&gt;7.&amp;nbsp;IP&amp;nbsp;주소&amp;nbsp;192.168.100.100/24&amp;nbsp;-&amp;gt;&amp;nbsp;해당&amp;nbsp;컴퓨터의&amp;nbsp;LAN&amp;nbsp;네트워크&amp;nbsp;대역?&amp;nbsp;&lt;b&gt;192.168.100.0&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;네트워크 대역은 각 LAN을 구분하는 주소&lt;/u&gt;로, LAN에 연결된 컴퓨터를 실제로 구분하는 주소인 호스트 주소와 차이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;192.168.100.100/24의 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- C 클래스에 속하는 주소로, 세 번째 필드(옥텟)까지가 네트워크 대역&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 나머지 네 번째 필드로 LAN에 연결된 각 컴퓨터를 구분&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 따라서 네트워크 대역은 192.168.100.0, 호스트 주소는 192.168.100.100&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;8. IP 주소 192.168.100.100/24 -&amp;gt; 해당 컴퓨터가 브로드캐스트로 통신하려면 어떤 주소로?&lt;br /&gt;192.168.100.255(-&amp;gt; &lt;b&gt;브로드캐스트 주소&lt;/b&gt; 구하라는 문제)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 브로드캐스트 주소 = 사용 가능한 IP 주소 범위 중 가장 마지막 주솟값&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 192.168.100.100이 속하는 대역의 모든 주소 범위는 (앞 생략).0 ~ (앞 생략).255&lt;br /&gt;&lt;br /&gt;9. IP 주소 192.168.100.100/24 -&amp;gt; 해당 컴퓨터의 LAN 네트워크 대역에서 사용 가능한 주소 범위?&lt;br /&gt;&lt;b&gt;192.168.100.1&amp;nbsp;~&amp;nbsp;192.168.100.254&lt;/b&gt; &lt;br /&gt;(&lt;u&gt;해당 대역의 전체 주소에서 맨 앞 네트워크 ID와 맨 뒤 브로드캐스트 주소를 제외한 범위&lt;/u&gt;) &lt;br /&gt;&lt;br /&gt;10.&amp;nbsp;나&amp;nbsp;자신을&amp;nbsp;뜻하는&amp;nbsp;&lt;b&gt;로컬호스트&amp;nbsp;주소&lt;/b&gt;는? -&amp;gt; &lt;b&gt;127.0.0.1(=루프백 주소)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;11. 윈도우 cmd에서 IP 주소 확인할 수 있는 명령어? &lt;b&gt;ipconfig /all&lt;/b&gt;(앞선 3장의 MAC 주소 확인 방법과 같다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;5장. ARP 프로토콜&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2026-02-27 140458.png&quot; data-origin-width=&quot;1227&quot; data-origin-height=&quot;737&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfURzy/dJMcagdxXYY/Nv844Ul71PZ5wRBJHTN7Y0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfURzy/dJMcagdxXYY/Nv844Ul71PZ5wRBJHTN7Y0/img.png&quot; data-alt=&quot;5장 실습 1. ARP 요청 프로토콜 캡처해보기. 밑줄 친 Opcode는 프로토콜의 오퍼레이션 코드를 나타내며 1은 ARP 요청 프로토콜임을 나타내는 값이다. Target MAC address는 목적지의 MAC 주소인데, 요청 프로토콜의 경우 같은 네트워크의 모든 컴퓨터로 보내지므로(브로드캐스트) 특정 장치가 아닌 임의의 MAC 주소가 써 있음을 알 수 있었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfURzy/dJMcagdxXYY/Nv844Ul71PZ5wRBJHTN7Y0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfURzy%2FdJMcagdxXYY%2FNv844Ul71PZ5wRBJHTN7Y0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1227&quot; height=&quot;737&quot; data-filename=&quot;화면 캡처 2026-02-27 140458.png&quot; data-origin-width=&quot;1227&quot; data-origin-height=&quot;737&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;5장 실습 1. ARP 요청 프로토콜 캡처해보기. 밑줄 친 Opcode는 프로토콜의 오퍼레이션 코드를 나타내며 1은 ARP 요청 프로토콜임을 나타내는 값이다. Target MAC address는 목적지의 MAC 주소인데, 요청 프로토콜의 경우 같은 네트워크의 모든 컴퓨터로 보내지므로(브로드캐스트) 특정 장치가 아닌 임의의 MAC 주소가 써 있음을 알 수 있었다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2026-02-27 140932.png&quot; data-origin-width=&quot;1221&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bx9Yy2/dJMcahcqA5b/QT8LiIP13As6lFJFWxTDE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bx9Yy2/dJMcahcqA5b/QT8LiIP13As6lFJFWxTDE1/img.png&quot; data-alt=&quot;5장 실습 2. ARP 응답 프로토콜 캡처. 위 실습 1과 달리 Opcode가 2번으로, 응답 프로토콜을 나타내는 값이다. 목적지 MAC 주소는 위에서 요청을 보낸 장치(아마 개인 와이파이 공유기)의 MAC 주소로 나와있다. 응답 프로토콜은 요청 프로토콜을 받은 컴퓨터가 자신의 MAC 주소로 답장하는 양식이므로, 요청 프로토콜과 달리 받는 쪽이 요청을 보낸 컴퓨터 1대로 한정된다(유니캐스트).&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bx9Yy2/dJMcahcqA5b/QT8LiIP13As6lFJFWxTDE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbx9Yy2%2FdJMcahcqA5b%2FQT8LiIP13As6lFJFWxTDE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1221&quot; height=&quot;732&quot; data-filename=&quot;화면 캡처 2026-02-27 140932.png&quot; data-origin-width=&quot;1221&quot; data-origin-height=&quot;732&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;5장 실습 2. ARP 응답 프로토콜 캡처. 위 실습 1과 달리 Opcode가 2번으로, 응답 프로토콜을 나타내는 값이다. 목적지 MAC 주소는 위에서 요청을 보낸 장치(아마 개인 와이파이 공유기)의 MAC 주소로 나와있다. 응답 프로토콜은 요청 프로토콜을 받은 컴퓨터가 자신의 MAC 주소로 답장하는 양식이므로, 요청 프로토콜과 달리 받는 쪽이 요청을 보낸 컴퓨터 1대로 한정된다(유니캐스트).&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2026-02-27 142101.png&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;271&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhhxcd/dJMcachUcNW/Tp5LL81SaFdwPPSUG5N9HK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhhxcd/dJMcachUcNW/Tp5LL81SaFdwPPSUG5N9HK/img.png&quot; data-alt=&quot;5장 실습 3. 윈도우 명령 프롬프트에서 arp -a 명령어를 입력해 컴퓨터가 알아낸 여러 장치의 MAC 주소를 확인할 수 있었다. 이렇게 컴퓨터가 요청과 응답 과정으로 얻어낸 MAC 주소를 임시로 저장해두는 테이블을 'ARP 캐시 테이블'이라고 한다. 사진 속 유형에서 동적은 ARP 요청 후 응답 프로토콜을 받아 캐시 테이블에 저장해둔 주소, 정적은 컴퓨터나 사용자가 수동으로 추가한 주소를 의미한다. 동적 주소는 일정 시간이 지나면 삭제되지만 정적 주소는 별도 삭제가 없는 한 계속 유지된다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhhxcd/dJMcachUcNW/Tp5LL81SaFdwPPSUG5N9HK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbhhxcd%2FdJMcachUcNW%2FTp5LL81SaFdwPPSUG5N9HK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;658&quot; height=&quot;271&quot; data-filename=&quot;화면 캡처 2026-02-27 142101.png&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;271&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;5장 실습 3. 윈도우 명령 프롬프트에서 arp -a 명령어를 입력해 컴퓨터가 알아낸 여러 장치의 MAC 주소를 확인할 수 있었다. 이렇게 컴퓨터가 요청과 응답 과정으로 얻어낸 MAC 주소를 임시로 저장해두는 테이블을 'ARP 캐시 테이블'이라고 한다. 사진 속 유형에서 동적은 ARP 요청 후 응답 프로토콜을 받아 캐시 테이블에 저장해둔 주소, 정적은 컴퓨터나 사용자가 수동으로 추가한 주소를 의미한다. 동적 주소는 일정 시간이 지나면 삭제되지만 정적 주소는 별도 삭제가 없는 한 계속 유지된다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(5장 되새김 문제 풀이) &lt;br /&gt;&lt;br /&gt;1.&amp;nbsp;ARP&amp;nbsp;프로토콜로&amp;nbsp;상대방으로부터&amp;nbsp;MAC&amp;nbsp;주소를&amp;nbsp;알아내고자&amp;nbsp;&lt;u&gt;요청&lt;/u&gt;&amp;nbsp;시,&amp;nbsp;ARP&amp;nbsp;프로토콜의&amp;nbsp;오퍼레이션&amp;nbsp;코드에&amp;nbsp;입력할&amp;nbsp;값은?&amp;nbsp;(0x000)&lt;b&gt;1&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;ARP&amp;nbsp;요청&amp;nbsp;프로토콜을&amp;nbsp;받아&amp;nbsp;MAC&amp;nbsp;주소를&amp;nbsp;알려주고자&amp;nbsp;할&amp;nbsp;때&amp;nbsp;&lt;u&gt;ARP&amp;nbsp;응답&amp;nbsp;프로토콜&lt;/u&gt;의&amp;nbsp;오퍼레이션&amp;nbsp;코드에&amp;nbsp;입력할&amp;nbsp;값은?&amp;nbsp;(0x000)&lt;b&gt;2&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;*&amp;nbsp;오퍼레이션&amp;nbsp;코드&amp;nbsp;1은&amp;nbsp;ARP&amp;nbsp;요청,&amp;nbsp;2는&amp;nbsp;ARP&amp;nbsp;응답&lt;/b&gt;&lt;/u&gt; &lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;&lt;u&gt;한&amp;nbsp;번&amp;nbsp;얻은&amp;nbsp;MAC&amp;nbsp;주소를&amp;nbsp;잠시&amp;nbsp;저장해두는&amp;nbsp;테이블&lt;/u&gt;로,&amp;nbsp;통신할&amp;nbsp;때마다&amp;nbsp;ARP&amp;nbsp;프로토콜로&amp;nbsp;MAC&amp;nbsp;주소를&amp;nbsp;알아내는&amp;nbsp;과정을&amp;nbsp;반복하지&amp;nbsp;않고자&amp;nbsp;사용하는&amp;nbsp;것&amp;nbsp;-&amp;gt;&amp;nbsp;&lt;b&gt;ARP&amp;nbsp;캐시&amp;nbsp;테이블&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;한 주 분량을 마치며&lt;b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 분명 네트워크도 조금 깊이 들어가니 복잡하고 어려운 분야인 건 맞는 듯하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼에도 기초 프로그래밍 언어 스터디 때와는 달리 &lt;b&gt;그리 부담스럽지 않은 책 분량과 간단한 실습 과정으로 자주 사용하는 컴퓨터와 인터넷을 기초부터 차근차근 배워간다 생각하고 접근할 수 있어 흥미로웠다&lt;/b&gt;. 코딩에 비해 비교적 장벽이 높지 않았다고 할까.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 정보처리기사 필기 준비 당시에는 생소한 네트워크 용어들을 일단 시험을 위해 반복적으로 외운 것에 지나지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 'IPv4는 32비트 4옥텟 구성이다', 'ARP는 IP 주소를 MAC 주소로 변환하는 것' 같이 일단 원리를 모르니 그냥 외우고 보자는 식으로 공부한 기억이 난다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이번 네트워크 스터디를 시작하며 &lt;b&gt;시험용에 지나지 않았던 지식 파편들을 자세한 원리와 함께 이해할 수 있는 흐름으로 바꿀 수 있었던 점&lt;/b&gt;이 좋았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 최소한 ARP가 왜 IP 주소를 MAC 주소로 변환하는 프로토콜인지(뭐 정확히는 변환이 아니라 서로 주소를 주고 받는 통신이지만) 왜 ARP가 사용되어야 하는지, 기출문제 풀이만으로는 막연하게 느껴지던 데이터 링크 계층의 역할이 구체적으로 어떤 건지 이해할 수 있게 되었으니.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용한 학습 자료&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://product.kyobobook.co.kr/detail/S000213766983&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1771828803631&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Do it! IT 서비스 이해를 위한 네트워크 기초 | 심준보 - 교보문고&quot; data-og-description=&quot;Do it! IT 서비스 이해를 위한 네트워크 기초 | 개발자에게 필요한 네트워크의 기초부터 응용까지 그림으로 이해하고 실습으로 체험하며 배운다!개발을 하다가 네트워크 지식의 부족함을 느꼈다&quot; data-og-host=&quot;product.kyobobook.co.kr&quot; data-og-source-url=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot; data-og-url=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/batmq0/dJMb87f3h7y/4Jf5ULsd2jUCTa9ppCkqCk/img.jpg?width=458&amp;amp;height=626&amp;amp;face=0_0_458_626,https://scrap.kakaocdn.net/dn/2JoQ2/dJMb9eTMwD6/JjX5uXj3kkF7b22KNHKTck/img.jpg?width=458&amp;amp;height=626&amp;amp;face=0_0_458_626,https://scrap.kakaocdn.net/dn/rWtdT/dJMb9b3OV8X/Mb48PaHHBRjl0PYjE2Y1W1/img.jpg?width=599&amp;amp;height=608&amp;amp;face=0_0_599_608&quot;&gt;&lt;a href=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://product.kyobobook.co.kr/detail/S000213766983&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/batmq0/dJMb87f3h7y/4Jf5ULsd2jUCTa9ppCkqCk/img.jpg?width=458&amp;amp;height=626&amp;amp;face=0_0_458_626,https://scrap.kakaocdn.net/dn/2JoQ2/dJMb9eTMwD6/JjX5uXj3kkF7b22KNHKTck/img.jpg?width=458&amp;amp;height=626&amp;amp;face=0_0_458_626,https://scrap.kakaocdn.net/dn/rWtdT/dJMb9b3OV8X/Mb48PaHHBRjl0PYjE2Y1W1/img.jpg?width=599&amp;amp;height=608&amp;amp;face=0_0_599_608');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Do it! IT 서비스 이해를 위한 네트워크 기초 | 심준보 - 교보문고&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Do it! IT 서비스 이해를 위한 네트워크 기초 | 개발자에게 필요한 네트워크의 기초부터 응용까지 그림으로 이해하고 실습으로 체험하며 배운다!개발을 하다가 네트워크 지식의 부족함을 느꼈다&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;product.kyobobook.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(밀리의 서재 전자책으로 열람)&lt;/p&gt;</description>
      <category>2026/Do it 네트워크 스터디(2026.02.23~)</category>
      <author>뷔구룽</author>
      <guid isPermaLink="true">https://gyeonkangkim.tistory.com/34</guid>
      <comments>https://gyeonkangkim.tistory.com/34#entry34comment</comments>
      <pubDate>Mon, 23 Feb 2026 12:34:43 +0900</pubDate>
    </item>
    <item>
      <title>(Do it! 자바, 6주차) 입출력 스트림과 스레드, 대망의 마지막 주! (260210~260213)</title>
      <link>https://gyeonkangkim.tistory.com/33</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;개요&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BY6hm/dJMcad1X7Is/910u6ZSb922eqK4BiSgBHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BY6hm/dJMcad1X7Is/910u6ZSb922eqK4BiSgBHk/img.png&quot; data-alt=&quot;이걸로 마지막 공부 인증. 고생 많았다 나 자신.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BY6hm/dJMcad1X7Is/910u6ZSb922eqK4BiSgBHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBY6hm%2FdJMcad1X7Is%2F910u6ZSb922eqK4BiSgBHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;689&quot; height=&quot;919&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이걸로 마지막 공부 인증. 고생 많았다 나 자신.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;드디어 Do it! 기초 언어 스터디, 자바 팀 일정도 마지막 한 주만 남았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 2월 8일, 약 한 달 동안 준비했던(중간에 집중이 안 되거나 딴생각하느라 허비한 시간도 있지만) 정보처리기사 필기는 무사히 합격했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 이번 자바 스터디만 마치면 설 연휴다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 주는 아쉽게도 지난 5주 간 공부한 만큼 꼼꼼하게는 하지 못할 수도 있겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 주 막바지 시험 준비 중 스트레스와 피로 누적으로 알레르기가 다시 올라왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다행히 시험 끝나고 한 이틀 일찍 자고 쉰 결과 상태가 꽤 좋아졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 피로가 다시 쌓여 알레르기가 또 언제 어떻게 올라올 지는 잘 모르겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 이번 주와 설 연휴는 컨디션 관리를 위해 어느 정도 일은 내려놓고 잘 자고 쉬는 데 집중할 계획이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 여기까지 최선을 다해 달려온 만큼, 일단 스터디는 완주(책 완독)에 의의를 두고 마무리짓겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사용한 학습 자료: 박은종, 2025, &amp;lt;Do it! 자바 프로그래밍 입문 [개정판]&amp;gt;, 이지스퍼블리싱.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot;&gt;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1770707708324&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;Do it! 자바 프로그래밍 입문 [개정판]
                                        | 박은종 저자
                    &quot; data-og-description=&quot;eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인 &quot; data-og-host=&quot;ebook-product.kyobobook.co.kr&quot; data-og-source-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; data-og-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bgPcWS/dJMb9kl8F5h/0E6ELsyYl7yYcjcIxOyuek/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/bA4pkU/dJMb85WO79a/nkMMj8VKX79GV8uh8VVjN0/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/Qjxbs/dJMb85vKJys/y3uuW3h5668mJ03QyUcvL1/img.jpg?width=2220&amp;amp;height=3035&amp;amp;face=0_0_2220_3035&quot;&gt;&lt;a href=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bgPcWS/dJMb9kl8F5h/0E6ELsyYl7yYcjcIxOyuek/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/bA4pkU/dJMb85WO79a/nkMMj8VKX79GV8uh8VVjN0/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/Qjxbs/dJMb85vKJys/y3uuW3h5668mJ03QyUcvL1/img.jpg?width=2220&amp;amp;height=3035&amp;amp;face=0_0_2220_3035');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Do it! 자바 프로그래밍 입문 [개정판] | 박은종 저자&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ebook-product.kyobobook.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;요약 정리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 주는 해당 진도 부분을 읽고 나름대로 요약해 md(마크다운) 파일로 정리해 두는 걸로 학습을 갈음하겠다(줄곧 흥미를 가지던 마크다운 활용 연습 겸).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 파일은 깃허브에 올려두며, 아래 링크에서 확인할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(15강: 자바 입출력)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026/commit/b6f853a98eb623597302398b1de5d4513f54f64c#diff-a986aa6af3b5433f425e349b4b736c59517ec6a578b7c8b242240c129da9262f&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/KimGyeonkang/DoitJava_Studying_2026/commit/b6f853a98eb623597302398b1de5d4513f54f64c#diff-a986aa6af3b5433f425e349b4b736c59517ec6a578b7c8b242240c129da9262f&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1770772968278&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Day28: 입출력 스트림 개념 정리_내용 보충 및 직렬화, 그 외 입출력 클래스 내용 추가 &amp;middot; KimGyeonkang/&quot; data-og-description=&quot;+ - 보조 스트림: InputStreamReader, OutputStreamWriter(이상 생성된 바이트 스트림-&amp;gt;문자로 변환), BufferedInputStream, BufferedOutputStream(이상 버퍼링 기능: 배열 제공으로 더 빠른 입출력 실행 보조, 한 바이트나&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026/commit/b6f853a98eb623597302398b1de5d4513f54f64c#diff-a986aa6af3b5433f425e349b4b736c59517ec6a578b7c8b242240c129da9262f&quot; data-og-url=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026/commit/b6f853a98eb623597302398b1de5d4513f54f64c&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bFf1Sn/dJMb9fZread/Z2a3VNcjyaK4fkK96TjDSk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/6lFym/dJMb8QL7T66/liZ2qXAA181RKGWcPGFDt0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026/commit/b6f853a98eb623597302398b1de5d4513f54f64c#diff-a986aa6af3b5433f425e349b4b736c59517ec6a578b7c8b242240c129da9262f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026/commit/b6f853a98eb623597302398b1de5d4513f54f64c#diff-a986aa6af3b5433f425e349b4b736c59517ec6a578b7c8b242240c129da9262f&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bFf1Sn/dJMb9fZread/Z2a3VNcjyaK4fkK96TjDSk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/6lFym/dJMb8QL7T66/liZ2qXAA181RKGWcPGFDt0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Day28: 입출력 스트림 개념 정리_내용 보충 및 직렬화, 그 외 입출력 클래스 내용 추가 &amp;middot; KimGyeonkang/&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;+ - 보조 스트림: InputStreamReader, OutputStreamWriter(이상 생성된 바이트 스트림-&amp;gt;문자로 변환), BufferedInputStream, BufferedOutputStream(이상 버퍼링 기능: 배열 제공으로 더 빠른 입출력 실행 보조, 한 바이트나&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(16장: 스레드)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026/commit/248c1b9bc34fa2d24dd151009b9cc0eadd4fe1cc&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/KimGyeonkang/DoitJava_Studying_2026/commit/248c1b9bc34fa2d24dd151009b9cc0eadd4fe1cc&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1770987716669&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Day29: 스레드 개념 정리-스레드, 멀티스레딩, 동기화, Thread 클래스와 주요 메서드 &amp;middot; KimGyeonkang/DoitJ&quot; data-og-description=&quot;+ 2) 선점형: 이미 CPU 공간을 할당받은 스레드를 운영체제가 강제로 쫓아내고 다른 작업 단위를 할당할 수 있음. 종류에는 우선순위 높은 스레드 우선 할당(우선순위 기반), 사용 시간을 일정하게&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026/commit/248c1b9bc34fa2d24dd151009b9cc0eadd4fe1cc&quot; data-og-url=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026/commit/248c1b9bc34fa2d24dd151009b9cc0eadd4fe1cc&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/buEUDq/dJMb9dHkdgQ/KlOWwyVnqUsa2bGh4DdZLk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bo8XTx/dJMb9dHkdgP/vBGIzndTImbAFcwkrbph0K/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026/commit/248c1b9bc34fa2d24dd151009b9cc0eadd4fe1cc&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026/commit/248c1b9bc34fa2d24dd151009b9cc0eadd4fe1cc&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/buEUDq/dJMb9dHkdgQ/KlOWwyVnqUsa2bGh4DdZLk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bo8XTx/dJMb9dHkdgP/vBGIzndTImbAFcwkrbph0K/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Day29: 스레드 개념 정리-스레드, 멀티스레딩, 동기화, Thread 클래스와 주요 메서드 &amp;middot; KimGyeonkang/DoitJ&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;+ 2) 선점형: 이미 CPU 공간을 할당받은 스레드를 운영체제가 강제로 쫓아내고 다른 작업 단위를 할당할 수 있음. 종류에는 우선순위 높은 스레드 우선 할당(우선순위 기반), 사용 시간을 일정하게&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;스터디를 마치는 소감&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2월 13일, 중간에 힘들고 어렵다는 생각도 많이 들었지만 결국 6주간의 스터디 일정을 모두 완주했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혼자서 책 한 권을 진득하게 떼 본 적이 거의 없어 더 감격스럽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 이 책만 완독했다고 당장 자바로 무언가를 만들거나 하기는 쉽지 않을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;그래도 최소한 '자바 아무것도 모름'에서 '아 그래도 이 개념 한 번은 들어봤다'로 업그레이드시킬 수 있어서 의미 있었다.&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 주에 K-Move를 진행하는 국비 교육원 상담을 다녀온 일이 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 단순히 프로그램과 커리큘럼에 대한 전반적인 상담을 받을 생각으로 갔지만, 교육원 측의 배려로 IT 강사님 한 분과 직접 이야기를 나눠볼 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거기서 간단하게나마 지금까지 공부한 부분을 말씀드리고 이번 자바 스터디에서 공부한 기본 문법에 대해 질문을 받아 간단히 설명해볼 수 있었다(간단한 예외 처리 문법으로 기억한다. try~catch~finally문을 시작으로 예외 처리의 종류를 간단히 물어보심. 아쉽게도 각 예외 처리 명칭에 대해서는 아직 잘 기억이 안 났지만)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강사님은 내 얘기를 듣고 &quot;그래도 혼자서 공부를 많이 하셨고 기본 문법에 대해서는 어느 정도 파악하고 계신 것 같다. 프로그램에 입학하면 충분히 우수한 학생으로 활약할 수 있을 것&quot;이라는 피드백을 주셨다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스터디를 진행하면서 정말 내가 잘 공부하고 있는 건가 반신반의할 때도 많았지만, 결국 스터디에서 꾸준히 책을 읽고 문법에 대해 고민해본 경험이 최소한 자바를 조금이라도 공부해봤다는 긍정적인 의견으로 돌아왔다고 생각한다! &lt;b&gt;코딩에 대해 아무것도 모르던 비전공자가 6주 동안 이 정도로 발전할 수 있었다는 점이 뿌듯하게 느껴진다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 어찌됐든 자바의 기본을 '그래도 접해본 사람'이 된 지금, 다음 공부 방향을 아래처럼 정해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 이번 주에 상담 다녀온 국비 교육원에 최대한 빠르게 입학해 일본 취업 준비 시작하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 최근 코딩맨이라는 분의 유튜브에서 들은 인상적인 말이다(내 기억을 토대로 약간 가공).&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;전공자도 아니고 학벌도 그닥이지만 조금이라도 시간과 열정이 남아있다면, 일단 당장 배울 수 있는 커리큘럼 좋은 곳에 들어가서 공부를 시작하세요.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 IT와 연이 없던 문돌이고 전국 30위? 40위?권인 수도권 국립대를 졸업했다. 하지만 나는 IT 업계로 일본 취업이라는 명확한 목표가 있고 그래도 아직은 20대 후반으로 젊다. 그래서 조금이라도 더 젊고 열정이 남아있을 때 바로 새로운 도전으로 발걸음을 옮기려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 실무(일본 기업)에서 요구하는 자바의 기초를 다시 생각해보고 조금 더 탄탄히 다져보기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 말한 교육원의 IT 강사님과 상담을 진행하며 흥미로운 이야기를 들었다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;- 일본 기업에서 보는 자바의 찐 기초는 변수와 기본 제어문(조건문, 반복문), 배열 등이다. 이외 클래스와 객체지향, 예외 처리 등 중급 문법도 있지만 우선 최소한 변수나 조건문, 반복문 등은 누군가에게 설명할 수 있을 정도로 숙지해야 한다.&lt;br /&gt;- 하지만 결국 실무에서 가장 요구되는 건 DB 연동과 CRUD 구현 등 가장 기초적인 게시판 만들기일 수 있다. 우선 기본적인 게시판과 댓글 기능은 구현해봐야 이를 응용해 하나의 웹 서비스를 만들 수 있다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 말을 듣고 그 동안의 공부 과정을 되돌아볼 수 있었다. 지엽적인 개념서만 딥다 판다고 자바의 기초를 온전히 습득할 수 있는 건 아니지 않았을까.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바에 대한 막연함을 걷어 나가려면 정말 최소한의 기초 중심으로 숙지한 뒤 직접 프로그램 하나를 만들면서 경험을 쌓아봐야겠다고 느꼈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 일단 부족해도 좋으니 스스로 게시판 하나는 만들어봐야 되려나. 여기에는 스프링 부트 같은 프레임워크 사용과 SQL 등 데이터베이스, 서비스 배포에 대한 이해가 추가로 동반되어야 할 지도 모르겠다. 더 고민해보고 실행이 필요하겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;탈도 많았고 시행착오도 고민도 많았던 6주였지만 &lt;/b&gt;&lt;b&gt;무사히 완주해서 고생많았다 나 자신!!!&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;무언가를 끝까지 해낸 이 경험 잊지 말고 앞으로도 내 페이스대로 하나하나 공부해나가자.&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실습 코드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/KimGyeonkang/DoitJava_Studying_2026&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1770707093369&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - KimGyeonkang/DoitJava_Studying_2026&quot; data-og-description=&quot;Contribute to KimGyeonkang/DoitJava_Studying_2026 development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026&quot; data-og-url=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jnCWc/dJMb9eTLvdC/6K93l9yzx0ZwaLYPNTQyS0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bm6MZJ/dJMb9iaMZX6/WilKDDN7ynYZTmkXmUU7zk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jnCWc/dJMb9eTLvdC/6K93l9yzx0ZwaLYPNTQyS0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bm6MZJ/dJMb9iaMZX6/WilKDDN7ynYZTmkXmUU7zk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - KimGyeonkang/DoitJava_Studying_2026&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to KimGyeonkang/DoitJava_Studying_2026 development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;</description>
      <category>2026/Do it Java 스터디(2026.01.~02.)</category>
      <author>뷔구룽</author>
      <guid isPermaLink="true">https://gyeonkangkim.tistory.com/33</guid>
      <comments>https://gyeonkangkim.tistory.com/33#entry33comment</comments>
      <pubDate>Tue, 10 Feb 2026 14:56:13 +0900</pubDate>
    </item>
    <item>
      <title>(Do it! 자바, 5주차-1) 14장 되새김 문제 풀이</title>
      <link>https://gyeonkangkim.tistory.com/32</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;사용한 학습 자료: 박은종, 2025, &amp;lt;Do it! 자바 프로그래밍 입문 [개정판]&amp;gt;, 이지스퍼블리싱.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot;&gt;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1770356049012&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;Do it! 자바 프로그래밍 입문 [개정판]
                                        | 박은종 저자
                    &quot; data-og-description=&quot;eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인 &quot; data-og-host=&quot;ebook-product.kyobobook.co.kr&quot; data-og-source-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; data-og-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fIqkB/dJMb8Weu59V/LuGGHuWkElVuHcZmJLkQ80/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/lCrAe/dJMb8VNqPmw/yeZmCLLyj7IpzN6d4VLfa0/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/FsoRs/dJMb8QL7u6Y/ARFGWm79yZFAnwA4mqeX60/img.jpg?width=2220&amp;amp;height=3035&amp;amp;face=0_0_2220_3035&quot;&gt;&lt;a href=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fIqkB/dJMb8Weu59V/LuGGHuWkElVuHcZmJLkQ80/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/lCrAe/dJMb8VNqPmw/yeZmCLLyj7IpzN6d4VLfa0/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/FsoRs/dJMb8QL7u6Y/ARFGWm79yZFAnwA4mqeX60/img.jpg?width=2220&amp;amp;height=3035&amp;amp;face=0_0_2220_3035');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Do it! 자바 프로그래밍 입문 [개정판] | 박은종 저자&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ebook-product.kyobobook.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;01. &lt;b&gt;Exception&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 모든 예외 클래스의 최상위&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;02. &lt;b&gt;finally&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; &lt;u&gt;try 블록을 수행하면 항상 수행&lt;/u&gt;되는 예약어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주로 불러온 파일을 닫거나 네트워크 리소스(자원)를 해제를 수행하고자 할 때 사용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;03. &lt;b&gt;throws&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; &lt;u&gt;예외를 직접 처리하지 않고 미룰 때&lt;/u&gt; 사용하는 예약어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;04. &lt;b&gt;throw&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; &lt;u&gt;사용자가 강제로 예외를 발생시킬 때&lt;/u&gt; 사용하는 예약어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 정의 예외 정의 시 특정 조건에 따라 직접 예외를 만들 때 사용 가능.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;05. 비밀번호 제약 조건 구현을 위한 사용자 예외 처리 코드&lt;/p&gt;
&lt;pre id=&quot;code_1770359783234&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; // 전략
 
 private String userPassword; // 비밀번호 값 변수 선언
 
 public String getUserPassword() {
        return userPassword;
    }
    // 비밀번호 제약 조건 예외 처리 구현
    public void setUserPassword(String userPassword) throws PwdFormatException {
        if (userPassword == null) {
            throw new PwdFormatException(&quot;비밀번호는 not null값이어야 함.&quot;);
        }
        else if (userPassword.length() &amp;lt; 5) {
            throw new PwdFormatException(&quot;비밀번호: 5지 이상&quot;);
        }
        else if (userPassword.matches(userPassword)) {
            throw new PwdFormatException(&quot;비밀번호: 적어도 1자의 숫자 포함&quot;);
        }
        this.userPassword = userPassword; // 비밀번호 값 바꾸기
    }

    public static void main(String[] args) {
        IDFormatTest test = new IDFormatTest();
		// 중략
        
        // 비밀번호 관련 예외 테스트
        String userPassword = null;
        try {
            test.setUserPassword(userPassword);
        } catch (PwdFormatException e) {
            System.out.println(e.getMessage());
        }

        userPassword = &quot;VGurung&quot;;
        try {
            test.setUserPassword(userPassword);
        } catch (PwdFormatException e) {
            System.out.println(e.getMessage());
        }

        userPassword = &quot;VGr&quot;;
        try {
            test.setUserPassword(userPassword);
        } catch (PwdFormatException e) {
            System.out.println(e.getMessage());
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(메모)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(userPassword.&lt;u&gt;matches(userPassword)&lt;/u&gt;)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw&amp;nbsp;new&amp;nbsp;PwdFormatException(&quot;비밀번호:&amp;nbsp;적어도&amp;nbsp;1자의&amp;nbsp;숫자&amp;nbsp;포함&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; String 클래스의 matches() 메서드-&amp;gt; 비밀번호가 문자열로만 이루어졌는지 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 밑줄 친 부분 결과가 true이면 직접 정의한 예외 메시지 출력.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 테스트 소스 코드 중&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;userPassword = &quot;VGurung&quot;; // 비밀번호가 문자열로만 구성&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;test.setUserPassword(userPassword); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;catch&amp;nbsp;(PwdFormatException&amp;nbsp;e)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(e.getMessage()); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;userPassword = &quot;VGr&quot;; // 비밀번호가 5자 미만&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;test.setUserPassword(userPassword); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;catch&amp;nbsp;(PwdFormatException&amp;nbsp;e)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(e.getMessage()); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에서 비밀번호가 5자 미만 부분도 출력 결과가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;비밀번호:&amp;nbsp;적어도&amp;nbsp;1자의&amp;nbsp;숫자&amp;nbsp;포함&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;으로만 나오는 이슈 발생.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 원인을 기존 코드 구성에서 찾아보았다.&lt;/p&gt;
&lt;pre id=&quot;code_1770360145772&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;        if (userPassword == null) {
            throw new PwdFormatException(&quot;비밀번호는 not null값이어야 함.&quot;);
        }
        else if (userPassword.matches(userPassword)) {
            throw new PwdFormatException(&quot;비밀번호: 적어도 1자의 숫자 포함&quot;);
        }
        else if (userPassword.length() &amp;lt; 5) {
            throw new PwdFormatException(&quot;비밀번호: 5지 이상&quot;);
        }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 예외 처리 구문은 순서대로 실행되며, 앞에서 모든 예외 처리가 끝나면 그 다음 구문은 수행되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 순서상 두 번째 조건이 먼저 수행되고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 번째 테스트 값 &quot;VGr&quot;은 두 번째와 세 번째 조건을 모두 만족한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 두 번째 조건에서 예외 처리가 다 끝나 세 번째 조건이 실행되지 못한 것으로 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(어떻게 해결했나?) 두 가지 방법이 있겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1770360351715&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;        if (userPassword == null) {
            throw new PwdFormatException(&quot;비밀번호는 not null값이어야 함.&quot;);
        }
        else if (userPassword.length() &amp;lt; 5) {
            throw new PwdFormatException(&quot;비밀번호: 5지 이상&quot;);
        }
        else if (userPassword.matches(userPassword)) {
            throw new PwdFormatException(&quot;비밀번호: 적어도 1자의 숫자 포함&quot;);
        }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 가장 확실한 방법으로, 조건의 순서를 위와 같이 수정하거나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 세 번째 테스트 값에 숫자를 추가하거나 ex) &quot;VGr1&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;* 단 실사용에서는 보다 다양한 비밀번호 값(예외)이 나올 수 있으므로&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;첫 번째 방법처럼 예외 처리 구문의 순서에 신경쓰는 게 더 효율적일 것 같다.&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;06. 확인 예외와 확인되지 않은 예외의 차이&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;확인 예외&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;확인되지 않은 예외&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: left;&quot;&gt;예외 발생 시 컴파일러에서 바로 확인 가능하므로, 반드시 예외를 처리하는 코드를 명기해 주어야 한다. 그렇지 않으면 컴파일 오류가 발생한다.&lt;br /&gt;try~catch문 등으로 처리할 수 있다.&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: left;&quot;&gt;프로그래머가 별도로 처리하지 않아도 오류가 발생하지는 않지만, 이 예외가 발생 시 프로그램이 갑자기 멈출 수 있다.&lt;br /&gt;그러므로 코드를 작성할 때 이런 예외를 매끄럽게 처리하도록 주의할 필요가 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;07. 사용자 정의 예외 활용 예&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;u&gt;사용자가 프로그램에 필요한 제약 조건(예외)을 직접 만들어 쓰고 싶을 때 활용 가능.&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;실무에서&amp;nbsp;프로젝트를&amp;nbsp;진행할&amp;nbsp;때&amp;nbsp;필요에&amp;nbsp;따라&amp;nbsp;직접&amp;nbsp;예외&amp;nbsp;클래스를&amp;nbsp;만들어&amp;nbsp;사용하는&amp;nbsp;경우&amp;nbsp;종종&amp;nbsp;있다고&amp;nbsp;함. &lt;br /&gt;- 예시 1: 회원가입 사이트 구현 시 회원 아이디 값에 특정 제약 조건을 추가할 때-&amp;gt; Not Null 값이거나 특정 글자수 미만/ 초과이면 아이디 생성 제한&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 예시 2: 웹 크롤링 프로그램 구현 시 대상 사이트에서 가져올 데이터의 조건을 직접 설정할 때?&lt;/p&gt;</description>
      <category>2026/Do it Java 스터디(2026.01.~02.)</category>
      <author>뷔구룽</author>
      <guid isPermaLink="true">https://gyeonkangkim.tistory.com/32</guid>
      <comments>https://gyeonkangkim.tistory.com/32#entry32comment</comments>
      <pubDate>Fri, 6 Feb 2026 14:37:59 +0900</pubDate>
    </item>
    <item>
      <title>(Do it! 자바, 5주차) 내부 클래스와 관련 개념(람다식, 스트림) (260202~260208)</title>
      <link>https://gyeonkangkim.tistory.com/31</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비전공자인 나에게 조금씩 벽을 드러내고 있는 자바.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음부터 이 많은 걸 다 이해해야 되는지, 앞으로 어떻게 자바를 활용해야 할지 여러모로 고민이 많았던 한 주였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(+ 곧 있을 정보처리기사 필기 준비와, 만성 게으름으로 심적으로도 고생 많이 함 ㅎㅎㅎㅎㅎ;;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;사용한 학습 자료: 박은종, 2025, &amp;lt;Do it! 자바 프로그래밍 입문 [개정판]&amp;gt;, 이지스퍼블리싱.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot;&gt;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1770010563713&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;Do it! 자바 프로그래밍 입문 [개정판]
                                        | 박은종 저자
                    &quot; data-og-description=&quot;eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인 &quot; data-og-host=&quot;ebook-product.kyobobook.co.kr&quot; data-og-source-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; data-og-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b40nUu/dJMb9frAyoE/yRzUDRvIOnyw0kuHkBLDhk/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/c9TDPD/dJMb9fZqoVt/H22gDLIurDOArOiUfCwUNk/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/cOe0cZ/dJMb85vJXdr/i7hPjcAK7h4QKQrT1iY8Kk/img.jpg?width=2220&amp;amp;height=3035&amp;amp;face=0_0_2220_3035&quot;&gt;&lt;a href=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b40nUu/dJMb9frAyoE/yRzUDRvIOnyw0kuHkBLDhk/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/c9TDPD/dJMb9fZqoVt/H22gDLIurDOArOiUfCwUNk/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/cOe0cZ/dJMb85vJXdr/i7hPjcAK7h4QKQrT1iY8Kk/img.jpg?width=2220&amp;amp;height=3035&amp;amp;face=0_0_2220_3035');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Do it! 자바 프로그래밍 입문 [개정판] | 박은종 저자&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ebook-product.kyobobook.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dUzTQK/dJMcacBZWvn/xbvH4boAYc3n2RaW58hB90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dUzTQK/dJMcacBZWvn/xbvH4boAYc3n2RaW58hB90/img.png&quot; data-alt=&quot;5주차 공부 인증&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dUzTQK/dJMcacBZWvn/xbvH4boAYc3n2RaW58hB90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdUzTQK%2FdJMcacBZWvn%2FxbvH4boAYc3n2RaW58hB90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;736&quot; height=&quot;981&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;5주차 공부 인증&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;공부한 내용 정리&lt;/h3&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;lt;12장: 컬렉션 프레임워크&amp;gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gyeonkangkim.tistory.com/25&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://gyeonkangkim.tistory.com/25&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(4주차에 정리 완료)&lt;/p&gt;
&lt;figure id=&quot;og_1770010855722&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;(Do it! 자바, 4주차) JDK 기본 클래스와 컬렉션 프레임워크 (260126~260130)&quot; data-og-description=&quot;개요4주차는, 자바 개발 환경에서 기본적으로 제공되는 클래스와 함께프로그래밍 더 나아가 컴퓨터 과학의 기초가 된다는 자료 구조와 관련이 깊은 컬렉션 프레임워크가 등장한다.이제는 자바&quot; data-og-host=&quot;gyeonkangkim.tistory.com&quot; data-og-source-url=&quot;https://gyeonkangkim.tistory.com/25&quot; data-og-url=&quot;https://gyeonkangkim.tistory.com/25&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cpFV1F/dJMb86OWT1d/OOzAoDtJiZKwR6j86kZFOk/img.png?width=800&amp;amp;height=1066&amp;amp;face=0_0_800_1066,https://scrap.kakaocdn.net/dn/cOLQpj/dJMb9ee82y8/ajsu1P7u0Ravmku4WtPzvk/img.png?width=800&amp;amp;height=1066&amp;amp;face=0_0_800_1066,https://scrap.kakaocdn.net/dn/J2Iat/dJMb9gxgszl/YbhrDAg0v886ZDutRdhXZK/img.png?width=3024&amp;amp;height=4032&amp;amp;face=0_0_3024_4032&quot;&gt;&lt;a href=&quot;https://gyeonkangkim.tistory.com/25&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://gyeonkangkim.tistory.com/25&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cpFV1F/dJMb86OWT1d/OOzAoDtJiZKwR6j86kZFOk/img.png?width=800&amp;amp;height=1066&amp;amp;face=0_0_800_1066,https://scrap.kakaocdn.net/dn/cOLQpj/dJMb9ee82y8/ajsu1P7u0Ravmku4WtPzvk/img.png?width=800&amp;amp;height=1066&amp;amp;face=0_0_800_1066,https://scrap.kakaocdn.net/dn/J2Iat/dJMb9gxgszl/YbhrDAg0v886ZDutRdhXZK/img.png?width=3024&amp;amp;height=4032&amp;amp;face=0_0_3024_4032');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;(Do it! 자바, 4주차) JDK 기본 클래스와 컬렉션 프레임워크 (260126~260130)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;개요4주차는, 자바 개발 환경에서 기본적으로 제공되는 클래스와 함께프로그래밍 더 나아가 컴퓨터 과학의 기초가 된다는 자료 구조와 관련이 깊은 컬렉션 프레임워크가 등장한다.이제는 자바&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;gyeonkangkim.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;lt;13장: 내부 클래스, 람다식, 스트림&amp;gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 내부 클래스(중첩된 클래스): 명칭 그대로 &lt;b&gt;클래스 안의 클래스&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(478쪽: 내부 클래스 유형과 특징)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 211px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 21px;&quot;&gt;종류&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 21px;&quot;&gt;구현 위치&lt;/td&gt;
&lt;td style=&quot;width: 24.0698%; height: 21px;&quot;&gt;사용 가능한 외부 클래스 변수&lt;/td&gt;
&lt;td style=&quot;width: 25.9302%; height: 21px;&quot;&gt;만드는 방법&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 42px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 42px;&quot;&gt;인스턴스 내부 클래스&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 42px;&quot;&gt;외부 클래스의 인스턴스 변수와 같은 위치&lt;/td&gt;
&lt;td style=&quot;width: 24.0698%; height: 42px;&quot;&gt;외부 인스턴스 변수&lt;br /&gt;외부 정적 변수&lt;/td&gt;
&lt;td style=&quot;width: 25.9302%; height: 42px;&quot;&gt;먼저 만든 외부 클래스 안에 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 42px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 42px;&quot;&gt;정적 내부 클래스&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 42px;&quot;&gt;외부 클래스 인스턴스 변수와 같은 위치&lt;/td&gt;
&lt;td style=&quot;width: 24.0698%; height: 42px;&quot;&gt;외부 정적 변수&lt;/td&gt;
&lt;td style=&quot;width: 25.9302%; height: 42px;&quot;&gt;외부 클래스와 무관하게 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 42px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 42px;&quot;&gt;지역 내부 클래스&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 42px;&quot;&gt;메서드 내부에서만&lt;/td&gt;
&lt;td style=&quot;width: 24.0698%; height: 42px;&quot;&gt;외부 인스턴스 변수&lt;br /&gt;외부 정적 변수&lt;/td&gt;
&lt;td style=&quot;width: 25.9302%; height: 42px;&quot;&gt;메서드 호출 시 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 64px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 64px;&quot;&gt;익명 내부 클래스&lt;br /&gt;(이름을 사용하지 않고 바로 정의)&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 64px;&quot;&gt;메서드 내부&lt;br /&gt;변수에 대입해 직접 구현&lt;/td&gt;
&lt;td style=&quot;width: 24.0698%; height: 64px;&quot;&gt;외부 인스턴스 변수&lt;br /&gt;외부 정적 변수&lt;/td&gt;
&lt;td style=&quot;width: 25.9302%; height: 64px;&quot;&gt;1) 메서드 호출 시 생성&lt;br /&gt;2) 인터페이스 자료형 변수에 대입 시 new 예약어 사용해 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(472쪽: 정적 내부 클래스에 구현되는 메서드 비교 정리)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 173px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;정적 내부 클래스 메서드&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;변수 유형&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;사용 가능 여부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 84px;&quot; rowspan=&quot;4&quot;&gt;일반 메서드&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;외부 클래스 인스턴스 변수&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;불가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;외부 클래스 정적 변수&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;정적 내부 클래스 인스턴스 변수&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;정적 내부 클래스 정적 변수&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot; rowspan=&quot;4&quot;&gt;정적(static) 메서드&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;외부 클래스 인스턴스 변수&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;불가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;외부 클래스 정적 변수&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;정적 내부 클래스 인스턴스 변수&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;불가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;정적 내부 클래스 정적 변수&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 익명 내부 클래스는 주로 어디에 사용할까?(477쪽): 안드로이드 앱 프로그래밍에서 위젯의 이벤트를 처리하는 이벤트 핸들러 구현에 사용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 위젯: 안드로이드에서 사용하는 버튼과 텍스트 상자 등.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 이벤트 핸들러: 사용자가 위젯을 사용할 때 발생하는 이벤트를 처리하는 코드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 람다식(Lambda): 자바에서 지원하는 &lt;b&gt;함수형 프로그래밍&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 함수형 프로그래밍이란? &lt;b&gt;함수를 구현하고 호출하는 것만으로&lt;/b&gt; 프로그램을 만들 수 있다!&lt;/p&gt;
&lt;pre id=&quot;code_1770100316455&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(매개변수) -&amp;gt; {구체적인 실행문;}
// 매개변수를 활용해 실행문 내용대로 실행해라.
// 함수의 이름을 쓰지 않는 익명 함수&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(람다식 주요 문법)&lt;/p&gt;
&lt;pre id=&quot;code_1770100718692&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 함수의 매개변수 자료형 생략하고 사용 가능
V = {System.out.println(V);}
// 매개변수가 두 개 이상이면 반드시 괄호 붙이기
(V, Vnum) = {System.out.println(V + Vnum);}
// 함수의 실행문이 한 문장일 때, 중괄호 생략 가능
V = System.out.println(V);
// 실행문이 return 문이면 반드시 중괄호 붙이기
V = {return V.height();}
// 실행문이 return문 하나면 중괄호와 return 모두 생략
V = V.height()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;람다식 구현: 주로 인터페이스를 만든 다음 그 인터페이스에 람다식으로 구현할 메서드를 선언만 함(&lt;b&gt;함수형 인터페이스&lt;/b&gt;).&lt;/p&gt;
&lt;pre id=&quot;code_1770101545800&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 함수형 인터페이스 선언
@FunctionalInterface // '나 함수형 인터페이스다'라고 알리는 애너테이션
public interface MinNumber {
	int getMin(a, b) // 람다식 구현할 추상 메서드 선언만
}

// 테스트 프로그램
// 두 수 중 최솟값 출력
public class TestMinNumber {
	public static void main(String[] args) {
    	MinNumber min = (a, b) -&amp;gt; (a &amp;lt;= b) ? a : b; // 인터페이스형 변수 min에 람다식(함수) 구현
        System.out.println(min.getMin(10, 30)); // min에서 메서드 호출
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 람다식으로 구현할 함수형 인터페이스에는 &lt;b&gt;반드시 하나의 메서드만&lt;/b&gt;!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;람다식은 이름 없는 함수이기에 메서드가 여러 개면 어떤 걸 구현할 지 헷갈리기 때문&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(일반적인 객체지향 프로그래밍(OOP)와 람다식의 차이)&lt;/p&gt;
&lt;pre id=&quot;code_1770103094785&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 일반적인 객체지향 프로그래밍 예시

// 인터페이스
public interface StringConcat {
	void NewconCat(String s1, String s2); // 두 문자열을 합치는 추상 메서드
}

// 인터페이스를 구현하는 클래스
public class StringConcatImplements implements StringConcat {
	@Override
    void NewConcat(String s1, String s2) {
    	System.out.println(s1 + s2); // 메서드 구현
    }
}

// 테스트 프로그램
public class TestStringConcat {
	public static void main(String[] args) {
    	String s1 = &quot;뷔구룽 &quot;;
        String s2 = &quot;is learning Java Programming.&quot;
    	StringConcatImplements str = new StringConcatImplements(); // 인터페이스형 변수에 객체를 대입하고
        str.NewConcat(s1, s2); // 인터페이스형 변수에서 메서드 호출
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드를 람다식을 사용해 더 간결하게 작성할 수 있음.&lt;/p&gt;
&lt;pre id=&quot;code_1770103497751&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 람다식 활용 예

// 인터페이스
@FunctionalInterface
public interface StringConcat {
	void NewconCat(String s1, String s2); // 두 문자열을 합치는 추상 메서드
}

// 테스트 프로그램
public class TestStringConcat {
	public static void main(String[] args) {
    	String s1 = &quot;뷔구룽 &quot;;
        String s2 = &quot;is learning Java Programming.&quot;
        // 별도의 구현 클래스 없이 바로 인터페이스를 구현해 호출할 수 있음.
    	StringConcat str2 = (s, v) -&amp;gt; System.out.println(s + v);
        str2.StringConcat(s1, s2);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 스트림: 배열 정렬 기준을 정하는 등 여러 자료를 처리하는 기능 구현한 클래스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 자료 추상화: 여러 자료를 일관적으로 처리할 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(사용 예)&lt;/p&gt;
&lt;pre id=&quot;code_1770186247423&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package stream;

import java.util.Arrays;
// 정수 배열과 스트림
public class IntArrayTest {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};

        int max = (int) Arrays.stream(arr).max().getAsInt(); // 요소 중 최댓값
        int min = (int) Arrays.stream(arr).min().getAsInt(); // 요소 중 최솟값
        double avg = Arrays.stream(arr).average().getAsDouble(); // 배열 요소 평균

        System.out.println(max);
        System.out.println(min);
        System.out.println(avg);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 추가 참고(스트림의 연산 메서드/집계 메서드): 잇트루, [Java] 자바 스트림 생성과 중간 연산, 최종 연산의 개념 정리 및 활용,&lt;br /&gt;&lt;a href=&quot;https://ittrue.tistory.com/165#google_vignette&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://ittrue.tistory.com/165#google_vignette (260204 최종접속)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1770186345326&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Java] 자바 스트림 생성과 중간 연산, 최종 연산의 개념 정리 및 활용&quot; data-og-description=&quot;스트림 자바의 스트림은 데이터를 연속적으로 전달하는 통로로 표현할 수 있다. 스트림(Stream)은 다양한 데이터 소스(배열, 컬렉션)를 표준화하여 다루는 방식으로 통합된 방식으로 데이터 핸들&quot; data-og-host=&quot;ittrue.tistory.com&quot; data-og-source-url=&quot;https://ittrue.tistory.com/165#google_vignette&quot; data-og-url=&quot;https://ittrue.tistory.com/165&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c8EOVb/dJMb85WOzEc/Oj7eXp3IrRXrpK8Pn9vmsK/img.png?width=800&amp;amp;height=256&amp;amp;face=0_0_800_256,https://scrap.kakaocdn.net/dn/drdawC/dJMb9gxgGIp/ZqiBjJgDq5blAei7l1dM5k/img.png?width=800&amp;amp;height=256&amp;amp;face=0_0_800_256,https://scrap.kakaocdn.net/dn/eOSgu/dJMb8T9UKZo/9dflvTHCFTRNi8k9nQXkyk/img.jpg?width=360&amp;amp;height=360&amp;amp;face=0_0_360_360&quot;&gt;&lt;a href=&quot;https://ittrue.tistory.com/165#google_vignette&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ittrue.tistory.com/165#google_vignette&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c8EOVb/dJMb85WOzEc/Oj7eXp3IrRXrpK8Pn9vmsK/img.png?width=800&amp;amp;height=256&amp;amp;face=0_0_800_256,https://scrap.kakaocdn.net/dn/drdawC/dJMb9gxgGIp/ZqiBjJgDq5blAei7l1dM5k/img.png?width=800&amp;amp;height=256&amp;amp;face=0_0_800_256,https://scrap.kakaocdn.net/dn/eOSgu/dJMb8T9UKZo/9dflvTHCFTRNi8k9nQXkyk/img.jpg?width=360&amp;amp;height=360&amp;amp;face=0_0_360_360');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Java] 자바 스트림 생성과 중간 연산, 최종 연산의 개념 정리 및 활용&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;스트림 자바의 스트림은 데이터를 연속적으로 전달하는 통로로 표현할 수 있다. 스트림(Stream)은 다양한 데이터 소스(배열, 컬렉션)를 표준화하여 다루는 방식으로 통합된 방식으로 데이터 핸들&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ittrue.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 스트림 연산: 자료 처리에 필요한 연산 기능을 메서드로 제공&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중간 연산: 자료 필터링, 변형 -&amp;gt; 내부에서 또 다른 자료 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종 연산: 생성된 내부 자료의 요소를 하나씩 순회하며(Iteration) 소모 -&amp;gt; 연산 수행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 마지막에 한 번만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(추후 보충 필요: 498쪽 Distinct 연산부터 되새김 문제까지)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;lt;14장: 예외 처리&amp;gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그램(소프트웨어)이 갑자기 튕기거나 오류가 발생해 사용이 어려워진다면 곤란할 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 오류가 발생할 때마다 프로그램이 갑자기 멈추지 않도록 매끄럽게 처리하는 게 바로 &lt;b&gt;예외 처리&lt;/b&gt;!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 오류와 예외 클래스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 코드 작성 시 실수로 일어나는 &lt;b&gt;컴파일 오류&lt;/b&gt;는 개발 환경에서 대개 원인을 찾아 잡을 수 있다(컴파일러가 대부분 원인이나 솔루션을 잘 알려줌).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 의도치 않게 프로그램이 중지되거나 의도 밖으로 실행되는 &lt;b&gt;실행 오류(혹은 버그)&lt;/b&gt;는 예외가 많이 존재해 잡아내기 힘들다. 게다가 이런 실행 오류로 프로그램이 비정상 종료되는 일이 잦아진다면 큰 사고가 될 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 이때 프로그램 오류 원인을 잘 남겨놓은 &lt;b&gt;로그 분석&lt;/b&gt;과, 적절한 오류&amp;nbsp;처리가 예기치 못한 오류 관리에 많은 도움이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 실행 오류의 종류&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 시스템 오류: 자바 가상 머신에서 발생하며 주로 메모리 문제(사용 가능한 동적 메모리 없음, 오버플로 등)에서 기인함. 프로그램에서 제어할 수 없음. -&amp;gt; Throwable 클래스를 상속받은 Error 클래스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 예외: 자바에서 제공하는 클래스를 적절히 활용해 제어할 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; Throwable 클래스를 상속받은 Exception 클래스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** &lt;b&gt;Exception 클래스&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 프로그램에서 처리하는 &lt;b&gt;예외 클래스&lt;/b&gt; 중 최상위&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 주요 하위 클래스: IOException(입출력 예외), RuntimeExceptio되n(실행 중 오류에 대한 예외)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 예외에는 확인 예외와 확인되지 않은 예외가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;확인 에외&lt;/b&gt;는 컴파일러에서 확인 가능하므로 반드시 &lt;u&gt;예외 처리 코드&lt;/u&gt;를 명기해 주어햐 한다(그렇지 않으면 컴파일 오류 발생).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; &lt;u&gt;try~catch문, throws 등&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;확인되지 않은 예외&lt;/b&gt;는 별도로 처리해주지 않아도 컴파일 오류가 발생하지 않음. 따라서 코드 작성 시 주의 필요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 예외 처리: 예외 상황 자체를 막을 수 있는 먼치킨은 아니지만, &lt;u&gt;예외 상황을 정확히 알려주고 프로그램의 비정상 종료를 막아주므로&lt;/u&gt; 유용함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- try~catch문&lt;/p&gt;
&lt;pre id=&quot;code_1770258370704&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// try~catch문 예시

int a = 5;
int b = 0;

try {
	// 예외가 발생할 수 있는 코드 부분
    System.out.println(a / b) // 5를 0으로 나눌 수 없으므로 오류 발생
} catch(연산 오류에 대한 예외 e) {
	// 예외 발생 시 어떻게 예외를 처리할지 작성
    System.out.println(&quot;정수는 0으로 나눌 수 없음!&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- try~catch~finally문: try 블록이 수행되면 &lt;u&gt;finally 블록이 항상 수행&lt;/u&gt;됨.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1770259911768&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// try~catch~finally문 예시

int a = 5;
int b = 0;

try {
	// 예외가 발생할 수 있는 코드 부분
    System.out.println(a / b) // 5를 0으로 나눌 수 없으므로 오류 발생
} catch(연산 오류에 대한 예외 e) {
	// 예외 발생 시 어떻게 예외를 처리할지 작성
    System.out.println(&quot;정수는 0으로 나눌 수 없음!&quot;)
} finally {
	System.out.println(&quot;항상 수행되는 문장&quot;)
	}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(14장 되새김 문제: 완성)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gyeonkangkim.tistory.com/32&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://gyeonkangkim.tistory.com/32&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1770356335854&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;(Do it! 자바, 5주차-1) 14장 되새김 문제 풀이(작성 중)&quot; data-og-description=&quot;사용한 학습 자료: 박은종, 2025, , 이지스퍼블리싱.https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415 Do it! 자바 프로그래밍 입문 [개정판] | 박은종 저자eBook Do it! 자바 프로그래밍 입문 [개정판] | &quot; data-og-host=&quot;gyeonkangkim.tistory.com&quot; data-og-source-url=&quot;https://gyeonkangkim.tistory.com/32&quot; data-og-url=&quot;https://gyeonkangkim.tistory.com/32&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/RDdoN/dJMb81fN8hp/99K3BO6m3nExDMGyxvfB10/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/JTXhC/dJMb85WOLxq/4z3LBvXH2Ot7kNfkuLd8Q1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://gyeonkangkim.tistory.com/32&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://gyeonkangkim.tistory.com/32&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/RDdoN/dJMb81fN8hp/99K3BO6m3nExDMGyxvfB10/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/JTXhC/dJMb85WOLxq/4z3LBvXH2Ot7kNfkuLd8Q1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;(Do it! 자바, 5주차-1) 14장 되새김 문제 풀이(작성 중)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;사용한 학습 자료: 박은종, 2025, , 이지스퍼블리싱.https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415 Do it! 자바 프로그래밍 입문 [개정판] | 박은종 저자eBook Do it! 자바 프로그래밍 입문 [개정판] |&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;gyeonkangkim.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;새롭게 배운 점(어려웠던 점)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 이번 주말(일요일)에 정보처리기사 필기 시험이 있을 예정이라, 책의 예제를 보다 꼼꼼하게 실습해보지는 못했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 가지 공부를 같이 할 때 우선순위를 적절히 세팅하는 게 쉽지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 일단은 필기에 합격하는 게 우선이라, 이번 주에는 자바 스터디 학습 비중을 많이 줄였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 이번 주 분량에서는 유독 생소한 메서드나 코드가 많았고(스트림과 예외 처리 등), 책에서는 이에 대한 설명이 많이 부족함을 느꼈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 최대한 따라해보며 눈으로 익혀두기는 했지만, 각 기능을 어디에 어떻게 활용해야할 지는 아직 잘 모르겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 완독하고 추후 더 공부하거나 프로젝트를 진행할 때 기능이 필요해지면 그때 더 찾아 활용해보는 것도 좋을 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실습 코드(깃허브)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026&quot;&gt;https://github.com/KimGyeonkang/DoitJava_Studying_2026&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1770010597759&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - KimGyeonkang/DoitJava_Studying_2026&quot; data-og-description=&quot;Contribute to KimGyeonkang/DoitJava_Studying_2026 development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026&quot; data-og-url=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/BHosK/dJMb9kl7Vog/8vp8SUwGBLD8X68gy7YHSk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bd1CjM/dJMb8XR0D4y/onnOj6uykY9Pg0uXT2JdD0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/KimGyeonkang/DoitJava_Studying_2026&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/BHosK/dJMb9kl7Vog/8vp8SUwGBLD8X68gy7YHSk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bd1CjM/dJMb8XR0D4y/onnOj6uykY9Pg0uXT2JdD0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - KimGyeonkang/DoitJava_Studying_2026&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to KimGyeonkang/DoitJava_Studying_2026 development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2026/Do it Java 스터디(2026.01.~02.)</category>
      <author>뷔구룽</author>
      <guid isPermaLink="true">https://gyeonkangkim.tistory.com/31</guid>
      <comments>https://gyeonkangkim.tistory.com/31#entry31comment</comments>
      <pubDate>Mon, 2 Feb 2026 14:37:53 +0900</pubDate>
    </item>
    <item>
      <title>(Do it! 자바, 4주차-4) 12장 되새김 문제 풀이(작성 중)</title>
      <link>https://gyeonkangkim.tistory.com/30</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;사용한 학습 자료: 박은종, 2025, &amp;lt;Do it! 자바 프로그래밍 입문 [개정판]&amp;gt;, 이지스퍼블리싱.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot;&gt;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1769860125850&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;Do it! 자바 프로그래밍 입문 [개정판]
                                        | 박은종 저자
                    &quot; data-og-description=&quot;eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인 &quot; data-og-host=&quot;ebook-product.kyobobook.co.kr&quot; data-og-source-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; data-og-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bSCilH/dJMb9eTKADd/5IT6CjTHgZ0Z6YSnktLeE1/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/bxuXp9/dJMb9kTXVTl/W1KgHhb6vqtNqRLXlOvGak/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/btpPKi/dJMb9cBC5HC/P5yUyOJmCCFFJzLyBoh810/img.jpg?width=2220&amp;amp;height=3035&amp;amp;face=0_0_2220_3035&quot;&gt;&lt;a href=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bSCilH/dJMb9eTKADd/5IT6CjTHgZ0Z6YSnktLeE1/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/bxuXp9/dJMb9kTXVTl/W1KgHhb6vqtNqRLXlOvGak/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/btpPKi/dJMb9cBC5HC/P5yUyOJmCCFFJzLyBoh810/img.jpg?width=2220&amp;amp;height=3035&amp;amp;face=0_0_2220_3035');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Do it! 자바 프로그래밍 입문 [개정판] | 박은종 저자&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ebook-product.kyobobook.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;01. &lt;b&gt;컬렉션 프레임워크&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; &lt;b&gt;자료 구조&lt;/b&gt;를 사용하기 편리하도록 자바에서 제공하는 라이브러리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;02. &lt;b&gt;제네릭 프로그래밍&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 클래스에서&amp;nbsp;여러&amp;nbsp;자료형을&amp;nbsp;사용할&amp;nbsp;때&amp;nbsp;자료형을&amp;nbsp;명시하지&amp;nbsp;않고&amp;nbsp;자료형을&amp;nbsp;의미하는&amp;nbsp;문자로&amp;nbsp;선언한&amp;nbsp;후&amp;nbsp;실제&amp;nbsp;클래스를&amp;nbsp;생성할&amp;nbsp;때&amp;nbsp;자료형을&amp;nbsp;명시하는&amp;nbsp;프로그래밍&amp;nbsp;방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;03. &lt;b&gt;Iterator&lt;/b&gt; (인터페이스)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; &lt;b&gt;Collection&amp;nbsp;인터페이스를&amp;nbsp;구현한&amp;nbsp;클래스를&amp;nbsp;순회&lt;/b&gt;하기&amp;nbsp;위해&amp;nbsp;사용하는&amp;nbsp;인터페이스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;04. TreeSet을&amp;nbsp;사용할&amp;nbsp;때&amp;nbsp;Comparable&amp;nbsp;인터페이스를&amp;nbsp;구현해야&amp;nbsp;하는&amp;nbsp;이유&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt;&amp;nbsp;TreeSet의&amp;nbsp;값(노드)을&amp;nbsp;&lt;b&gt;어떤&amp;nbsp;기준으로&amp;nbsp;비교해&amp;nbsp;트리로&amp;nbsp;정렬해야&amp;nbsp;하는지&amp;nbsp;정의&lt;/b&gt;하기&amp;nbsp;위해 &lt;br /&gt;-&amp;gt;&amp;nbsp;구체적으로&amp;nbsp;정의(구현)하지&amp;nbsp;않으면&amp;nbsp;오류&amp;nbsp;발생&lt;/p&gt;
&lt;pre id=&quot;code_1769860277244&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Exception in thread &quot;main&quot; java.lang.ClassCastException: 클래스 이름 caannot be cast to class ~Comparable ~&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;05. (중요) 학번이 중복되는 학생 정보를 HashSet에 추가하지 않기 위해, Student 클래스 내에 &lt;b&gt;hashCode( )와 equals( ) 메서드 재정의 필요&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- hashCode( ) 재정의 예시&lt;/p&gt;
&lt;pre id=&quot;code_1769860381283&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// hashCode() 재정의
@Override
public int hashCode( ) {
	return studentId; // 학번 값을 반환하도록 재정의
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- equals( ) 재정의 예시&lt;/p&gt;
&lt;pre id=&quot;code_1769860460017&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// equals() 재정의
@Override
public boolean equals(Object obj) {
	if (obj instanceof Student) { // 매개변수가 Student형인지 확인
		Student student = (Student) obj; // 맞으면 Student 변수에 매개변숫값 대입
		if (this.studentId == student.studentId) { // 두 학번 값이 같으면
			return true;
		else
			return false;
	}
	return false;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 문제에서 알 수 있는 조건&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* Student 클래스에 필요한 속성(변수): &lt;s&gt;학번(int studentId)&lt;/s&gt;, 학생 이름(String studentName)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; (수정) 예제 코드에 학번이 &quot;숫자&quot;(문자열) 형태로 작성되어 있으므로 studentId(학번)은 우선 String형으로 선언&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 구현할 기능(메서드)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 생성자 Student( ): 학번과 학생 이름을 매개변수로, 두 값을 반환받음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) 재정의할 메서드: hashCode() (학번 값을 반환해), equals() (학번의 중복 여부를 체크하고 참 혹은 거짓 반환)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;-&amp;gt; 학번이 중복되는 객체는 HashSet에 추가하지 않기 위함.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;toString() (학생 정보의 출력 형태 재정의)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 출력 결과 예시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;100:홍길동, 200:강감찬, 300:이순신, 400:정약용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 최종 소스 코드&lt;/p&gt;
&lt;pre id=&quot;code_1769864925871&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package collectionframework.question;

public class Student {
    String studentId;
    String studentName;

    public Student(String studentId, String studentName) {
        this.studentId = studentId;
        this.studentName = studentName;
    }

    @Override
    public int hashCode() {
        return Integer.parseInt(studentId); // Integer.parseInt(매개변수): 문자열 타입의 숫자를 정수로 변환
    }

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Student) {
            Student student = (Student) obj;
            if (this.studentId == student.studentId) {
                return true;
            }
            else
                return false;
        }
        return false;
    }

    @Override
    public String toString() {
        return studentId + &quot;:&quot; + studentName;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;* hashCode() 메서드의 Integer.parseInt(String studentId)란? &lt;b&gt;문자열(String) 형태의 정수를, 정수형(int)으로 변환&lt;/b&gt;하는 메서드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고: 저자 풀이 코드(깃허브) 및&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거신, [자바 프로그래밍 기초] 5. Integer.parseInt(String타입의 값), &lt;a href=&quot;https://colossus-java-practice.tistory.com/32&quot;&gt;[자바 프로그래밍 기초] 5. Integer.parseInt(String타입의 값)&lt;/a&gt; (260131 최종접속)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;06.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;07. 409쪽의 예제 코드 중, Powder(powder)만 Plastic(plastic)으로 바꿔주면 OK.&lt;/p&gt;
&lt;pre id=&quot;code_1769865337971&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;GenericPrinter&amp;lt;Plastic&amp;gt; plasticPrinter = new GenericPrinter&amp;lt;Plastic&amp;gt;( );
plasticPrinter.setMaterial(new Plastic( ));
Plastic plastic = powderPrinter.getMaterial( ); // 형 변환 하지 않음.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;08.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;09.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2026/Do it Java 스터디(2026.01.~02.)</category>
      <author>뷔구룽</author>
      <guid isPermaLink="true">https://gyeonkangkim.tistory.com/30</guid>
      <comments>https://gyeonkangkim.tistory.com/30#entry30comment</comments>
      <pubDate>Sat, 31 Jan 2026 21:02:55 +0900</pubDate>
    </item>
    <item>
      <title>(정보처리기사 공부기록) 2026년도 1회차 필기시험 D-11, 시나공 CBT 풀이</title>
      <link>https://gyeonkangkim.tistory.com/29</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;다음달인 2월 8일에 생애 첫 정보처리기사 필기시험을 치르게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필기 개념서는 지난 달 말에 샀지만, 출판사에서 진행하는 자바 기초 스터디가 겹치거나 집안일로 며칠 공부에 집중 못한 기간,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 원래 오래 집중하지 못하고 엉덩이가 가벼운 성향 탓에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 실 공부시간은 그리 길지 않을 것이다.&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignLeft&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;029&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/029.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/029.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼에도, 하기 싫은 날에도 적어도 책을 펼쳐서 기출문제 1회라도 풀어보거나 흥달쌤 기초 C언어 강의를 틀어놓는 등&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매일 조금씩이라도 하고자 애쓴 나 자신이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시험이 2주도 안 남은 오늘은 계속 책만 들여다보기 지루해서 큰 맘 먹고 시나공 사이트의 CBT 모의고사를 쳐 봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개념서 1회독을 마친 1월 초에 한 회 풀어봤을 때는, 합격권엔 들었지만 과목별 점수가 썩 좋지 못했고 기본적인 개념 숙지도 안 되어있었는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 풀어본 두 회는 그래도 이전보다 많은 문제를 풀 수 있었고 나름 높은 점수를 기록할 수 있었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1390&quot; data-origin-height=&quot;794&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8SFVB/dJMcadU5XhF/S4CC6iShGnrqZLR8icxoe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8SFVB/dJMcadU5XhF/S4CC6iShGnrqZLR8icxoe1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8SFVB/dJMcadU5XhF/S4CC6iShGnrqZLR8icxoe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8SFVB%2FdJMcadU5XhF%2FS4CC6iShGnrqZLR8icxoe1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1390&quot; height=&quot;794&quot; data-origin-width=&quot;1390&quot; data-origin-height=&quot;794&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1407&quot; data-origin-height=&quot;847&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QRfWY/dJMcai9V4M6/2rqY4ol2EUGBuMtkn3EtK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QRfWY/dJMcai9V4M6/2rqY4ol2EUGBuMtkn3EtK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QRfWY/dJMcai9V4M6/2rqY4ol2EUGBuMtkn3EtK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQRfWY%2FdJMcai9V4M6%2F2rqY4ol2EUGBuMtkn3EtK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1407&quot; height=&quot;847&quot; data-origin-width=&quot;1407&quot; data-origin-height=&quot;847&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(물론 당장 모의고사 점수가 중요한 건 아니지만)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모의고사를 풀어보며 느낀 점과, 내게 부족하다고 생각하는 점은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 시나공 CBT, 생각보다 문제 출제 범위가 넓어서 좋았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시나공 필기 기본서에 딸려있는 기출문제집에는 2025~2022년도의 총 10회로 구성되어 있고, 현재 2회독 정도 마친 상황이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 CBT에서, 기출문제집에서 보지 못했던 문제도 적지 않게 출제되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시험을 앞두고 어느 정도 개념서 회독을 마쳤을 때 조금씩 풀어보며 다른 유형의 문제도 접하고, 교재 문제만 푸는 것보다 긴장감 있게 공부할 수 있어 유용하지 않을까 싶다. 강추.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 최근 3개년 기출을 벗어난 범위 문제가 아직은 낯설다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 필기 기출에서 잘 다뤄지지 않은 몇몇 개념이 CBT 문제로 나와 당황하기도 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(블루투스 공격, LOC 기법에서 월별 생산성 계산식 등)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;조금 더 안정적인 합격을 위해 틈틈이 조금 지난 기출(2022~2020 같은)을 풀어보는 것도 도움이 될 것 같다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 종종 문제를 끝까지 안 읽고 급하게 답을 찍어 틀리는 경우가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 다소 조급한 내 성향 탓이 크지 않을까.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분명 끝까지 다 읽고 키워드를 꼼꼼하게 찾아냈다면 맞출 수 있는 문제인데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞부분 키워드만 보고 어림짐작으로 골라 틀린다거나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선지를 끝까지 읽지 않았다거나 하는 경우가 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제들이 더 아까운 건, 분명 확실히 공부했고 충분히 알고 있는 개념인데도&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;급하게 문제를 읽고 스스로 함정을 파서 빠뜨렸다는 점.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;앞으로 CBT를 풀거나 실제 시험에서는 문제를 좀 더 차분하게 읽고 풀거나, 끝까지 집중력을 유지하는 연습이 필요하겠다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;가장 큰 애로사항은 물론,&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;꼭 시험이 다가오면 밀린 애니메이션이나 유튜브, 책 같이 다른 재미있는 게 많이 보인다는 거.&lt;/b&gt;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignLeft&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;037&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/037.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/037.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;</description>
      <category>2026/(일단 해보는) IT 공부기록(2026~)</category>
      <category>정보처리기사 #정처기 #IT취준생 #시험공부</category>
      <author>뷔구룽</author>
      <guid isPermaLink="true">https://gyeonkangkim.tistory.com/29</guid>
      <comments>https://gyeonkangkim.tistory.com/29#entry29comment</comments>
      <pubDate>Wed, 28 Jan 2026 23:16:05 +0900</pubDate>
    </item>
    <item>
      <title>(Do it! 자바, 4주차-3) getClass() 메서드 오류에 대해: non-static method getClass() cannot be referenced from a static context</title>
      <link>https://gyeonkangkim.tistory.com/28</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;사용한 학습 자료: 박은종, 2025, &amp;lt;Do it! 자바 프로그래밍 입문 [개정판]&amp;gt;, 이지스퍼블리싱.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot;&gt;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1769590193097&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;Do it! 자바 프로그래밍 입문 [개정판]
                                        | 박은종 저자
                    &quot; data-og-description=&quot;eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인 &quot; data-og-host=&quot;ebook-product.kyobobook.co.kr&quot; data-og-source-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; data-og-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rhCey/dJMb9jgrQhi/p7L86njAy8npndvl8cmRuK/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/bkb4l0/dJMb9hCVX3c/w92UXN12gWeVUPWcIaDPZ1/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/cd1IvF/dJMb9gxf0vV/Uar5w6YIwLoaDwLHomldR1/img.jpg?width=2220&amp;amp;height=3035&amp;amp;face=0_0_2220_3035&quot;&gt;&lt;a href=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rhCey/dJMb9jgrQhi/p7L86njAy8npndvl8cmRuK/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/bkb4l0/dJMb9hCVX3c/w92UXN12gWeVUPWcIaDPZ1/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/cd1IvF/dJMb9gxf0vV/Uar5w6YIwLoaDwLHomldR1/img.jpg?width=2220&amp;amp;height=3035&amp;amp;face=0_0_2220_3035');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Do it! 자바 프로그래밍 입문 [개정판] | 박은종 저자&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ebook-product.kyobobook.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;상황&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습 자료 11강 실습 중 Object 클래스의 getClass() 메서드를 사용해 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바에서 기본 제공하는 String 클래스의 정보를 가져오는 예제 실습 중, 코드를 아래와 같이 살짝 바꿔봤다.&lt;/p&gt;
&lt;pre id=&quot;code_1769590346192&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public static void main(String[ ] args) {
	Class strClass = String.getClass( ); // String 클래스 정보 가져오기
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 위 코드를 실행하면 아래 메시지를 출력하며 오류가 발생한다.&lt;/p&gt;
&lt;pre id=&quot;code_1769590412675&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java: non-static method getClass() cannot be referenced from a static context&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;String 클래스 정보를 가져오는 다른 방법들은 문제 없이 출력되는데 왜 getClass() 메서드 사용할 때만 이런 오류가 발생할까?&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;원인 분석&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Javadoc과 구글링을 통해 getClass() 메서드의 특징을 좀 더 알아보니 원인을 어느 정도 짐작해볼 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단히 정리하면 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1) getClass()는 '객체'의 클래스 정보를 반환하는 메서드라고 함.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2) 즉 어떤 클래스의 정보를 getClass()로 가져오려면, 반드시 해당 클래스를 인스턴스(객체)로 생성해야 함.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1769590659315&quot; class=&quot;arduino&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;public static void main(String[ ] args) {
	Class strClass = String.getClass( ); // String 클래스 정보 가져오기
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드에서,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;u&gt;String 클래스를 먼저 인스턴스화하지 않았기 때문에&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;u&gt;getClass()가 가져올 객체가 없어 오류가 발생했음&lt;/u&gt;&lt;/b&gt;을 짐작할 수 있다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(혹시 좀 더 자세히 설명해주실 수 있는 분은 언제든 댓글 환영합니다 ㅎㅎ)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 해결&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 아래와 같이 수정해 문제를 해결했다.&lt;/p&gt;
&lt;pre id=&quot;code_1769590891221&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public static void main(String[ ] args) {	
	// Class strClass = String.getClass( ); // 기존 코드, 오류 방생
	String str = new String();
        Class strClass = str.getClass(); // String 클래스를 객체(인스턴스)로 만들고 getClass()로 정보 가져오기
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 먼저 String 클래스의 생성자로 인스턴스를 생성해 String 클래스 자료형 변수 str에 대입한 뒤,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;str(생성한 객체)에서 getClass()를 사용해 클래스의 정보를 가져올 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바 프로그래밍에서 기본이 되는 객체(인스턴스)와, 최상위인 Object 클래스에서 기본 제공하는 String 클래스에 대한 이해가 꽤 필요했던 과정이었다. 특히 &lt;b&gt;getClass()가 실제로 생성된 객체를 필요로 한다&lt;/b&gt;는 점.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;참고자료&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Almost-Native,&amp;nbsp;자바&amp;nbsp;에러&amp;nbsp;:&amp;nbsp;non-static&amp;nbsp;method&amp;nbsp;cannot&amp;nbsp;be&amp;nbsp;referenced&amp;nbsp;from&amp;nbsp;a&amp;nbsp;static&amp;nbsp;context, &lt;br /&gt;&lt;a href=&quot;https://almost-native.tistory.com/368&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://almost-native.tistory.com/368&lt;/a&gt;&amp;nbsp;(260128&amp;nbsp;최종접속) &lt;br /&gt;&lt;br /&gt;Javadoc,&amp;nbsp;getClass, &lt;br /&gt;&lt;a href=&quot;https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Object.html#getClass()&lt;/a&gt;&amp;nbsp;(260128&amp;nbsp;최종접속) &lt;br /&gt;&lt;br /&gt;John&amp;nbsp;Squirrels,&amp;nbsp;Java&amp;nbsp;객체&amp;nbsp;getClass()&amp;nbsp;메소드란&amp;nbsp;무엇입니까? &lt;br /&gt;&lt;a href=&quot;https://codegym.cc/ko/groups/posts/ko.627.java--getclass-&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://codegym.cc/ko/groups/posts/ko.627.java--getclass-&lt;/a&gt;&amp;nbsp;(260128&amp;nbsp;최종접속)&lt;/p&gt;</description>
      <category>2026/Do it Java 스터디(2026.01.~02.)</category>
      <author>뷔구룽</author>
      <guid isPermaLink="true">https://gyeonkangkim.tistory.com/28</guid>
      <comments>https://gyeonkangkim.tistory.com/28#entry28comment</comments>
      <pubDate>Wed, 28 Jan 2026 18:07:53 +0900</pubDate>
    </item>
    <item>
      <title>(Do it! 자바, 4주차-2) 10장 되새김 문제 풀이(작성 중)</title>
      <link>https://gyeonkangkim.tistory.com/27</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;사용한 학습 자료: 박은종, 2025, &amp;lt;Do it! 자바 프로그래밍 입문 [개정판]&amp;gt;, 이지스퍼블리싱.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot;&gt;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1769585790223&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;Do it! 자바 프로그래밍 입문 [개정판]
                                        | 박은종 저자
                    &quot; data-og-description=&quot;eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인 &quot; data-og-host=&quot;ebook-product.kyobobook.co.kr&quot; data-og-source-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; data-og-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rhCey/dJMb9jgrQhi/p7L86njAy8npndvl8cmRuK/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/bkb4l0/dJMb9hCVX3c/w92UXN12gWeVUPWcIaDPZ1/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/cd1IvF/dJMb9gxf0vV/Uar5w6YIwLoaDwLHomldR1/img.jpg?width=2220&amp;amp;height=3035&amp;amp;face=0_0_2220_3035&quot;&gt;&lt;a href=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rhCey/dJMb9jgrQhi/p7L86njAy8npndvl8cmRuK/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/bkb4l0/dJMb9hCVX3c/w92UXN12gWeVUPWcIaDPZ1/img.jpg?width=380&amp;amp;height=519&amp;amp;face=0_0_380_519,https://scrap.kakaocdn.net/dn/cd1IvF/dJMb9gxf0vV/Uar5w6YIwLoaDwLHomldR1/img.jpg?width=2220&amp;amp;height=3035&amp;amp;face=0_0_2220_3035');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Do it! 자바 프로그래밍 입문 [개정판] | 박은종 저자&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ebook-product.kyobobook.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;01. &lt;b&gt;implements&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 클래스가 인터페이스를 구현(&lt;b&gt;implements&lt;/b&gt;)한다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;02. &lt;b&gt;추상 클래스&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 클래스가 인터페이스를 구현할 때 인터페이스에 선언한 메서드를 모두 구현하지 않으면 그 클래스는 추상 클래스가 됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 인터페이스나 상위 클래스를 상속받은 하위 클래스에서 각기 필요한 기능을 재정의할 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;03. &lt;b&gt;상수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 인터페이스에 선언한 변수는 컴파일 시 &lt;b&gt;상수&lt;/b&gt;로 변환됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;04. &lt;b&gt;다형성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 객체 지향 프로그래밍의 주요 특성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 하나의 코드가 여러 자료형으로 구현되어 실행됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; &lt;b&gt;같은 코드로 여러 구현(출력) 내용을 실행&lt;/b&gt;할 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;05. &lt;b&gt;디폴트 메서드, 정적 메서드&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 디폴트 메서드: 인터페이스에서 &lt;b&gt;구현 코드(몸체)까지 작성&lt;/b&gt;한 메서드로, defalut 예약어로 선언. 주로 인터페이스에서 기본적으로 제공하는 기능을 구현할 때 사용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 정적 메서드: &lt;b&gt;인스턴스 생성과 상관 없이 사용&lt;/b&gt;할 수 있는 메서드로, static 예약어로 선언. 인터페이스 이름으로 직접 참조해 사용할 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 그 외, private 메서드: 인터페이스를 구현한 하위 클래스에서 사용하거나 재정의할 수 없음. 코드를 모두 구현해야 하므로 추상 메서드에 사용할 수 없지만, private static으로 정적 메서드에서 호출해 사용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;06. O&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; &lt;b&gt;한 클래스가 여러 인터페이스를 구현할 수 있음&lt;/b&gt;: 인터페이스에는 구현 코드나 인스턴스 변수가 없으므로 여러 개를 동시에 구현할 수도 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 인터페이스는 여러 개를 동시에 상속받을 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 한 클래스에서 인터페이스 구현(implements)과 클래스 상속(extends)을 같이 할 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;07. (일단 그 동안 블로그에 정리한 요약 정리를 다시 읽어보며 정리함. 밑줄은 학습 자료의 정답 부분 참고해 추가한 것)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 74px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;추상 클래스&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;인터페이스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 43px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 43px;&quot;&gt;공통점&lt;/td&gt;
&lt;td style=&quot;width: 66.6666%; height: 43px;&quot; colspan=&quot;2&quot;&gt;- 구현 코드가 없음. 따라서 인스턴스화할 수 없음.&lt;br /&gt;- 상속받은 클래스에서 필요에 따라 재정의할 수 있음.&lt;br /&gt;- 객체 지향 프로그래밍 특성 중 다형성과 관련이 깊음.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 10px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 10px;&quot;&gt;차이점&lt;/td&gt;
&lt;td style=&quot;height: 10px; width: 33.3333%;&quot;&gt;- 클래스에서 추상 클래스를 상속받는 예약어: extends&lt;br /&gt;- 추상 메서드로 구성.&lt;br /&gt;- 내부에 추상 메서드 구현시 몸체(구현부, { })를 포함하지 않음.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;(추가) 상위 클래스에 공통 부분과 하위 클래스에 위임할 기능을 선언할 때 추상 메서드 선언. -&amp;gt; 템플릿 메서드&lt;/u&gt;&lt;br /&gt;&lt;u&gt;추상 클래스는 주로 상속을 위한 정의(하위 클래스에 전달하는 위임장 느낌이려나) 담당.&lt;/u&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 10px;&quot;&gt;- 클래스에서 인터페이스를 상속(구현)받는 예약어: implements&lt;br /&gt;- 추상 메서드와 상수로 구성.&lt;br /&gt;- 인터페이스에 선언한 변수는 상수로 변환됨.&lt;br /&gt;- 내부에 몸체(구현 코드)까지 구현한 메서드가 존재할 수 있음. -&amp;gt; 디폴트 메서드&lt;br /&gt;&lt;br /&gt;&lt;u&gt;(추가) 객체가 제공해야 할 기능을 선언. 즉, 인터페이스는 객체가 제공하는 기능에 대한 일종의 계약서(가이드).&lt;/u&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;08.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;09.&lt;/p&gt;</description>
      <category>2026/Do it Java 스터디(2026.01.~02.)</category>
      <author>뷔구룽</author>
      <guid isPermaLink="true">https://gyeonkangkim.tistory.com/27</guid>
      <comments>https://gyeonkangkim.tistory.com/27#entry27comment</comments>
      <pubDate>Wed, 28 Jan 2026 17:13:30 +0900</pubDate>
    </item>
  </channel>
</rss>