<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>해커를 꿈꾸는 개발자</title>
    <link>https://zidarn87.tistory.com/</link>
    <description>안녕하세요!
해커가 되기 위해 보안 및 개발 관련 자료를 만들고 공유하는 블로그입니다. </description>
    <language>ko</language>
    <pubDate>Wed, 8 Apr 2026 18:58:55 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>응답하라AI</managingEditor>
    <image>
      <title>해커를 꿈꾸는 개발자</title>
      <url>https://tistory1.daumcdn.net/tistory/4071171/attach/b2e8cfa65b614d96b85477bc58d180b1</url>
      <link>https://zidarn87.tistory.com</link>
    </image>
    <item>
      <title>[리눅스 커널] 우분투 커널 소스 다운로드 하기</title>
      <link>https://zidarn87.tistory.com/622</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[리눅스&amp;nbsp;커널]&amp;nbsp;우분투&amp;nbsp;커널&amp;nbsp;소스&amp;nbsp;다운로드&amp;nbsp;하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ubuntu에는 커널 소스가 포함되어 있지 않습니다. /usr/src에는 커널의 헤더 파일만 있는 것을 볼 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 Ubuntu의 커널 소스를 다운로드 받아보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;커널 버전 확인 하기&lt;/h2&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.15.0-69 버전인 것을 볼수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#uname -r&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;61&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2Rih1/btsiBMbJ9cV/m8zq01LDvbRfGImiZMJkhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2Rih1/btsiBMbJ9cV/m8zq01LDvbRfGImiZMJkhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2Rih1/btsiBMbJ9cV/m8zq01LDvbRfGImiZMJkhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2Rih1%2FbtsiBMbJ9cV%2Fm8zq01LDvbRfGImiZMJkhk%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;390&quot; height=&quot;61&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;61&quot;/&gt;&lt;/span&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;참고로 OS 버전은 아래 명령어를 이용합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#cat /etc/os-release&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSor6E/btsis0bQmBC/x98h1f24hzgwv24w2qqQIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSor6E/btsis0bQmBC/x98h1f24hzgwv24w2qqQIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSor6E/btsis0bQmBC/x98h1f24hzgwv24w2qqQIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSor6E%2Fbtsis0bQmBC%2Fx98h1f24hzgwv24w2qqQIK%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;769&quot; height=&quot;257&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;257&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;버전에 맞는 커널 다운로드&lt;/h2&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://kernel.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kernel.org/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1685885727640&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;The Linux Kernel Archives&quot; data-og-description=&quot;&quot; data-og-host=&quot;kernel.org&quot; data-og-source-url=&quot;https://kernel.org/&quot; data-og-url=&quot;https://kernel.org/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://kernel.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kernel.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;The Linux Kernel Archives&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kernel.org&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;apt&amp;nbsp;데이터베이스를&amp;nbsp;업데이트한&amp;nbsp;후&amp;nbsp;다음&amp;nbsp;명령을&amp;nbsp;실행하여&amp;nbsp;apt-get을&amp;nbsp;사용하여&amp;nbsp;linux-source를&amp;nbsp;설치할&amp;nbsp;수&amp;nbsp;있습니다&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #f8f8f8; color: #000000; text-align: left;&quot;&gt;&lt;code&gt;apt-get -y install linux-source&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;linux-source-5.4.0&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;linux-source-5.4.0.tar.bz2&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;869&quot; data-origin-height=&quot;81&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caRB6s/btsitTwKdCA/VOGW6ffiDwtwIPOHqOvOY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caRB6s/btsitTwKdCA/VOGW6ffiDwtwIPOHqOvOY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caRB6s/btsitTwKdCA/VOGW6ffiDwtwIPOHqOvOY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaRB6s%2FbtsitTwKdCA%2FVOGW6ffiDwtwIPOHqOvOY0%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;869&quot; height=&quot;81&quot; data-origin-width=&quot;869&quot; data-origin-height=&quot;81&quot;/&gt;&lt;/span&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;파일이 커서 그런지 압축해제하는데, 시간이 좀 걸립니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1685886867773&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#tar xvf linux-source-5.4.0.tar.bz2&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;linux-source-5.4.0 폴더에 들어가보면 커널 소스가 있는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;988&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bebOPW/btsiyWloUp3/NvrX5c64jdqMu8iQ2UpUT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bebOPW/btsiyWloUp3/NvrX5c64jdqMu8iQ2UpUT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bebOPW/btsiyWloUp3/NvrX5c64jdqMu8iQ2UpUT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbebOPW%2FbtsiyWloUp3%2FNvrX5c64jdqMu8iQ2UpUT1%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;988&quot; height=&quot;172&quot; data-origin-width=&quot;988&quot; data-origin-height=&quot;172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>운영체제/리눅스 커널</category>
      <category>우분투 커널 소스</category>
      <category>우분투 커널 소스 다운로드</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/622</guid>
      <comments>https://zidarn87.tistory.com/622#entry622comment</comments>
      <pubDate>Sun, 4 Jun 2023 23:05:01 +0900</pubDate>
    </item>
    <item>
      <title>[C++11] shared_ptr 정리 및 간단한 사용 예제</title>
      <link>https://zidarn87.tistory.com/621</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[C++11] shared_ptr&amp;nbsp;정리&amp;nbsp;및&amp;nbsp;간단한&amp;nbsp;사용&amp;nbsp;예제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;shared_ptr은&amp;nbsp; C++11부터 사용 가능한 smart pointer입니다.&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;std::shared_ptr 란&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포인터를 통해 &lt;b&gt;객체의 공유 소유권을 유지&lt;/b&gt;하는 스마트 포인터입니다. 힙 메모리에 객체를 위한 메모리와 참조 카운터를 위한 메모리가 할당됩니다. 여러 shared_ptr 객체가 동일한 객체를 소유할 수 있습니다. 다음&amp;nbsp;중&amp;nbsp;하나가&amp;nbsp;발생하면&amp;nbsp;개체가&amp;nbsp;소멸되고&amp;nbsp;메모리&amp;nbsp;할당이&amp;nbsp;해제됩니다. &lt;br /&gt;- 객체를 소유하고 있는 마지막 남은 shared_ptr이 파괴됩니다. &lt;br /&gt;- 객체를 소유하고 있는 마지막 남은 shared_ptr에는 operator= 또는 reset()을 통해 다른 포인터가 할당됩니다. &lt;br /&gt;- 객체는 생성 중에 shared_ptr에 제공되는 delete-expression 또는 사용자 지정 삭제자를 사용하여 소멸됩니다.&lt;/p&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;std::shared_ptr 사용법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. object를 가르키는 shared_ptr 생성자 호출할 수 있습니다. =&amp;gt;&lt;b&gt; std::shared_ptr&amp;lt;T&amp;gt; ptr(T *);&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. &amp;nbsp;새로운 shard_ptr 객체를 생성하기 위해 std::make_shard를 사용할 수 있습니다. &lt;br /&gt;=&amp;gt; &lt;b&gt;std::shared_ptr&amp;lt;T&amp;gt; ptr = std::make_shared&amp;lt;T&amp;gt;();&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 동일한 포인터를 공유할 수 있습니다. 공유하는 변수가 늘어날수록 참조 카운터가 증가하며, use_count() 함수를 사용하여 참조 카운터를 확인할 수 있습니다. reset() 함수는 nullptr처럼 포인터를 해제하고 참조 카운터를 감소시킵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;=&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;std::shared_ptr&amp;lt;T&amp;gt; ptr1 = std::make_shared&amp;lt;T&amp;gt;();&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; &lt;b&gt;std::shared_ptr&amp;lt;T&amp;gt; ptr2&lt;span&gt; = ptr2;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1682260249088&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;memory&amp;gt;

class Student
{
public:
    Student() { std::cout &amp;lt;&amp;lt; __FUNCTION__ &amp;lt;&amp;lt; std::endl; }
    ~Student() { std::cout &amp;lt;&amp;lt; __FUNCTION__ &amp;lt;&amp;lt; std::endl; }

    std::shared_ptr&amp;lt;Student&amp;gt; getPtr()
    {
        return std::shared_ptr&amp;lt;Student&amp;gt;(this);
    }
};

int main()
{
    Student* p = new Student;

    // 1. p object를 가르키는 shared_ptr 생성자 호출합니다.
    std::shared_ptr&amp;lt;Student&amp;gt; ptr1(p); 
    std::cout &amp;lt;&amp;lt; &quot;ptr1.use_count(): &quot; &amp;lt;&amp;lt; ptr1.use_count() &amp;lt;&amp;lt; std::endl;

    // 2. 새로운 shard_ptr 객체를 생성하기 위해 std::make_shard를 사용합니다.
    //  std::make_shard는 객체와 참조 카운터를 위한 메모리를 할당합니다.
    std::shared_ptr&amp;lt;Student&amp;gt; ptr2 = std::make_shared&amp;lt;Student&amp;gt;(); 
    std::cout &amp;lt;&amp;lt; &quot;ptr2.use_count(): &quot; &amp;lt;&amp;lt; ptr2.use_count() &amp;lt;&amp;lt; std::endl;

    // 3. 동일한 포인터를 공유합니다. (ptr3과 ptr4)

    std::shared_ptr&amp;lt;int&amp;gt; ptr3(new int(5));
    std::cout &amp;lt;&amp;lt; &quot;ptr3.use_count(): &quot; &amp;lt;&amp;lt; ptr3.use_count() &amp;lt;&amp;lt; std::endl;
    std::cout &amp;lt;&amp;lt; &quot;ptr3 value : &quot; &amp;lt;&amp;lt; *ptr3 &amp;lt;&amp;lt; std::endl;

    std::shared_ptr&amp;lt;int&amp;gt; ptr4 = ptr3;
    std::cout &amp;lt;&amp;lt; &quot;ptr4.use_count(): &quot; &amp;lt;&amp;lt; ptr4.use_count() &amp;lt;&amp;lt; std::endl;
    std::cout &amp;lt;&amp;lt; &quot;ptr4 value : &quot; &amp;lt;&amp;lt; *ptr4 &amp;lt;&amp;lt; std::endl;

    std::cout &amp;lt;&amp;lt; &quot;ptr4 reset! &quot; &amp;lt;&amp;lt;  std::endl;
    ptr4.reset();
    std::cout &amp;lt;&amp;lt; &quot;ptr3.use_count(): &quot; &amp;lt;&amp;lt; ptr3.use_count() &amp;lt;&amp;lt; std::endl;

    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;246&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/neSkH/btsbV71JIJl/WTk7ffN7iMAB6OSZaUbMk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/neSkH/btsbV71JIJl/WTk7ffN7iMAB6OSZaUbMk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/neSkH/btsbV71JIJl/WTk7ffN7iMAB6OSZaUbMk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FneSkH%2FbtsbV71JIJl%2FWTk7ffN7iMAB6OSZaUbMk0%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;246&quot; height=&quot;230&quot; data-origin-width=&quot;246&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;std::shared_ptr를 사용할 때 주의할 점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개체의&amp;nbsp;소유권은&amp;nbsp;다른&amp;nbsp;shared_ptr에&amp;nbsp;값을&amp;nbsp;할당하거나&amp;nbsp;복사&amp;nbsp;구성을&amp;nbsp;통해서만&amp;nbsp;다른&amp;nbsp;shared_ptr과&amp;nbsp;공유할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;다른&amp;nbsp;shared_ptr이&amp;nbsp;소유한&amp;nbsp;원시&amp;nbsp;기본&amp;nbsp;포인터를&amp;nbsp;사용하여&amp;nbsp;새&amp;nbsp;shared_ptr을&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;아래 예제는 ptr2에 ptr1에서 객체의 주소를 return 받아 할당하도록 하였는데, 실행파일이 죽게됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1682258658695&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;memory&amp;gt;

class Student
{
public:
    Student() { std::cout &amp;lt;&amp;lt; __FUNCTION__ &amp;lt;&amp;lt; std::endl; }
    ~Student() { std::cout &amp;lt;&amp;lt; __FUNCTION__ &amp;lt;&amp;lt; std::endl; }

    std::shared_ptr&amp;lt;Student&amp;gt; getPtr()
    {
        return std::shared_ptr&amp;lt;Student&amp;gt;(this);
    }
};

int main()
{
    Student* p = new Student;

    //p object를 가르키는 shared_ptr 생성자 호출합니다.
    std::shared_ptr&amp;lt;Student&amp;gt; ptr1(p); 
    std::cout &amp;lt;&amp;lt; &quot;ptr1.use_count(): &quot; &amp;lt;&amp;lt; ptr1.use_count() &amp;lt;&amp;lt; std::endl;

    // ptr2에 ptr1에서 객체의 주소를 return 받아 할당하도록 해봅니다.
    std::shared_ptr&amp;lt;Student&amp;gt; ptr2 = ptr1-&amp;gt;getPtr(); // 
    std::cout &amp;lt;&amp;lt; &quot;ptr2.use_count(): &quot; &amp;lt;&amp;lt; ptr2.use_count() &amp;lt;&amp;lt; std::endl;

    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bp1JZc/btsbSE0E0mm/ndZfflK1VevHjmHFDv9sNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bp1JZc/btsbSE0E0mm/ndZfflK1VevHjmHFDv9sNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bp1JZc/btsbSE0E0mm/ndZfflK1VevHjmHFDv9sNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp1JZc%2FbtsbSE0E0mm%2FndZfflK1VevHjmHFDv9sNK%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;568&quot; height=&quot;420&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Student라는 클래스를 하나 동적선언하였고, 이 객체를 &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;두 개의 shared_ptr ptr1, ptr2에 할당하였습니다. &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;ptr2를 생성하는 시점에 ptr1에 의해서 이미 Student 객체의 파괴자는 호출되어 객체가 소멸됩니다. 객체가 없는 상태에서 ptr2에서 다시 파괴자를 호출하는 구조이기 때문에 실행파일이 죽게됩니다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1682258939427&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;memory&amp;gt;

class Student
{
public:
    Student() { std::cout &amp;lt;&amp;lt; __FUNCTION__ &amp;lt;&amp;lt; std::endl; }
    ~Student() { std::cout &amp;lt;&amp;lt; __FUNCTION__ &amp;lt;&amp;lt; std::endl; }

    std::shared_ptr&amp;lt;Student&amp;gt; getPtr()
    {
        return std::shared_ptr&amp;lt;Student&amp;gt;(this);
    }
};

int main()
{
    Student* p = new Student;

    //p object를 가르키는 shared_ptr 생성자 호출합니다.
    std::shared_ptr&amp;lt;Student&amp;gt; ptr1(p); 
    std::cout &amp;lt;&amp;lt; &quot;ptr1.use_count(): &quot; &amp;lt;&amp;lt; ptr1.use_count() &amp;lt;&amp;lt; std::endl;

    //p object를 가르키는 shared_ptr 생성자 호출합니다.
    std::shared_ptr&amp;lt;Student&amp;gt; ptr2(p); 
    std::cout &amp;lt;&amp;lt; &quot;ptr2.use_count(): &quot; &amp;lt;&amp;lt; ptr2.use_count() &amp;lt;&amp;lt; std::endl;

    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lI8Y3/btsbTWzJd3f/t3C4EirpzXzvhTPz34HRW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lI8Y3/btsbTWzJd3f/t3C4EirpzXzvhTPz34HRW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lI8Y3/btsbTWzJd3f/t3C4EirpzXzvhTPz34HRW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlI8Y3%2FbtsbTWzJd3f%2Ft3C4EirpzXzvhTPz34HRW1%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;567&quot; height=&quot;434&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;434&quot;/&gt;&lt;/span&gt;&lt;/figure&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://en.cppreference.com/w/cpp/memory/shared_ptr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://en.cppreference.com/w/cpp/memory/shared_ptr&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1682257924787&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;std::shared_ptr - cppreference.com&quot; data-og-description=&quot;template&amp;lt; class T &amp;gt; class shared_ptr; (since C++11) std::shared_ptr is a smart pointer that retains shared ownership of an object through a pointer. Several shared_ptr objects may own the same object. The object is destroyed and its memory deallocated when&quot; data-og-host=&quot;en.cppreference.com&quot; data-og-source-url=&quot;https://en.cppreference.com/w/cpp/memory/shared_ptr&quot; data-og-url=&quot;https://en.cppreference.com/w/cpp/memory/shared_ptr&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://en.cppreference.com/w/cpp/memory/shared_ptr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://en.cppreference.com/w/cpp/memory/shared_ptr&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;std::shared_ptr - cppreference.com&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;template&amp;lt; class T &amp;gt; class shared_ptr; (since C++11) std::shared_ptr is a smart pointer that retains shared ownership of an object through a pointer. Several shared_ptr objects may own the same object. The object is destroyed and its memory deallocated when&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;en.cppreference.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://en.cppreference.com/w/cpp/memory/unique_ptr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://en.cppreference.com/w/cpp/memory/unique_ptr&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1682257938535&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;std::unique_ptr - cppreference.com&quot; data-og-description=&quot;(1) (since C++11) template &amp;lt; &amp;nbsp; &amp;nbsp; class T, &amp;nbsp; &amp;nbsp; class Deleter &amp;gt; class unique_ptr ; (2) (since C++11) std::unique_ptr is a smart pointer that owns and manages another object through a pointer and disposes of that object when the unique_ptr goes out of sco&quot; data-og-host=&quot;en.cppreference.com&quot; data-og-source-url=&quot;https://en.cppreference.com/w/cpp/memory/unique_ptr&quot; data-og-url=&quot;https://en.cppreference.com/w/cpp/memory/unique_ptr&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://en.cppreference.com/w/cpp/memory/unique_ptr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://en.cppreference.com/w/cpp/memory/unique_ptr&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;std::unique_ptr - cppreference.com&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;(1) (since C++11) template &amp;lt; &amp;nbsp; &amp;nbsp; class T, &amp;nbsp; &amp;nbsp; class Deleter &amp;gt; class unique_ptr ; (2) (since C++11) std::unique_ptr is a smart pointer that owns and manages another object through a pointer and disposes of that object when the unique_ptr goes out of sco&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;en.cppreference.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>프로그래밍/c++</category>
      <category>c++11</category>
      <category>shard_ptr</category>
      <category>shared_ptr 정리 및 간단한 사용 예제</category>
      <category>std::shared_ptr</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/621</guid>
      <comments>https://zidarn87.tistory.com/621#entry621comment</comments>
      <pubDate>Sun, 23 Apr 2023 23:32:44 +0900</pubDate>
    </item>
    <item>
      <title>[리눅스 명령어] ar 명령어 - 정적 라이브러리 만들기(예제 포함)</title>
      <link>https://zidarn87.tistory.com/620</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[리눅스&amp;nbsp;명령어]&amp;nbsp;ar&amp;nbsp;명령어&amp;nbsp;-&amp;nbsp;정적&amp;nbsp;라이브러리&amp;nbsp;만들기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ar 명령어란&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정적 라이브러리는 컴파일된 오브젝트 파일들이 하나의 아카이브로 묶여있는 형태로 되어 있습니다. 이 오브젝트 파일들을 묶어주는 명령어가 ar 명령어입니다.&amp;nbsp;&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;b&gt;ar rscv [라이브러리 이름] [오프젝트 파일들]&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;r : 새로운 오브젝트 파일이면 추가하고, 기존 파일이면 치환합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;s : 인덱스를 생성해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;c : 라이브러리 파일을 생성합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v : 자세한 내용을 출력해줍니다.&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;b&gt;ar ds [라이브러리 이름] [오프젝트 파일들]&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;d : 오브젝트 파일을 삭제합니다.&amp;nbsp;&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;b&gt;ar tv [라이브러리 이름]&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;t :정적 라이브러리에 있는 오브젝트 파일 리스트를 출력합니다.&amp;nbsp;&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;b&gt;ar xv [라이브러리 이름]&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x : 아카이브에서 오브젝트 파일을 추출합니다.&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;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;994&quot; data-origin-height=&quot;485&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sXnvy/btr8IxbRMYI/MDMUqYVk6pScOlFaWGcQq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sXnvy/btr8IxbRMYI/MDMUqYVk6pScOlFaWGcQq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sXnvy/btr8IxbRMYI/MDMUqYVk6pScOlFaWGcQq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsXnvy%2Fbtr8IxbRMYI%2FMDMUqYVk6pScOlFaWGcQq1%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;994&quot; height=&quot;485&quot; data-origin-width=&quot;994&quot; data-origin-height=&quot;485&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>리눅스 명령어</category>
      <category>ar ds</category>
      <category>ar rscv</category>
      <category>ar tv</category>
      <category>ar xv</category>
      <category>ar 명령어</category>
      <category>ar 명령어 - 정적 라이브러리 만들기(예제 포함)</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/620</guid>
      <comments>https://zidarn87.tistory.com/620#entry620comment</comments>
      <pubDate>Fri, 7 Apr 2023 18:10:26 +0900</pubDate>
    </item>
    <item>
      <title>[googletest] ASSERT_EQ와 같은 ASSERT_XX 간단 사용 예제</title>
      <link>https://zidarn87.tistory.com/619</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[googletest] ASSERT_EQ와 같은 ASSERT_xx 단헌 함수 간단 사용 예제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ASSERT_XX 사용법&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;ASSERT_XX (기대값, 실제값) 형식으로 사용합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;EQ(==), NE(!=), LT(&amp;lt;), GT(&amp;gt;), LE(&amp;lt;=), GE(&amp;gt;=), STREQ(문자열 비교), STRCASEEQ(문자열 대소문자 무시 비교), DOUBLE_EQ(부동소수점 비교)&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;pre id=&quot;code_1680774509328&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;gtest/gtest.h&amp;gt;
#include &amp;lt;string&amp;gt;

TEST(SampleTest, Test1){
	int value = 4;
	ASSERT_EQ(4, value);
}

TEST(SampleTest, Test2){
	int value = 4;
	ASSERT_NE(5, value);
}

TEST(SampleTest, Test3){
	int value = 4;
	ASSERT_LT(3, value);
}

TEST(SampleTest, Test4){
	int value = 4;
	ASSERT_GT(3, value);
}

TEST(SampleTest, Test5){
	int value = 4;
	ASSERT_LE(4, value);
}

TEST(SampleTest, Test6){
	int value = 4;
	ASSERT_GE(4, value);
}

TEST(SampleTest, Test7){
	std::string s1 = &quot;hello&quot;;
	std::string s2 = &quot;hello&quot;;
	ASSERT_EQ(s1, s2);
}

TEST(SampleTest, Test8){
	const char* s3 = &quot;hello&quot;;
	const char* s4 = &quot;hell2&quot;;
	ASSERT_STREQ(s3,s4);
}&lt;/code&gt;&lt;/pre&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;1121&quot; data-origin-height=&quot;757&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XMX1Z/btr8lNNqZlq/nvjA3IXoqfOgJIzexWlf30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XMX1Z/btr8lNNqZlq/nvjA3IXoqfOgJIzexWlf30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XMX1Z/btr8lNNqZlq/nvjA3IXoqfOgJIzexWlf30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXMX1Z%2Fbtr8lNNqZlq%2FnvjA3IXoqfOgJIzexWlf30%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;1121&quot; height=&quot;757&quot; data-origin-width=&quot;1121&quot; data-origin-height=&quot;757&quot;/&gt;&lt;/span&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;</description>
      <category>프로그래밍/Google Test</category>
      <category>ASSERT_EQ</category>
      <category>ASSERT_GT</category>
      <category>ASSERT_LT</category>
      <category>ASSERT_NE</category>
      <category>ASSERT_STREQ</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/619</guid>
      <comments>https://zidarn87.tistory.com/619#entry619comment</comments>
      <pubDate>Thu, 6 Apr 2023 18:49:22 +0900</pubDate>
    </item>
    <item>
      <title>[googletest] gtest_main.cc를 라이브러리에 포함시키기</title>
      <link>https://zidarn87.tistory.com/618</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[googletest]&amp;nbsp;gtest_main.cc를&amp;nbsp;라이브러리에&amp;nbsp;포함시키기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 링크에서 main 함수를 넣었는데, main 함수에서 동작이 고정되어 있다면, googletest에서 제공하는 gtest_main.cc의 main 함수를 이용할 수 있습니다. 이 gtest_main.cc의 main 함수를 library에 포함시켜서, 유닛 테스트 코드에서의 main은 사용하지 않도록 해보겠습니다.&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;a href=&quot;https://zidarn87.tistory.com/617&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://zidarn87.tistory.com/617&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1680770999845&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;[googletest] googletest 다운로드 및 간단한 유닛 테스트 케이스 수행하기 - 리눅스 용&quot; data-og-description=&quot;[googletest] googletest 설치 및 간단한 테스트케이스 수행하기 리눅스 우분투 20.04 버전에서 googletest 코드를 다운로드하고, googletest 코드로 정적 library를 만든 다음, 이 library를 가지고 간단한 테스트&quot; data-og-host=&quot;zidarn87.tistory.com&quot; data-og-source-url=&quot;https://zidarn87.tistory.com/617&quot; data-og-url=&quot;https://zidarn87.tistory.com/617&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/btDj1Z/hySa8rFt41/yIc1tDoB9f6knCfi1u8wb0/img.png?width=800&amp;amp;height=336&amp;amp;face=0_0_800_336,https://scrap.kakaocdn.net/dn/OBAUx/hyScybcGG3/wrk36kyOnogC3jfA1Md4Ck/img.png?width=800&amp;amp;height=336&amp;amp;face=0_0_800_336,https://scrap.kakaocdn.net/dn/bARTT6/hyScDjgqV1/HTlnoQjeH34RPMPlXnady0/img.png?width=1271&amp;amp;height=534&amp;amp;face=0_0_1271_534&quot;&gt;&lt;a href=&quot;https://zidarn87.tistory.com/617&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://zidarn87.tistory.com/617&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/btDj1Z/hySa8rFt41/yIc1tDoB9f6knCfi1u8wb0/img.png?width=800&amp;amp;height=336&amp;amp;face=0_0_800_336,https://scrap.kakaocdn.net/dn/OBAUx/hyScybcGG3/wrk36kyOnogC3jfA1Md4Ck/img.png?width=800&amp;amp;height=336&amp;amp;face=0_0_800_336,https://scrap.kakaocdn.net/dn/bARTT6/hyScDjgqV1/HTlnoQjeH34RPMPlXnady0/img.png?width=1271&amp;amp;height=534&amp;amp;face=0_0_1271_534');&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;[googletest] googletest 다운로드 및 간단한 유닛 테스트 케이스 수행하기 - 리눅스 용&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[googletest] googletest 설치 및 간단한 테스트케이스 수행하기 리눅스 우분투 20.04 버전에서 googletest 코드를 다운로드하고, googletest 코드로 정적 library를 만든 다음, 이 library를 가지고 간단한 테스트&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;zidarn87.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;기존 코드 - 유닛 테스트 코드에 main 함수를 구현함&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 main 함수를 보면 gtest 라이브러리를 초기화하는 부분과 모든 단위 테스트를 수행하는 명령이 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 부분은 항상 고정으로 사용한다면 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;gtest_main.cc의 main 함수를 이용하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680771178086&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;gtest/gtest.h&amp;gt;

TEST(Sample, Test1){

}

TEST(Sample, Test2){
  FAIL();
}

int main(int argc, char** argv){

    testing::InitGoogleTest(&amp;amp;argc, argv);
    return RUN_ALL_TESTS();
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;gtest_main.cc를 라이브러리화&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;우선 아래 명령어를 이용하여 gtest_main.cc를 빌드합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1680771340126&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;g++ googletest-1.13.0/googletest/src/gtest_main.cc -c -I ./googletest-1.13.0/googletest/include/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드하면 gteste_main.o 파일이 생성되는 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;822&quot; data-origin-height=&quot;57&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5CACs/btr8u8JlC6l/gIqjE63kzNXnpk4dfNHkq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5CACs/btr8u8JlC6l/gIqjE63kzNXnpk4dfNHkq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5CACs/btr8u8JlC6l/gIqjE63kzNXnpk4dfNHkq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5CACs%2Fbtr8u8JlC6l%2FgIqjE63kzNXnpk4dfNHkq0%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;57&quot; data-origin-width=&quot;822&quot; data-origin-height=&quot;57&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gtest-all.o와 gtest_main.o 를 library에 포함시킵니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680771434690&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ar rcv libgtest.a gtest-all.o gtest_main.o&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;113&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbBl10/btr8wQg6TU5/0MeU8Paw1QuIODcwhEIJU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbBl10/btr8wQg6TU5/0MeU8Paw1QuIODcwhEIJU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbBl10/btr8wQg6TU5/0MeU8Paw1QuIODcwhEIJU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbBl10%2Fbtr8wQg6TU5%2F0MeU8Paw1QuIODcwhEIJU0%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;828&quot; height=&quot;113&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;113&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&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;유닛 테스크 코드의 main 함수를 제거하고 빌드하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 main 함수를 제거하고, 테스트 케이스 코드만 작성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1680771543998&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;gtest/gtest.h&amp;gt;

TEST(Sample, Test1){

}

TEST(Sample, Test2){
  FAIL();
}&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;399&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dEq2eT/btr8u9Bvblt/GFAaJMUTrx3o60XDPH1h31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dEq2eT/btr8u9Bvblt/GFAaJMUTrx3o60XDPH1h31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dEq2eT/btr8u9Bvblt/GFAaJMUTrx3o60XDPH1h31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdEq2eT%2Fbtr8u9Bvblt%2FGFAaJMUTrx3o60XDPH1h31%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;1095&quot; height=&quot;399&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;399&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프로그래밍/Google Test</category>
      <category>gtest_main.cc 라이브러리화</category>
      <category>gtest_main.cc를 라이브러리에 포함시키기</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/618</guid>
      <comments>https://zidarn87.tistory.com/618#entry618comment</comments>
      <pubDate>Thu, 6 Apr 2023 18:01:19 +0900</pubDate>
    </item>
    <item>
      <title>[googletest] googletest 다운로드 및 간단한 유닛 테스트 케이스 수행하기 - 리눅스 용</title>
      <link>https://zidarn87.tistory.com/617</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[googletest]&amp;nbsp;googletest&amp;nbsp;설치&amp;nbsp;및&amp;nbsp;간단한&amp;nbsp;테스트케이스&amp;nbsp;수행하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스 우분투 20.04 버전에서 googletest 코드를 다운로드하고, googletest 코드로 정적 library를 만든 다음, 이 library를 가지고 간단한 테스트케이스를 수행하여 보겠습니다.&amp;nbsp;&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;googletest 설치하기&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;a href=&quot;https://github.com/google/googletest&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/google/googletest&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1680681914736&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 - google/googletest: GoogleTest - Google Testing and Mocking Framework&quot; data-og-description=&quot;GoogleTest - Google Testing and Mocking Framework. Contribute to google/googletest development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/google/googletest&quot; data-og-url=&quot;https://github.com/google/googletest&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bf5JID/hySaZHaEyC/bKKFSSKeDgcFTbGAPQai90/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/google/googletest&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/google/googletest&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bf5JID/hySaZHaEyC/bKKFSSKeDgcFTbGAPQai90/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 - google/googletest: GoogleTest - Google Testing and Mocking Framework&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;GoogleTest - Google Testing and Mocking Framework. Contribute to google/googletest 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;최신 release 버전을 다운받기 위해 아래 빨간색 부분을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1271&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KGzP8/btr8f3opgX7/8sp3ytOGA5AKx7SiFs3IPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KGzP8/btr8f3opgX7/8sp3ytOGA5AKx7SiFs3IPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KGzP8/btr8f3opgX7/8sp3ytOGA5AKx7SiFs3IPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKGzP8%2Fbtr8f3opgX7%2F8sp3ytOGA5AKx7SiFs3IPK%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;1271&quot; height=&quot;534&quot; data-origin-width=&quot;1271&quot; data-origin-height=&quot;534&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;&lt;a href=&quot;https://github.com/google/googletest/archive/refs/tags/v1.13.0.tar.gz&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/google/googletest/archive/refs/tags/v1.13.0.tar.gz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1300&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ex7kij/btr8hoeRvpZ/00JOrBNJGedAn2DEzi5Hg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ex7kij/btr8hoeRvpZ/00JOrBNJGedAn2DEzi5Hg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ex7kij/btr8hoeRvpZ/00JOrBNJGedAn2DEzi5Hg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fex7kij%2Fbtr8hoeRvpZ%2F00JOrBNJGedAn2DEzi5Hg1%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;1300&quot; height=&quot;270&quot; data-origin-width=&quot;1300&quot; data-origin-height=&quot;270&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령어로 파일을 다운로드하고, 압축을 해제합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1680735572947&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;wget https://github.com/google/googletest/archive/refs/tags/v1.13.0.tar.gz
tar xvf v1.13.0.tar.gz&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;329&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhpwxJ/btr8hxwCx8B/caoC9uxXensWbPil1rZtZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhpwxJ/btr8hxwCx8B/caoC9uxXensWbPil1rZtZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhpwxJ/btr8hxwCx8B/caoC9uxXensWbPil1rZtZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhpwxJ%2Fbtr8hxwCx8B%2FcaoC9uxXensWbPil1rZtZk%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;1070&quot; height=&quot;329&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;329&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;압축해제하면 googletest-1.13.0 이라는 폴더가 생성되는 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;424&quot; data-origin-height=&quot;56&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6E1d0/btr8axcS9AA/CxQhzsmGLSbMPiwG63XdWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6E1d0/btr8axcS9AA/CxQhzsmGLSbMPiwG63XdWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6E1d0/btr8axcS9AA/CxQhzsmGLSbMPiwG63XdWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6E1d0%2Fbtr8axcS9AA%2FCxQhzsmGLSbMPiwG63XdWK%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;424&quot; height=&quot;56&quot; data-origin-width=&quot;424&quot; data-origin-height=&quot;56&quot;/&gt;&lt;/span&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;gtest-all 빌드 및 라이브러리로 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 src를 가지고 있는 gtest-all.cc 파일을 빌드합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1680735892458&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;g++ googletest-1.13.0/googletest/src/gtest-all.cc -c -I ./googletest-1.13.0/googletest/include/ -I ./googletest-1.13.0/googletest/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드가 완료되면 gtest-all.o 파일이 생성되는 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;55&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d58jVT/btr8lPvXKtT/yCSXHuzbWfwtCBbKKTEjy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d58jVT/btr8lPvXKtT/yCSXHuzbWfwtCBbKKTEjy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d58jVT/btr8lPvXKtT/yCSXHuzbWfwtCBbKKTEjy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd58jVT%2Fbtr8lPvXKtT%2FyCSXHuzbWfwtCBbKKTEjy0%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;428&quot; height=&quot;55&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;55&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 파일을 가지고 libgtest.a 이라는 라이브러리를 만들어 봅니다.&lt;/p&gt;
&lt;pre id=&quot;code_1680736080145&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ar rcv libgtest.a gtest-all.o&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;55&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KwBsf/btr8homn1Sn/VdkzakfXne6sZg8UKrLcZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KwBsf/btr8homn1Sn/VdkzakfXne6sZg8UKrLcZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KwBsf/btr8homn1Sn/VdkzakfXne6sZg8UKrLcZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKwBsf%2Fbtr8homn1Sn%2FVdkzakfXne6sZg8UKrLcZk%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;528&quot; height=&quot;55&quot; data-origin-width=&quot;528&quot; data-origin-height=&quot;55&quot;/&gt;&lt;/span&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;간단한&amp;nbsp;테스트&amp;nbsp;케이스&amp;nbsp;수행하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 코드 내용으로&amp;nbsp; simple.cpp를 생성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1680736426450&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;gtest/gtest.h&amp;gt;

// 테스트케이스
TEST(Sample, Test1){

}

TEST(Sample, Test2){
	FAIL();
}

int main(int argc, char** argv){
    testing::InitGoogleTest(&amp;amp;argc, argv);
    return RUN_ALL_TESTS();
}&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;아래 명령어로 simple.cpp를 빌드하는데, 위에서 만든 libgtest.a 라이브러리를 로드합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1680736513977&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;g++ simple.cpp -lgtest -L. -I./googletest-1.13.0/googletest/include/ -pthread&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드하면 a.out 파일이 생성되는데, 이를 실행하면 테스트 수행 결과가 출력됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8zXim/btr8kIKEVOH/CmfN0620LqFW46MpKuhvD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8zXim/btr8kIKEVOH/CmfN0620LqFW46MpKuhvD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8zXim/btr8kIKEVOH/CmfN0620LqFW46MpKuhvD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8zXim%2Fbtr8kIKEVOH%2FCmfN0620LqFW46MpKuhvD0%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;1091&quot; height=&quot;416&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;416&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프로그래밍/Google Test</category>
      <category>googletest</category>
      <category>googletest 다운로드 및 간단한 테스트 케이스 수행하기 - 리눅스 용</category>
      <category>간단한 테스트 케이스</category>
      <category>유닛테스트</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/617</guid>
      <comments>https://zidarn87.tistory.com/617#entry617comment</comments>
      <pubDate>Thu, 6 Apr 2023 08:18:48 +0900</pubDate>
    </item>
    <item>
      <title>[SOME/IP] vsomeip 다운로드, 빌드, 설치 및 실행하기 - 리눅스 용</title>
      <link>https://zidarn87.tistory.com/616</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[SOME/IP]&amp;nbsp;vsomeip&amp;nbsp;다운로드,&amp;nbsp;빌드,&amp;nbsp;설치&amp;nbsp;및&amp;nbsp;실행하기&amp;nbsp;-&amp;nbsp;리눅스&amp;nbsp;용&amp;nbsp;&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ubuntu 20.04 버전에서 vsomeip 빌드하고, routingmanagerd를 실행하여 보도록 하겠습니다!&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;git&amp;nbsp; 및 cmake 설치하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git으로 코드를 clone해야하기 때문에 우선 git을 먼저 설치해봅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령어를 이용해 설치합니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680619999614&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;apt install git
apt install cmake&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;323&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brHLTU/btr725ggS5a/krtETA5aoOd1TH0Ey8PSEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brHLTU/btr725ggS5a/krtETA5aoOd1TH0Ey8PSEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brHLTU/btr725ggS5a/krtETA5aoOd1TH0Ey8PSEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrHLTU%2Fbtr725ggS5a%2FkrtETA5aoOd1TH0Ey8PSEk%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;1014&quot; height=&quot;323&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;323&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;707&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBYcZl/btr74eXXwPc/YhPF7BKREFJdXXVKZlHPt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBYcZl/btr74eXXwPc/YhPF7BKREFJdXXVKZlHPt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBYcZl/btr74eXXwPc/YhPF7BKREFJdXXVKZlHPt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBYcZl%2Fbtr74eXXwPc%2FYhPF7BKREFJdXXVKZlHPt1%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;707&quot; height=&quot;306&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;vsomeip git 다운로드 및 빌드하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령어로 최신 vsomeip git을 clone합니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1680620229108&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# git clone https://github.com/COVESA/vsomeip.git&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git clone을 하면 아래와 같이 최신 코드를 받아오는 것을 볼 수 있습니다.&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;1008&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XuSuR/btr76yuFIn5/F7EqG1VvsKcslQ0GY54qX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XuSuR/btr76yuFIn5/F7EqG1VvsKcslQ0GY54qX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XuSuR/btr76yuFIn5/F7EqG1VvsKcslQ0GY54qX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXuSuR%2Fbtr76yuFIn5%2FF7EqG1VvsKcslQ0GY54qX0%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;1008&quot; height=&quot;128&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&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;그럼 이제 아래 명령어를 이용하여 빌드해보도록 하겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1680620373988&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mkdir build
cd build
cmake ..
make&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;빌드하는데 시간이 조금 오래 걸립니다.&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;983&quot; data-origin-height=&quot;77&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo4xxs/btr73xXQR5Q/MqAy0nO7kXnKVbMdgKwQTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo4xxs/btr73xXQR5Q/MqAy0nO7kXnKVbMdgKwQTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo4xxs/btr73xXQR5Q/MqAy0nO7kXnKVbMdgKwQTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo4xxs%2Fbtr73xXQR5Q%2FMqAy0nO7kXnKVbMdgKwQTK%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;983&quot; height=&quot;77&quot; data-origin-width=&quot;983&quot; data-origin-height=&quot;77&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;1017&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beIULX/btr79eh955F/bkHvEbqecep8ilKpxZPu90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beIULX/btr79eh955F/bkHvEbqecep8ilKpxZPu90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beIULX/btr79eh955F/bkHvEbqecep8ilKpxZPu90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeIULX%2Fbtr79eh955F%2FbkHvEbqecep8ilKpxZPu90%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;1017&quot; height=&quot;202&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드가 완료되면 아래와 같이 so library 파일이 생성되고, examples 폴더 안에는 routingmanagerd binary가 생성되는 것을 볼 수 있습니다.&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;1002&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPNaRG/btr726TNPRM/3G2YnrjYKMilfHu2OkYMEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPNaRG/btr726TNPRM/3G2YnrjYKMilfHu2OkYMEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPNaRG/btr726TNPRM/3G2YnrjYKMilfHu2OkYMEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPNaRG%2Fbtr726TNPRM%2F3G2YnrjYKMilfHu2OkYMEk%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;1002&quot; height=&quot;144&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;144&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;861&quot; data-origin-height=&quot;55&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWTS7s/btr746k3OWw/uHdXyitqEY82eQL8ORKL90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWTS7s/btr746k3OWw/uHdXyitqEY82eQL8ORKL90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWTS7s/btr746k3OWw/uHdXyitqEY82eQL8ORKL90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWTS7s%2Fbtr746k3OWw%2FuHdXyitqEY82eQL8ORKL90%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;861&quot; height=&quot;55&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;55&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&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;빌드된 vsomeip 파일 설치하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령어를 이용하여, 빌드된 결과물들을 리눅스 시스템에 설치합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1680621848310&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;make install&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCgzIV/btr72bnDiTj/r5DsVB8nwHgrdZx8osLXjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCgzIV/btr72bnDiTj/r5DsVB8nwHgrdZx8osLXjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCgzIV/btr72bnDiTj/r5DsVB8nwHgrdZx8osLXjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCgzIV%2Fbtr72bnDiTj%2Fr5DsVB8nwHgrdZx8osLXjK%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;844&quot; height=&quot;314&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;314&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&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;routingmanagerd 실행하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;routingmanagerd를 실행하면 아래와 같이 로그가 출력되는 것을 볼 수 있습니다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1136&quot; data-origin-height=&quot;413&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8YV6e/btr76Y7SV6K/E6BgW6DTjKyWRx9YYTp371/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8YV6e/btr76Y7SV6K/E6BgW6DTjKyWRx9YYTp371/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8YV6e/btr76Y7SV6K/E6BgW6DTjKyWRx9YYTp371/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8YV6e%2Fbtr76Y7SV6K%2FE6BgW6DTjKyWRx9YYTp371%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;1136&quot; height=&quot;413&quot; data-origin-width=&quot;1136&quot; data-origin-height=&quot;413&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>네트워크 Study/SOMEIP</category>
      <category>routingmanagerd 실행</category>
      <category>vsomeip 다운로드</category>
      <category>vsomeip 빌드</category>
      <category>vsomeip 실행</category>
      <category>[SOME/IP] vsomeip 다운로드</category>
      <category>빌드 및 실행하기 - 리눅스 용</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/616</guid>
      <comments>https://zidarn87.tistory.com/616#entry616comment</comments>
      <pubDate>Wed, 5 Apr 2023 00:30:35 +0900</pubDate>
    </item>
    <item>
      <title>[C++11] std::bind, std::placeholders 간단한 사용법</title>
      <link>https://zidarn87.tistory.com/615</link>
      <description>&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;[C++11]&amp;nbsp;std::bind,&amp;nbsp;std::placeholders&amp;nbsp;사용법&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;std::bind란?&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;함수 템플릿 바인드는 함수에 대한 전달 호출 wrapper를 생성합니다. 전달 인자를 설정할 수 있는 함수 포인터라고 보시면 됩니다.&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;std::bind 사용 방법&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #0000DD;&quot;&gt;template&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000DD;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;F,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000DD;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;...&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Args&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;color: #FF0000;&quot;&gt;/*unspecified*/&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; std::bind&lt;/span&gt;&lt;span style=&quot;color: #008000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;F&lt;/span&gt;&lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;f, Args&lt;/span&gt;&lt;span style=&quot;color: #000040;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;...&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;args&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #008000;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #008080;&quot;&gt;;&lt;/span&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;span style=&quot;color: #000000;&quot;&gt;f - 일부 인수에 바인딩되는 호출 가능한 객체입니다.(함수 객체, 함수에 대한 포인터, 함수에 대한 참조, 멤버 함수에 대한 포인터 또는 데이터 멤버에 대한 포인터)&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;color: #000000;&quot;&gt;args - 바인드할 전달인자 목록입니다. 바인딩되지 않은 인수는 namespace std::placeholders의 자리 표시자 _1, _2, _3...으로 대체될 수 있습니다.&amp;nbsp;&lt;/span&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;std::placeholder 이란?&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;보통 std::bind와 같이 많이 쓰이며, 함수의 인자를 받을 수 있도록 해줍니다.&amp;nbsp;&lt;br&gt;std::placeholders::_1, std::placeholders::_2, ..., std::placeholders::_N 형식으로 사용됩니다.&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;std::bind,&amp;nbsp;std::placeholder의 header 파일&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;#include &amp;lt;functional&amp;gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;std::bind,&amp;nbsp;std::placeholder의 사용 예제&lt;/h3&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;c++&quot; data-ke-language=&quot;c++&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;functional&amp;gt;


void add(int n1, int n2) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;std::cout &amp;lt;&amp;lt; &quot;n1 = &quot; &amp;lt;&amp;lt; n1 &amp;lt;&amp;lt; &quot;, n2 = &quot; &amp;lt;&amp;lt;&amp;nbsp;&amp;nbsp;n2 &amp;lt;&amp;lt; std::endl;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;std::cout &amp;lt;&amp;lt; &quot;add = &quot; &amp;lt;&amp;lt; n1 + n2 &amp;lt;&amp;lt; std::endl;
}

void sub(int n1, int n2) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;std::cout &amp;lt;&amp;lt; &quot;n1 = &quot; &amp;lt;&amp;lt; n1 &amp;lt;&amp;lt; &quot;, n2 = &quot; &amp;lt;&amp;lt; n2 &amp;lt;&amp;lt; std::endl;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;std::cout &amp;lt;&amp;lt; &quot;sub = &quot; &amp;lt;&amp;lt; n1 - n2 &amp;lt;&amp;lt; std::endl;
}

int main() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;auto f1 = std::bind(add, 100, std::placeholders::_1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f1(5); // add(100, 5) 형식으로 호출됩니다.

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;auto f2 = std::bind(sub, std::placeholders::_1, std::placeholders::_2);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f2(10, 7); // sub(10, 7) 형식으로 호출됩니다.

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 0;
}&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;248&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ct3Jzo/btr744HujaH/J4eQCK6iAl3vgiX1shHzN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ct3Jzo/btr744HujaH/J4eQCK6iAl3vgiX1shHzN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ct3Jzo/btr744HujaH/J4eQCK6iAl3vgiX1shHzN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fct3Jzo%2Fbtr744HujaH%2FJ4eQCK6iAl3vgiX1shHzN1%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;248&quot; height=&quot;108&quot; data-origin-width=&quot;248&quot; data-origin-height=&quot;108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;참조&lt;/h3&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://en.cppreference.com/w/cpp/utility/functional/bind&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://en.cppreference.com/w/cpp/utility/functional/bind&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;std::bind - cppreference.com&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;(1) template&lt; class F, class... Args &gt; /*unspecified*/ bind( F&amp;amp;&amp;amp; f, Args&amp;amp;&amp;amp;... args ); (since C++11) (until C++20) template&lt; class F, class... Args &gt; constexpr /*unspecified*/ bind( F&amp;amp;&amp;amp; f, Args&amp;amp;&amp;amp;... args ); (since C++20) (2) template&lt; class R, class F, clas&quot; data-og-host=&quot;en.cppreference.com&quot; data-og-source-url=&quot;https://en.cppreference.com/w/cpp/utility/functional/bind&quot; data-og-image=&quot;&quot; data-og-url=&quot;https://en.cppreference.com/w/cpp/utility/functional/bind&quot;&gt;&lt;a href=&quot;https://en.cppreference.com/w/cpp/utility/functional/bind&quot; target=&quot;_blank&quot; data-source-url=&quot;https://en.cppreference.com/w/cpp/utility/functional/bind&quot;&gt;&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('')&quot;&gt; &lt;/div&gt;&lt;div class=&quot;og-text&quot;&gt;&lt;p class=&quot;og-title&quot;&gt;std::bind - cppreference.com&lt;/p&gt;&lt;p class=&quot;og-desc&quot;&gt;(1) template&amp;lt; class F, class... Args &amp;gt; /*unspecified*/ bind( F&amp;amp;&amp;amp; f, Args&amp;amp;&amp;amp;... args ); (since C++11) (until C++20) template&amp;lt; class F, class... Args &amp;gt; constexpr /*unspecified*/ bind( F&amp;amp;&amp;amp; f, Args&amp;amp;&amp;amp;... args ); (since C++20) (2) template&amp;lt; class R, class F, clas&lt;/p&gt;&lt;p class=&quot;og-host&quot;&gt;en.cppreference.com&lt;/p&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;https://en.cppreference.com/w/cpp/utility/functional/placeholders&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://en.cppreference.com/w/cpp/utility/functional/placeholders&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;std::placeholders::_1, std::placeholders::_2, ..., std::placeholders::_N - cppreference.com&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;/*see below*/ _1; /*see below*/ _2; . . /*see below*/ _N; The std::placeholders namespace contains the placeholder objects [_1, ..., _N] where N is an implementation defined maximum number. When used as an argument in a std::bind expression, the placeholde&quot; data-og-host=&quot;en.cppreference.com&quot; data-og-source-url=&quot;https://en.cppreference.com/w/cpp/utility/functional/placeholders&quot; data-og-image=&quot;&quot; data-og-url=&quot;https://en.cppreference.com/w/cpp/utility/functional/placeholders&quot;&gt;&lt;a href=&quot;https://en.cppreference.com/w/cpp/utility/functional/placeholders&quot; target=&quot;_blank&quot; data-source-url=&quot;https://en.cppreference.com/w/cpp/utility/functional/placeholders&quot;&gt;&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('')&quot;&gt; &lt;/div&gt;&lt;div class=&quot;og-text&quot;&gt;&lt;p class=&quot;og-title&quot;&gt;std::placeholders::_1, std::placeholders::_2, ..., std::placeholders::_N - cppreference.com&lt;/p&gt;&lt;p class=&quot;og-desc&quot;&gt;/*see below*/ _1; /*see below*/ _2; . . /*see below*/ _N; The std::placeholders namespace contains the placeholder objects [_1, ..., _N] where N is an implementation defined maximum number. When used as an argument in a std::bind expression, the placeholde&lt;/p&gt;&lt;p class=&quot;og-host&quot;&gt;en.cppreference.com&lt;/p&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/c++</category>
      <category>c++</category>
      <category>c++11</category>
      <category>std::bind</category>
      <category>std::placeholders</category>
      <category>std::placeholders 사용법</category>
      <category>[C++11] std::bind</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/615</guid>
      <comments>https://zidarn87.tistory.com/615#entry615comment</comments>
      <pubDate>Tue, 4 Apr 2023 23:06:27 +0900</pubDate>
    </item>
    <item>
      <title>Cisco Packet Tracer 설치하기 - 무료버전 (윈도우용)</title>
      <link>https://zidarn87.tistory.com/614</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Cisco&amp;nbsp;Packet&amp;nbsp;Tracer&amp;nbsp;설치하기&amp;nbsp;-&amp;nbsp;무료버전&amp;nbsp;(윈도우용)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cisco Packet Tracer는 하드웨어가 필요 없는 가상 실험실에서 네트워킹, IoT 및 사이버 보안 기술을 연습할 수 있는 강력한 네트워크 시뮬레이션 도구입니다. 이 시뮬레이션 프로그램을 다운로드하여 설치 및 실행까지 해보도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다운로드&lt;/h2&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;a href=&quot;https://www.netacad.com/courses/packet-tracer&quot;&gt;Cisco Packet Tracer - Networking Simulation Tool (netacad.com)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1672754429050&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;Cisco Packet Tracer&quot; data-og-description=&quot;Teaching with Packet Tracer Discover how Packet Tracer helps instructors teach complex networking concepts. Learn More&quot; data-og-host=&quot;www.netacad.com&quot; data-og-source-url=&quot;https://www.netacad.com/courses/packet-tracer&quot; data-og-url=&quot;https://www.netacad.com/courses/packet-tracer&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/v3AUX/hyQ8Wk2c1U/rkO9KLOjiuIwuIiJ1r7vdk/img.png?width=700&amp;amp;height=700&amp;amp;face=189_145_509_493,https://scrap.kakaocdn.net/dn/brLPQF/hyQ8RKQ3B0/sTaHRF6HIIOnDVFmKrN9f0/img.png?width=700&amp;amp;height=700&amp;amp;face=189_145_509_493,https://scrap.kakaocdn.net/dn/2JyIM/hyQ86Vv5T6/H3vXnjKGXdVFykiykxV6nK/img.png?width=700&amp;amp;height=700&amp;amp;face=189_145_509_493&quot;&gt;&lt;a href=&quot;https://www.netacad.com/courses/packet-tracer&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.netacad.com/courses/packet-tracer&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/v3AUX/hyQ8Wk2c1U/rkO9KLOjiuIwuIiJ1r7vdk/img.png?width=700&amp;amp;height=700&amp;amp;face=189_145_509_493,https://scrap.kakaocdn.net/dn/brLPQF/hyQ8RKQ3B0/sTaHRF6HIIOnDVFmKrN9f0/img.png?width=700&amp;amp;height=700&amp;amp;face=189_145_509_493,https://scrap.kakaocdn.net/dn/2JyIM/hyQ86Vv5T6/H3vXnjKGXdVFykiykxV6nK/img.png?width=700&amp;amp;height=700&amp;amp;face=189_145_509_493');&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;Cisco Packet Tracer&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Teaching with Packet Tracer Discover how Packet Tracer helps instructors teach complex networking concepts. Learn More&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.netacad.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 아래 경로를 통해 로그인합니다. 아이디가 없으면 가입하여 로그인합니다. 가입하는 절차는 매우 간단합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CF2jm/btrVkcEdKTa/WYhWZ5RkpBdEwqfMk3rjdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CF2jm/btrVkcEdKTa/WYhWZ5RkpBdEwqfMk3rjdK/img.png&quot; data-origin-width=&quot;1165&quot; data-origin-height=&quot;518&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4188%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CF2jm/btrVkcEdKTa/WYhWZ5RkpBdEwqfMk3rjdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCF2jm%2FbtrVkcEdKTa%2FWYhWZ5RkpBdEwqfMk3rjdK%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;1165&quot; height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9vg6u/btrVjmm0Z2O/JmJeS6TYGAOSWvJ3tC4bZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9vg6u/btrVjmm0Z2O/JmJeS6TYGAOSWvJ3tC4bZ0/img.png&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;510&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4184%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9vg6u/btrVjmm0Z2O/JmJeS6TYGAOSWvJ3tC4bZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9vg6u%2FbtrVjmm0Z2O%2FJmJeS6TYGAOSWvJ3tC4bZ0%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;1147&quot; height=&quot;510&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1274&quot; data-origin-height=&quot;606&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bw0Qb9/btrVjMls3eh/WpEtfWwnpyW292kBi23Bw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bw0Qb9/btrVjMls3eh/WpEtfWwnpyW292kBi23Bw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bw0Qb9/btrVjMls3eh/WpEtfWwnpyW292kBi23Bw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw0Qb9%2FbtrVjMls3eh%2FWpEtfWwnpyW292kBi23Bw1%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;1274&quot; height=&quot;606&quot; data-origin-width=&quot;1274&quot; data-origin-height=&quot;606&quot;/&gt;&lt;/span&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;&lt;a href=&quot;https://skillsforall.com/resources/lab-downloads&quot;&gt;Cisco Skills For All&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1672754827086&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;Skills for All Resource Hub&quot; data-og-description=&quot;Your one-stop for learning resources used within our courses such as hands-on practice activities and our network simulation tool, Cisco Packet Tracer.&quot; data-og-host=&quot;skillsforall.com:443&quot; data-og-source-url=&quot;https://skillsforall.com/resources/lab-downloads&quot; data-og-url=&quot;https://www.skillsforall.com/resources/lab-downloads&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/DxrkZ/hyQ8T9GzOH/vZj3bEThTcUsGlHNCu13oK/img.png?width=1920&amp;amp;height=593&amp;amp;face=0_0_1920_593&quot;&gt;&lt;a href=&quot;https://skillsforall.com/resources/lab-downloads&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://skillsforall.com/resources/lab-downloads&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/DxrkZ/hyQ8T9GzOH/vZj3bEThTcUsGlHNCu13oK/img.png?width=1920&amp;amp;height=593&amp;amp;face=0_0_1920_593');&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;Skills for All Resource Hub&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Your one-stop for learning resources used within our courses such as hands-on practice activities and our network simulation tool, Cisco Packet Tracer.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;skillsforall.com:443&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;각 OS에 맞는 파일을 다운로드합니다. Windows 64 bit 용은 용량이 223 MB 정도 됩니다.&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;978&quot; data-origin-height=&quot;583&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVC5H5/btrVexXDxid/MZ84hSyhCOcCBk7SK4H0AK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVC5H5/btrVexXDxid/MZ84hSyhCOcCBk7SK4H0AK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVC5H5/btrVexXDxid/MZ84hSyhCOcCBk7SK4H0AK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVC5H5%2FbtrVexXDxid%2FMZ84hSyhCOcCBk7SK4H0AK%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;978&quot; height=&quot;583&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;583&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;설치하기&lt;/h2&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;492&quot; data-origin-height=&quot;382&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b99lui/btrVk6KtvnQ/HiPTThZGDhSlMT0eiSSn80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b99lui/btrVk6KtvnQ/HiPTThZGDhSlMT0eiSSn80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b99lui/btrVk6KtvnQ/HiPTThZGDhSlMT0eiSSn80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb99lui%2FbtrVk6KtvnQ%2FHiPTThZGDhSlMT0eiSSn80%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;492&quot; height=&quot;382&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;382&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;491&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vstM0/btrVfiZ7PEa/HjpIdgavYJKX7Jq9kTKnYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vstM0/btrVfiZ7PEa/HjpIdgavYJKX7Jq9kTKnYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vstM0/btrVfiZ7PEa/HjpIdgavYJKX7Jq9kTKnYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvstM0%2FbtrVfiZ7PEa%2FHjpIdgavYJKX7Jq9kTKnYk%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;491&quot; height=&quot;380&quot; data-origin-width=&quot;491&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;실행하기&lt;/h2&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;535&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEQW6a/btrVjhzh1tC/1KOuIgcxV4ZSaHEYP45lYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEQW6a/btrVjhzh1tC/1KOuIgcxV4ZSaHEYP45lYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEQW6a/btrVjhzh1tC/1KOuIgcxV4ZSaHEYP45lYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEQW6a%2FbtrVjhzh1tC%2F1KOuIgcxV4ZSaHEYP45lYK%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;950&quot; height=&quot;535&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;535&quot;/&gt;&lt;/span&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-origin-width=&quot;1350&quot; data-origin-height=&quot;648&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1qVka/btrVfsha5YW/RndYGSd3Kc0WZ8fFgsW6XK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1qVka/btrVfsha5YW/RndYGSd3Kc0WZ8fFgsW6XK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1qVka/btrVfsha5YW/RndYGSd3Kc0WZ8fFgsW6XK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1qVka%2FbtrVfsha5YW%2FRndYGSd3Kc0WZ8fFgsW6XK%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;1350&quot; height=&quot;648&quot; data-origin-width=&quot;1350&quot; data-origin-height=&quot;648&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>네트워크 Study/Cisco 라우터 스위치</category>
      <category>cisco packet tracer</category>
      <category>Cisco Packet Tracer 설치하기 - 무료버전 (윈도우용)</category>
      <category>시뮬레이션</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/614</guid>
      <comments>https://zidarn87.tistory.com/614#entry614comment</comments>
      <pubDate>Tue, 3 Jan 2023 23:16:17 +0900</pubDate>
    </item>
    <item>
      <title>[Classic AUTOSAR] TimeSyncOverEthernet - 2. 기능 사양 2) 초기화</title>
      <link>https://zidarn87.tistory.com/613</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;TimeSyncOverEthernet&amp;nbsp;-&amp;nbsp;2.&amp;nbsp;기능&amp;nbsp;사양&amp;nbsp;2)&amp;nbsp;초기화&lt;/h2&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;a href=&quot;https://www.autosar.org/fileadmin/standards/classic/19-11/AUTOSAR_SWS_TimeSyncOverEthernet.pdf&quot;&gt;Specification of Time Synchronization over Ethernet (autosar.org)&lt;/a&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;통한&amp;nbsp;글로벌&amp;nbsp;시간&amp;nbsp;동기화는&amp;nbsp;&lt;b&gt;EthTSyn_Init()&lt;/b&gt;를&amp;nbsp;통해&amp;nbsp;초기화됩니다. &lt;br /&gt;EthTSyn_GetVersionInfo()&amp;nbsp;및&amp;nbsp;EthTSyn_Init()를&amp;nbsp;제외하고&amp;nbsp;EthTSyn&amp;nbsp;모듈의&amp;nbsp;API&amp;nbsp;함수는&amp;nbsp;모듈이&amp;nbsp;제대로&amp;nbsp;초기화된&amp;nbsp;경우에만&amp;nbsp;호출할&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;[SWS_EthTSyn_00006] &lt;br /&gt;EthTSyn_Init()에&amp;nbsp;대한&amp;nbsp;호출은&amp;nbsp;모든&amp;nbsp;내부&amp;nbsp;변수를&amp;nbsp;초기화하고&amp;nbsp;EthTSyn&amp;nbsp;모듈을&amp;nbsp;초기화된&amp;nbsp;상태로&amp;nbsp;설정합니다. &lt;br /&gt;(SRS_BSW_00101) &lt;br /&gt;&lt;br /&gt;[SWS_EthTSyn_00008] &lt;br /&gt;EthTSyn_Init()가&amp;nbsp;초기화&amp;nbsp;상태에서&amp;nbsp;호출되면&amp;nbsp;EthTSyn&amp;nbsp;모듈은&amp;nbsp;내부&amp;nbsp;변수를&amp;nbsp;다시&amp;nbsp;초기화해야&amp;nbsp;합니다. &lt;br /&gt;(SRS_BSW_00101) &lt;br /&gt;&lt;br /&gt;[SWS_EthTSyn_00010] &lt;br /&gt;EthTSyn_Init()가&amp;nbsp;초기화된&amp;nbsp;상태에서&amp;nbsp;호출되면&amp;nbsp;EthTSyn&amp;nbsp;모듈은&amp;nbsp;각&amp;nbsp;포트별&amp;nbsp;Pdelay&amp;nbsp;값을&amp;nbsp;0으로&amp;nbsp;설정해야&amp;nbsp;합니다. &lt;br /&gt;(RS_TS_20048)&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>Ethernet</category>
      <category>time sync</category>
      <category>[Classic AUTOSAR] TimeSyncOverEthernet - 2. 기능 사양 2) 초기화</category>
      <category>초기화</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/613</guid>
      <comments>https://zidarn87.tistory.com/613#entry613comment</comments>
      <pubDate>Tue, 3 Jan 2023 22:33:25 +0900</pubDate>
    </item>
    <item>
      <title>[Classic AUTOSAR] TimeSyncOverEthernet - 2. 기능 사양 1) Overview</title>
      <link>https://zidarn87.tistory.com/612</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;TimeSyncOverEthernet&amp;nbsp;-&amp;nbsp;2.&amp;nbsp;기능&amp;nbsp;사양&amp;nbsp;1)&amp;nbsp;Overview&lt;/h2&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;a href=&quot;https://www.autosar.org/fileadmin/standards/classic/19-11/AUTOSAR_SWS_TimeSyncOverEthernet.pdf&quot;&gt;Specification of Time Synchronization over Ethernet (autosar.org)&lt;/a&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;br /&gt;이 장은 이더넷을 통한 시간 동기화를 담당하는 모듈 EthTSyn의 동작을 정의합니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;모듈 EthTSyn은 이더넷 네트워크에서 동기화된 시간 정보의 수집 및 배포를 보장합니다. 그리고 StbM과 상호 작용하고 모든 이더넷 관련 기능을 StbM에 제공합니다. &lt;br /&gt;&lt;br /&gt;[SWS_EthTSyn_00148] &lt;br /&gt;매개변수 EthTSynFramePrio(ECUC_EthTSyn_00034 : )가 존재하는 경우 &lt;b&gt;EthTSynGlobalTimeEthIfRef&lt;/b&gt;(ECUC_EthTSyn_00065 : )는 VLAN을 나타내는 가상 이더넷 컨트롤러를 참조해야 합니다. &lt;br /&gt;(RS_TS_20048) &lt;br /&gt;&lt;br /&gt;[SWS_EthTSyn_00162] &lt;br /&gt;Time Slave 및 Time Master는 호출 시 &lt;b&gt;EthTSynFramePrio&lt;/b&gt;(ECUC_EthTSyn_00034 : ) 값을 우선순위 파라미터로 사용합니다. &lt;b&gt;EthIf_ProvideTxBuffer&lt;/b&gt;(). &lt;br /&gt;(RS_TS_20048)&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>Time Sync Over Ethernet</category>
      <category>[Classic AUTOSAR] TimeSyncOverEthernet - 2. 기능 사양 1) Overview</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/612</guid>
      <comments>https://zidarn87.tistory.com/612#entry612comment</comments>
      <pubDate>Tue, 3 Jan 2023 01:23:27 +0900</pubDate>
    </item>
    <item>
      <title>[Classic AUTOSAR] TimeSyncOverEthernet - 1.소개 및 기능 개요</title>
      <link>https://zidarn87.tistory.com/611</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;TimeSyncOverEthernet&amp;nbsp;-&amp;nbsp;1.소개&amp;nbsp;및&amp;nbsp;기능&amp;nbsp;개요&lt;/h2&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;a href=&quot;https://www.autosar.org/fileadmin/standards/classic/19-11/AUTOSAR_SWS_TimeSyncOverEthernet.pdf&quot;&gt;Specification of Time Synchronization over Ethernet (autosar.org)&lt;/a&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;EthTSyn&amp;nbsp;모듈은&amp;nbsp;[1,&amp;nbsp;PRS-TimeSyncProtocol]에&amp;nbsp;지정된&amp;nbsp;대로&amp;nbsp;이더넷에서&amp;nbsp;시간&amp;nbsp;동기화&amp;nbsp;프로토콜을&amp;nbsp;처리합니다.&lt;/b&gt; &lt;br /&gt;[1,&amp;nbsp;PRS&amp;nbsp;시간&amp;nbsp;동기화&amp;nbsp;프로토콜]에&amp;nbsp;명시된&amp;nbsp;것&amp;nbsp;외에도&amp;nbsp;EthTSyn&amp;nbsp;모듈은&amp;nbsp;다음&amp;nbsp;기능을&amp;nbsp;지원합니다. &lt;br /&gt;&amp;bull; 우선 순위가 높은 PDU가 우선 순위가 낮은 PDU를 차단하지 않도록 Timesync PDU의 Debouncing&lt;br /&gt;&amp;bull; Time Master와 Time Slave의 빠른 (재) 동기화를 위한 시간 동기화 메시지의 &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;EthTSyn은 Synchronized Time-Base Manager(StbM; [2, SWS-SynchronizedTimeBaseManager] 참조)와 긴밀하게 연결되어 있으며, 이는 해당&amp;nbsp;시간&amp;nbsp;기준에&amp;nbsp;대한&amp;nbsp;2개의&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;해당&amp;nbsp;타임&amp;nbsp;베이스에&amp;nbsp;대한&amp;nbsp;동기화&amp;nbsp;메시지.&amp;nbsp;StbM은&amp;nbsp;또한&amp;nbsp;시간&amp;nbsp;동기화를&amp;nbsp;위한&amp;nbsp;서비스&amp;nbsp;인터페이스를&amp;nbsp;애플리케이션에&amp;nbsp;제공합니다.&amp;nbsp;그림&amp;nbsp;1은&amp;nbsp;AUTOSAR&amp;nbsp;Layered&amp;nbsp;Architecture의&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;895&quot; data-origin-height=&quot;501&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ISzHk/btrVcns4QLZ/cGckGPk9fHUm8iutpUMK5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ISzHk/btrVcns4QLZ/cGckGPk9fHUm8iutpUMK5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ISzHk/btrVcns4QLZ/cGckGPk9fHUm8iutpUMK5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FISzHk%2FbtrVcns4QLZ%2FcGckGPk9fHUm8iutpUMK5k%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;895&quot; height=&quot;501&quot; data-origin-width=&quot;895&quot; data-origin-height=&quot;501&quot;/&gt;&lt;/span&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;EthTSyn(Global Time Synchronization over Ethernet)에는 StbM(Synchronized Time-Base Manager), EthIf(Ethernet Interface), BswM(Basic Software Mode Manager) 및 DET(Default Error Tracer)에 대한 인터페이스가 있습니다.&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;StbM&amp;nbsp;&amp;ndash;&amp;nbsp;Get&amp;nbsp;and&amp;nbsp;set&amp;nbsp;the&amp;nbsp;current&amp;nbsp;time&amp;nbsp;value&amp;nbsp; &lt;br /&gt;EthIf&amp;nbsp;&amp;ndash;&amp;nbsp;Receiving&amp;nbsp;and&amp;nbsp;transmitting&amp;nbsp;messages &lt;br /&gt;BswM&amp;nbsp;&amp;ndash;&amp;nbsp;Coordination&amp;nbsp;of&amp;nbsp;network&amp;nbsp;access &lt;br /&gt;DET&amp;nbsp;&amp;ndash;&amp;nbsp;Reporting&amp;nbsp;of&amp;nbsp;development&amp;nbsp;error&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>time sync</category>
      <category>TimeSyncOver Ethernet</category>
      <category>[Classic AUTOSAR] TimeSyncOverEthernet - 1.소개 및 기능 개요</category>
      <category>타임싱크</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/611</guid>
      <comments>https://zidarn87.tistory.com/611#entry611comment</comments>
      <pubDate>Tue, 3 Jan 2023 01:14:14 +0900</pubDate>
    </item>
    <item>
      <title>도구 Tool - 리눅스 우분투에 VS Code 무료버전 설치하기</title>
      <link>https://zidarn87.tistory.com/610</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;도구&amp;nbsp;Tool&amp;nbsp;-&amp;nbsp;리눅스&amp;nbsp;우분투에&amp;nbsp;VS&amp;nbsp;Code&amp;nbsp;무료버전&amp;nbsp;설치하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ubutu 20.04 버전에 VS Code를 설치해 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. VS Code 다운로드&lt;/h2&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;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://code.visualstudio.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669645017458&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;Visual Studio Code - Code Editing. Redefined&quot; data-og-description=&quot;Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.&amp;nbsp; Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.&quot; data-og-host=&quot;code.visualstudio.com&quot; data-og-source-url=&quot;https://code.visualstudio.com/&quot; data-og-url=&quot;https://code.visualstudio.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cptLTA/hyQHWsVqbg/tnEtrQ0h9OZ24OLTNfi2C0/img.png?width=1012&amp;amp;height=506&amp;amp;face=0_0_1012_506&quot;&gt;&lt;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://code.visualstudio.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cptLTA/hyQHWsVqbg/tnEtrQ0h9OZ24OLTNfi2C0/img.png?width=1012&amp;amp;height=506&amp;amp;face=0_0_1012_506');&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;Visual Studio Code - Code Editing. Redefined&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.&amp;nbsp; Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;code.visualstudio.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 .deb 파일을 다운로드 합니다.용량은 92.2MB 정도 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;763&quot; data-origin-height=&quot;709&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coV5b4/btrSlVr7MxO/RiikvriHJLnGIHagYVB0K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coV5b4/btrSlVr7MxO/RiikvriHJLnGIHagYVB0K1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coV5b4/btrSlVr7MxO/RiikvriHJLnGIHagYVB0K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoV5b4%2FbtrSlVr7MxO%2FRiikvriHJLnGIHagYVB0K1%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;709&quot; data-origin-width=&quot;763&quot; data-origin-height=&quot;709&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. VS Code&amp;nbsp; 설치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령어를 입력하여 다운로드한 vs code를 설치합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;$sudo apt install [파일명]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;447&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZyhcS/btrSmrYFR6y/cfkSqMKWqntNKeqCJFnpek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZyhcS/btrSmrYFR6y/cfkSqMKWqntNKeqCJFnpek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZyhcS/btrSmrYFR6y/cfkSqMKWqntNKeqCJFnpek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZyhcS%2FbtrSmrYFR6y%2FcfkSqMKWqntNKeqCJFnpek%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;935&quot; height=&quot;447&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;447&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. VS Code&amp;nbsp; 실행하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검색창에 vs code를 입력하면, 아래와 같이 app이 나오는데 실행 시켜봅니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c53wid/btrShInmMUh/5679sENAsaEtCpCYTHuf2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c53wid/btrShInmMUh/5679sENAsaEtCpCYTHuf2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c53wid/btrShInmMUh/5679sENAsaEtCpCYTHuf2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc53wid%2FbtrShInmMUh%2F5679sENAsaEtCpCYTHuf2k%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;522&quot; height=&quot;308&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;app을 실행시키면 아래와 같이 프로그램이 시작됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Add to Favorites를 선택하여 App을 쉽게 실행시켜 볼 수 있도록 합니다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;779&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCkf3G/btrSmsiYC6E/HdMZPj9RvyckggpRAoKc5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCkf3G/btrSmsiYC6E/HdMZPj9RvyckggpRAoKc5k/img.png&quot; data-alt=&quot;dd&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCkf3G/btrSmsiYC6E/HdMZPj9RvyckggpRAoKc5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCkf3G%2FbtrSmsiYC6E%2FHdMZPj9RvyckggpRAoKc5k%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;1122&quot; height=&quot;779&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;779&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;dd&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>도구 Tool</category>
      <category>VS Code 무료버전</category>
      <category>vs code 설치</category>
      <category>도구 Tool - 리눅스 우분투에 VS Code 무료버전 설치하기</category>
      <category>우분투 vs code</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/610</guid>
      <comments>https://zidarn87.tistory.com/610#entry610comment</comments>
      <pubDate>Mon, 28 Nov 2022 23:33:50 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 Tip - VirtualBox Ubuntu 20.04 비밀번호 분실 시 복구</title>
      <link>https://zidarn87.tistory.com/609</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;리눅스&amp;nbsp;Tip&amp;nbsp;-&amp;nbsp;VirtualBox&amp;nbsp;Ubuntu&amp;nbsp;20.04&amp;nbsp;비밀번호&amp;nbsp;분실&amp;nbsp;시&amp;nbsp;복구&lt;/h2&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. GRUB 모드로 진입&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 부팅할 때, Shift 키를 눌러서 GRUB 모드로 진입합니다.&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;635&quot; data-origin-height=&quot;474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMiqU4/btrSc9YtHWU/42skLp1uL8wRHtFh4eQAQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMiqU4/btrSc9YtHWU/42skLp1uL8wRHtFh4eQAQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMiqU4/btrSc9YtHWU/42skLp1uL8wRHtFh4eQAQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMiqU4%2FbtrSc9YtHWU%2F42skLp1uL8wRHtFh4eQAQK%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;635&quot; height=&quot;474&quot; data-origin-width=&quot;635&quot; data-origin-height=&quot;474&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;637&quot; data-origin-height=&quot;475&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwtfrj/btrSjoNTP2n/xSy6PdarC3mvO3cR7x0LV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwtfrj/btrSjoNTP2n/xSy6PdarC3mvO3cR7x0LV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwtfrj/btrSjoNTP2n/xSy6PdarC3mvO3cR7x0LV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbwtfrj%2FbtrSjoNTP2n%2FxSy6PdarC3mvO3cR7x0LV1%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;637&quot; height=&quot;475&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;475&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. e를 눌러서 edit 하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;e 키를 눌러서 edit 화면으로 이동합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NpOJa/btrR9Lxx5Qy/dLPG2DGiW9omX47ujlfPYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NpOJa/btrR9Lxx5Qy/dLPG2DGiW9omX47ujlfPYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NpOJa/btrR9Lxx5Qy/dLPG2DGiW9omX47ujlfPYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNpOJa%2FbtrR9Lxx5Qy%2FdLPG2DGiW9omX47ujlfPYK%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;638&quot; height=&quot;474&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;474&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. rw init=/bin/sh 추가하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;linux로 시작하는 부분의 가장 뒤에 &quot;rw init=/bin/sh&quot; 를 추가합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가한 이후에 Ctrl + x 키를 눌러서 다시 시작합니다.&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;631&quot; data-origin-height=&quot;478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6khNl/btrSf94McIb/h2Eo4aB0xhYzIWHMfmkF6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6khNl/btrSf94McIb/h2Eo4aB0xhYzIWHMfmkF6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6khNl/btrSf94McIb/h2Eo4aB0xhYzIWHMfmkF6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6khNl%2FbtrSf94McIb%2Fh2Eo4aB0xhYzIWHMfmkF6k%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;631&quot; height=&quot;478&quot; data-origin-width=&quot;631&quot; data-origin-height=&quot;478&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. password 변경&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 root shell로 입력 가능하게 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 passwd를 입력하고 새로운 비밀번호를 설정하도록 합니다.&amp;nbsp;&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;715&quot; data-origin-height=&quot;394&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVIbX9/btrSeiVeb8B/lJZLh6WufrHSPkAWGYz7P1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVIbX9/btrSeiVeb8B/lJZLh6WufrHSPkAWGYz7P1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVIbX9/btrSeiVeb8B/lJZLh6WufrHSPkAWGYz7P1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVIbX9%2FbtrSeiVeb8B%2FlJZLh6WufrHSPkAWGYz7P1%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;715&quot; height=&quot;394&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;394&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 재부팅&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 명령어를 입력하여 재부팅합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# rebbot -f&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;* 참고로 계정 비밀번호 변경은 passwd &amp;lt;계정명&amp;gt; 이며, root 권한에서 변경할 수 있습니다.&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;1355&quot; data-origin-height=&quot;653&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dPPIDt/btrShHAaBK1/Fsmct6CpOR5pkZvEbWweB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dPPIDt/btrShHAaBK1/Fsmct6CpOR5pkZvEbWweB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dPPIDt/btrShHAaBK1/Fsmct6CpOR5pkZvEbWweB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdPPIDt%2FbtrShHAaBK1%2FFsmct6CpOR5pkZvEbWweB0%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;1355&quot; height=&quot;653&quot; data-origin-width=&quot;1355&quot; data-origin-height=&quot;653&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>운영체제/리눅스 Tip</category>
      <category>ubuntu 비밀번호 복구</category>
      <category>ubuntu 비밀번호 분실</category>
      <category>리눅스 Tip - VirtualBox Ubuntu 20.04 비밀번호 분실 시 복구</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/609</guid>
      <comments>https://zidarn87.tistory.com/609#entry609comment</comments>
      <pubDate>Mon, 28 Nov 2022 00:42:14 +0900</pubDate>
    </item>
    <item>
      <title>Boost - C++ Boost 라이브러리 설치 및 Visual studio 설정 (윈도우용)</title>
      <link>https://zidarn87.tistory.com/608</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;C++ Boost 라이브러리 설치 및 Visual studio 설정 (윈도우용)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;boost 라이브러리를 설치하고, Visual studio에서 이 라이브러리를 적용해 빌드하는 것을 다루어 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. boost 라이브러리 다운로드&lt;/h2&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://www.boost.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.boost.org/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669550736361&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;Boost C++ Libraries&quot; data-og-description=&quot;Welcome to Boost.org! Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications&quot; data-og-host=&quot;www.boost.org&quot; data-og-source-url=&quot;https://www.boost.org/&quot; data-og-url=&quot;https://www.boost.org/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rQ8YW/hyQH3SFAgG/3idfgZ4b42fH3eYiN2VLEk/img.jpg?width=288&amp;amp;height=288&amp;amp;face=0_0_288_288&quot;&gt;&lt;a href=&quot;https://www.boost.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boost.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rQ8YW/hyQH3SFAgG/3idfgZ4b42fH3eYiN2VLEk/img.jpg?width=288&amp;amp;height=288&amp;amp;face=0_0_288_288');&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;Boost C++ Libraries&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Welcome to Boost.org! Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.boost.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;접속해서 최신 Release 버전을 클릭하여 아래 페이지가 나오면, windows 용 압축파일을 다운로드 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;압축파일의 용량은 100MB 조금 되지 않습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;733&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGDf58/btrSaiaKppq/KUZelik2N32NZxT62Y0Q41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGDf58/btrSaiaKppq/KUZelik2N32NZxT62Y0Q41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGDf58/btrSaiaKppq/KUZelik2N32NZxT62Y0Q41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGDf58%2FbtrSaiaKppq%2FKUZelik2N32NZxT62Y0Q41%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;911&quot; height=&quot;733&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;733&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. boost 라이브러리 설치 및 빌드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운로드가 끝났으면, 압축을 풀고 bootstrap.bat을 실행시킵니다.&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;746&quot; data-origin-height=&quot;526&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4yJZr/btrSgaoYUpP/WgKTdwKdQp4zPntXYGUs01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4yJZr/btrSgaoYUpP/WgKTdwKdQp4zPntXYGUs01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4yJZr/btrSgaoYUpP/WgKTdwKdQp4zPntXYGUs01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4yJZr%2FbtrSgaoYUpP%2FWgKTdwKdQp4zPntXYGUs01%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;746&quot; height=&quot;526&quot; data-origin-width=&quot;746&quot; data-origin-height=&quot;526&quot;/&gt;&lt;/span&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D7HZX/btrSehPtc9u/geuwFWkolEMNNWx3oNjf00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D7HZX/btrSehPtc9u/geuwFWkolEMNNWx3oNjf00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D7HZX/btrSehPtc9u/geuwFWkolEMNNWx3oNjf00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD7HZX%2FbtrSehPtc9u%2FgeuwFWkolEMNNWx3oNjf00%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;979&quot; height=&quot;512&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 과정이 끝나면 b2.exe 파일이 생성됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 파일을 실행하여 boost 라이브러리를 빌드합니다.&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;688&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgVo47/btrSgavKCAx/fVoYfFrO2XRBiTmeWW5B41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgVo47/btrSgavKCAx/fVoYfFrO2XRBiTmeWW5B41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgVo47/btrSgavKCAx/fVoYfFrO2XRBiTmeWW5B41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgVo47%2FbtrSgavKCAx%2FfVoYfFrO2XRBiTmeWW5B41%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;688&quot; height=&quot;548&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;548&quot;/&gt;&lt;/span&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-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/orXQd/btrSa707WJ5/nJDNTjOnD3204eSUGfAgXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/orXQd/btrSa707WJ5/nJDNTjOnD3204eSUGfAgXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/orXQd/btrSa707WJ5/nJDNTjOnD3204eSUGfAgXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2ForXQd%2FbtrSa707WJ5%2FnJDNTjOnD3204eSUGfAgXk%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;979&quot; height=&quot;512&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드가 완료되면&amp;nbsp; include 디렉토리와 lib 디렉토리가 출력됩니다 .&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- include : E:\Project_Cplus\boost_1_80_0\&lt;b&gt;boost_1_80_0&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- lib : E:\Project_Cplus\boost_1_80_0\&lt;b&gt;boost_1_80_0\stage\lib&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. Visual Studio에서 boost 라이브러리 적용&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 프로젝트에서 속성창을 open합니다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I2QUl/btrScRwKWSp/7ojToJLvPbxNxUCjD4EA81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I2QUl/btrScRwKWSp/7ojToJLvPbxNxUCjD4EA81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I2QUl/btrScRwKWSp/7ojToJLvPbxNxUCjD4EA81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI2QUl%2FbtrScRwKWSp%2F7ojToJLvPbxNxUCjD4EA81%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;976&quot; height=&quot;538&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 2 경로를 설정해야 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- include :&lt;span&gt;&amp;nbsp;&lt;/span&gt;E:\Project_Cplus\boost_1_80_0\&lt;b&gt;boost_1_80_0&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- lib :&lt;span&gt;&amp;nbsp;&lt;/span&gt;E:\Project_Cplus\boost_1_80_0\&lt;b&gt;boost_1_80_0\stage\lib&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;먼저 include는 C/C++ 일반의 '추가 포함 디렉터리'에서 추가합니다.&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;780&quot; data-origin-height=&quot;543&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N9MmX/btrR9uJAKmq/vNeFD0QMZ4E7cRkHdNtqr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N9MmX/btrR9uJAKmq/vNeFD0QMZ4E7cRkHdNtqr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N9MmX/btrR9uJAKmq/vNeFD0QMZ4E7cRkHdNtqr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN9MmX%2FbtrR9uJAKmq%2FvNeFD0QMZ4E7cRkHdNtqr1%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;780&quot; height=&quot;543&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;543&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;470&quot; data-origin-height=&quot;354&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m1MWu/btrSf3wF9sy/IIVvmRuVpVHFyNm4PAD3v0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m1MWu/btrSf3wF9sy/IIVvmRuVpVHFyNm4PAD3v0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m1MWu/btrSf3wF9sy/IIVvmRuVpVHFyNm4PAD3v0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm1MWu%2FbtrSf3wF9sy%2FIIVvmRuVpVHFyNm4PAD3v0%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;470&quot; height=&quot;354&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;354&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;lib는 링커의 일반에서 '추가 라이브러리 디렉터리'를 설정하여 줍니다.&amp;nbsp;&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;781&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lZs8Q/btrSeiHD6gl/0Pglqpw6KbDULKwAOusk20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lZs8Q/btrSeiHD6gl/0Pglqpw6KbDULKwAOusk20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lZs8Q/btrSeiHD6gl/0Pglqpw6KbDULKwAOusk20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlZs8Q%2FbtrSeiHD6gl%2F0Pglqpw6KbDULKwAOusk20%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;781&quot; height=&quot;537&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;537&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;473&quot; data-origin-height=&quot;354&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWOlqO/btrSf34vwPR/DupG9fXGYjn35eoLmpAL11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWOlqO/btrSf34vwPR/DupG9fXGYjn35eoLmpAL11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWOlqO/btrSf34vwPR/DupG9fXGYjn35eoLmpAL11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWOlqO%2FbtrSf34vwPR%2FDupG9fXGYjn35eoLmpAL11%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;473&quot; height=&quot;354&quot; data-origin-width=&quot;473&quot; data-origin-height=&quot;354&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. boost 라이브러리를 이용한 sample 프로그램 빌드 및 실행&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Thread를 사용하는 간단한 프로그램을 작성하여 빌드해봅니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1669555564854&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;crtdbg.h&amp;gt;

#include &amp;lt;boost/asio/thread_pool.hpp&amp;gt;
#include &amp;lt;boost/asio/post.hpp&amp;gt;

using namespace std;
using namespace this_thread;
using namespace chrono;


void threadTest()
{
    // 반복문을 돌면서 콘솔에 값을 출력한다.
    for (int i = 0; i &amp;lt; 4; i++)
    {
        cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; endl;
        sleep_for(microseconds(1));
    }
}

int main()
{
    boost::asio::thread_pool* pool = new boost::asio::thread_pool(1);
    /* 쓰레드 실행 */
    post(*pool, threadTest);
    post(*pool, threadTest);
    post(*pool, threadTest);

    
    pool-&amp;gt;join(); // pool 내의 모든 쓰레드가 종료할 때까지 기다린다.
    delete pool; // 메모리 해제
    _CrtDumpMemoryLeaks(); // 메모리 릭체크 함수.
    return 0;
}&lt;/code&gt;&lt;/pre&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;1007&quot; data-origin-height=&quot;734&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbUZgX/btrShAHMDl7/h0992Lqmi34ju8gvrDWaYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbUZgX/btrShAHMDl7/h0992Lqmi34ju8gvrDWaYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbUZgX/btrShAHMDl7/h0992Lqmi34ju8gvrDWaYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbUZgX%2FbtrShAHMDl7%2Fh0992Lqmi34ju8gvrDWaYK%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;1007&quot; height=&quot;734&quot; data-origin-width=&quot;1007&quot; data-origin-height=&quot;734&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프로그래밍/boost</category>
      <category>Boost - C++ Boost 라이브러리 설치 및 Visual studio 설정 (윈도우용)</category>
      <category>boost visual studio 설정</category>
      <category>boost 라이브러리 설치</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/608</guid>
      <comments>https://zidarn87.tistory.com/608#entry608comment</comments>
      <pubDate>Sun, 27 Nov 2022 22:28:29 +0900</pubDate>
    </item>
    <item>
      <title>도구 Tool - Visual Studio 2022 무료버전 설치하기 (윈도우용)</title>
      <link>https://zidarn87.tistory.com/607</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;도구&amp;nbsp;Tool&amp;nbsp;-&amp;nbsp;Visual&amp;nbsp;Studio&amp;nbsp;2022&amp;nbsp;무료버전&amp;nbsp;설치하기&lt;/h2&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;676&quot; data-origin-height=&quot;417&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QDGqT/btrSf8YV94p/E2mU94UTgNlSwI40nLyufK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QDGqT/btrSf8YV94p/E2mU94UTgNlSwI40nLyufK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QDGqT/btrSf8YV94p/E2mU94UTgNlSwI40nLyufK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQDGqT%2FbtrSf8YV94p%2FE2mU94UTgNlSwI40nLyufK%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;676&quot; height=&quot;417&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;417&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. VS2022 설치 파일 다운로드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 아래 Visual Studio 링크에 접속합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://visualstudio.microsoft.com/ko/vs/?WT.mc_id=DT-MVP-4038234&quot;&gt;https://visualstudio.microsoft.com/ko/vs/?WT.mc_id=DT-MVP-4038234&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1669546734490&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;Visual Studio 2022 | 무료 다운로드&quot; data-og-description=&quot;Visual Studio에서 코드 완성, 디버깅, 테스트, Git 관리, 클라우드 배포를 사용하여 코드를 작성합니다. 지금 무료로 커뮤니티를 다운로드하세요.&quot; data-og-host=&quot;visualstudio.microsoft.com&quot; data-og-source-url=&quot;https://visualstudio.microsoft.com/ko/vs/?WT.mc_id=DT-MVP-4038234&quot; data-og-url=&quot;https://visualstudio.microsoft.com/ko/vs/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cfPXkx/hyQJtPIdTe/Ua6xDV5qjW8EnHJcVcfkqK/img.gif?width=500&amp;amp;height=280&amp;amp;face=0_0_500_280,https://scrap.kakaocdn.net/dn/fsxQy/hyQJz3sN0q/kuRvYq4RLfGyACkOwai7pK/img.gif?width=500&amp;amp;height=280&amp;amp;face=0_0_500_280,https://scrap.kakaocdn.net/dn/bt3L1A/hyQJHHb4OE/dCBiXDEkxczwv8KFtEM0Fk/img.png?width=1&amp;amp;height=1&amp;amp;face=0_0_1_1&quot;&gt;&lt;a href=&quot;https://visualstudio.microsoft.com/ko/vs/?WT.mc_id=DT-MVP-4038234&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://visualstudio.microsoft.com/ko/vs/?WT.mc_id=DT-MVP-4038234&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cfPXkx/hyQJtPIdTe/Ua6xDV5qjW8EnHJcVcfkqK/img.gif?width=500&amp;amp;height=280&amp;amp;face=0_0_500_280,https://scrap.kakaocdn.net/dn/fsxQy/hyQJz3sN0q/kuRvYq4RLfGyACkOwai7pK/img.gif?width=500&amp;amp;height=280&amp;amp;face=0_0_500_280,https://scrap.kakaocdn.net/dn/bt3L1A/hyQJHHb4OE/dCBiXDEkxczwv8KFtEM0Fk/img.png?width=1&amp;amp;height=1&amp;amp;face=0_0_1_1');&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;Visual Studio 2022 | 무료 다운로드&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Visual Studio에서 코드 완성, 디버깅, 테스트, Git 관리, 클라우드 배포를 사용하여 코드를 작성합니다. 지금 무료로 커뮤니티를 다운로드하세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;visualstudio.microsoft.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;Community 2022를 누르면 자동으로 파일이 다운로드됩니다.&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;1144&quot; data-origin-height=&quot;833&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bG6F95/btrR9uJvubL/jNvpSXeSXuRBiPEgJLZkZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bG6F95/btrR9uJvubL/jNvpSXeSXuRBiPEgJLZkZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bG6F95/btrR9uJvubL/jNvpSXeSXuRBiPEgJLZkZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG6F95%2FbtrR9uJvubL%2FjNvpSXeSXuRBiPEgJLZkZ1%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;1144&quot; height=&quot;833&quot; data-origin-width=&quot;1144&quot; data-origin-height=&quot;833&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. Visual Studio 설치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운로드된 VisualStudioSetup.exe 실행파일을 실행시킵니다.&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;311&quot; data-origin-height=&quot;66&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RCo6z/btrSeiHyCWb/z1aAj5AoqsZH6O5zi8o6K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RCo6z/btrSeiHyCWb/z1aAj5AoqsZH6O5zi8o6K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RCo6z/btrSeiHyCWb/z1aAj5AoqsZH6O5zi8o6K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRCo6z%2FbtrSeiHyCWb%2Fz1aAj5AoqsZH6O5zi8o6K0%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;311&quot; height=&quot;66&quot; data-origin-width=&quot;311&quot; data-origin-height=&quot;66&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1DkBk/btrShCeqRIt/oxRDMfUyTTurTMDUWzmdR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1DkBk/btrShCeqRIt/oxRDMfUyTTurTMDUWzmdR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1DkBk/btrShCeqRIt/oxRDMfUyTTurTMDUWzmdR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1DkBk%2FbtrShCeqRIt%2FoxRDMfUyTTurTMDUWzmdR0%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;480&quot; height=&quot;282&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 'Visual Studio Installer'의 설치가 시작됩니다.&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;480&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbaJEb/btrR9MQHjGP/9pKDAPNJ8kTmdEgk9Ld1kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbaJEb/btrR9MQHjGP/9pKDAPNJ8kTmdEgk9Ld1kK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbaJEb/btrR9MQHjGP/9pKDAPNJ8kTmdEgk9Ld1kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbaJEb%2FbtrR9MQHjGP%2F9pKDAPNJ8kTmdEgk9Ld1kK%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;480&quot; height=&quot;282&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;282&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1265&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chHCxy/btrR9WsaAYM/8tnjTvIQeyeVlIlQqQDWy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chHCxy/btrR9WsaAYM/8tnjTvIQeyeVlIlQqQDWy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chHCxy/btrR9WsaAYM/8tnjTvIQeyeVlIlQqQDWy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchHCxy%2FbtrR9WsaAYM%2F8tnjTvIQeyeVlIlQqQDWy1%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;1265&quot; height=&quot;700&quot; data-origin-width=&quot;1265&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;c++을 이용하여 MFC 개발을 하고, Windows 11 운영체제를 사용한다면 아래와 항목을 추가로 선택합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 약 12.68GB의 용량이 필요하다고 나옵니다.&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;1239&quot; data-origin-height=&quot;667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IMF2X/btrSaf56lSZ/d0KxsWsFpXHhKGg3juDO8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IMF2X/btrSaf56lSZ/d0KxsWsFpXHhKGg3juDO8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IMF2X/btrSaf56lSZ/d0KxsWsFpXHhKGg3juDO8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIMF2X%2FbtrSaf56lSZ%2Fd0KxsWsFpXHhKGg3juDO8K%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;1239&quot; height=&quot;667&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;667&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;371&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uB3hz/btrScbozqEl/xElnJ90k9hA2ALFSvw75zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uB3hz/btrScbozqEl/xElnJ90k9hA2ALFSvw75zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uB3hz/btrScbozqEl/xElnJ90k9hA2ALFSvw75zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuB3hz%2FbtrScbozqEl%2FxElnJ90k9hA2ALFSvw75zk%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;898&quot; height=&quot;371&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;371&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WXIk3/btrScba54eL/nCtbcJf9Uk2g8pocXJe3W0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WXIk3/btrScba54eL/nCtbcJf9Uk2g8pocXJe3W0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WXIk3/btrScba54eL/nCtbcJf9Uk2g8pocXJe3W0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWXIk3%2FbtrScba54eL%2FnCtbcJf9Uk2g8pocXJe3W0%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;530&quot; height=&quot;157&quot; data-origin-width=&quot;530&quot; data-origin-height=&quot;157&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;237&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqf8h4/btrSdawbUoX/zegImUtEyTJzMP1qswiMY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqf8h4/btrSdawbUoX/zegImUtEyTJzMP1qswiMY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqf8h4/btrSdawbUoX/zegImUtEyTJzMP1qswiMY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcqf8h4%2FbtrSdawbUoX%2FzegImUtEyTJzMP1qswiMY1%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;880&quot; height=&quot;237&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;237&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행시키면 로그인하는 페이지가 나오는데, '지금은 이 항목을 건너뜁니다'를 눌러서 skip하여 넘어가도록 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;965&quot; data-origin-height=&quot;491&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgUufC/btrR9cClMxx/Ah8BzxpUOEirzLqQYHSpT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgUufC/btrR9cClMxx/Ah8BzxpUOEirzLqQYHSpT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgUufC/btrR9cClMxx/Ah8BzxpUOEirzLqQYHSpT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgUufC%2FbtrR9cClMxx%2FAh8BzxpUOEirzLqQYHSpT0%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;965&quot; height=&quot;491&quot; data-origin-width=&quot;965&quot; data-origin-height=&quot;491&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;963&quot; data-origin-height=&quot;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cK83Tx/btrSf3DnRSS/PAGhoA8kTkqSHSX4CoQ0Ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cK83Tx/btrSf3DnRSS/PAGhoA8kTkqSHSX4CoQ0Ik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cK83Tx/btrSf3DnRSS/PAGhoA8kTkqSHSX4CoQ0Ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcK83Tx%2FbtrSf3DnRSS%2FPAGhoA8kTkqSHSX4CoQ0Ik%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;487&quot; data-origin-width=&quot;963&quot; data-origin-height=&quot;487&quot;/&gt;&lt;/span&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-origin-width=&quot;1002&quot; data-origin-height=&quot;665&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Vl0zN/btrShA8MreP/SrcH3lxClqFHbu2Ro5H730/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Vl0zN/btrShA8MreP/SrcH3lxClqFHbu2Ro5H730/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Vl0zN/btrShA8MreP/SrcH3lxClqFHbu2Ro5H730/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVl0zN%2FbtrShA8MreP%2FSrcH3lxClqFHbu2Ro5H730%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;1002&quot; height=&quot;665&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;665&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 새 프로젝트 만들어서 'Hello World' 출력해보기&amp;nbsp;&lt;/h2&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;1000&quot; data-origin-height=&quot;666&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deyW8g/btrSf3ciyFu/2EOhdvnjVkH81Qs4Up5twK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deyW8g/btrSf3ciyFu/2EOhdvnjVkH81Qs4Up5twK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deyW8g/btrSf3ciyFu/2EOhdvnjVkH81Qs4Up5twK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeyW8g%2FbtrSf3ciyFu%2F2EOhdvnjVkH81Qs4Up5twK%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;1000&quot; height=&quot;666&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;666&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1009&quot; data-origin-height=&quot;669&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfzveP/btrSdaJIqzz/TMx1sDbkeYWkWcy3ffKn1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfzveP/btrSdaJIqzz/TMx1sDbkeYWkWcy3ffKn1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfzveP/btrSdaJIqzz/TMx1sDbkeYWkWcy3ffKn1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfzveP%2FbtrSdaJIqzz%2FTMx1sDbkeYWkWcy3ffKn1k%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;1009&quot; height=&quot;669&quot; data-origin-width=&quot;1009&quot; data-origin-height=&quot;669&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ctrl + F5 키를 눌러 빌드하고, 실행되도록 해봅니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 아래와 같이 Hello World!가 출력되는 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1206&quot; data-origin-height=&quot;645&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bC2tsP/btrR9MwmP5F/kp8sAtHBod6fagbuWUKkcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bC2tsP/btrR9MwmP5F/kp8sAtHBod6fagbuWUKkcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bC2tsP/btrR9MwmP5F/kp8sAtHBod6fagbuWUKkcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbC2tsP%2FbtrR9MwmP5F%2Fkp8sAtHBod6fagbuWUKkcK%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;1206&quot; height=&quot;645&quot; data-origin-width=&quot;1206&quot; data-origin-height=&quot;645&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>도구 Tool</category>
      <category>Visual Studio 2022</category>
      <category>Visual Studio 2022 설치</category>
      <category>Visual Studio 무료버전</category>
      <category>도구 Tool - Visual Studio 2022 무료버전 설치하기</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/607</guid>
      <comments>https://zidarn87.tistory.com/607#entry607comment</comments>
      <pubDate>Sun, 27 Nov 2022 20:47:58 +0900</pubDate>
    </item>
    <item>
      <title>[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;UDP&amp;nbsp;Network&amp;nbsp;Management(NM)&amp;nbsp;3.&amp;nbsp;기능&amp;nbsp;사양&amp;nbsp;(8)&amp;nbsp;Partial Networking</title>
      <link>https://zidarn87.tistory.com/606</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (8) Partial Networking&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 : &lt;a href=&quot;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. NM PDU의 RX 처리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_UdpNm_00328]UdpNmPnEnabled가&amp;nbsp;FALSE이면&amp;nbsp;UdpNm은&amp;nbsp;정상적인&amp;nbsp;수신&amp;nbsp;표시&amp;nbsp;처리를&amp;nbsp;수행하고&amp;nbsp;부분&amp;nbsp;네트워킹&amp;nbsp;확장은&amp;nbsp;비활성화됩니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00329]UdpNmPnEnabled가 TRUE이고 수신된 NM-PDU의 PNI 비트가 0이고 UdpNmAllNmMessagesKeepAwake가 TRUE인 경우 UdpNm 모듈은 부분 네트워킹에 대한 확장을 생략하고 정상적인 Rx 표시 처리를 수행해야 합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00462]UdpNmPnEnabled가 TRUE이고 수신된 NM-PDU의 PNI 비트가 0이고 UdpNmAllNmMessagesKeepAwake가 FALSE이면 UdpNm 모듈은 수신된 NM-PDU를 무시합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00331] {OBSOLETE replace by SWS_UdpNm_00486 } UdpNmPnEnabled가 TRUE이고 수신된 NM-PDU의 PNI 비트가 1이면 UdpNm 모듈은NM-PDU의 부분 네트워킹 정보를 처리해야 합니다.&lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00486] {DRAFT} UdpNmPnEnabled가 TRUE로 설정되면 수신된 NM-PDU의 PNI 비트가 1로 설정되고 PNSR 비트가 0으로 설정되면 UdpNm 모듈은 부분 네트워크 구성(해당 NM 채널의 NmPncBitVectorOffset 및 NmPncBitVectorLength)으로 이동하고 Nm_PncBitVectorRxIndication&amp;rfloor;(RS_Nm_02546, RS_Nm_02519, RS_Nm_02547)을 호출하여 PNC 비트 벡터를 전달합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00487]&amp;nbsp;{DRAFT}&amp;nbsp;UdpNmPnEnabled가&amp;nbsp;TRUE로&amp;nbsp;설정되고&amp;nbsp;Nm_PncBitVectorRxIndication이&amp;nbsp;호출된&amp;nbsp;경우&amp;nbsp;수신된&amp;nbsp;NM&amp;nbsp;PDU는&amp;nbsp;다음&amp;nbsp;조건&amp;nbsp;하에서만&amp;nbsp;추가&amp;nbsp;처리를&amp;nbsp;위해&amp;nbsp;고려됩니다. &lt;br /&gt;-&amp;nbsp;UdpNmAllNmMessagesKeepAwake가&amp;nbsp;TRUE로&amp;nbsp;설정되거나 &lt;br /&gt;-&amp;nbsp;RelevantPncRequestDetectedPtr의&amp;nbsp;출력&amp;nbsp;값이&amp;nbsp;TRUE&amp;nbsp;&amp;rfloor;(RS_Nm_02546,&amp;nbsp;RS_Nm_02527)로&amp;nbsp;설정됩니다. &lt;br /&gt;&lt;br /&gt;참고: &lt;br /&gt;-&amp;nbsp;UdpNmAllNmMessagesKeepAwake는&amp;nbsp;게이트웨이가&amp;nbsp;모든&amp;nbsp;종류의&amp;nbsp;NM-PDU에서&amp;nbsp;깨어&amp;nbsp;있는&amp;nbsp;상태를&amp;nbsp;유지하는&amp;nbsp;데&amp;nbsp;필요합니다. &lt;br /&gt;-&amp;nbsp;SWS_UdpNm_00487의&amp;nbsp;결과로&amp;nbsp;모든&amp;nbsp;메시지가&amp;nbsp;ECU를&amp;nbsp;깨우지&amp;nbsp;않거나&amp;nbsp;관련&amp;nbsp;PN&amp;nbsp;정보가&amp;nbsp;감지되지&amp;nbsp;않은&amp;nbsp;경우&amp;nbsp;NM&amp;nbsp;PDU는&amp;nbsp;추가&amp;nbsp;처리를&amp;nbsp;위해&amp;nbsp;고려되지&amp;nbsp;않습니다. &lt;br /&gt;예시: &lt;br /&gt;-&amp;nbsp;UdpNmPduCbv위치&amp;nbsp;=&amp;nbsp;0 &lt;br /&gt;-&amp;nbsp;UdpNmPduNidPosition&amp;nbsp;=&amp;nbsp;1 &lt;br /&gt;-&amp;nbsp;NmPncBitVectorOffset&amp;nbsp;=&amp;nbsp;4 &lt;br /&gt;-&amp;nbsp;NmPncBitVectorLength&amp;nbsp;=&amp;nbsp;4 &lt;br /&gt;-&amp;nbsp;사용자&amp;nbsp;데이터&amp;nbsp;범위의&amp;nbsp;계산된&amp;nbsp;길이&amp;nbsp;=&amp;nbsp;2 &lt;br /&gt;NM&amp;nbsp;PDU의&amp;nbsp;바이트&amp;nbsp;2와&amp;nbsp;바이트&amp;nbsp;3에는&amp;nbsp;사용자&amp;nbsp;데이터가&amp;nbsp;포함되고&amp;nbsp;NM&amp;nbsp;PDU의&amp;nbsp;바이트&amp;nbsp;4~바이트&amp;nbsp;7에는&amp;nbsp;PNC&amp;nbsp;비트&amp;nbsp;벡터가&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;782&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b93gbk/btrLK0VFZfq/af8U4lBCws1IOq2MJnf240/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b93gbk/btrLK0VFZfq/af8U4lBCws1IOq2MJnf240/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b93gbk/btrLK0VFZfq/af8U4lBCws1IOq2MJnf240/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb93gbk%2FbtrLK0VFZfq%2Faf8U4lBCws1IOq2MJnf240%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;782&quot; height=&quot;82&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이&amp;nbsp;예에서는&amp;nbsp;4개의&amp;nbsp;NmPnFilterMaskBytes가&amp;nbsp;정의되어야&amp;nbsp;합니다.&amp;nbsp;PN&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;예: &lt;br /&gt;-&amp;nbsp;NmPnFilterMaskByteIndex&amp;nbsp;=&amp;nbsp;0,&amp;nbsp;NmPnFilterMaskByteValue&amp;nbsp;=&amp;nbsp;0x01 &lt;br /&gt;-&amp;nbsp;NmPnFilterMaskByteIndex&amp;nbsp;=&amp;nbsp;1,&amp;nbsp;NmPnFilterMaskByteValue&amp;nbsp;=&amp;nbsp;0x97 &lt;br /&gt;-&amp;nbsp;NmPnFilterMaskByteIndex&amp;nbsp;=&amp;nbsp;2,&amp;nbsp;NmPnFilterMaskByteValue&amp;nbsp;=&amp;nbsp;0x00 &lt;br /&gt;-&amp;nbsp;NmPnFilterMaskByteIndex&amp;nbsp;=&amp;nbsp;3,&amp;nbsp;NmPnFilterMaskByteValue&amp;nbsp;=&amp;nbsp;0x00 &lt;br /&gt;참고:&amp;nbsp;PNC&amp;nbsp;비트&amp;nbsp;벡터의&amp;nbsp;오프셋은&amp;nbsp;Nm&amp;nbsp;모듈(NmPncBitVectorOffset)에서&amp;nbsp;파생됩니다.&amp;nbsp;PNC&amp;nbsp;비트&amp;nbsp;벡터&amp;nbsp;길이는&amp;nbsp;NM&amp;nbsp;채널당&amp;nbsp;Nm&amp;nbsp;모듈(NmPncBitVectorLength)에서&amp;nbsp;파생됩니다.&amp;nbsp;Nm&amp;nbsp;모듈에서&amp;nbsp;찾아&amp;nbsp;사용되는&amp;nbsp;PN&amp;nbsp;필터&amp;nbsp;마스크(NmPnFilterMaskByteIndex&amp;nbsp;및&amp;nbsp;NmPnFilterMaskByteValue)입니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00473] {DRAFT} UdpNmSynchronizedPncShutdownEnabled가 TRUE이면 수신된 NM-PDU의 PNI 비트는 1이고 수신된 NM-PDU의 PNSR 비트는 1이며 UdpNmComMNetworkHandleRef를 통해 구성된 해당 ComMChannel은 이 NM-PDU가 능동적으로 수신된 곳입니다. 조정된 경우(ComMPncGatewayType이 COMM_GATEWAY_TYPE_ACTIVE로 설정됨) UdpNm 모듈은 수신된 NM-PDU를 무시해야 합니다. 또한 UdpNm 모듈은 다음을 수행해야 합니다. &lt;br /&gt;-&amp;nbsp;런타임&amp;nbsp;오류&amp;nbsp;UDPNM_E_INVALID_PN_SYNC_SHUTDOWN_REQUEST를&amp;nbsp;기본&amp;nbsp;오류&amp;nbsp;추적기에&amp;nbsp;보고합니다. &lt;br /&gt;-&amp;nbsp;UdpNmPnSyncShutdownErrorReactionEnabled가&amp;nbsp;TRUE로&amp;nbsp;설정된&amp;nbsp;경우&amp;nbsp;영향을&amp;nbsp;받는&amp;nbsp;UdpNm-Channel의&amp;nbsp;다음&amp;nbsp;주&amp;nbsp;기능&amp;nbsp;호출에서&amp;nbsp;최신&amp;nbsp;PN&amp;nbsp;정보가&amp;nbsp;있는&amp;nbsp;NM-PDU의&amp;nbsp;전송을&amp;nbsp;요청합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00488] {DRAFT} UdpNmSynchronizedPncShutdownEnabled가 TRUE이면 수신된 NM-PDU의 PNI 비트가 1로 설정되고 PNSR 비트가 1로 설정되면 UdpNm 모듈은 부분 네트워크 구성(해당 NM 채널의 NmPncBitVectorOffset 및 NmPncBitVectorLength) 및 Nm_ForwardSynchronizedPncShutdown을 호출하여 PNC 비트 벡터를 전달합니다.&amp;nbsp;&lt;br /&gt;참고:&amp;nbsp;1로&amp;nbsp;설정된&amp;nbsp;PNSR&amp;nbsp;비트는&amp;nbsp;동기화된&amp;nbsp;PNC&amp;nbsp;종료가&amp;nbsp;요청된&amp;nbsp;경우에만&amp;nbsp;가능합니다.&amp;nbsp;동기화된&amp;nbsp;PNC&amp;nbsp;종료는&amp;nbsp;PN&amp;nbsp;토폴로지에서&amp;nbsp;처리해야&amp;nbsp;합니다.&amp;nbsp;따라서&amp;nbsp;모든&amp;nbsp;코디네이터가&amp;nbsp;동기화된&amp;nbsp;PNC&amp;nbsp;종료를&amp;nbsp;활성화했거나&amp;nbsp;모든&amp;nbsp;코디네이터가&amp;nbsp;동기화된&amp;nbsp;PNC&amp;nbsp;종료를&amp;nbsp;비활성화했다고&amp;nbsp;가정합니다.&amp;nbsp;두&amp;nbsp;가지를&amp;nbsp;혼합하면&amp;nbsp;동기화되지&amp;nbsp;않은&amp;nbsp;PNC&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;h2 data-ke-size=&quot;size26&quot;&gt;2. NM PDU의 TX 처리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_UdpNm_00332]UdpNmPnEnabled가&amp;nbsp;TRUE인&amp;nbsp;경우&amp;nbsp;UdpNm&amp;nbsp;모듈은&amp;nbsp;CBV에서&amp;nbsp;전송된&amp;nbsp;PNI&amp;nbsp;비트의&amp;nbsp;값을&amp;nbsp;1로&amp;nbsp;설정해야&amp;nbsp;합니다. &lt;br /&gt;참고:&amp;nbsp;부분&amp;nbsp;네트워킹을&amp;nbsp;사용하는&amp;nbsp;경우&amp;nbsp;CBV를&amp;nbsp;사용해야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00333]&amp;nbsp;UdpNmPnEnabled가&amp;nbsp;FALSE이면&amp;nbsp;UdpNm&amp;nbsp;모듈은&amp;nbsp;CBV에서&amp;nbsp;전송된&amp;nbsp;PNI&amp;nbsp;비트의&amp;nbsp;값을&amp;nbsp;항상&amp;nbsp;0으로&amp;nbsp;설정해야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00489] {DRAFT} UdpNmPnEnabled가 TRUE이면 NM-PDU 가 SoAd(SoAdBswModules /SoAdIfTriggerTransmit이 FALSE로 설정됨)에서 트리거된 전송에 대해 구성되지 않고 동기화된 PNC 종료에 대한 요청이 보류되지 않고 NM-PDU가 전송되어야 합니다. UdpNm 모듈은 지정된 순서대로 다음 작업을 수행합니다. &lt;br /&gt;-&amp;nbsp;Nm_PncBitVectorTxIndication(&amp;lt;NM-channel&amp;gt;,&amp;nbsp;&amp;lt;집합된&amp;nbsp;내부&amp;nbsp;PNC&amp;nbsp;요청의&amp;nbsp;필터링되지&amp;nbsp;않은&amp;nbsp;PNC&amp;nbsp;비트&amp;nbsp;벡터를&amp;nbsp;저장하는&amp;nbsp;버퍼&amp;gt;)을&amp;nbsp;호출하여&amp;nbsp;전송&amp;nbsp;요청을&amp;nbsp;표시하고&amp;nbsp;내부&amp;nbsp;PNC&amp;nbsp;요청을&amp;nbsp;검색합니다. &lt;br /&gt;-&amp;nbsp;내부&amp;nbsp;PNC&amp;nbsp;요청을&amp;nbsp;위한&amp;nbsp;수신된&amp;nbsp;PNC&amp;nbsp;비트&amp;nbsp;벡터를&amp;nbsp;해당&amp;nbsp;NM&amp;nbsp;채널의&amp;nbsp;NmPncBitVectorOffset&amp;nbsp;및&amp;nbsp;NmPncBitVectorLength를&amp;nbsp;고려하여&amp;nbsp;NM-PDU에&amp;nbsp;복사 &lt;br /&gt;-&amp;nbsp;사용자&amp;nbsp;데이터가&amp;nbsp;활성화된&amp;nbsp;경우&amp;nbsp;사용&amp;nbsp;가능한&amp;nbsp;데이터(UdpNmComUserDataSupport가&amp;nbsp;활성화된&amp;nbsp;경우&amp;nbsp;Com&amp;nbsp;또는&amp;nbsp;내부&amp;nbsp;저장소에서)를&amp;nbsp;가져와&amp;nbsp;NM-PDU의&amp;nbsp;사용자&amp;nbsp;데이터&amp;nbsp;범위에&amp;nbsp;있는&amp;nbsp;데이터를&amp;nbsp;복사합니다. &lt;br /&gt;-&amp;nbsp;SoAd_IfTransmit&amp;nbsp;RS_Nm_02546,&amp;nbsp;RS_Nm_02519,&amp;nbsp;RS_Nm_02547을&amp;nbsp;호출하여&amp;nbsp;NM-PDU의&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;[SWS_UdpNm_00474]&amp;nbsp;{DRAFT}&amp;nbsp;UdpNmSynchronizedPncShutdownEnabled가&amp;nbsp;TRUE로&amp;nbsp;설정되고&amp;nbsp;UdpNm&amp;nbsp;모듈이&amp;nbsp;UdpNm_RequestSynchronizedPncShutdown을&amp;nbsp;통해&amp;nbsp;표시되는&amp;nbsp;경우&amp;nbsp;UdpNm&amp;nbsp;모듈은&amp;nbsp;주어진&amp;nbsp;UdpNm-Channel에&amp;nbsp;대한&amp;nbsp;PNC(pncId)를&amp;nbsp;저장해야&amp;nbsp;합니다. &lt;br /&gt;참고:&amp;nbsp;동기화된&amp;nbsp;PNC&amp;nbsp;종료&amp;nbsp;및&amp;nbsp;PN&amp;nbsp;종료&amp;nbsp;메시지(CBV의&amp;nbsp;PNSR&amp;nbsp;비트를&amp;nbsp;1로&amp;nbsp;설정)로&amp;nbsp;전송을&amp;nbsp;위해&amp;nbsp;요청된&amp;nbsp;모든&amp;nbsp;PNC의&amp;nbsp;집계는&amp;nbsp;해당&amp;nbsp;UdpNm_Mainfunction의&amp;nbsp;컨텍스트에서&amp;nbsp;비동기적으로&amp;nbsp;수행됩니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00475]&amp;nbsp;{&amp;nbsp;OBSOLETE&amp;nbsp;replace&amp;nbsp;by&amp;nbsp;SWS_UdpNm_00490&amp;nbsp;}&amp;nbsp;UdpNmSynchronizedPncShutdownEnabled가&amp;nbsp;TRUE로&amp;nbsp;설정된&amp;nbsp;경우&amp;nbsp;동기화된&amp;nbsp;PNC&amp;nbsp;종료&amp;nbsp;요청이&amp;nbsp;보류&amp;nbsp;중이며&amp;nbsp;전송&amp;nbsp;확인(UdpNm_TxConfirmation을&amp;nbsp;통해&amp;nbsp;표시됨)이&amp;nbsp;전송&amp;nbsp;확인이&amp;nbsp;되지&amp;nbsp;않으면&amp;nbsp;이전&amp;nbsp;호출의&amp;nbsp;모듈&amp;nbsp;Udm&amp;nbsp;요청이&amp;nbsp;보류됩니다.&amp;nbsp;대응하는&amp;nbsp;NM-채널의&amp;nbsp;호출은&amp;nbsp;SoAd_IfTransmit을&amp;nbsp;호출함으로써&amp;nbsp;NM&amp;nbsp;메시지의&amp;nbsp;전송이다.&amp;nbsp;NM-PDU가&amp;nbsp;SoAd에서&amp;nbsp;트리거된&amp;nbsp;전송에&amp;nbsp;대해&amp;nbsp;구성되지&amp;nbsp;않은&amp;nbsp;경우(SoAdBswModules/SoAdIfTriggerTransmit&amp;nbsp;=&amp;nbsp;FALSE),&amp;nbsp;UdpNm은&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;CBV의&amp;nbsp;PNSR&amp;nbsp;비트를&amp;nbsp;1로&amp;nbsp;설정 &lt;br /&gt;-&amp;nbsp;동기화된&amp;nbsp;PNC&amp;nbsp;종료에&amp;nbsp;대한&amp;nbsp;보류&amp;nbsp;요청으로&amp;nbsp;저장된&amp;nbsp;PNC&amp;nbsp;ID에&amp;nbsp;해당하는&amp;nbsp;비트를&amp;nbsp;1로&amp;nbsp;설정하고&amp;nbsp;다른&amp;nbsp;모든&amp;nbsp;비트를&amp;nbsp;0으로&amp;nbsp;설정하여&amp;nbsp;사용자&amp;nbsp;데이터의&amp;nbsp;PN&amp;nbsp;정보를&amp;nbsp;덮어씁니다(NM&amp;nbsp;사용자&amp;nbsp;데이터를&amp;nbsp;가져온&amp;nbsp;후&amp;nbsp;UdpNmComUserDataSupport가&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;[SWS_UdpNm_00490] {DRAFT} UdpNmSynchronizedPncShutdownEnabled가 TRUE로 설정되면 동기화된 PNC 종료에 대한 요청이 보류되고 이전 호출의 전송 확인(UdpNm_TxConfirmation을 통해 표시됨)이 보류 중인 경우 UdpNm 모듈은 다음 주 기능 호출에서 a를 요청해야 합니다. SoAd_IfTransmit를 호출하여 NM-PDU를 PN 종료 메시지로 전송합니다. NM-PDU가 SoAd에서 트리거된 전송을 위해 구성되지 않은 경우(SoAdBswModules/SoAdIfTriggerTransmit = FALSE), UdpNm은 이 메시지에 대해 일반 데이터 아래에 다음 데이터를 추가로 설정해야 합니다. &lt;br /&gt;-&amp;nbsp;CBV의&amp;nbsp;PNSR&amp;nbsp;비트를&amp;nbsp;1로&amp;nbsp;설정 &lt;br /&gt;-&amp;nbsp;사용자&amp;nbsp;데이터가&amp;nbsp;활성화된&amp;nbsp;경우&amp;nbsp;사용&amp;nbsp;가능한&amp;nbsp;데이터(UdpNmComUserDataSupport가&amp;nbsp;활성화된&amp;nbsp;경우&amp;nbsp;Com&amp;nbsp;또는&amp;nbsp;내부&amp;nbsp;저장소에서)를&amp;nbsp;가져와&amp;nbsp;NM-PDU의&amp;nbsp;사용자&amp;nbsp;데이터&amp;nbsp;범위에&amp;nbsp;있는&amp;nbsp;데이터를&amp;nbsp;복사합니다. &lt;br /&gt;- 동기화된 PNC 종료에 대한 보류 요청으로 저장된 PNC ID에 해당하는 비트를 1로, 다른 모든 비트를 0으로 설정하여 해당 NM 채널의 NmPncBitVectorOffset 및 NmPncBitVectorLength에 대한 PNC 비트 벡터 쓰기&amp;nbsp;&lt;br /&gt;참고: UdpNm 모듈은 동기화된 PNC 종료에 대해 표시된 모든 PNC를 집계하고 pncId를 바이트 배열(PNC 비트 벡터)로 전송해야 합니다. PNC 비트 벡터의 각 비트(PNC 비트)는 특정 PNC를 나타냅니다. PNC 비트의 PNC 비트 벡터 내의 byteIndex 및 bitindex는 다음과 같이 결정됩니다. &lt;br /&gt;-&amp;nbsp;byteIndex&amp;nbsp;=&amp;nbsp;(PncId&amp;nbsp;div&amp;nbsp;8)&amp;nbsp;-&amp;nbsp;NmPncBitVectorOffset &lt;br /&gt;-&amp;nbsp;bitIndex&amp;nbsp;=&amp;nbsp;(PncId&amp;nbsp;모드&amp;nbsp;8) &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00481] UdpNmPnShutdownMessageRetransmissionDuration이 구성되고 PN 종료 메시지 전송이 처음으로 요청되면(SWS_UdpNm_00475 참조), PN 종료 메시지에 대한 해당 재전송 타이머는 UdpNmPnShutdownMessageRetransmissionRetransmissionRetransmission.NmPnDurationRetransmission에 의해 시작되어야 합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00476]&amp;nbsp;{DRAFT}&amp;nbsp;UdpNmSynchronizedPncShutdownEnabled가&amp;nbsp;TRUE로&amp;nbsp;설정된&amp;nbsp;경우&amp;nbsp;UdpNm&amp;nbsp;모듈은&amp;nbsp;NM-PDU의&amp;nbsp;전송을&amp;nbsp;PN&amp;nbsp;종료&amp;nbsp;메시지로&amp;nbsp;요청했습니다(SWS_UdpNm_00490&amp;nbsp;참조).&amp;nbsp;해당&amp;nbsp;NM&amp;nbsp;채널의&amp;nbsp;동기화된&amp;nbsp;PNC&amp;nbsp;종료에&amp;nbsp;대한&amp;nbsp;보류&amp;nbsp;중인&amp;nbsp;요청을&amp;nbsp;완료하고&amp;nbsp;저장소에서&amp;nbsp;제거합니다.&amp;nbsp;또한&amp;nbsp;UdpNmPnShutdownMessageRetransmissionDuration이&amp;nbsp;구성되면&amp;nbsp;UdpNm은&amp;nbsp;영향을&amp;nbsp;받는&amp;nbsp;NM&amp;nbsp;채널의&amp;nbsp;PN&amp;nbsp;종료&amp;nbsp;메시지에&amp;nbsp;대한&amp;nbsp;재전송&amp;nbsp;타이머를&amp;nbsp;취소해야&amp;nbsp;합니다.&amp;nbsp;RS_Nm_02545&amp;nbsp;) &lt;br /&gt;참고:&amp;nbsp;UdpNm은&amp;nbsp;동기화된&amp;nbsp;PNC&amp;nbsp;종료에&amp;nbsp;대한&amp;nbsp;새&amp;nbsp;요청(UdpNm_RequestSynchronizedPncShutdown을&amp;nbsp;통해&amp;nbsp;표시됨)이&amp;nbsp;PN&amp;nbsp;종료&amp;nbsp;NM&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;[SWS_UdpNm_00477] {DRAFT} UdpNmSynchronizedPncShutdownEnabled가 TRUE로 설정되고 UdpNmPnShutdownMessageRetransmissionDuration이 구성된 경우 UdpNm 모듈이 동기화된 PNC 종료로 인해 전송을 요청했거나(SWS_UdpNm_004475 UdpTPN iso가 있는 종료 요청에 대한 SWS_UdpNm_00dpTPN_OK 호출 결과) &lt;br /&gt;메시지가&amp;nbsp;수락되지&amp;nbsp;않은&amp;nbsp;경우(SoAd_IfTransmit가&amp;nbsp;E_NOT_OK를&amp;nbsp;반환함)&amp;nbsp;UdpNm&amp;nbsp;모듈은&amp;nbsp;동기화된&amp;nbsp;PNC&amp;nbsp;종료에&amp;nbsp;대한&amp;nbsp;보류&amp;nbsp;중인&amp;nbsp;요청으로&amp;nbsp;저장된&amp;nbsp;해당&amp;nbsp;PNC&amp;nbsp;ID를&amp;nbsp;유지하고&amp;nbsp;다음&amp;nbsp;주&amp;nbsp;기능에서&amp;nbsp;재전송을&amp;nbsp;수행해야&amp;nbsp;합니다.&amp;nbsp;RS_Nm_02545&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;br /&gt;-&amp;nbsp;PN&amp;nbsp;종료&amp;nbsp;메시지의&amp;nbsp;전송이&amp;nbsp;하위&amp;nbsp;계층에&amp;nbsp;의해&amp;nbsp;확인되지&amp;nbsp;않은&amp;nbsp;경우(E_NOT_OK&amp;nbsp;또는&amp;nbsp;UdpNm_SoAdIfTxConfirmation이&amp;nbsp;호출되지&amp;nbsp;않은&amp;nbsp;경우)&amp;nbsp;UdpNm은&amp;nbsp;해당하는&amp;nbsp;주요&amp;nbsp;기능&amp;nbsp;호출의&amp;nbsp;컨텍스트에서&amp;nbsp;PN&amp;nbsp;종료&amp;nbsp;메시지에&amp;nbsp;대한&amp;nbsp;재시도&amp;nbsp;전송&amp;nbsp;처리를&amp;nbsp;수행해야&amp;nbsp;합니다.&amp;nbsp;재시도&amp;nbsp;하위&amp;nbsp;계층이&amp;nbsp;Nm&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;UdpNmMsgCycleTime으로&amp;nbsp;전송된&amp;nbsp;연기된&amp;nbsp;NM&amp;nbsp;메시지와&amp;nbsp;충돌합니다(SWS_UdpNm_00472&amp;nbsp;참조).&amp;nbsp;그러나&amp;nbsp;어떤&amp;nbsp;경우에도&amp;nbsp;NM&amp;nbsp;메시지&amp;nbsp;전송&amp;nbsp;기능이&amp;nbsp;PN&amp;nbsp;재설정&amp;nbsp;시간(EIRA)&amp;nbsp;내에&amp;nbsp;복구되지&amp;nbsp;않으면&amp;nbsp;PNC가&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;-&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;PN&amp;nbsp;종료&amp;nbsp;메시지가&amp;nbsp;네트워크에서&amp;nbsp;전송되었는지&amp;nbsp;확인하거나&amp;nbsp;오래된&amp;nbsp;PN&amp;nbsp;종료&amp;nbsp;메시지의&amp;nbsp;전송을&amp;nbsp;피하십시오. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00482] UdpNmSynchronizedPncShutdownEnabled가 TRUE로 설정되고 UdpNm 모듈이 동기화된 PNC 종료에 대한 보류 중인 요청으로 PNC ID를 저장한 경우 UdpNm은 외부 또는 내부적으로 다시 요청되는 해당 PNC ID를 저장소에서 제거해야 합니다. &lt;br /&gt;-&amp;nbsp;UdpNm은&amp;nbsp;외부에서&amp;nbsp;요청한&amp;nbsp;PNC가&amp;nbsp;수신된&amp;nbsp;경우&amp;nbsp;NM&amp;nbsp;메시지&amp;nbsp;수신을&amp;nbsp;확인해야&amp;nbsp;합니다. &lt;br /&gt;-&amp;nbsp;UdpNm은&amp;nbsp;해당&amp;nbsp;ComPdu에서&amp;nbsp;내부&amp;nbsp;PNC&amp;nbsp;요청을&amp;nbsp;파생하여&amp;nbsp;내부&amp;nbsp;PNC&amp;nbsp;요청을&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;경우&amp;nbsp;PN&amp;nbsp;종료&amp;nbsp;메시지의&amp;nbsp;각&amp;nbsp;전송에&amp;nbsp;앞서&amp;nbsp;확인해야&amp;nbsp;합니다(UdpNmTxUserDataPduRef&amp;nbsp;참조). &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00483] UdpNmSynchronizedPncShutdownEnabled가 TRUE로 설정되고 UdpNmPnShutdownMessageRetransmissionDuration이 구성되지 않은 경우 UdpNm 모듈이 동기화된 PNC 종료로 인해 전송을 요청했습니다(SWS_UdpNm_00475 참조). (SoAdIf_Transmit가 E_NOT_OK를 반환함), UdpNm은 해당 NM 채널의 동기화된 PNC 종료에 대한 보류 중인 요청으로 저장된 PNC ID를 제거하고 런타임 오류 UDPNM_E_TRANSMISSION_OF_PN_SHUTDOWN_MESSAGE_FAILED를 DET에 보고합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00484] UdpNmSynchronizedPncShutdownEnabled가 TRUE로 설정되고 PN 종료 메시지에 대한 재전송 타이머(ECUC_UdpNm_00098 참조)가 만료되면 UdpNm은 동기화된 PNC 종료에 대한 보류 요청을 제거하고 오류 저장소에서 해당 NM 채널의 런타임을 보고합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 내부 요청된 Partial Network 클러스터 처리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 내부 PNC 요청은 ComM에서 관리합니다. ComM은 채널당 집계된 내부 PNC 요청을 NmIf에 PNC 비트 벡터로 전달합니다. 이 PNC 비트 벡터는 소위 &quot;Internal&amp;nbsp;Request&amp;nbsp;Array&quot;을 전달합니다. UdpNm은 NM_PDU가 전송될 때마다 NmIf에서 최신 IRA를 검색해야 합니다. NmIf는 UdpNm에 IRA 정보를 제공하고 PNC 재설정 타이머를 업데이트합니다(관련 PNC가 전송될 때마다 PNC 재설정 타이머가 다시 시작됨). &lt;br /&gt;참고: UdpNmPnEnabled가 TRUE로 설정된 모든 구성된 NM 채널의 경우 UdpNm은 Nm_PncBitVectorTxIndication(&amp;lt;NM-channel&amp;gt;, &amp;lt;집계된 내부 PNC 요청의 필터링되지 않은 PNC 비트 벡터를 저장하는 버퍼&amp;gt;)을 호출합니다. 전송을 표시하고 구성된 NmPncBitVectorLength에 대한 PNC 비트 벡터로 현재 내부 PNC 요청을 검색합니다. UdpNm은 수신된 내부 PNC 요청을 NM-PDU의 PNC 비트 벡터 바이트로 복사합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. NM PDU Filter Algorithm&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_UdpNm_00335]&amp;nbsp;{OBSOLETE}&amp;nbsp;수신된&amp;nbsp;NM-PDU에서&amp;nbsp;PN&amp;nbsp;요청&amp;nbsp;정보(PN&amp;nbsp;Info&amp;nbsp;Range)를&amp;nbsp;포함하는&amp;nbsp;범위(바이트)는&amp;nbsp;바이트&amp;nbsp;0에서&amp;nbsp;시작하는&amp;nbsp;UdpNmPnInfoOffset(바이트)&amp;nbsp;및&amp;nbsp;UdpNmPnInfoLength(바이트)로&amp;nbsp;정의됩니다.&amp;nbsp;이&amp;nbsp;범위를&amp;nbsp;PN&amp;nbsp;정보&amp;nbsp;범위라고&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;예시: &lt;br /&gt;-&amp;nbsp;UdpNmPnInfoOffset&amp;nbsp;=&amp;nbsp;3 &lt;br /&gt;-&amp;nbsp;UdpNmPnInfoLength&amp;nbsp;=&amp;nbsp;2 &lt;br /&gt;NM&amp;nbsp;메시지의&amp;nbsp;Byte&amp;nbsp;3&amp;nbsp;및&amp;nbsp;Byte&amp;nbsp;4에만&amp;nbsp;PN&amp;nbsp;요청&amp;nbsp;정보가&amp;nbsp;포함됩니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00336]&amp;nbsp;{OBSOLETE}&amp;nbsp;PN&amp;nbsp;정보&amp;nbsp;범위의&amp;nbsp;모든&amp;nbsp;비트는&amp;nbsp;하나의&amp;nbsp;부분&amp;nbsp;네트워크를&amp;nbsp;나타냅니다.&amp;nbsp;비트가&amp;nbsp;1로&amp;nbsp;설정되면&amp;nbsp;부분&amp;nbsp;네트워크가&amp;nbsp;요청됩니다.&amp;nbsp;비트가&amp;nbsp;0으로&amp;nbsp;설정되면&amp;nbsp;이&amp;nbsp;PN에&amp;nbsp;대한&amp;nbsp;요청이&amp;nbsp;없습니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00337]&amp;nbsp;{OBSOLETE}&amp;nbsp;구성&amp;nbsp;매개변수&amp;nbsp;UdpNmPnFilterMaskByte를&amp;nbsp;통해&amp;nbsp;UdpNm은&amp;nbsp;ECU와&amp;nbsp;관련된&amp;nbsp;PN과&amp;nbsp;그렇지&amp;nbsp;않은&amp;nbsp;PN을&amp;nbsp;감지할&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;UdpNmPnFilterMasskByte의&amp;nbsp;각&amp;nbsp;비트는&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;의미를&amp;nbsp;갖습니다. &lt;br /&gt;0)&amp;nbsp;PN&amp;nbsp;요청은&amp;nbsp;ECU와&amp;nbsp;관련이&amp;nbsp;없습니다.&amp;nbsp;이&amp;nbsp;비트가&amp;nbsp;수신된&amp;nbsp;NM-PDU에&amp;nbsp;설정되어&amp;nbsp;있으면&amp;nbsp;ECU의&amp;nbsp;통신&amp;nbsp;스택이&amp;nbsp;깨어&amp;nbsp;있는&amp;nbsp;상태로&amp;nbsp;유지되지&amp;nbsp;않습니다. &lt;br /&gt;&lt;br /&gt;1)&amp;nbsp;PN&amp;nbsp;요청은&amp;nbsp;ECU와&amp;nbsp;관련이&amp;nbsp;있습니다.&amp;nbsp;이&amp;nbsp;비트가&amp;nbsp;수신된&amp;nbsp;NM-PDU에&amp;nbsp;설정되어&amp;nbsp;있으면&amp;nbsp;ECU의&amp;nbsp;통신&amp;nbsp;스택이&amp;nbsp;깨어&amp;nbsp;있는&amp;nbsp;상태로&amp;nbsp;유지됩니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00338]&amp;nbsp;{OBSOLETE}&amp;nbsp;각&amp;nbsp;PN&amp;nbsp;필터&amp;nbsp;마스크&amp;nbsp;바이트는&amp;nbsp;NM&amp;nbsp;메시지의&amp;nbsp;PN&amp;nbsp;정보&amp;nbsp;범위에&amp;nbsp;있는&amp;nbsp;해당&amp;nbsp;바이트에&amp;nbsp;매핑(비트&amp;nbsp;AND)해야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00339]&amp;nbsp;{OBSOLETE&amp;nbsp;replace&amp;nbsp;by&amp;nbsp;SWS_UdpNm_00487&amp;nbsp;}&amp;nbsp;수신된&amp;nbsp;NM-PDU의&amp;nbsp;PN&amp;nbsp;정보&amp;nbsp;범위&amp;nbsp;내의&amp;nbsp;적어도&amp;nbsp;하나의&amp;nbsp;비트가&amp;nbsp;NM&amp;nbsp;필터&amp;nbsp;마스크의&amp;nbsp;비트와&amp;nbsp;일치하는&amp;nbsp;경우&amp;nbsp;PN&amp;nbsp;요청&amp;nbsp;정보는&amp;nbsp;ECU와&amp;nbsp;관련됩니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00460]&amp;nbsp;{OBSOLETE&amp;nbsp;replace&amp;nbsp;by&amp;nbsp;SWS_UdpNm_00487&amp;nbsp;}&amp;nbsp;수신된&amp;nbsp;NM-PDU에&amp;nbsp;관련&amp;nbsp;PN이&amp;nbsp;요청되지&amp;nbsp;않고 &lt;br /&gt;UdpNmAllNmMessagesKeepAwake가&amp;nbsp;FALSE이면&amp;nbsp;PDU가&amp;nbsp;추가&amp;nbsp;처리에서&amp;nbsp;삭제됩니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00461]&amp;nbsp;{OBSOLETE&amp;nbsp;replace&amp;nbsp;by&amp;nbsp;SWS_UdpNm_00487&amp;nbsp;}&amp;nbsp;수신된&amp;nbsp;NM-PDU에&amp;nbsp;관련&amp;nbsp;PN이&amp;nbsp;요청되지&amp;nbsp;않고 &lt;br /&gt;UdpNmAllNmMessagesKeepAwake가&amp;nbsp;TRUE이면&amp;nbsp;PDU가&amp;nbsp;추가&amp;nbsp;Rx&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;h2 data-ke-size=&quot;size26&quot;&gt;5. 내부 및 외부 요청된 Partial Network 집계&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고: 이 기능은 Partial Network의 활동으로 인해 I-PDU-그룹을 전환해야 하는 모든 ECU에서 사용됩니다. (예: 잘못된 타임아웃을 방지하기 위해) I-PDU-그룹은 해당 PN이 내부 또는 외부에서 요청되는 경우 켜야 합니다. I-PDU-그룹은 해당 PN에 대한 모든 내부 및 외부 요청이 해제될 때까지 꺼지지 않습니다. &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;IPDU&amp;nbsp;그룹을&amp;nbsp;전환하기&amp;nbsp;위한&amp;nbsp;논리는&amp;nbsp;ComM에&amp;nbsp;의해&amp;nbsp;구현됩니다.&amp;nbsp;UdpNm은&amp;nbsp;PN이&amp;nbsp;요청되었는지&amp;nbsp;여부만&amp;nbsp;정보를&amp;nbsp;제공합니다.&amp;nbsp;COM&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;모든&amp;nbsp;직접&amp;nbsp;연결된&amp;nbsp;ECU에서&amp;nbsp;I-PDU-그룹을&amp;nbsp;동기적으로&amp;nbsp;전환하기&amp;nbsp;위해&amp;nbsp;UdpNm은&amp;nbsp;모든&amp;nbsp;ECU에서&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;NM&amp;nbsp;메시지와&amp;nbsp;전송된&amp;nbsp;모든&amp;nbsp;NM&amp;nbsp;메시지에서&amp;nbsp;다시&amp;nbsp;시작되는&amp;nbsp;이유입니다(아래&amp;nbsp;참조). &lt;br /&gt;내부/외부&amp;nbsp;요청&amp;nbsp;PN의&amp;nbsp;집계된&amp;nbsp;상태를&amp;nbsp;EIRA(External&amp;nbsp;Internal&amp;nbsp;Requests&amp;nbsp;Aggregated)라고&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00344]&amp;nbsp;{OBSOLETE}&amp;nbsp;UdpNmPnEiraCalcEnabled가&amp;nbsp;TRUE인&amp;nbsp;경우&amp;nbsp;UdpNm은&amp;nbsp;모든&amp;nbsp;관련&amp;nbsp;채널(UdpNmPnEnabled가&amp;nbsp;TRUE인&amp;nbsp;모든&amp;nbsp;UdpNm&amp;nbsp;채널)을&amp;nbsp;통해&amp;nbsp;결합된&amp;nbsp;외부&amp;nbsp;및&amp;nbsp;내부&amp;nbsp;요청&amp;nbsp;PN을&amp;nbsp;저장할&amp;nbsp;가능성을&amp;nbsp;제공해야&amp;nbsp;합니다.&amp;nbsp;초기화&amp;nbsp;시&amp;nbsp;모든&amp;nbsp;PN의&amp;nbsp;값은&amp;nbsp;0으로&amp;nbsp;설정되어야&amp;nbsp;합니다(요청되지&amp;nbsp;않음). &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00347]&amp;nbsp;{OBSOLETE}&amp;nbsp;만약 &lt;br /&gt;- UdpNmPnEiraCalcEnabled가 참인 경우&lt;br /&gt;- NM-PDU가 수신된 경우&lt;br /&gt;- 이 메시지 내에서 PN이 요청된 경우(비트는 1로 설정됨) &lt;br /&gt;-&amp;nbsp;그리고&amp;nbsp;요청된&amp;nbsp;PN이&amp;nbsp;[구성된&amp;nbsp;PN&amp;nbsp;필터&amp;nbsp;마스크]&amp;nbsp;내에서&amp;nbsp;1로&amp;nbsp;설정되면&amp;nbsp;UdpNm은&amp;nbsp;이러한&amp;nbsp;PN에&amp;nbsp;대한&amp;nbsp;요청&amp;nbsp;정보(값&amp;nbsp;1)를&amp;nbsp;저장해야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00348]&amp;nbsp;{OBSOLETE}&amp;nbsp;만약 &lt;br /&gt;- UdpNmPnEiraCalcEnabled가 참인 경우&lt;br /&gt;- NM-PDU가 UdpNM에서 보내도록 요청된 경우&lt;br /&gt;- 이 메시지 내에서 PN이 요청된 경우(비트는 1로 설정됨) &lt;br /&gt;-&amp;nbsp;그리고&amp;nbsp;요청된&amp;nbsp;PN이&amp;nbsp;[구성된&amp;nbsp;PN&amp;nbsp;필터&amp;nbsp;마스크]&amp;nbsp;내에서&amp;nbsp;1로&amp;nbsp;설정되면&amp;nbsp;UdpNm은&amp;nbsp;이러한&amp;nbsp;PN에&amp;nbsp;대한&amp;nbsp;요청&amp;nbsp;정보(값&amp;nbsp;1)를&amp;nbsp;저장해야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00345]&amp;nbsp;{OBSOLETE}&amp;nbsp;UdpNmPnEiraCalcEnabled가&amp;nbsp;TRUE이면&amp;nbsp;UdpNm&amp;nbsp;모듈은&amp;nbsp;이&amp;nbsp;PN이&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;PN을&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;PN을&amp;nbsp;처리하는&amp;nbsp;데&amp;nbsp;하나의&amp;nbsp;타이머만&amp;nbsp;필요합니다.&amp;nbsp;예:&amp;nbsp;6개의&amp;nbsp;물리적&amp;nbsp;채널과&amp;nbsp;8개의&amp;nbsp;부분&amp;nbsp;네트워크가&amp;nbsp;있는&amp;nbsp;게이트웨이의&amp;nbsp;요청을&amp;nbsp;처리하려면&amp;nbsp;8개의&amp;nbsp;EIRA&amp;nbsp;재설정&amp;nbsp;타이머만&amp;nbsp;필요합니다. &lt;br /&gt;이는&amp;nbsp;PN&amp;nbsp;PDU-그룹의&amp;nbsp;전환이&amp;nbsp;물리적&amp;nbsp;채널에&amp;nbsp;종속되지&amp;nbsp;않고&amp;nbsp;ECU에&amp;nbsp;대해&amp;nbsp;전역적으로&amp;nbsp;수행되기&amp;nbsp;때문에&amp;nbsp;가능합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00349]&amp;nbsp;{OBSOLETE}&amp;nbsp;UdpNmPnEiraCalcEnabled가&amp;nbsp;TRUE이고&amp;nbsp;메시지&amp;nbsp;수신&amp;nbsp;또는&amp;nbsp;전송에&amp;nbsp;의해&amp;nbsp;PN이&amp;nbsp;요청되는&amp;nbsp;경우(SWS_UdpNM_00347&amp;nbsp;및&amp;nbsp;SWS_UdpNm_00348&amp;nbsp;참조)&amp;nbsp;이&amp;nbsp;PN에&amp;nbsp;대한&amp;nbsp;모니터링은&amp;nbsp;UdpnResetTime과&amp;nbsp;관련하여&amp;nbsp;다시&amp;nbsp;시작되어야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;참고:&amp;nbsp;UdpNmPnResetTime은&amp;nbsp;UdpNmMsgCycleTime보다&amp;nbsp;큰&amp;nbsp;값으로&amp;nbsp;구성되어야&amp;nbsp;합니다.&amp;nbsp;UdpNmPnResetTime이&amp;nbsp;UdpNmMsgCycleTime보다&amp;nbsp;작은&amp;nbsp;값으로&amp;nbsp;구성되고&amp;nbsp;하나의&amp;nbsp;ECU만&amp;nbsp;PN을&amp;nbsp;요청하는&amp;nbsp;경우&amp;nbsp;요청&amp;nbsp;상태가&amp;nbsp;EIRA에서&amp;nbsp;토글됩니다. &lt;br /&gt;&lt;br /&gt;참고:&amp;nbsp;UdpNmPnResetTime은&amp;nbsp;NM이&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;UdpNmTimeoutTime보다&amp;nbsp;작은&amp;nbsp;값으로&amp;nbsp;구성되어야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00351]&amp;nbsp;{OBSOLETE}&amp;nbsp;UdpNmPnEiraCalcEnabled가&amp;nbsp;TRUE이고&amp;nbsp;UdpNmPnResetTime&amp;nbsp;내에&amp;nbsp;PN이&amp;nbsp;다시&amp;nbsp;요청되지&amp;nbsp;않으면&amp;nbsp;이&amp;nbsp;PN에&amp;nbsp;해당하는&amp;nbsp;저장된&amp;nbsp;값을&amp;nbsp;0으로&amp;nbsp;설정해야&amp;nbsp;합니다(요청되지&amp;nbsp;않음). &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00352]&amp;nbsp;{OBSOLETE}&amp;nbsp;UdpNmPnEiraCalcEnabled가&amp;nbsp;TRUE이고&amp;nbsp;PN에&amp;nbsp;대한&amp;nbsp;저장된&amp;nbsp;값이&amp;nbsp;요청됨으로&amp;nbsp;설정되거나&amp;nbsp;다시&amp;nbsp;요청되지&amp;nbsp;않음으로&amp;nbsp;설정되는&amp;nbsp;경우(SWS_UdpNm_00347,&amp;nbsp;SWS_UdpNm_00347&amp;nbsp;참조,&amp;nbsp;SWS_UdpNm_00348&amp;nbsp;및&amp;nbsp;SWS_035NmR에&amp;nbsp;대해&amp;nbsp;구성된&amp;nbsp;SWS_UdpNm_00348&amp;nbsp;및&amp;nbsp;SWS_UdpNmR을&amp;nbsp;호출하여&amp;nbsp;SWS_UdpNm_R을&amp;nbsp;알립니다.&amp;nbsp;즉,&amp;nbsp;변경된&amp;nbsp;EIRA&amp;nbsp;정보는&amp;nbsp;COM에&amp;nbsp;전달됩니다). &lt;br /&gt;&lt;br /&gt;참고:&amp;nbsp;PN&amp;nbsp;종료&amp;nbsp;메시지가&amp;nbsp;수신되면(PNSR이&amp;nbsp;1로&amp;nbsp;설정됨)&amp;nbsp;해당&amp;nbsp;PNC&amp;nbsp;상태&amp;nbsp;머신이&amp;nbsp;COMM_PNC_READY_SLEEP에&amp;nbsp;있어야&amp;nbsp;하기&amp;nbsp;때문에&amp;nbsp;특별한&amp;nbsp;처리가&amp;nbsp;필요하지&amp;nbsp;않습니다.&amp;nbsp;ERA&amp;nbsp;PDU만&amp;nbsp;다른&amp;nbsp;방식으로&amp;nbsp;처리됩니다(SWS_UdpNm_00478&amp;nbsp;참조). &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00372]&amp;nbsp;{OBSOLETE}&amp;nbsp;UdpNmPnEiraCalcEnabled가&amp;nbsp;TRUE이고&amp;nbsp;UdpNmPnEraCalcEnabled가&amp;nbsp;TRUE인&amp;nbsp;경우&amp;nbsp;PN&amp;nbsp;상태&amp;nbsp;정보는&amp;nbsp;EIRA&amp;nbsp;및&amp;nbsp;ERA&amp;nbsp;정보에&amp;nbsp;대해&amp;nbsp;별도로&amp;nbsp;저장되어야&amp;nbsp;합니다(SWS_UdpNM_00344&amp;nbsp;및&amp;nbsp;SWS_00345와&amp;nbsp;비교).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;7. UdpNm_NetworkRequest를&amp;nbsp;통한&amp;nbsp;NM-PDU의&amp;nbsp;자발적&amp;nbsp;전송&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_UdpNm_00362]&amp;lceil; UdpNm_NetworkRequest가 호출되면 UdpNmPnHandleMultipleNetworkRequests는 TRUE로 설정되고 UdpNm은 준비&amp;nbsp;슬립&amp;nbsp;상태,&amp;nbsp;정상&amp;nbsp;작동&amp;nbsp;상태&amp;nbsp;또는&amp;nbsp;반복&amp;nbsp;메시지&amp;nbsp;상태,&amp;nbsp;UdpNm은&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;&lt;br /&gt;참고:&amp;nbsp;UdpNmPnHandleMultipleNetworkRequests가&amp;nbsp;TRUE로&amp;nbsp;설정된&amp;nbsp;경우&amp;nbsp;UdpNm&amp;nbsp;기능&amp;nbsp;'즉시&amp;nbsp;전송'은&amp;nbsp;필수입니다. &lt;br /&gt;참고:&amp;nbsp;PNC&amp;nbsp;제어&amp;nbsp;모듈(예:&amp;nbsp;ComM)은&amp;nbsp;PNC&amp;nbsp;비트가&amp;nbsp;변경되는&amp;nbsp;경우&amp;nbsp;UdpNm_NetworkRequest를&amp;nbsp;호출합니다.&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>UDP NM</category>
      <category>[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;UDP&amp;nbsp;Network&amp;nbsp;Management(NM)&amp;nbsp;3.&amp;nbsp;기능&amp;nbsp;사양&amp;nbsp;(8)&amp;nbsp;Partial Networking</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/606</guid>
      <comments>https://zidarn87.tistory.com/606#entry606comment</comments>
      <pubDate>Wed, 14 Sep 2022 01:42:11 +0900</pubDate>
    </item>
    <item>
      <title>[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (7) 추가 기능</title>
      <link>https://zidarn87.tistory.com/605</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;UDP&amp;nbsp;Network&amp;nbsp;Management(NM)&amp;nbsp;3.&amp;nbsp;기능&amp;nbsp;사양&amp;nbsp;(7)&amp;nbsp;추가&amp;nbsp;기능&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 : &lt;a href=&quot;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;원격 Sleep 표시 감지(선택 사항)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;원격&amp;nbsp;Sleep&amp;nbsp;표시&quot;는&amp;nbsp;정상&amp;nbsp;작동&amp;nbsp;상태의&amp;nbsp;노드가&amp;nbsp;클러스터의&amp;nbsp;다른&amp;nbsp;모든&amp;nbsp;노드가&amp;nbsp;Sleep할&amp;nbsp;준비가&amp;nbsp;되었음을&amp;nbsp;발견한&amp;nbsp;상황을&amp;nbsp;나타냅니다.&amp;nbsp;여전히&amp;nbsp;정상&amp;nbsp;작동&amp;nbsp;상태에&amp;nbsp;있는&amp;nbsp;노드는&amp;nbsp;bus를&amp;nbsp;계속&amp;nbsp;깨어&amp;nbsp;있는&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;p data-ke-size=&quot;size16&quot;&gt;[SWS_UdpNm_00149]&amp;nbsp;원격&amp;nbsp;Sleep&amp;nbsp;표시&amp;nbsp;감지는&amp;nbsp;UdpNmRemoteSleepIndEnabled&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;[SWS_UdpNm_00150] UdpNmRemoteSleepIndTime(구성 매개변수)에 의해 결정된 구성 가능한 시간 동안 정상 작동 상태에서 NM PDU가 수신되지 않으면 NM은 클러스터의 다른 모든 노드가 Sleep할 준비가 되었음을 일반 네트워크 관리 인터페이스에 알려야 합니다( Nm_RemoteSleepIndication을 호출하여 소위 '원격 Sleep표시'). &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;[SWS_UdpNm_00151] Remote Sleep Indication이 이전에 감지되었고 NM PDU가 Normal Operation State 또는 Ready Sleep State에서 다시 수신되면 NM은 클러스터의 일부 노드가 더 이상 슬립할 준비가 되지 않았음을 Generic Network Management Interface에 알려야 합니다. Nm_RemoteSleepCancellation을 호출하여 (소위 '원격 Sleep 취소'). &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00152] 원격 Sleep 표시가 이전에 감지되었고 Repeat Message 상태가 정상 작동 상태 또는 Ready Sleep 상태에서 입력된 경우 UdpNm은 클러스터의 일부 노드가 더 이상 절전할 준비가 되지 않았음을 일반 네트워크 관리 인터페이스에 알려야 합니다( Nm_RemoteSleepCancellation을 호출하여 소위 '원격 수면 취소'). &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00154]&amp;nbsp;NM은&amp;nbsp;Bus-Slee&amp;nbsp;모드,&amp;nbsp;Prepare&amp;nbsp;Bus-Sleep&amp;nbsp;및&amp;nbsp;Repeat&amp;nbsp;Message&amp;nbsp;상태에서&amp;nbsp;원격&amp;nbsp;Sleep&amp;nbsp;표시&amp;nbsp;확인을&amp;nbsp;거부해야&amp;nbsp;합니다.&amp;nbsp;서비스가&amp;nbsp;실행되지&amp;nbsp;않고&amp;nbsp;E_NOT_OK가&amp;nbsp;반환됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;사용자 데이터(선택 사항)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_UdpNm_00158]&amp;nbsp;NM&amp;nbsp;사용자&amp;nbsp;데이터&amp;nbsp;지원은&amp;nbsp;UdpNmUserDataEnabled&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;[SWS_UdpNm_00159]&amp;nbsp;UdpNm_SetUserData가&amp;nbsp;호출되면&amp;nbsp;버스에서&amp;nbsp;다음에&amp;nbsp;전송되는&amp;nbsp;NM&amp;nbsp;패킷에&amp;nbsp;대한&amp;nbsp;NM&amp;nbsp;사용자&amp;nbsp;데이터가&amp;nbsp;설정됩니다.&amp;nbsp;NM&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;&lt;br /&gt;[SWS_UdpNm_00160]&amp;nbsp;UdpNm_GetUserData가&amp;nbsp;호출되면&amp;nbsp;가장&amp;nbsp;최근에&amp;nbsp;수신된&amp;nbsp;NM&amp;nbsp;PDU의&amp;nbsp;페이로드에&amp;nbsp;포함된&amp;nbsp;NM&amp;nbsp;사용자&amp;nbsp;데이터가&amp;nbsp;제공되어야&amp;nbsp;합니다.&amp;nbsp;NM&amp;nbsp;사용자&amp;nbsp;데이터를&amp;nbsp;제공하는&amp;nbsp;작업은&amp;nbsp;데이터&amp;nbsp;일관성을&amp;nbsp;보장해야&amp;nbsp;합니다. &lt;br /&gt;참고: NM 사용자 데이터가 구성된 경우 반복 메시지 상태에서 확실히 전송됩니다. Ready Sleep 상태에서는 사용자 데이터가 전송되지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00312]&amp;nbsp;UdpNmComUserDataSupport가&amp;nbsp;활성화된&amp;nbsp;경우&amp;nbsp;API&amp;nbsp;UdpNm_SetUserData를&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00317] UdpNmComUserDataSupport가 활성화되고 NM-PDU가 SoAd에서 트리거된 전송에 대해 구성되지 않은 경우(SoAdBswModules/SoAdIfTriggerTransmit = FALSE), UdpNm은 PduR_UdpNm을 호출하여 참조된 NM I-&amp;nbsp; PDU에서 NM 사용자 데이터를 수집해야 합니다. 해당 NM 메시지의 전송을 요청하기 전에 매번 추가 NM 바이트를 사용합니다. (RS_Nm_02503) &lt;br /&gt;&lt;br /&gt;참고: 트리거 전송의 경우 전송 요청 시 데이터가 필요하지 않으며 길이만 있으면 됩니다. 데이터는 UdpNm_SoAdIfTriggerTransmit 내에서 수집됩니다(챕터 8.4.3 UdpNm_SoAdIfTriggerTransmit 참조) &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00464] UdpNmComUserDataSupport가 활성화되어 있고 UdpNm이 RepeatMessage 상태 또는 NormalOperation 상태이고 UdpNm_Transmit이 호출되면 UdpNm은 현재 데이터와 함께 NM PDU의 추가 전송을 요청해야 합니다.&amp;nbsp;&lt;br /&gt;참고:&amp;nbsp;현재&amp;nbsp;데이터(예:&amp;nbsp;시스템&amp;nbsp;바이트,&amp;nbsp;사용자&amp;nbsp;데이터&amp;nbsp;및&amp;nbsp;PNC&amp;nbsp;비트&amp;nbsp;벡터)와의&amp;nbsp;주기적&amp;nbsp;전송&amp;nbsp;사이에&amp;nbsp;NM&amp;nbsp;PDU를&amp;nbsp;전송하기&amp;nbsp;위한&amp;nbsp;UdpNm_Transmit&amp;nbsp;요청&amp;nbsp;호출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Passive 모드(선택 사항)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수동&amp;nbsp;모드에서&amp;nbsp;노드는&amp;nbsp;NM&amp;nbsp;메시지만&amp;nbsp;수신하고&amp;nbsp;NM&amp;nbsp;메시지는&amp;nbsp;전송하지&amp;nbsp;않습니다. &lt;br /&gt;[SWS_UdpNm_00161]&amp;nbsp;수동&amp;nbsp;모드는&amp;nbsp;UdpNmPassiveModeEnabled&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;[SWS_UdpNm_00162]&amp;nbsp;패시브&amp;nbsp;모드는&amp;nbsp;하나의&amp;nbsp;ECU&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;&lt;br /&gt;[SWS_UdpNm_00163]&amp;nbsp;수동&amp;nbsp;모드를&amp;nbsp;사용하는&amp;nbsp;경우(구성&amp;nbsp;매개변수&amp;nbsp;UdpNmPassiveModeEnabled)&amp;nbsp;다음&amp;nbsp;옵션을&amp;nbsp;사용하면&amp;nbsp;안&amp;nbsp;됩니다. &lt;br /&gt;버스&amp;nbsp;동기화(구성&amp;nbsp;매개변수&amp;nbsp;UdpNmBusSynchronizationEnabled) &lt;br /&gt;원격 sleep 표시(구성 매개변수 UdpNmRemoteSleepIndEnabled) &lt;br /&gt;노드&amp;nbsp;감지(구성&amp;nbsp;매개변수&amp;nbsp;UdpNmNodeDetectionEnabled)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;상태 변경 알림(선택 사항)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_UdpNm_00166]&amp;nbsp;AUTOSAR&amp;nbsp;UdpNm&amp;nbsp;상태의&amp;nbsp;모든&amp;nbsp;변경&amp;nbsp;사항은&amp;nbsp;Nm_StateChangeNotification&amp;nbsp;콜백이&amp;nbsp;활성화된&amp;nbsp;경우(구성&amp;nbsp;매개변수&amp;nbsp;UdpNmStateChangeIndEnabled가&amp;nbsp;TRUE인&amp;nbsp;경우)&amp;nbsp;Nm_StateChangeNotification을&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;h2 data-ke-size=&quot;size26&quot;&gt;통신 제어(선택 사항)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_UdpNm_00168]&amp;nbsp;통신&amp;nbsp;제어는&amp;nbsp;UdpNmComControlEnabled&amp;nbsp;스위치(구성&amp;nbsp;매개변수)를&amp;nbsp;사용하여&amp;nbsp;정적으로&amp;nbsp;구성해야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00170]&amp;nbsp;선택적&amp;nbsp;서비스&amp;nbsp;UdpNm_DisableCommunication은&amp;nbsp;NM&amp;nbsp;PDU&amp;nbsp;전송&amp;nbsp;능력을&amp;nbsp;비활성화해야&amp;nbsp;합니다. &lt;br /&gt;참고:&amp;nbsp;NM&amp;nbsp;PDU&amp;nbsp;전송&amp;nbsp;기능이&amp;nbsp;비활성화된&amp;nbsp;경우&amp;nbsp;NM&amp;nbsp;조정&amp;nbsp;알고리즘이&amp;nbsp;올바르게&amp;nbsp;작동하지&amp;nbsp;않습니다.&amp;nbsp;따라서&amp;nbsp;NM&amp;nbsp;PDU&amp;nbsp;전송&amp;nbsp;기능이&amp;nbsp;비활성화되어&amp;nbsp;있는&amp;nbsp;한&amp;nbsp;ECU가&amp;nbsp;셧다운되지&amp;nbsp;않도록&amp;nbsp;해야&amp;nbsp;합니다. &lt;br /&gt;UdpNm_NetworkRelease가&amp;nbsp;호출되고&amp;nbsp;NM&amp;nbsp;PDU&amp;nbsp;전송&amp;nbsp;기능이&amp;nbsp;비활성화된&amp;nbsp;경우&amp;nbsp;ECU가&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;ECU가&amp;nbsp;종료될&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00172] 옵션 서비스 UdpNm_DisableCommunication은 현재 모드가 네트워크 모드가 아닌 경우 E_NOT_OK를 반환해야 합니다. &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;[SWS_UdpNm_00173]&amp;nbsp;네트워크&amp;nbsp;관리&amp;nbsp;PDU&amp;nbsp;전송&amp;nbsp;기능이&amp;nbsp;비활성화된&amp;nbsp;경우&amp;nbsp;UdpNm&amp;nbsp;모듈은&amp;nbsp;네트워크&amp;nbsp;관리&amp;nbsp;PDU의&amp;nbsp;전송을&amp;nbsp;중지하기&amp;nbsp;위해&amp;nbsp;UdpNm&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;[SWS_UdpNm_00174]&amp;nbsp;NM&amp;nbsp;PDU&amp;nbsp;전송&amp;nbsp;기능이&amp;nbsp;비활성화되면&amp;nbsp;NM-Timeout&amp;nbsp;Timer가&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;[SWS_UdpNm_00175] NM PDU 전송 능력이 비활성화되면 원격 sleep 표시 타이머의 감지가 중단됩니다. &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;[SWS_UdpNm_00178]&amp;nbsp;네트워크&amp;nbsp;관리&amp;nbsp;PDU&amp;nbsp;전송&amp;nbsp;능력이&amp;nbsp;활성화되면&amp;nbsp;NM&amp;nbsp;PDU의&amp;nbsp;전송은&amp;nbsp;다음&amp;nbsp;NM&amp;nbsp;주요&amp;nbsp;기능&amp;nbsp;내에서&amp;nbsp;가장&amp;nbsp;늦게&amp;nbsp;시작되어야&amp;nbsp;합니다.&amp;nbsp;&amp;rfloor;(RS_Nm_02512) &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;[SWS_UdpNm_00179]&amp;nbsp;NM&amp;nbsp;PDU&amp;nbsp;전송&amp;nbsp;기능이&amp;nbsp;활성화되면&amp;nbsp;NM-Timeout&amp;nbsp;Timer가&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;[SWS_UdpNm_00180]&amp;nbsp;NM&amp;nbsp;PDU&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;[SWS_UdpNm_00181]&amp;nbsp;선택적&amp;nbsp;서비스&amp;nbsp;UdpNm_RequestBusSynchronization은&amp;nbsp;NM&amp;nbsp;PDU&amp;nbsp;전송&amp;nbsp;능력이&amp;nbsp;비활성화된&amp;nbsp;경우&amp;nbsp;E_NOT_OK를&amp;nbsp;반환해야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;NM 조정 동기화 지원(선택 사항)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘&amp;nbsp;이상의&amp;nbsp;조정자가&amp;nbsp;CBV의&amp;nbsp;특수&amp;nbsp;비트에&amp;nbsp;동일한&amp;nbsp;버스에&amp;nbsp;연결되어&amp;nbsp;있는&amp;nbsp;경우&amp;nbsp;NmCoordinatorSleepReady&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;Nm&amp;nbsp;모듈에&amp;nbsp;설명되어&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00320]UdpNm이 NM_CoordReadyToSleepIndication을 호출하고 여전히 네트워크 모드에 있는 경우 NmCoordinatorSleepReady 비트(CB0V 참조)가 설정된 NM 메시지를 처음 수신할 때 Nm_CoordReadyToSleepCancellation을 호출하여 Nm에 알려야 합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00364]UdpNm이 네트워크 모드에 진입했거나 Nm_CoordReadyToSleepCancellation을 호출한 경우 NmCoordinatorSleepReady 비트(.CBV 참조)가 로 설정된 NM 메시지의 첫 수신 시 Nm_CoordReadyToSleepIndication을 호출하여 NM에 알려야 합니다.&lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00321]UdpNmCoodinatorSyncSupport가 TRUE로 설정되고 API UdpNm_SetSleepReadyBit이 UdpNm이라고 하면 &quot;NM Coordinator&amp;nbsp;Sleep&amp;nbsp;Ready 비트&quot; 비트를 전달된 값으로 설정하고 단일 네트워크 관리 PDU를 트리거합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00322] API UdpNm_SetSleepReadyBit() 및 &quot;Coordinated Bus 종료&quot; 기능은 UdpNmCoordinatorSyncSupport가 TRUE로 설정된 경우에만 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>UDP NM</category>
      <category>[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (7) 추가 기능</category>
      <category>추가 기능</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/605</guid>
      <comments>https://zidarn87.tistory.com/605#entry605comment</comments>
      <pubDate>Sat, 10 Sep 2022 17:23:30 +0900</pubDate>
    </item>
    <item>
      <title>[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (6) Communication Scheduling</title>
      <link>https://zidarn87.tistory.com/604</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (6) Communication Scheduling&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 : &lt;a href=&quot;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;NM Message 송출&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고:&amp;nbsp;이&amp;nbsp;장에서&amp;nbsp;설명하는&amp;nbsp;전송&amp;nbsp;메커니즘은&amp;nbsp;NM&amp;nbsp;메시지&amp;nbsp;전송&amp;nbsp;기능이&amp;nbsp;활성화된&amp;nbsp;경우에만&amp;nbsp;관련이&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00072] NM 메시지의 전송은 UdpNmPassiveModeEnabled를 통해 구성되어야 합니다.&lt;br /&gt;참고:&amp;nbsp;수동&amp;nbsp;노드는&amp;nbsp;NM&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;NM&amp;nbsp;메시지를&amp;nbsp;수신합니다. &lt;br /&gt;참고: 이 장에서 설명하는 전송 메커니즘은 UdpNmPassiveModeEnabled가 FALSE인 경우에만 관련이 있습니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00237] UdpNm 모듈은 주기적 전송 모드를 제공해야 합니다. 이 전송 모드에서 UdpNm 모듈은 주기적으로 네트워크 관리 PDU를 전송해야 합니다.&amp;nbsp;&lt;br /&gt;참고:&amp;nbsp;주기적&amp;nbsp;전송&amp;nbsp;모드는&amp;nbsp;&quot;Repeat&amp;nbsp;Message&amp;nbsp;State&quot;&amp;nbsp;및&amp;nbsp;&quot;Normal&amp;nbsp;Operation&amp;nbsp;State&quot;에서&amp;nbsp;사용됩니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00005] 반복 메시지 상태가 UdpNm_NetworkRequest를 통해 입력되지 않거나 UdpNmImmediateNmTransmissions가 0이면 반복 메시지 상태에 들어간 후 NM PDU의 전송이 UdpNmMsgCycleOffset만큼 지연됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고: 이 요구 사항은 Repeat Message 요청 또는 비트(SWS_UdpNm_00111,&amp;nbsp; SWS_UdpNm_00112, SWS_UdpNm_00119, SWS_UdpNm_00120 참조)로 인해 Network Operation 상태 또는 Ready&amp;nbsp;Sleep 상태에서 Repeat&amp;nbsp;Message 상태가 입력되는 경우에도 적용됩니다. 이는 이 경우 즉각적인 전송이 사용되지 않음을 의미합니다(UdpNmImmediateNmTransmissions &amp;gt; 0이고 UdpNmPnHandleMultipleNetworkRequests의 구성과 독립적인 경우에도). 즉, UdpNmMsgCycleOffset이 항상 적용됩니다. 이 메커니즘은 NM 메시지의 버스트를 방지합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00334] UdpNm_NetworkRequest()(active wakeup)로 인해 Bus Sleep 모드 또는 Prepare&amp;nbsp;Bus&amp;nbsp;Sleep 모드에서 반복 메시지 상태로 들어갈 때 UdpNmImmediateNmTransmissions가 0보다 큰 경우 NM PDU는 UdpNmImmediateNmCycleTime을 주기 시간으로 사용하여 전송됩니다. 첫 번째 NM PDU의 전송은 가능한 한 빨리 트리거되어야 합니다. 전송 후 메시지 주기 타이머는 UdpNmImmediateNmCycleTime으로 다시 로드됩니다. 이 경우 UdpNmMsgCycleOffset이 적용되지 않습니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00006]&amp;nbsp;Ready&amp;nbsp;Sleep&amp;nbsp;State에서&amp;nbsp;Normal&amp;nbsp;Operation&amp;nbsp;State가&amp;nbsp;되면&amp;nbsp;NM&amp;nbsp;PDU의&amp;nbsp;전송은&amp;nbsp;즉시&amp;nbsp;시작되어야&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00454] UdpNmPnHandleMultipleNetworkRequests가 TRUE로 설정되면 UdpNm_NetworkRequest는 Network Mode에서 Repeat&amp;nbsp;Message 상태로 상태 전환을 트리거해야 합니다. PDU 전송 능력이 활성화되면 NM PDU는 UdpNmImmediateNmCycleTime을 주기 시간으로 사용하여 전송되어야 합니다. 첫 번째 NM PDU의 전송은 가능한 한 빨리 트리거되어야 합니다. 전송 후 메시지 주기 타이머는 UdpNmImmediateNmCycleTime으로 다시 로드됩니다. 이 경우 UdpNmMsgCycleOffset이 적용되지 않습니다. &lt;br /&gt;&lt;br /&gt;참고:&amp;nbsp;UdpNmImmediateNmTransmissions는&amp;nbsp;이&amp;nbsp;경우&amp;nbsp;ECUC_UdpNm_00075로&amp;nbsp;인해&amp;nbsp;0보다&amp;nbsp;커야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00330] NM PDU가 UdpNmImmediateNmCycleTime과 함께 전송되어야 하는 경우(SWS_UdpNm_00334 및 SWS_UdpNm_00454 참조), UdpNm은 UdpNmImmediateNmTransmissions를 포함하여 성공적으로 요청된 UdpNmImmediateNmTransmissions SoAd에 대한 전송 요청이 실패하면(E_NOT_OK가 반환됨) UdpNm은 다음 주 기능에서 전송 요청을 다시 시도합니다. 그 후 UdpNm은 UdpNmMsgCycleTime을 사용하여 NM PDU를 계속 전송해야 합니다. &lt;br /&gt;참고:&amp;nbsp;UdpNmImmediateNmCycleTime을&amp;nbsp;사용하여&amp;nbsp;NM&amp;nbsp;PDU를&amp;nbsp;전송하는&amp;nbsp;동안&amp;nbsp;다른&amp;nbsp;Nm&amp;nbsp;PDU는&amp;nbsp;전송되지&amp;nbsp;않습니다(즉,&amp;nbsp;UdpNmMsgCycleTime&amp;nbsp;전송&amp;nbsp;주기가&amp;nbsp;중지됨). &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00032] NM PDU의 전송이 시작되고 UdpNm 메시지 사이클 타이머가 만료되면 NM PDU는 SoAd_IfTransmit을 호출하여 SoAd를 통해 전송되어야 합니다. &lt;br /&gt;&amp;nbsp; &lt;br /&gt;[SWS_UdpNm_00040]&amp;nbsp;UdpNm&amp;nbsp;메시지&amp;nbsp;주기&amp;nbsp;타이머가&amp;nbsp;만료되면&amp;nbsp;UdpNmMsgCycleTime으로&amp;nbsp;다시&amp;nbsp;시작해야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00051]&amp;nbsp;NM&amp;nbsp;PDU의&amp;nbsp;전송이&amp;nbsp;중단된&amp;nbsp;경우&amp;nbsp;UdpNm&amp;nbsp;메시지&amp;nbsp;주기&amp;nbsp;타이머는&amp;nbsp;취소되어야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00007] 매개변수 UdpNmRetryFirstMessageRequest(ECUC_UdpNm_00085 참조)가 TRUE이고 버스 슬&amp;nbsp; 립에서 메시지 반복 상태로의 전환 후 첫 번째 전송 요청이 SoAd에 의해 수락되지 않으면 메시지 요청은 하나의 전송 요청이 수락될 때까지 다음 주 기능에서 반복되어야 합니다. SoAd에 의해. &lt;br /&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;있습니다. &lt;br /&gt;EthSM으로&amp;nbsp;인해&amp;nbsp;SoAd에&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;[SWS_UdpNm_00379] UdpNm_SoAdIfTxConfirmation이 결과 E_NOT_OK와 함께 호출되면 UdpNm은 함수 Nm_TxTimeoutException을 호출해야 합니다. (SRS_Nm_00137)&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;1179&quot; data-origin-height=&quot;840&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dSXCEk/btrLLyc6c66/K0KYkAPhNcJ7bh6vMzSPE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dSXCEk/btrLLyc6c66/K0KYkAPhNcJ7bh6vMzSPE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dSXCEk/btrLLyc6c66/K0KYkAPhNcJ7bh6vMzSPE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdSXCEk%2FbtrLLyc6c66%2FK0KYkAPhNcJ7bh6vMzSPE0%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;1179&quot; height=&quot;840&quot; data-origin-width=&quot;1179&quot; data-origin-height=&quot;840&quot;/&gt;&lt;/span&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;p data-ke-size=&quot;size16&quot;&gt;NM&amp;nbsp;메시지가&amp;nbsp;성공적으로&amp;nbsp;수신되면&amp;nbsp;SoAd는&amp;nbsp;UdpNm_SoAdIfRxIndication을&amp;nbsp;호출합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00035]&amp;nbsp;UdpNm_SoAdIfRxIndication의&amp;nbsp;호출&amp;nbsp;시&amp;nbsp;UdpNm&amp;nbsp;모듈은&amp;nbsp;기능&amp;nbsp;매개변수에서&amp;nbsp;참조하는&amp;nbsp;네트워크&amp;nbsp;관리&amp;nbsp;PDU의&amp;nbsp;데이터를&amp;nbsp;내부&amp;nbsp;버퍼에&amp;nbsp;복사해야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00037]&amp;nbsp;NM&amp;nbsp;PDU가&amp;nbsp;수신되면&amp;nbsp;UdpNmPduRXIndicationEnabled(구성&amp;nbsp;매개변수)가&amp;nbsp;TRUE인&amp;nbsp;경우&amp;nbsp;Nm&amp;nbsp;기능&amp;nbsp;Nm_PduRxIndication이&amp;nbsp;호출됩니다.&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;1032&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQwQMw/btrLK5WSftc/HddZKnlabXx3zR1K7NShi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQwQMw/btrLK5WSftc/HddZKnlabXx3zR1K7NShi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQwQMw/btrLK5WSftc/HddZKnlabXx3zR1K7NShi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQwQMw%2FbtrLK5WSftc%2FHddZKnlabXx3zR1K7NShi1%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;1032&quot; height=&quot;600&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>Communication Scheduling</category>
      <category>UDP NM</category>
      <category>[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (6) Communication Scheduling</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/604</guid>
      <comments>https://zidarn87.tistory.com/604#entry604comment</comments>
      <pubDate>Sat, 10 Sep 2022 14:18:52 +0900</pubDate>
    </item>
    <item>
      <title>[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (5) Execution</title>
      <link>https://zidarn87.tistory.com/603</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;UDP&amp;nbsp;Network&amp;nbsp;Management(NM)&amp;nbsp;3.&amp;nbsp;기능&amp;nbsp;사양&amp;nbsp;(5)&amp;nbsp;Execution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 : &lt;a href=&quot;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;프로세서&amp;nbsp;아키텍처&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_UdpNm_00146]&amp;nbsp;AUTOSAR&amp;nbsp;UdpNm&amp;nbsp;조정&amp;nbsp;알고리즘은&amp;nbsp;프로세서에&amp;nbsp;독립적이어야&amp;nbsp;합니다.&amp;nbsp;즉,&amp;nbsp;프로세서별&amp;nbsp;하드웨어&amp;nbsp;지원에&amp;nbsp;의존하지&amp;nbsp;않으므로&amp;nbsp;AUTOSAR&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;h2 data-ke-size=&quot;size26&quot;&gt;타이밍&amp;nbsp;매개변수&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_UdpNm_00246]&amp;nbsp;구성&amp;nbsp;매개변수&amp;nbsp;UdpNmTimeoutTime은&amp;nbsp;AUTOSAR&amp;nbsp;UdpNm&amp;nbsp;타이밍&amp;nbsp;매개변수&amp;nbsp;NM-Timeout&amp;nbsp;Time을&amp;nbsp;결정해야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00247]&amp;nbsp;구성&amp;nbsp;매개변수&amp;nbsp;UdpNmRepeatMessageTime은&amp;nbsp;AUTOSAR&amp;nbsp;UdpNm&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;&lt;br /&gt;[SWS_UdpNm_00248]&amp;nbsp;구성&amp;nbsp;매개변수&amp;nbsp;UdpNmWaitBusSleepTime은&amp;nbsp;AUTOSAR&amp;nbsp;UdpNm&amp;nbsp;타이밍&amp;nbsp;매개변수&amp;nbsp;Wait&amp;nbsp;Bus-Sleep&amp;nbsp;Time을&amp;nbsp;결정해야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00249]&amp;nbsp;선택적&amp;nbsp;구성&amp;nbsp;매개변수&amp;nbsp;UdpNmRemoteSleepIndTime은&amp;nbsp;AUTOSAR&amp;nbsp;UdpNm&amp;nbsp;타이밍&amp;nbsp;매개변수&amp;nbsp;원격&amp;nbsp;절전&amp;nbsp;표시&amp;nbsp;시간을&amp;nbsp;결정해야&amp;nbsp;합니다.&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>Execution</category>
      <category>UDP NM</category>
      <category>[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (5) Execution</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/603</guid>
      <comments>https://zidarn87.tistory.com/603#entry603comment</comments>
      <pubDate>Sat, 10 Sep 2022 13:56:07 +0900</pubDate>
    </item>
    <item>
      <title>[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (4) Initialization</title>
      <link>https://zidarn87.tistory.com/602</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (4) Initialization&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 : &lt;a href=&quot;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&lt;/a&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;[SWS_UdpNm_00141]&amp;nbsp;성공적인&amp;nbsp;초기화&amp;nbsp;후&amp;nbsp;네트워크&amp;nbsp;관리&amp;nbsp;상태는&amp;nbsp;BusSleep&amp;nbsp;모드로&amp;nbsp;설정되어야&amp;nbsp;합니다. &lt;br /&gt;참고:&amp;nbsp;UdpNm&amp;nbsp;모듈은&amp;nbsp;SoAd가&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;&lt;br /&gt;[SWS_UdpNm_00143] 초기화되면 기본적으로 UdpNm 모듈은 네트워크 상태를 'released'로 설정해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00144] 초기화되면 기본적으로 UdpNm 모듈은 Bus-Sleep 모드로 들어갑니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00145] AUTOSAR UdpNm이 초기화되지 않은 경우 버스 트래픽을 금지하지 않습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00060]&amp;nbsp;UdpNm_Init&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;&lt;br /&gt;[SWS_UdpNm_00033]&amp;nbsp;초기화&amp;nbsp;후&amp;nbsp;NM&amp;nbsp;메시지&amp;nbsp;전송을&amp;nbsp;중지해야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00025]&amp;nbsp;초기화&amp;nbsp;후&amp;nbsp;사용자&amp;nbsp;데이터&amp;nbsp;바이트의&amp;nbsp;각&amp;nbsp;바이트는&amp;nbsp;0xFF로&amp;nbsp;설정되어야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00085]&amp;nbsp;초기화&amp;nbsp;후&amp;nbsp;제어&amp;nbsp;비트&amp;nbsp;벡터는&amp;nbsp;0x00으로&amp;nbsp;설정되어야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00485] 초기화 중 UdpNmPnEnabled가 TRUE이면 UdpNm 모듈은 PNC 비트 벡터의 각 바이트를 0x00으로 설정해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00148] 하나의 NM 클러스터에 있는 서로 다른 ECU에 있는 UDP NM의 모든 인스턴스는 동일한 UDP 수신 포트를 사용해야 합니다.&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>initialization</category>
      <category>UDP NM</category>
      <category>[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (4) Initialization</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/602</guid>
      <comments>https://zidarn87.tistory.com/602#entry602comment</comments>
      <pubDate>Sat, 10 Sep 2022 13:52:19 +0900</pubDate>
    </item>
    <item>
      <title>[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (3) Network states</title>
      <link>https://zidarn87.tistory.com/601</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (3) Network states&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 : &lt;a href=&quot;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&lt;/a&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;네트워크 상태(즉, 'requested' 및 'released')는 상태 머신과 병렬로 존재하는 AUTOSAR UdpNm 상태 머신의 두 가지 추가 상태입니다.&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;네트워크 상태는 소프트웨어 구성 요소가 버스에서 통신해야 하는지 여부를 나타냅니다(네트워크 상태는 'requested'됨). 또는 소프트웨어 구성 요소가 버스에서 통신할 필요가 없는지 여부(버스 네트워크 상태는 'released'됨) 네트워크가 해제된 경우 다른 ECU가 여전히 네트워크를 요청하기 때문에 ECU는 여전히 통신할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00104] &amp;lceil;UdpNm_NetworkRequest 함수 호출은 네트워크를 요청해야 합니다. 즉. UdpNm 모듈은 네트워크 상태를 'requested'으로 변경합니다.&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;[SWS_UdpNm_00105] &amp;lceil; UdpNm_NetworkRelease 함수 호출은 네트워크를 해제합니다. 즉. UdpNm 모듈은 네트워크 상태를 'released'로 변경합니다.&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>Network states</category>
      <category>UDP NM</category>
      <category>[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (3) Network states</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/601</guid>
      <comments>https://zidarn87.tistory.com/601#entry601comment</comments>
      <pubDate>Sat, 10 Sep 2022 13:37:08 +0900</pubDate>
    </item>
    <item>
      <title>[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (2)Operational Modes</title>
      <link>https://zidarn87.tistory.com/600</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (2)Operational Modes&lt;/h2&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;a href=&quot;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&lt;/a&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;이번에는 AUTOSAR UdpNm 조정 알고리즘의 작동 모드를 설명합니다.&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;[SWS_UdpNm_00092]&amp;nbsp;AUTOSAR&amp;nbsp;UdpNm은&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;Network&amp;nbsp;Mode &lt;br /&gt;Prepare&amp;nbsp;Bus-Sleep&amp;nbsp;Mode &lt;br /&gt;Bus-Sleep&amp;nbsp;Mode&lt;br /&gt;[SWS_UdpNm_00093]&amp;nbsp;AUTOSAR&amp;nbsp;UdpNm&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;730&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brl6QL/btrLPnVFgkv/TTBn01XEvUYrsRptM7OC41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brl6QL/btrLPnVFgkv/TTBn01XEvUYrsRptM7OC41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brl6QL/btrLPnVFgkv/TTBn01XEvUYrsRptM7OC41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbrl6QL%2FbtrLPnVFgkv%2FTTBn01XEvUYrsRptM7OC41%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;611&quot; height=&quot;730&quot; data-origin-width=&quot;611&quot; data-origin-height=&quot;730&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Network&amp;nbsp;Mode&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_UdpNm_00094]&amp;nbsp;네트워크&amp;nbsp;모드는&amp;nbsp;세&amp;nbsp;가지&amp;nbsp;내부&amp;nbsp;상태로&amp;nbsp;구성됩니다. &lt;br /&gt;Repeat&amp;nbsp;Message&amp;nbsp;State &lt;br /&gt;Normal&amp;nbsp;Operation&amp;nbsp;State &lt;br /&gt;Ready&amp;nbsp;Sleep&amp;nbsp;State&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;[SWS_UdpNm_00095] Network Mode가 Bus-Sleep&amp;nbsp;Mode또는 Prepare&amp;nbsp;Bus-Sleep&amp;nbsp;Mode에서 기본적으로 입력되면 반복 메시지 상태로 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00096] Network&amp;nbsp;Mode로 들어가면 NM-Timeout Timer가 시작됩니다. &lt;br /&gt;[SWS_UdpNm_00097] Network&amp;nbsp;Mode로 진입하면 UdpNm은 Nm_NetworkMode를 호출하여 상위 계층에 알려야 한다. &lt;br /&gt;[SWS_UdpNm_00098] Network&amp;nbsp;Mode에서 NM PDU(UdpNm_SoAdIfRxIndication 호출)를 성공적으로 수신하면 NM 타임아웃 타이머가 다시 시작됩니다. &lt;br /&gt;[SWS_UdpNm_00099] Network&amp;nbsp;Mode에서 NM PDU(E_OK와 함께 UdpNm_SoAdIfTxConfirmation 호출) 전송 시 NM-Timeout 타이머가 다시 시작되어야 합니다. &lt;br /&gt;참고:&amp;nbsp;SoAd&amp;nbsp;또는&amp;nbsp;TCP/IP&amp;nbsp;스택에서&amp;nbsp;전송&amp;nbsp;확인을&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;없으므로&amp;nbsp;각&amp;nbsp;네트워크&amp;nbsp;관리&amp;nbsp;PDU&amp;nbsp;전송&amp;nbsp;요청이&amp;nbsp;성공적인&amp;nbsp;네트워크&amp;nbsp;관리&amp;nbsp;PDU&amp;nbsp;전송을&amp;nbsp;가져온다고&amp;nbsp;가정합니다. &lt;br /&gt;[SWS_UdpNm_00206]&amp;nbsp;NM-Timeout&amp;nbsp;Timer는&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;h3 data-ke-size=&quot;size23&quot;&gt;1) Repeat Message State&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_UdpNm_00100]&amp;nbsp;Bus-Sleep&amp;nbsp;Mode,&amp;nbsp;Prepare-Bus-Sleep&amp;nbsp;Mode,&amp;nbsp;Normal&amp;nbsp;Operation&amp;nbsp;State&amp;nbsp;또는&amp;nbsp;Ready&amp;nbsp;Sleep&amp;nbsp;State에서&amp;nbsp;Repeat&amp;nbsp;Message&amp;nbsp;State가&amp;nbsp;입력되면&amp;nbsp;Passive&amp;nbsp;모드가&amp;nbsp;활성화되지&amp;nbsp;않는&amp;nbsp;한&amp;nbsp;NM&amp;nbsp;패킷의&amp;nbsp;전송이&amp;nbsp;(재)&amp;nbsp;시작됩니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00101]&amp;nbsp;반복&amp;nbsp;메시지&amp;nbsp;상태에서&amp;nbsp;NM-Timeout&amp;nbsp;타이머가&amp;nbsp;만료되면&amp;nbsp;NM-Timeout&amp;nbsp;타이머를&amp;nbsp;다시&amp;nbsp;시작해야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00102]&amp;nbsp;NM은&amp;nbsp;UdpNmRepeatMessageTime(구성&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;&lt;br /&gt;[SWS_UdpNm_00103]&amp;nbsp;반복&amp;nbsp;메시지&amp;nbsp;상태가&amp;nbsp;남아&amp;nbsp;있을&amp;nbsp;때&amp;nbsp;네트워크가&amp;nbsp;요청되면&amp;nbsp;정상&amp;nbsp;작동&amp;nbsp;상태로&amp;nbsp;들어갑니다(SWS_UdpNm_00104&amp;nbsp;참조).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00106]반복&amp;nbsp;메시지&amp;nbsp;상태가&amp;nbsp;남아&amp;nbsp;있을&amp;nbsp;때&amp;nbsp;네트워크가&amp;nbsp;해제된&amp;nbsp;경우&amp;nbsp;준비&amp;nbsp;슬립&amp;nbsp;상태가&amp;nbsp;됩니다(SWS_UdpNm_00105&amp;nbsp;참조).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;[SWS_UdpNm_00107]&amp;nbsp;UdpNmNodeDetectionEnabled가&amp;nbsp;TRUE로&amp;nbsp;설정되면&amp;nbsp;UdpNm은&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;&lt;br /&gt;[SWS_UdpNm_00137] UdpNm_RepeatMessageRequest 서비스가 Repeat&amp;nbsp;Message&amp;nbsp;State,&amp;nbsp;Prepare&amp;nbsp;Bus-Sleep&amp;nbsp;Mode&amp;nbsp;or&amp;nbsp;Bus-Sleep&amp;nbsp;Mode에서 호출되면 UdpNm 모듈은 서비스를 실행하지 않고 E_NOT_OK를 반환합니다.&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;2) Normal&amp;nbsp;Operation&amp;nbsp;State&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;정상&amp;nbsp;작동&amp;nbsp;상태는&amp;nbsp;네트워크&amp;nbsp;기능이&amp;nbsp;필요한&amp;nbsp;한&amp;nbsp;모든&amp;nbsp;노드가&amp;nbsp;NM&amp;nbsp;클러스터를&amp;nbsp;활성&amp;nbsp;상태로&amp;nbsp;유지할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;합니다.&lt;/b&gt; &lt;br /&gt;[SWS_UdpNm_00116]&amp;nbsp;Ready&amp;nbsp;Sleep&amp;nbsp;State에서&amp;nbsp;Normal&amp;nbsp;Operation&amp;nbsp;State가&amp;nbsp;되면&amp;nbsp;Passive&amp;nbsp;모드가&amp;nbsp;활성화되거나&amp;nbsp;NM&amp;nbsp;메시지&amp;nbsp;전송&amp;nbsp;기능이&amp;nbsp;비활성화되지&amp;nbsp;않는&amp;nbsp;한&amp;nbsp;NM&amp;nbsp;PDU의&amp;nbsp;전송이&amp;nbsp;시작됩니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00117] NM-Timeout Timer가 정상 동작 상태에서 만료되면 NM-Timeout Timer를 다시 시작해야 합니다.&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;[SWS_UdpNm_00118]&amp;nbsp;네트워크가&amp;nbsp;해제되고&amp;nbsp;현재&amp;nbsp;상태가&amp;nbsp;Normal&amp;nbsp;Operation&amp;nbsp;State인&amp;nbsp;경우&amp;nbsp;Normal&amp;nbsp;Operation&amp;nbsp;State는&amp;nbsp;그대로&amp;nbsp;있고&amp;nbsp;Ready&amp;nbsp;Sleep&amp;nbsp;상태는&amp;nbsp;진입한다(SWS_UdpNm_00105&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;[SWS_UdpNm_00119]&amp;nbsp;UdpNmNodeDetectionEnabled가&amp;nbsp;TRUE로&amp;nbsp;설정되고&amp;nbsp;정상&amp;nbsp;작동&amp;nbsp;상태에서&amp;nbsp;반복&amp;nbsp;메시지&amp;nbsp;요청&amp;nbsp;비트가&amp;nbsp;수신되면&amp;nbsp;UdpNm은&amp;nbsp;반복&amp;nbsp;메시지&amp;nbsp;상태로&amp;nbsp;들어갑니다.&amp;nbsp;(SRS_Nm_00153)&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;[SWS_UdpNm_00120] UdpNmNodeDetectionEnabled가 TRUE로 설정되고 정상 작동 상태에서 UdpNm_RepeatMessageRequest 함수가 호출되면 UdpNm은 반복 메시지 상태로 들어갑니다. (SRS_Nm_00153)&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;[SWS_UdpNm_00121] UdpNmNodeDetectionEnabled가 TRUE로 설정되고 정상 작동 상태에서 UdpNm_RepeatMessageRequest 함수가 호출되면 UdpNm은 반복 메시지 비트를 설정해야 합니다. (SRS_Nm_00153)&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;3) Ready&amp;nbsp;Sleep&amp;nbsp;State&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ready&amp;nbsp;Sleep&amp;nbsp;State는&amp;nbsp;다른&amp;nbsp;노드가&amp;nbsp;NM&amp;nbsp;클러스터를&amp;nbsp;활성화&amp;nbsp;상태로&amp;nbsp;유지하는&amp;nbsp;한&amp;nbsp;NM&amp;nbsp;클러스터의&amp;nbsp;모든&amp;nbsp;노드가&amp;nbsp;Prepare&amp;nbsp;Bus-Sleep&amp;nbsp;Mode로의&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;[SWS_UdpNm_00108]&amp;nbsp;Repeat&amp;nbsp;Message&amp;nbsp;State&amp;nbsp;또는&amp;nbsp;Normal&amp;nbsp;Operation&amp;nbsp;State에서&amp;nbsp;Ready&amp;nbsp;Sleep&amp;nbsp;State로&amp;nbsp;진입하면&amp;nbsp;NM&amp;nbsp;PDU의&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;참고:&amp;nbsp;수동&amp;nbsp;모드가&amp;nbsp;활성화된&amp;nbsp;경우&amp;nbsp;NM&amp;nbsp;PDU가&amp;nbsp;전송되지&amp;nbsp;않으면&amp;nbsp;조치가&amp;nbsp;필요하지&amp;nbsp;않습니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00109] NM-Timeout Timer가 Ready Sleep 상태에서 만료되면 Ready Sleep State는 남아 있고 Prepare Bus-Sleep Mode로 들어갑니다.&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;[SWS_UdpNm_00110] 네트워크가 요청되고 현재 상태가 Ready Sleep State이면 Ready Sleep State는 그대로 Normal Operation State로 진입한다(SWS_UdpNm_00104 참조).&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;[SWS_UdpNm_00111] UdpNmNodeDetectionEnabled가 TRUE로 설정되고 준비 슬립 상태에서 반복 메시지 요청 비트가 수신되면 UdpNm은 반복 메시지 상태로 들어갑니다. (SRS_Nm_00153)&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;[SWS_UdpNm_00112] UdpNmNodeDetectionEnabled가 TRUE로 설정되고 Ready Sleep 상태에서 UdpNm_RepeatMessageRequest 함수가 호출되면 UdpNm은 반복 메시지 상태로 들어갑니다.(SRS_Nm_00153)&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;[SWS_UdpNm_00113] UdpNmNodeDetectionEnabled가 TRUE로 설정되고 UdpNm_RepeatMessageRequest 함수가 Ready Sleep 상태에서 호출되면 UdpNm은 반복 메시지 비트를 설정해야 합니다. (SRS_Nm_00153)&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;h2 data-ke-size=&quot;size26&quot;&gt;Prepare&amp;nbsp;Bus-Sleep&amp;nbsp;Mode&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Prepare&amp;nbsp;Bus&amp;nbsp;Sleep&amp;nbsp;상태의&amp;nbsp;목적은&amp;nbsp;Bus&amp;nbsp;Sleep&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;&amp;nbsp;버스&amp;nbsp;활동이&amp;nbsp;진정되고(즉,&amp;nbsp;모든&amp;nbsp;Tx&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;[SWS_UdpNm_00114]&amp;nbsp;Prepare&amp;nbsp;Bus-Sleep&amp;nbsp;Mode로&amp;nbsp;진입하면&amp;nbsp;UdpNm은&amp;nbsp;Nm_PrepareBusSleepMode를&amp;nbsp;호출하여&amp;nbsp;상위&amp;nbsp;계층에&amp;nbsp;알려야&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00115]&amp;nbsp;NM은&amp;nbsp;UdpNmWaitBusSleepTime(구성&amp;nbsp;매개변수)에&amp;nbsp;의해&amp;nbsp;결정된&amp;nbsp;구성&amp;nbsp;가능한&amp;nbsp;시간&amp;nbsp;동안&amp;nbsp;Prepare&amp;nbsp;Bus-Sleep&amp;nbsp;모드를&amp;nbsp;유지해야&amp;nbsp;합니다.&amp;nbsp;그&amp;nbsp;시간&amp;nbsp;이후에는&amp;nbsp;Prepare&amp;nbsp;Bus&amp;nbsp;Sleep&amp;nbsp;모드가&amp;nbsp;종료되고&amp;nbsp;Bus&amp;nbsp;Sleep&amp;nbsp;모드로&amp;nbsp;들어갑니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00124]&amp;nbsp;Prepare&amp;nbsp;Bus-Sleep&amp;nbsp;Mode에서&amp;nbsp;NM&amp;nbsp;PDU를&amp;nbsp;성공적으로&amp;nbsp;수신하면&amp;nbsp;Prepare&amp;nbsp;Bus-Sleep&amp;nbsp;Mode가&amp;nbsp;남아&amp;nbsp;있고&amp;nbsp;Network&amp;nbsp;Mode로&amp;nbsp;들어갑니다.&amp;nbsp;기본적으로&amp;nbsp;반복&amp;nbsp;메시지&amp;nbsp;상태가&amp;nbsp;입력됩니다(SWS_UdpNm_00095&amp;nbsp;참조). &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00123]&amp;nbsp;네트워크가&amp;nbsp;Prepare&amp;nbsp;Bus-Sleep&amp;nbsp;모드에서&amp;nbsp;요청되면&amp;nbsp;Prepare&amp;nbsp;Bus-Sleep&amp;nbsp;모드가&amp;nbsp;남아&amp;nbsp;있어야&amp;nbsp;하고&amp;nbsp;네트워크&amp;nbsp;모드로&amp;nbsp;들어갑니다.&amp;nbsp;기본적으로&amp;nbsp;반복&amp;nbsp;메시지&amp;nbsp;상태가&amp;nbsp;입력됩니다(SWS_UdpNm_00095&amp;nbsp;참조). &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00122]&amp;nbsp;Prepare&amp;nbsp;Bus-Sleep&amp;nbsp;Mode에서&amp;nbsp;네트워크가&amp;nbsp;요청되고(SWS_UdpNm_00104&amp;nbsp;참조)&amp;nbsp;UdpNm&amp;nbsp;모듈이&amp;nbsp;네트워크&amp;nbsp;모드로&amp;nbsp;진입하고&amp;nbsp;UdpNmImmediateRestartEnabled(구성&amp;nbsp;매개변수)가&amp;nbsp;TRUE인&amp;nbsp;경우&amp;nbsp;UdpNm&amp;nbsp;모듈은&amp;nbsp;네트워크&amp;nbsp;관리&amp;nbsp;PDU를&amp;nbsp;전송해야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;근거:&amp;nbsp;클러스터의&amp;nbsp;다른&amp;nbsp;노드는&amp;nbsp;여전히&amp;nbsp;Prepare&amp;nbsp;Bus-Sleep&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;UdpNm의&amp;nbsp;네트워크&amp;nbsp;관리&amp;nbsp;PDU에&amp;nbsp;대한&amp;nbsp;전송&amp;nbsp;오프셋으로&amp;nbsp;인해&amp;nbsp;반복&amp;nbsp;메시지&amp;nbsp;상태에서&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;네트워크&amp;nbsp;관리&amp;nbsp;PDU의&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;PDU의&amp;nbsp;전송을&amp;nbsp;즉시&amp;nbsp;요청할&amp;nbsp;수&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;참고:&amp;nbsp;UdpNmImmediateRestartEnabled가&amp;nbsp;TRUE이고&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;PDU&amp;nbsp;버스트가&amp;nbsp;발생합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Bus-Sleep&amp;nbsp;Mode&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Bus-Sleep&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; &lt;br /&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;UdpNmTimeoutTime + UdpNmWaitBusSleepTime(두 구성 매개변수)에 의해 결정된 구성 가능한 시간이 네트워크 관리 클러스터의 모든 노드에 대해 동일하게 구성되면 AUTOSAR NM 알고리즘의 사용으로 조정되는 네트워크 관리 클러스터의 모든 노드는 다음으로 전환을 수행합니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;참고:&amp;nbsp;매개변수&amp;nbsp;UdpNmTimeoutTime&amp;nbsp;및&amp;nbsp;UdpNmWaitBusSleepTime은&amp;nbsp;NM&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;Bus-Sleep&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;정밀도(발진기의&amp;nbsp;드리프트),&amp;nbsp;NM&amp;nbsp;작업&amp;nbsp;주기&amp;nbsp;시간(작업이&amp;nbsp;글로벌&amp;nbsp;시간과&amp;nbsp;동기화되지&amp;nbsp;않은&amp;nbsp;경우),&amp;nbsp;Tx-queue에서&amp;nbsp;NM&amp;nbsp;PDU&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;UdpNmTimeoutTime&amp;nbsp;+&amp;nbsp;UdpNmWaitBusSleepTime(두&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;[SWS_UdpNm_00126] 버스 슬립 모드에 들어가면 UdpNm은 Nm_BusSleepMode를 호출하여 상위 계층에 알려야 합니다. Bus-Sleep인 경우에는 그렇지 않습니다. 모드는&amp;nbsp;초기화&amp;nbsp;시&amp;nbsp;기본적으로&amp;nbsp;입력됩니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00127] UdpNm 모듈이 버스 슬립 모드(UdpNm_SoAdIfRxIndication 호출)에서 네트워크 관리 PDU를 성공적으로 수신하면, UdpNm&amp;nbsp;모듈은&amp;nbsp;Nm_NetworkStartIndication&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;위해&amp;nbsp;UdpNm은&amp;nbsp;버스&amp;nbsp;절전&amp;nbsp;모드에서&amp;nbsp;네트워크&amp;nbsp;모드로의&amp;nbsp;전환을&amp;nbsp;자동으로&amp;nbsp;수행하지&amp;nbsp;않습니다.&amp;nbsp;UdpNm은&amp;nbsp;깨우기&amp;nbsp;결정을&amp;nbsp;내려야&amp;nbsp;하는&amp;nbsp;상위&amp;nbsp;계층에게만&amp;nbsp;알려줍니다.&amp;nbsp;Bus-Sleep&amp;nbsp;모드에서&amp;nbsp;NM&amp;nbsp;패킷&amp;nbsp;수신은&amp;nbsp;ECU&amp;nbsp;종료&amp;nbsp;또는&amp;nbsp;시작&amp;nbsp;프로세스의&amp;nbsp;현재&amp;nbsp;상태에&amp;nbsp;따라&amp;nbsp;처리되어야&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00128]&amp;nbsp;UdpNm_PassiveStartUp이&amp;nbsp;버스&amp;nbsp;슬립&amp;nbsp;모드&amp;nbsp;또는&amp;nbsp;버스&amp;nbsp;슬립&amp;nbsp;모드&amp;nbsp;준비에서&amp;nbsp;호출되면&amp;nbsp;UdpNm&amp;nbsp;모듈은&amp;nbsp;네트워크에&amp;nbsp;진입해야&amp;nbsp;합니다. &lt;br /&gt;방법;&amp;nbsp;기본적으로&amp;nbsp;반복&amp;nbsp;메시지&amp;nbsp;상태가&amp;nbsp;입력됩니다(SWS_UdpNm_00095&amp;nbsp;및&amp;nbsp;SWS_UdpNm_00104&amp;nbsp;참조). &lt;br /&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;가정합니다. &lt;br /&gt;&lt;br /&gt;[SWS_UdpNm_00129]:&amp;nbsp;네트워크가&amp;nbsp;버스&amp;nbsp;절전&amp;nbsp;모드에서&amp;nbsp;요청되면&amp;nbsp;UdpNm&amp;nbsp;모듈은&amp;nbsp;네트워크&amp;nbsp;모드로&amp;nbsp;들어갑니다.&amp;nbsp;기본적으로&amp;nbsp;UdpNm&amp;nbsp;모듈은&amp;nbsp;반복&amp;nbsp;메시지&amp;nbsp;상태를&amp;nbsp;입력해야&amp;nbsp;합니다(SWS_UdpNm_00095&amp;nbsp;및&amp;nbsp;SWS_UdpNm_00104&amp;nbsp;참조).&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Bus Sleep</category>
      <category>Classic Autosar</category>
      <category>Network Mode</category>
      <category>Operational Modes</category>
      <category>Pre-Bus Sleep</category>
      <category>UDP NM</category>
      <category>[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (2)Operational Modes</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/600</guid>
      <comments>https://zidarn87.tistory.com/600#entry600comment</comments>
      <pubDate>Sat, 10 Sep 2022 09:58:45 +0900</pubDate>
    </item>
    <item>
      <title>[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;UDP Network Management(NM)&amp;nbsp;3.&amp;nbsp;기능&amp;nbsp;사양&amp;nbsp;(1)Coordination algorithm</title>
      <link>https://zidarn87.tistory.com/599</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (1)Coordination algorithm&lt;/h2&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;a href=&quot;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&lt;/a&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;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;AUTOSAR UdpNm은 분산형 직접 네트워크 관리 전략을 기반으로 하므로 모든 네트워크 노드가 자체적으로 활동을 수행합니다. 통신 시스템 내에서 수신 및/또는 전송된 UDP 패킷에만 의존합니다. AUTOSAR UdpNm 조정 알고리즘은 &lt;b&gt;브로드캐스트 전송을 통해 클러스터의 모든 노드에서 수신하는 주기적인 NM 패킷을 기반으로 합니다.&lt;/b&gt; NM 패킷의 수신은 송신 노드가 NM 클러스터를 깨어 있는 상태로 유지하기를 원한다는 것을 나타냅니다. 버스 슬립 모드로 전환할 준비가 된 노드가 있으면 NM 패킷 전송을 중지하지만 다른 노드에서 NM 패킷을 수신하는 한 버스 슬립 모드로의 전환을 연기합니다. 마지막으로 NM 패킷이 더 이상 수신되지 않아 전용 타이머가 경과하면 모든 노드가 버스 슬립 모드로의 전환을 시작합니다.&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;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt; NM 클러스터의 노드가 버스 통신을 필요로 하는 경우 NM 패킷을 전송하여 NM 클러스터를 활성 상태로 유지할 수 있습니다.&amp;nbsp; AUTOSAR UdpNm 조정 알고리즘의 주요 개념은 다음 두 가지 핵심 요구 사항으로 정의할 수 있습니다.&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;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt; [SWS_UdpNm_00087] 모든 네트워크 노드는 버스 통신이 필요한 한 주기적 NM PDU를 전송해야 합니다. 그렇지 않으면 NM PDU를 전송하지 않습니다.&amp;nbsp;&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;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;[SWS_UdpNm_00088] 버스 통신이 해제되고 UdpNmTimeoutTime + UdpNmWaitBusSleepTime(두 구성 매개변수)에 의해 결정된 구성 가능한 시간 동안 버스에 NM PDU가 없으면 버스 슬립 모드로 전환해야 합니다. &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;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;AUTOSAR UdpNm 조정 알고리즘의 전체 상태 머신은 다음과 같이 정의할 수 있습니다. &lt;/span&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;[SWS_UdpNm_00089] &amp;lceil; AUTOSAR UdpNm 상태 머신은 NM 클러스터의 단일 노드 관점에서 볼 때 AUTOSAR UdpNm 조정 알고리즘에 필요한 상태, 전환 및 트리거를 포함해야 합니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>Coordination algorithm</category>
      <category>UDP NM</category>
      <category>[Classic AUTOSAR] UDP Network Management(NM) 3. 기능 사양 (1)Coordination algorithm</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/599</guid>
      <comments>https://zidarn87.tistory.com/599#entry599comment</comments>
      <pubDate>Fri, 9 Sep 2022 21:49:27 +0900</pubDate>
    </item>
    <item>
      <title>[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;UDP Network Management(NM) 2. 파일 구성</title>
      <link>https://zidarn87.tistory.com/598</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;UDP&amp;nbsp;Network&amp;nbsp;Management(NM)&amp;nbsp;2.&amp;nbsp;파일&amp;nbsp;구성&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 : &lt;a href=&quot;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 330px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 20px;&quot;&gt;File&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 20px;&quot;&gt;용도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 20px;&quot;&gt;UdpNm_Lcfg.c&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 20px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;링크 시간 구성 가능한 매개변수용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 20px;&quot;&gt;UdpNm_PBcfg.c&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 20px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;빌드 후 구성 가능한 매개변수용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 20px;&quot;&gt;UdpNm.h&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 20px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;제공된 인터페이스 기능의 선언용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 20px;&quot;&gt;UdpNm_Cbk.h&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 20px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;제공된 콜백 함수의 선언용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 20px;&quot;&gt;UdpNm_Cfg.h&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 20px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;사전 컴파일 시간 구성 가능한 매개변수용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 17px;&quot;&gt;ComStack_Types.h:&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 17px;&quot;&gt;Std_Types.h, Platform_Types.h, Compiler.h 포함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 17px;&quot;&gt;Std_Types.h&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 17px;&quot;&gt;AUTOSAR standard 타입&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 17px;&quot;&gt;Platform_Types.h&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 17px;&quot;&gt;platform specific 타입&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 17px;&quot;&gt;Compiler.h&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;컴파일러 특정 언어 확장용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 20px;&quot;&gt;UdpNm.h&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 20px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;제공된 인터페이스 기능의 선언용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 20px;&quot;&gt;Nm_Cbk.h&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 20px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;일반 네트워크 관리 인터페이스에 대한 UdpNm 특정 콜백&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 17px;&quot;&gt;Det.h&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;DET의 인터페이스용 - DET가 구성된 경우에만 옵션이 포함됨&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 17px;&quot;&gt;NmStack_Types.h&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #d2e3fc; color: #000000;&quot;&gt;일반적인 네트워크 관리 유형용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 17px;&quot;&gt;SchM_UdpNm.h&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #d2e3fc; color: #000000;&quot;&gt;기본 소프트웨어 스케줄러 서비스용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 17px;&quot;&gt;UdpNm_MemMap.h&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #d2e3fc; color: #000000;&quot;&gt;메모리 매핑용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 17px;&quot;&gt;SoAd_Cfg.h&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;PDU ID 및 소켓 연결용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 17.907%; height: 17px;&quot;&gt;Nm_Cfg.h&lt;/td&gt;
&lt;td style=&quot;width: 82.093%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #d2e3fc; color: #000000;&quot;&gt;Nm에서 파생된 구성 항목의 경우&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>Network Management</category>
      <category>UDP NM</category>
      <category>[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;UDP Network Management(NM) 2. 파일 구성</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/598</guid>
      <comments>https://zidarn87.tistory.com/598#entry598comment</comments>
      <pubDate>Fri, 9 Sep 2022 21:42:16 +0900</pubDate>
    </item>
    <item>
      <title>[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;UDP Network Management(NM) 1. 소개 및 기능 개요</title>
      <link>https://zidarn87.tistory.com/597</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;UDP&amp;nbsp;Network&amp;nbsp;Management(NM)&amp;nbsp;1.&amp;nbsp;소개&amp;nbsp;및&amp;nbsp;기능&amp;nbsp;개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 : &lt;a href=&quot;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-3/AUTOSAR_SWS_UDPNetworkManagement.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.autosar.org/fileadmin/user_upload/standards/classic/4-/AUTOSAR_SWS_UDPNetworkManagement.pdf&lt;/a&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;span style=&quot;background-color: #f5f5f5; color: #000000;&quot; data-language-for-alternatives=&quot;ko&quot; data-language-to-translate-into=&quot;en&quot; data-phrase-index=&quot;0&quot; data-number-of-phrases=&quot;13&quot;&gt;&lt;span&gt;이 사양은 AUTOSAR UDP 네트워크 관리(UdpNm)의 개념, 핵심 기능, 선택적 기능, 인터페이스 및 구성 문제를 설명합니다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot; data-language-for-alternatives=&quot;ko&quot; data-language-to-translate-into=&quot;en&quot; data-phrase-index=&quot;1&quot; data-number-of-phrases=&quot;13&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot; data-language-for-alternatives=&quot;ko&quot; data-language-to-translate-into=&quot;en&quot; data-phrase-index=&quot;2&quot; data-number-of-phrases=&quot;13&quot;&gt;&lt;span&gt;UdpNm은 선택적 기능입니다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot; data-language-for-alternatives=&quot;ko&quot; data-language-to-translate-into=&quot;en&quot; data-phrase-index=&quot;3&quot; data-number-of-phrases=&quot;13&quot;&gt;&lt;span&gt;사용되는 통신 시스템의 물리적 계층과 관계없이 TCP/IP 스택과 함께 작동하도록 설계되었습니다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot; data-language-for-alternatives=&quot;ko&quot; data-language-to-translate-into=&quot;en&quot; data-phrase-index=&quot;4&quot; data-number-of-phrases=&quot;13&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot; data-language-for-alternatives=&quot;ko&quot; data-language-to-translate-into=&quot;en&quot; data-phrase-index=&quot;5&quot; data-number-of-phrases=&quot;13&quot;&gt;&lt;span&gt;AUTOSAR UDP 네트워크 관리는 TCP/IP 기반 시스템에서 사용할 수 있는 하드웨어 독립 프로토콜입니다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&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;&lt;b&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot; data-language-for-alternatives=&quot;ko&quot; data-language-to-translate-into=&quot;en&quot; data-phrase-index=&quot;6&quot; data-number-of-phrases=&quot;13&quot;&gt;&lt;span&gt;주요 목적은 네트워크의 정상 작동과 버스 절전 모드 간의 전환을 조정하는 것입니다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot; data-language-for-alternatives=&quot;ko&quot; data-language-to-translate-into=&quot;en&quot; data-phrase-index=&quot;7&quot; data-number-of-phrases=&quot;13&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot; data-language-for-alternatives=&quot;ko&quot; data-language-to-translate-into=&quot;en&quot; data-phrase-index=&quot;8&quot; data-number-of-phrases=&quot;13&quot;&gt;&lt;span&gt;핵심 기능 외에도 선택적 기능이 제공됩니다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot; data-language-for-alternatives=&quot;ko&quot; data-language-to-translate-into=&quot;en&quot; data-phrase-index=&quot;9&quot; data-number-of-phrases=&quot;13&quot;&gt;&lt;span&gt;존재하는 모든 노드를 감지하거나 다른 모든 노드가 절전 준비가 되었는지 감지하는 서비스를 구현합니다.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot; data-language-for-alternatives=&quot;ko&quot; data-language-to-translate-into=&quot;en&quot; data-phrase-index=&quot;10&quot; data-number-of-phrases=&quot;13&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot; data-language-for-alternatives=&quot;ko&quot; data-language-to-translate-into=&quot;en&quot; data-phrase-index=&quot;11&quot; data-number-of-phrases=&quot;13&quot;&gt;&lt;span&gt;UDP 네트워크 관리(UdpNm) 기능은 네트워크 관리 인터페이스(Nm)와 TCP/IP 스택(TCP/IP) 간의 적응을 제공합니다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;457&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bphb1J/btrLLxybc6P/FBN3pZZGYzLJThJLvqRKKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bphb1J/btrLLxybc6P/FBN3pZZGYzLJThJLvqRKKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bphb1J/btrLLxybc6P/FBN3pZZGYzLJThJLvqRKKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbphb1J%2FbtrLLxybc6P%2FFBN3pZZGYzLJThJLvqRKKK%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;918&quot; height=&quot;457&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;457&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;용어&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 253px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 17px;&quot;&gt;Acronym or Abbreviation:&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 17px;&quot;&gt;Description&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 17px;&quot;&gt;API&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 17px;&quot;&gt;Application Programming Interface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 17px;&quot;&gt;BSW&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 17px;&quot;&gt;Basic Software&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 17px;&quot;&gt;CWU&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 17px;&quot;&gt;Car Wakeup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 17px;&quot;&gt;EthIf&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 17px;&quot;&gt;Ethernet Interface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 17px;&quot;&gt;DET&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 17px;&quot;&gt;Default Error Tracer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 17px;&quot;&gt;IP&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 17px;&quot;&gt;Internet Protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 17px;&quot;&gt;NM&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 17px;&quot;&gt;Network Management&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 17px;&quot;&gt;PDU&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 17px;&quot;&gt;Protocol Data Unit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 17px;&quot;&gt;SDU&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 17px;&quot;&gt;Service Data Unit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 15px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 15px;&quot;&gt;TCP&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 15px;&quot;&gt;Transmission Control Protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 17px;&quot;&gt;TCP/IP&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 17px;&quot;&gt;A family of communication protocols used in computer networks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 17px;&quot;&gt;UDP&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 17px;&quot;&gt;User Datagram Protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 17px;&quot;&gt;PNI&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 17px;&quot;&gt;Partial Network Information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 178.766px; height: 17px;&quot;&gt;UdpNm&lt;/td&gt;
&lt;td style=&quot;width: 646.234px; height: 17px;&quot;&gt;UDP Network Management&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 145px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 23.3722%; height: 17px;&quot;&gt;Term&lt;/td&gt;
&lt;td style=&quot;width: 76.6278%; height: 17px;&quot;&gt;Description&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot;&gt;
&lt;td style=&quot;width: 23.3722%; height: 40px;&quot;&gt;PDU&amp;nbsp;transmission&amp;nbsp;ability&amp;nbsp;is&amp;nbsp;disabled&lt;/td&gt;
&lt;td style=&quot;width: 76.6278%; height: 40px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;선택적 서비스 UdpNm_DisableCommunication에 의해 NM 메시지 전송이 비활성화되었음을 의미합니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 23.3722%; height: 17px;&quot;&gt;Repeat&amp;nbsp;Message&amp;nbsp;Request&amp;nbsp;Bit&amp;nbsp;Indication&lt;/td&gt;
&lt;td style=&quot;width: 76.6278%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;UdpNm_SoAdIfRxIndication은 수신된 NM 메시지의 Control Bit Vector에 설정된 Repeat Message Bit를 찾습니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 23.3722%; height: 20px;&quot;&gt;NM&amp;nbsp;PDU&lt;/td&gt;
&lt;td style=&quot;width: 76.6278%; height: 20px;&quot;&gt;패킷으로&amp;nbsp;전송되는&amp;nbsp;페이로드를&amp;nbsp;나타냅니다.&amp;nbsp;NM&amp;nbsp;사용자&amp;nbsp;데이터도&amp;nbsp;포함합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 23.3722%; height: 17px;&quot;&gt;NM&amp;nbsp;Packet&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 76.6278%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;IP 및 UDP 헤더를 추가로 포함하는 이더넷 프레임을 나타냅니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 23.3722%; height: 17px;&quot;&gt;NM&amp;nbsp;Message&lt;/td&gt;
&lt;td style=&quot;width: 76.6278%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;NM 알고리즘의 방법론 내에서 전송된 단일 정보 항목을 나타내는 가장 추상적인 용어입니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 23.3722%; height: 17px;&quot;&gt;Bus-Off&amp;nbsp;state&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 76.6278%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;이더넷 HW에 케이블이 연결되어 있지 않은 상황을 나타냅니다.&lt;/span&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f5f5f5; color: #000000;&quot;&gt;UDP 네트워크 관리(UdpNm)는 TCP/IP 스택의 서비스를 사용하고 일반 네트워크 관리 인터페이스(Nm)에 서비스를 제공합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;520&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vTKrT/btrLLyw6vqd/92YTAixgwhbV68AR3K2yBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vTKrT/btrLLyw6vqd/92YTAixgwhbV68AR3K2yBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vTKrT/btrLLyw6vqd/92YTAixgwhbV68AR3K2yBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvTKrT%2FbtrLLyw6vqd%2F92YTAixgwhbV68AR3K2yBk%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;612&quot; height=&quot;520&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;520&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>UDP Network Management</category>
      <category>UDP NM</category>
      <category>[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;UDP Network Management(NM) 1. 소개 및 기능 개요</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/597</guid>
      <comments>https://zidarn87.tistory.com/597#entry597comment</comments>
      <pubDate>Fri, 9 Sep 2022 21:26:18 +0900</pubDate>
    </item>
    <item>
      <title>[Classic AUTOSAR] Socket Adaptor(SoAd) 2. 기능 사양 (3) PDU 헤더 옵션</title>
      <link>https://zidarn87.tistory.com/596</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;Socket&amp;nbsp;Adaptor(SoAd)&amp;nbsp;2.&amp;nbsp;기능&amp;nbsp;사양&amp;nbsp;(3)&amp;nbsp;PDU&amp;nbsp;헤더&amp;nbsp;옵션&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://www.autosar.org/fileadmin/user_upload/standards/classic/20-11/AUTOSAR_SWS_SocketAdaptor.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.autosar.org/fileadmin/user_upload/standards/classic/20-11/AUTOSAR_SWS_SocketAdaptor.pdf&lt;/a&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;[SWS_SoAd_00197] 소켓 연결 및 PDU 전송을 위해 PDU 헤더 옵션이 활성화된 경우(SoAdPduHeaderEnable이 TRUE임), SoAd는 구성된 HeaderId와 실제 PDU 길이가 있는 PDU 헤더를 PDU 데이터 바로 앞에 삽입해야 합니다.&amp;nbsp; 즉, TcpIp_UdpTransmit() 또는 TcpIp_TcpTransmit ()는 PDU 헤더 길이만큼 증가된 TotalLength 또는 AvailableLength로 호출되어야 하며, PDU 헤더는 PDU 데이터 이전에 SoAd UDP 전송 버퍼(있는 경우) 및 PDU 데이터의 시작을 요청하는 SoAd_CopyTxData() 내의 TcpIp에 의해 지정된 메모리로 복사되어야 합니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00198]&amp;nbsp;SoAd&amp;nbsp;PDU&amp;nbsp;헤더는&amp;nbsp;수신기에서&amp;nbsp;PDU의&amp;nbsp;고유&amp;nbsp;식별을&amp;nbsp;위한&amp;nbsp;4바이트&amp;nbsp;ID&amp;nbsp;필드와&amp;nbsp;PDU의&amp;nbsp;데이터&amp;nbsp;길이를&amp;nbsp;지정하는&amp;nbsp;4바이트&amp;nbsp;길이&amp;nbsp;필드로&amp;nbsp;구성되어야&amp;nbsp;합니다.&amp;nbsp;둘&amp;nbsp;다&amp;nbsp;BigEndian&amp;nbsp;바이트&amp;nbsp;순서입니다.&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>PDU 헤더 옵션</category>
      <category>SoAd</category>
      <category>Socket Adaptor</category>
      <category>[Classic AUTOSAR] Socket Adaptor(SoAd) 2. 기능 사양 (3) PDU 헤더 옵션</category>
      <category>오토사</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/596</guid>
      <comments>https://zidarn87.tistory.com/596#entry596comment</comments>
      <pubDate>Sun, 4 Sep 2022 20:05:50 +0900</pubDate>
    </item>
    <item>
      <title>[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;Socket&amp;nbsp;Adaptor(SoAd)&amp;nbsp;2. 기능 사양 (2) PDU 전송</title>
      <link>https://zidarn87.tistory.com/595</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;Socket&amp;nbsp;Adaptor(SoAd)&amp;nbsp;2.&amp;nbsp;기능&amp;nbsp;사양&amp;nbsp;(2)&amp;nbsp;PDU&amp;nbsp;전송&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://www.autosar.org/fileadmin/user_upload/standards/classic/20-11/AUTOSAR_SWS_SocketAdaptor.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.autosar.org/fileadmin/user_upload/standards/classic/20-11/AUTOSAR_SWS_SocketAdaptor.pdf&lt;/a&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;UDP&amp;nbsp;또는&amp;nbsp;TCP&amp;nbsp;소켓을&amp;nbsp;통한&amp;nbsp;상위&amp;nbsp;계층&amp;nbsp;모듈&amp;nbsp;PDU&amp;nbsp;전송의&amp;nbsp;경우&amp;nbsp;SoAd&amp;nbsp;구성은&amp;nbsp;소켓&amp;nbsp;연결에&amp;nbsp;연결된&amp;nbsp;PDU&amp;nbsp;경로를&amp;nbsp;지정합니다.&amp;nbsp;PDU&amp;nbsp;경로(SoAdPduRoute,&amp;nbsp;SoAdPduRouteDest)는&amp;nbsp;SoAd의&amp;nbsp;상위&amp;nbsp;계층&amp;nbsp;모듈에서&amp;nbsp;소켓&amp;nbsp;연결(SoAdSocketConnection,&amp;nbsp;SoAdSocketConnectionGroup)로&amp;nbsp;설명되는&amp;nbsp;TcpIp&amp;nbsp;스택의&amp;nbsp;관련&amp;nbsp;소켓으로의&amp;nbsp;경로를&amp;nbsp;설명합니다.&lt;br /&gt;SoAd의&amp;nbsp;상위&amp;nbsp;계층&amp;nbsp;모듈은&amp;nbsp;전송&amp;nbsp;요청&amp;nbsp;및&amp;nbsp;데이터&amp;nbsp;제공을&amp;nbsp;위해&amp;nbsp;IF(Interface)&amp;nbsp;API&amp;nbsp;또는&amp;nbsp;TP(Transport&amp;nbsp;Protocol)&amp;nbsp;API를&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있습니다.&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. IF-API를&amp;nbsp;통한&amp;nbsp;PDU&amp;nbsp;전송&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_SoAd_00539]&amp;lceil;&amp;nbsp;IF-API를&amp;nbsp;사용하여&amp;nbsp;상위&amp;nbsp;계층에서&amp;nbsp;요청한&amp;nbsp;PDU의&amp;nbsp;전송을&amp;nbsp;위해&amp;nbsp;SoAd는&lt;br /&gt;(1)&amp;nbsp;SoAd_IfTransmit()에서&amp;nbsp;제공하는&amp;nbsp;TxPduId를&amp;nbsp;이용하여&amp;nbsp;관련&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;및&amp;nbsp;PDU&amp;nbsp;경로를&amp;nbsp;식별합니다.&lt;br /&gt;(2)&amp;nbsp;PDU&amp;nbsp;길이&amp;nbsp;&amp;gt;&amp;nbsp;0&amp;nbsp;또는&amp;nbsp;SoAdPduHeaderEnable이&amp;nbsp;TRUE이면&amp;nbsp;연결&amp;nbsp;유형에&amp;nbsp;따라&amp;nbsp;관련&amp;nbsp;TcpIp&amp;nbsp;전송&amp;nbsp;기능을&amp;nbsp;호출하고,&amp;nbsp;그렇지&amp;nbsp;않으면&amp;nbsp;SoAd는&amp;nbsp;추가&amp;nbsp;처리를&amp;nbsp;건너뛰고&amp;nbsp;E_NOT_OK로&amp;nbsp;반환합니다.&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00738]&amp;lceil;개발&amp;nbsp;오류&amp;nbsp;감지가&amp;nbsp;활성화된&amp;nbsp;경우:&amp;nbsp;SOCKET_CONNECTION_ID_16&amp;nbsp;유형의&amp;nbsp;MetaDataItem으로&amp;nbsp;구성된&amp;nbsp;글로벌&amp;nbsp;PDU&amp;nbsp;구조를&amp;nbsp;참조하고&amp;nbsp;포함된&amp;nbsp;SoAdPduRouteDest가&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;그룹을&amp;nbsp;참조하는&amp;nbsp;SoAdPduRoute에&amp;nbsp;대한&amp;nbsp;전송&amp;nbsp;요청의&amp;nbsp;경우,&amp;nbsp;SoAd는&amp;nbsp;개발&amp;nbsp;오류&amp;nbsp;SOAD_E_INV_METADATA,&amp;nbsp;PduInfoType.MetaDataPtr에&amp;nbsp;의해&amp;nbsp;식별된&amp;nbsp;소켓&amp;nbsp;연결이&amp;nbsp;관련&amp;nbsp;SoAdPduRouteDest.&amp;rfloor;의&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;그룹의&amp;nbsp;일부가&amp;nbsp;아닌&amp;nbsp;경우(SRS_Eth_00124)&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00739]&amp;lceil;SOCKET_CONNECTION_ID_16 유형의 MetaDataItem으로 구성된 전역 PDU 구조를 참조하는 SoAdPduRoute에 대한 전송 요청이 있고 포함된 SoAdPduRouteDest가 소켓 연결 그룹을 참조하는 경우, 전체 그룹 대신 PduInfoType.MetaDataPtr에 의해 SoAd는 식별된 소켓 연결에서만 전송을 수행해야 합니다. (SRS_Eth_00124)&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00540]&amp;lceil; UDP 소켓 연결의 경우 SoAd는 (달리 지정되지 않은 경우) SocketId 및 원격 주소가 SocketConnection에 지정되고 SoAd_IfTransmit() 호출에 지정된 PDU 길이를 TotalLength로 사용하여 TcpIp_UdpTransmit()를 호출해야 합니다.&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;[SWS_SoAd_00542]&amp;lceil;&amp;nbsp;TCP&amp;nbsp;소켓&amp;nbsp;연결의&amp;nbsp;경우&amp;nbsp;SoAd는&amp;nbsp;SocketConnection에&amp;nbsp;지정된&amp;nbsp;SocketId,&amp;nbsp;SoAd_IfTransmit()&amp;nbsp;호출에&amp;nbsp;지정된&amp;nbsp;PDU&amp;nbsp;길이로&amp;nbsp;TcpIp_TcpTransmit()를&amp;nbsp;호출해야&amp;nbsp;합니다.&amp;nbsp;AvailableLength&amp;nbsp;및&amp;nbsp;ForceRetrieve는&amp;nbsp;TRUE로&amp;nbsp;설정되어&amp;nbsp;있습니다.&amp;rfloor;()&lt;br /&gt;&lt;br /&gt;참고:&amp;nbsp;TxPduId는&amp;nbsp;SoAdSocketConnection을&amp;nbsp;참조하는&amp;nbsp;하나&amp;nbsp;이상의&amp;nbsp;SoAdPduRouteDest&amp;nbsp;컨테이너를&amp;nbsp;포함하는&amp;nbsp;SoAd&amp;nbsp;구성에서&amp;nbsp;SoAdPduRoute를&amp;nbsp;식별합니다.&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00543]&amp;lceil;&amp;nbsp;TcpIp&amp;nbsp;모듈은&amp;nbsp;SoAd_CopyTxData()를&amp;nbsp;사용하여&amp;nbsp;TcpIp&amp;nbsp;전송&amp;nbsp;호출&amp;nbsp;컨텍스트&amp;nbsp;내에서&amp;nbsp;PDU&amp;nbsp;데이터를&amp;nbsp;검색합니다.&amp;nbsp;여기서&amp;nbsp;SoAd는&amp;nbsp;PDU를&amp;nbsp;매개변수&amp;nbsp;BufPtr.&amp;rfloor;()에&amp;nbsp;의해&amp;nbsp;지정된&amp;nbsp;메모리에&amp;nbsp;복사합니다.&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00731]&amp;lceil;&amp;nbsp;PduInfoPtr-&amp;gt;SduDataPtr이&amp;nbsp;NULL_PTR로&amp;nbsp;설정된&amp;nbsp;상태에서&amp;nbsp;SoAd_IfTransmit이&amp;nbsp;호출되면&amp;nbsp;SoAd는&amp;nbsp;&amp;lt;Up&amp;gt;_[SoAd][If]TriggerTransmit&amp;gt;()를&amp;nbsp;사용하여&amp;nbsp;상위&amp;nbsp;계층에서&amp;nbsp;PDU&amp;nbsp;데이터를&amp;nbsp;검색합니다.&amp;rfloor;()&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00544]&amp;lceil;&amp;nbsp;UDP&amp;nbsp;소켓&amp;nbsp;연결의&amp;nbsp;경우&amp;nbsp;SoAd는&amp;nbsp;다음&amp;nbsp;SoAd_MainFunction(&amp;nbsp;)&amp;nbsp;마지막&amp;nbsp;TcpIp_UdpTransmit()&amp;nbsp;호출이&amp;nbsp;성공적으로&amp;nbsp;반환된&amp;nbsp;후.&amp;rfloor;()&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00545]&amp;lceil;&amp;nbsp;TCP&amp;nbsp;소켓&amp;nbsp;연결의&amp;nbsp;경우&amp;nbsp;SoAd는&amp;nbsp;구성된&amp;nbsp;전송&amp;nbsp;확인&amp;nbsp;기능(&amp;lt;Up&amp;gt;_[SoAd][If]TxConfirmation&amp;gt;())으로&amp;nbsp;상위&amp;nbsp;계층을&amp;nbsp;호출하고&amp;nbsp;결과는&amp;nbsp;SoAd_TxConfirmation()&amp;nbsp;내에서&amp;nbsp;E_OK로&amp;nbsp;설정됩니다.&amp;nbsp;모든&amp;nbsp;PDU&amp;nbsp;데이터(하나&amp;nbsp;이상의&amp;nbsp;전송&amp;nbsp;요청)가&amp;nbsp;전송을&amp;nbsp;위해&amp;nbsp;확인된&amp;nbsp;후&amp;nbsp;콜백&amp;nbsp;함수.&amp;rfloor;()&lt;br /&gt;&lt;br /&gt;참고:&amp;nbsp;동일한&amp;nbsp;PDU에&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;TCP&amp;nbsp;소켓&amp;nbsp;연결에서&amp;nbsp;동일한&amp;nbsp;PDU에&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;PDU&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;h3 data-ke-size=&quot;size23&quot;&gt;2. IF-API&amp;nbsp;및&amp;nbsp;nPduUdpTxBuffer를&amp;nbsp;통한&amp;nbsp;PDU&amp;nbsp;전송&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_SoAd_00546] 소켓 연결과 관련된 모든 PDU 경로(SoAdPduRouteDest)에 대해 SoAdTxUdpTriggerMode가 TRIGGER_NEVER로 설정되고 관련 소켓 연결에 속하는 모든 상위 계층에 &quot;IF&quot;로 설정된 SoAdTxUpperLayerType이 있는 경우 SoAd는 이 소켓 연결에 대해 nPdu 기능을 사용해야 합니다.&amp;nbsp; (SRS_Eth_00116)&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;[SWS_SoAd_00547]소켓 연결에 nPdu 기능을 사용하고 실제 PDU(SoAdPduRouteDest)에 대해 TriggerMode를 TRIGGER_NEVER로 설정한 경우 SoAd는 소켓 연결에 대한 PDU를 저장해야 합니다(TcpIp_UdpTransmit()를 호출하는 대신).&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;[SWS_SoAd_00747] 소켓 연결에 nPdu 기능을 사용하고 관련 PDU 파라미터인 SoAdTxPduCollectionSemantics를 SOAD_COLLECT_LAST_IS_BEST로 설정한 경우 SoAd는 PDU 데이터 대신 전송 요청만 저장합니다. SoAd가 PDU 데이터를 제공해야 하는 경우 SoAd는 &amp;lt;Up&amp;gt;_[SoAd][If]TriggerTransmit().&amp;rfloor;(SRS_Eth_00116)를 호출하여 상위 계층에서 데이터를 검색합니다.&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00734]소켓 연결을 위해 nPdu 기능을 사용하는 경우 관련 PDU 매개변수인 SoAdTxPduCollectionSemantics가 SOAD_COLLECT_LAST_IS_BEST로 설정되고 상위 계층이 &amp;lt;Up&amp;gt;_[SoAd][If]TriggerTransmit( ) SoAd_CopyTxData의 컨텍스트에서 SoAd는 전송을 중단하고 E_NOT_OK를 반환합니다.&lt;br /&gt;(SRS_Eth_00116)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00548]소켓 연결을 위해 nPdu 기능을 사용하고 현재 PDU(SoAdPduRouteDest)에 대해 TriggerMode가 TRIGGER_ALWAYS로 설정되어 있고 결과 PDU 데이터 및 헤더가 SoAdSocketnPduUdpTxBufferMin을 초과하지 않는 경우 SoAd는 소켓에 대해 저장된 모든 PDU를 전송해야 합니다. TcpIp_UdpTransmit()를 호출하여 연결(있는 경우) 및 현재 PDU.(SRS_Eth_00116)&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00685]소켓 연결에 nPdu 기능을 사용하고 현재 PDU(SoAdPduRouteDest)에 대해 TriggerMode가 TRIGGER_ALWAYS로 설정되어 있고 결과 PDU 데이터 및 헤더가 SoAdSocketnPduUdpTxBufferMin을 초과하는 경우 SoAd는 소켓 연결을 위해 저장된 모든 PDU를 먼저 전송해야 합니다. (있는 경우) TcpIp_UdpTransmit()를 호출한 다음 TcpIp_UdpTransmit()를 한 번 더 호출하여 현재 PDU를 호출합니다.SRS_Eth_00116)&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00549]소켓 연결에 nPdu 기능을 사용하고 현재 PDU(SoAdPduRouteDest)에 대해 TriggerMode가 TRIGGER_NEVER로 설정되어 있고 결과 PDU 데이터 및 헤더가 SoAdSocketnPduUdpTxBufferMin을 초과하는 경우 SoAd는 먼저 소켓 연결을 위해 저장된 모든 PDU를 전송해야 합니다. TcpIp_UdpTransmit()를 호출한 다음 소켓 연결을 위한 PDU를 저장합니다. (SRS_Eth_00116)&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00690]&amp;lceil;&amp;nbsp;SoAd는&amp;nbsp;nPdu&amp;nbsp;기능을&amp;nbsp;사용하는&amp;nbsp;소켓&amp;nbsp;연결을&amp;nbsp;통해&amp;nbsp;전송되는&amp;nbsp;PDU의&amp;nbsp;순서를&amp;nbsp;유지해야&amp;nbsp;합니다.&amp;nbsp;발신자&amp;nbsp;측에서&amp;nbsp;먼저&amp;nbsp;수집된&amp;nbsp;Pdus를&amp;nbsp;먼저&amp;nbsp;추출하여&amp;nbsp;수신&amp;nbsp;측&amp;nbsp;수신자에게도&amp;nbsp;먼저&amp;nbsp;표시합니다.&amp;rfloor;(SRS_Eth_00116)&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;[SWS_SoAd_00691]nPdu 기능이 소켓 연결에 사용되고 모든 PDU가 SOAD_COLLECT_QUEUED로 설정된 SoAdTxPduCollectionSemantics로 구성된 경우 SoAd는 모든 PDU를 개별적으로 전송하며 동일한 PduId를 가진 PDU도 전송합니다.(SRS116)_00 &lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00735]nPdu 기능이 소켓 연결에 사용되고 모든 PDU가 SOAD_COLLECT_LAST_IS_BEST로 설정된 SoAdTxPduCollectionSemantics로 구성된 경우 SoAd는 첫 번째 인스턴스가 전송을 위해 요청된 순서대로 동일한 PduId를 가진 각 PDU의 마지막 인스턴스만 전송합니다. (SRS_Eth_00116) &lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00736]&amp;lceil;SoAd는 전송 속성이 소켓 연결에 할당된 PDU의 (SoAdTxPduCollectionSemantics 참조) 혼합됩니다. 또한 소켓 연결 그룹의 모든 소켓 연결은 SOAD_COLLECT_LAST_IS_BEST가 있는 PDU 또는 SOAD_COLLECT_QUEUED 의미 체계가 있는 PDU에 의해 단독으로 참조됩니다.&amp;rfloor; (SRS_Eth_00116) &lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00696]&amp;lceil;&amp;nbsp;SoAd는&amp;nbsp;nPdu&amp;nbsp;기능을&amp;nbsp;사용하여&amp;nbsp;각&amp;nbsp;소켓&amp;nbsp;연결에&amp;nbsp;대해&amp;nbsp;nPdu&amp;nbsp;특정&amp;nbsp;타이머를&amp;nbsp;유지해야&amp;nbsp;합니다.&amp;rfloor;(SRS_Eth_00116) &lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00550]&amp;lceil;&amp;nbsp;SoAd_MainFunction()&amp;nbsp;내&amp;nbsp;SoAd는&amp;nbsp;nPdu&amp;nbsp;특정&amp;nbsp;타이머가&amp;nbsp;만료된&amp;nbsp;경우&amp;nbsp;TcpIp_UdpTransmit()를&amp;nbsp;호출하여&amp;nbsp;소켓&amp;nbsp;연결(있는&amp;nbsp;경우)을&amp;nbsp;위해&amp;nbsp;저장된&amp;nbsp;모든&amp;nbsp;PDU를&amp;nbsp;전송해야&amp;nbsp;합니다.&amp;rfloor;(SRS_Eth_00116) &lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00697]&amp;lceil;&amp;nbsp;특정&amp;nbsp;SoAdTxUdpTriggerTimeout과&amp;nbsp;함께&amp;nbsp;TriggerMode가&amp;nbsp;TRIGGER_NEVER로&amp;nbsp;설정된&amp;nbsp;PDU가&amp;nbsp;버퍼링되면&amp;nbsp;SoAd는&amp;nbsp;nPdu&amp;nbsp;특정&amp;nbsp;타이머를&amp;nbsp;SoAdTxUdpTriggerTimeout&amp;nbsp;값으로&amp;nbsp;설정해야&amp;nbsp;합니다.&amp;nbsp;타이머가&amp;nbsp;실행&amp;nbsp;중이&amp;nbsp;아니거나&amp;nbsp;현재&amp;nbsp;nPdu&amp;nbsp;특정&amp;nbsp;타이머&amp;nbsp;값보다&amp;nbsp;낮은&amp;nbsp;경우입니다.&amp;nbsp;&amp;rfloor;(SRS_Eth_00116) &lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00683]&amp;lceil;&amp;nbsp;특정&amp;nbsp;SoAdTxUdpTriggerTimeout&amp;nbsp;없이&amp;nbsp;TriggerMode가&amp;nbsp;TRIGGER_NEVER로&amp;nbsp;설정된&amp;nbsp;PDU가&amp;nbsp;버퍼링되면&amp;nbsp;SoAd는&amp;nbsp;타이머가&amp;nbsp;실행되고&amp;nbsp;있지&amp;nbsp;않거나&amp;nbsp;현재&amp;nbsp;nPdu&amp;nbsp;특정&amp;nbsp;타이머&amp;nbsp;값보다&amp;nbsp;낮은&amp;nbsp;경우&amp;nbsp;nPdu&amp;nbsp;특정&amp;nbsp;타이머를&amp;nbsp;SoAdSocketUdpTriggerTimeout&amp;nbsp;값으로&amp;nbsp;설정해야&amp;nbsp;합니다.&amp;nbsp;&amp;rfloor;&amp;nbsp;(SRS_Eth_00116) &lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00684]&amp;lceil; 소켓 연결을 위해 저장된 PDU가 전송되면 SoAd는 nPdu 특정 타이머를 중지합니다&amp;rfloor;&amp;nbsp; (SRS_Eth_00116) &lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00737]&amp;lceil;&amp;nbsp;nPdu&amp;nbsp;기능을&amp;nbsp;사용하여&amp;nbsp;소켓&amp;nbsp;연결을&amp;nbsp;위해&amp;nbsp;저장된&amp;nbsp;모든&amp;nbsp;PDU에&amp;nbsp;대해&amp;nbsp;SoAd는&amp;nbsp;관련&amp;nbsp;전송&amp;nbsp;확인&amp;nbsp;기능(&amp;lt;Up&amp;gt;_[SoAd][If]TxConfirmation&amp;gt;())으로&amp;nbsp;상위&amp;nbsp;계층을&amp;nbsp;호출합니다.&amp;nbsp;SoAd_MainFunction()의&amp;nbsp;컨텍스트&amp;nbsp;및&amp;nbsp;결과&amp;nbsp;설정 &lt;br /&gt;(1)&amp;nbsp;관련&amp;nbsp;TcpIp_UdpTransmit()&amp;nbsp;호출이&amp;nbsp;성공하면&amp;nbsp;E_OK, &lt;br /&gt;(2)&amp;nbsp;E_NOT_OK&amp;nbsp;전송이&amp;nbsp;성공하지&amp;nbsp;못했거나&amp;nbsp;다른&amp;nbsp;이유로&amp;nbsp;취소된&amp;nbsp;경우.&amp;rfloor;()&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;3&amp;nbsp;IfRoutingGroupTransmit&amp;nbsp;API를&amp;nbsp;통한&amp;nbsp;PDU&amp;nbsp;전송&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_SoAd_00662]&amp;nbsp;SoAd_IfRoutingGroupTransmit()에서&amp;nbsp;SoAd는&amp;nbsp;SoAd_MainFunction()에서&amp;nbsp;전송을&amp;nbsp;위한&amp;nbsp;매개변수&amp;nbsp;id로&amp;nbsp;식별된&amp;nbsp;라우팅&amp;nbsp;그룹에&amp;nbsp;대한&amp;nbsp;참조를&amp;nbsp;포함하는&amp;nbsp;각&amp;nbsp;SoAdPduRouteDest에&amp;nbsp;대한&amp;nbsp;트리거&amp;nbsp;전송&amp;nbsp;요청을&amp;nbsp;저장해야&amp;nbsp;합니다.&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00720]&amp;lceil;&amp;nbsp;SoAd_IfSpecificRoutingGroupTransmit()에서&amp;nbsp;SoAd는&amp;nbsp;SoAd_MainFunction()의&amp;nbsp;매개변수&amp;nbsp;SoConId로&amp;nbsp;식별된&amp;nbsp;소켓&amp;nbsp;연결에서&amp;nbsp;전송을&amp;nbsp;위한&amp;nbsp;매개변수&amp;nbsp;id로&amp;nbsp;식별된&amp;nbsp;라우팅&amp;nbsp;그룹에&amp;nbsp;대한&amp;nbsp;참조를&amp;nbsp;포함하는&amp;nbsp;각&amp;nbsp;SoAdPduRouteDest에&amp;nbsp;대한&amp;nbsp;트리거&amp;nbsp;전송&amp;nbsp;요청을&amp;nbsp;저장해야&amp;nbsp;합니다.&amp;rfloor;(&amp;nbsp;)&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00665]&amp;lceil;&amp;nbsp;SoAd_MainFunction()에서&amp;nbsp;SoAd는&amp;nbsp;SoAdPduRouteDest에&amp;nbsp;대한&amp;nbsp;보류&amp;nbsp;중인&amp;nbsp;트리거&amp;nbsp;전송&amp;nbsp;요청을&amp;nbsp;확인하고&amp;nbsp;모든&amp;nbsp;관련&amp;nbsp;IFPDU를&amp;nbsp;식별해야&amp;nbsp;합니다.&amp;nbsp;식별된&amp;nbsp;각&amp;nbsp;IF-PDU에&amp;nbsp;대해&amp;nbsp;SoAd는&amp;nbsp;아래에&amp;nbsp;지정된&amp;nbsp;대로&amp;nbsp;처리해야&amp;nbsp;합니다.&lt;br /&gt;(1)&amp;nbsp;&amp;lt;Up&amp;gt;_[SoAd][If]-TriggerTransmit()를&amp;nbsp;호출하여&amp;nbsp;관련&amp;nbsp;상위&amp;nbsp;계층에서&amp;nbsp;데이터를&amp;nbsp;검색하고&lt;br /&gt;(2)&amp;nbsp;관련&amp;nbsp;소켓&amp;nbsp;연결을&amp;nbsp;통해&amp;nbsp;데이터를&amp;nbsp;전송합니다.&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00728]&amp;lceil;&amp;nbsp;상위&amp;nbsp;계층에서&amp;nbsp;PDU&amp;nbsp;데이터를&amp;nbsp;트리거하려면&amp;nbsp;SoAd는&amp;nbsp;PduInfoType.SduDataPtr을&amp;nbsp;데이터가&amp;nbsp;복사될&amp;nbsp;버퍼의&amp;nbsp;위치로&amp;nbsp;설정하고&amp;nbsp;PduInfoType.SduDataLength를&amp;nbsp;이&amp;nbsp;버퍼의&amp;nbsp;길이로&amp;nbsp;설정한&amp;nbsp;다음&amp;nbsp;&amp;lt;Up&amp;gt;_[SoAd를&amp;nbsp;호출합니다.&amp;nbsp;][If]-TriggerTransmit().&amp;rfloor;()&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;4. TP-API를&amp;nbsp;통한&amp;nbsp;PDU&amp;nbsp;전송&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_SoAd_00551]&amp;lceil;&amp;nbsp;TP-API를&amp;nbsp;사용하여&amp;nbsp;상위&amp;nbsp;계층에서&amp;nbsp;요청한&amp;nbsp;PDU&amp;nbsp;전송을&amp;nbsp;위해&amp;nbsp;SoAd는 &lt;br /&gt;(1)&amp;nbsp;PDU&amp;nbsp;길이가&amp;nbsp;0이면&amp;nbsp;추가&amp;nbsp;처리를&amp;nbsp;건너뛰고&amp;nbsp;E_NOT_OK로&amp;nbsp;반환합니다. &lt;br /&gt;(2)&amp;nbsp;SoAd_TpTransmit()에서&amp;nbsp;제공하는&amp;nbsp;TxPduId를&amp;nbsp;이용하여&amp;nbsp;관련&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;및&amp;nbsp;PDU&amp;nbsp;경로를&amp;nbsp;식별합니다. &lt;br /&gt;(3)&amp;nbsp;추가&amp;nbsp;처리를&amp;nbsp;위해&amp;nbsp;TP&amp;nbsp;전송&amp;nbsp;요청을&amp;nbsp;SoAd_MainFunction()에&amp;nbsp;저장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고:&amp;nbsp;TxPduId는&amp;nbsp;SoAdSocketConnection을&amp;nbsp;참조하는&amp;nbsp;하나&amp;nbsp;이상의&amp;nbsp;SoAdPduRouteDest&amp;nbsp;컨테이너를&amp;nbsp;포함하는&amp;nbsp;SoAd&amp;nbsp;구성에서&amp;nbsp;SoAdPduRoute를&amp;nbsp;식별합니다.&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00552]SoAd_MainFunction()에서&amp;nbsp;SoAd는&amp;nbsp;보류&amp;nbsp;중인&amp;nbsp;TP&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;nbsp;구성&amp;nbsp;가능한&amp;nbsp;콜백&amp;nbsp;함수&amp;nbsp;&amp;lt;Up&amp;gt;_[SoAd][Tp]CopyTxData()를&amp;nbsp;PduInfoType.SduLength&amp;nbsp;=&amp;nbsp;0으로&amp;nbsp;호출하여&amp;nbsp;상위&amp;nbsp;계층에서&amp;nbsp;사용&amp;nbsp;가능한&amp;nbsp;데이터&amp;nbsp;양을&amp;nbsp;쿼리합니다.&lt;br /&gt;(2)&amp;nbsp;연결&amp;nbsp;유형에&amp;nbsp;따라:&amp;nbsp;데이터를&amp;nbsp;검색하고&amp;nbsp;관련&amp;nbsp;TcpIp&amp;nbsp;전송&amp;nbsp;기능을&amp;nbsp;호출합니다.&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00553]&amp;lceil;&amp;nbsp;UDP&amp;nbsp;소켓&amp;nbsp;연결의&amp;nbsp;경우&amp;nbsp;SoAd는&lt;br /&gt;(1)&amp;nbsp;PduInfoType.SduLength가&amp;nbsp;이전&amp;nbsp;호출의&amp;nbsp;availableDataPtr에&amp;nbsp;의해&amp;nbsp;반환된&amp;nbsp;값으로&amp;nbsp;설정된&amp;nbsp;구성&amp;nbsp;가능한&amp;nbsp;콜백&amp;nbsp;함수&amp;nbsp;&amp;lt;Up&amp;gt;_[SoAd][Tp]CopyTxData()를&amp;nbsp;통해&amp;nbsp;상위&amp;nbsp;계층에서&amp;nbsp;SoAd&amp;nbsp;TP&amp;nbsp;전송&amp;nbsp;버퍼로&amp;nbsp;사용&amp;nbsp;가능한&amp;nbsp;모든&amp;nbsp;데이터를&amp;nbsp;검색합니다.&amp;nbsp;그리고&lt;br /&gt;(2)&amp;nbsp;하나&amp;nbsp;이상의&amp;nbsp;SoAd&amp;nbsp;기본&amp;nbsp;기능&amp;nbsp;실행&amp;nbsp;주기&amp;nbsp;내에서&amp;nbsp;모든&amp;nbsp;데이터가&amp;nbsp;성공적으로&amp;nbsp;검색된&amp;nbsp;후&amp;nbsp;SocketConnection에&amp;nbsp;지정된&amp;nbsp;SocketId&amp;nbsp;및&amp;nbsp;원격&amp;nbsp;주소와&amp;nbsp;TotalLength로&amp;nbsp;SoAd_TpTransmit()&amp;nbsp;호출에&amp;nbsp;지정된&amp;nbsp;PDU&amp;nbsp;길이를&amp;nbsp;사용하여&amp;nbsp;TcpIp_UdpTransmit()를&amp;nbsp;호출합니다.&lt;br /&gt;&lt;br /&gt;참고:&amp;nbsp;소켓&amp;nbsp;연결에&amp;nbsp;필요한&amp;nbsp;TP&amp;nbsp;버퍼&amp;nbsp;크기는&amp;nbsp;관련&amp;nbsp;TP&amp;nbsp;PDU의&amp;nbsp;길이에서&amp;nbsp;파생될&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00652]&amp;lceil;&amp;nbsp;UDP&amp;nbsp;소켓&amp;nbsp;연결에&amp;nbsp;대해&amp;nbsp;&amp;lt;Up&amp;gt;_[SoAd][Tp]CopyTxData()가&amp;nbsp;BUFREQ_E_NOT_OK와&amp;nbsp;함께&amp;nbsp;반환되면&amp;nbsp;SoAd는&amp;nbsp;즉시&amp;nbsp;TP&amp;nbsp;전송&amp;nbsp;세션을&amp;nbsp;종료하고&amp;nbsp;구성된&amp;nbsp;전송&amp;nbsp;확인&amp;nbsp;기능(&amp;lt;Up&amp;gt;&amp;nbsp;_[SoAd][Tp]TxConfirmation&amp;gt;())&amp;nbsp;E_NOT_OK&amp;nbsp;결과.&amp;nbsp;(참고:&amp;nbsp;관련&amp;nbsp;소켓&amp;nbsp;연결은&amp;nbsp;이&amp;nbsp;항목에서&amp;nbsp;닫히지&amp;nbsp;않습니다.&lt;br /&gt;사례.)&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00554]&amp;lceil;&amp;nbsp;TCP&amp;nbsp;소켓&amp;nbsp;연결의&amp;nbsp;경우&amp;nbsp;SoAd는&amp;nbsp;SocketConnection에&amp;nbsp;지정된&amp;nbsp;SocketId와&amp;nbsp;함께&amp;nbsp;TcpIp_TcpTransmit()를&amp;nbsp;호출해야&amp;nbsp;하며,&amp;nbsp;PDU&amp;nbsp;길이는&amp;nbsp;&amp;lt;Up&amp;gt;_[SoAd][Tp]에&amp;nbsp;대한&amp;nbsp;이전&amp;nbsp;호출의&amp;nbsp;availableDataPtr에&amp;nbsp;의해&amp;nbsp;반환된&amp;nbsp;값으로&amp;nbsp;설정됩니다.&amp;nbsp;CopyTxData()를&amp;nbsp;AvailableLength로,&amp;nbsp;ForceRetrieve를&amp;nbsp;FALSE로&amp;nbsp;설정합니다.&amp;rfloor;()&lt;br /&gt;&lt;br /&gt;TcpIp&amp;nbsp;모듈은&amp;nbsp;SoAd_CopyTxData()를&amp;nbsp;사용하여&amp;nbsp;TcpIp&amp;nbsp;전송&amp;nbsp;호출&amp;nbsp;컨텍스트&amp;nbsp;내에서&amp;nbsp;SoAd에서&amp;nbsp;PDU&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;[SWS_SoAd_00556] TCP 소켓 연결의 경우 SoAd는 &amp;lt;Up&amp;gt;_[SoAd][Tp]CopyTxData()를&amp;nbsp;호출하여&amp;nbsp;관련&amp;nbsp;상위&amp;nbsp;레이어에&amp;nbsp;요청&lt;br /&gt;SoAd_CopyTxData()&amp;nbsp;내의&amp;nbsp;매개변수&amp;nbsp;BufPtr에&amp;nbsp;의해&amp;nbsp;지정된&amp;nbsp;메모리에&amp;nbsp;PDU(요청된&amp;nbsp;부분)를&amp;nbsp;복사합니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00651]&amp;lceil;&amp;nbsp;TCP&amp;nbsp;소켓&amp;nbsp;연결에&amp;nbsp;대해&amp;nbsp;&amp;lt;Up&amp;gt;_[SoAd][Tp]CopyTxData()가&amp;nbsp;BUFREQ_E_NOT_OK와&amp;nbsp;함께&amp;nbsp;반환되면&amp;nbsp;SoAd는&amp;nbsp;(a)&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;E_NOT_OK&amp;nbsp;및&amp;nbsp;수신된&amp;nbsp;메시지는&amp;nbsp;단순히&amp;nbsp;폐기됩니다)&amp;nbsp;및&amp;nbsp;(b)&amp;nbsp;다음&amp;nbsp;SoAd_MainFunction()에서&amp;nbsp;소켓&amp;nbsp;연결을&amp;nbsp;닫습니다.&amp;rfloor;()&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00557]&amp;lceil;&amp;nbsp;UDP&amp;nbsp;소켓&amp;nbsp;연결의&amp;nbsp;경우&amp;nbsp;SoAd는&amp;nbsp;구성된&amp;nbsp;전송&amp;nbsp;확인&amp;nbsp;기능(&amp;lt;Up&amp;gt;_[SoAd][Tp]TxConfirmation&amp;gt;())을&amp;nbsp;사용하여&amp;nbsp;상위&amp;nbsp;계층을&amp;nbsp;호출하고&amp;nbsp;이후&amp;nbsp;SoAd_MainFunction()&amp;nbsp;내&amp;nbsp;결과로&amp;nbsp;E_OK를&amp;nbsp;호출합니다.&amp;nbsp;TcpIp_UdpTransmit()는&amp;nbsp;TCPIP_OK와&amp;nbsp;함께&amp;nbsp;반환됩니다.&amp;rfloor;()&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00667]&amp;lceil; SoAdSocketTcpImmediateTpTxConfirmation이 TRUE로 설정된 TCP 소켓 연결의 경우 SoAd는 구성된 전송 확인 기능으로 상위 계층을 호출합니다.(&amp;lt;Up&amp;gt;_[SoAd][Tp]TxConfirmation&amp;gt;())&amp;nbsp;및&amp;nbsp;E_OK는&amp;nbsp;TcpIp_TcpTransmit()가&amp;nbsp;E_OK를&amp;nbsp;반환한&amp;nbsp;후&amp;nbsp;SoAd_MainFunction()&amp;nbsp;내&amp;nbsp;결과입니다.&amp;rfloor;()&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00670]&amp;lceil;&amp;nbsp;TCP&amp;nbsp;소켓&amp;nbsp;연결의&amp;nbsp;경우&amp;nbsp;SoAd는&amp;nbsp;구성된&amp;nbsp;전송&amp;nbsp;확인&amp;nbsp;기능(&amp;lt;Up&amp;gt;_[SoAd][Tp]TxConfirmation&amp;gt;())을&amp;nbsp;사용하여&amp;nbsp;상위&amp;nbsp;계층을&amp;nbsp;호출하고&amp;nbsp;다음&amp;nbsp;SoAd_MainFunction()&amp;nbsp;내&amp;nbsp;결과로&amp;nbsp;E_NOT_OK를&amp;nbsp;호출합니다.&amp;nbsp;TcpIp_TcpTransmit()는&amp;nbsp;E_NOT_OK와&amp;nbsp;함께&amp;nbsp;반환됩니다.&amp;rfloor;()&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00558]&amp;lceil;&amp;nbsp;SoAdSocketTcpImmediateTpTxConfirmation이&amp;nbsp;FALSE로&amp;nbsp;설정된&amp;nbsp;TCP&amp;nbsp;소켓&amp;nbsp;연결의&amp;nbsp;경우&amp;nbsp;SoAd는&amp;nbsp;구성된&amp;nbsp;전송&amp;nbsp;확인&amp;nbsp;기능(&amp;lt;Up&amp;gt;_[SoAd][Tp]TxConfirmation&amp;gt;())으로&amp;nbsp;상위&amp;nbsp;계층을&amp;nbsp;호출하고&amp;nbsp;결과적으로&amp;nbsp;E_OK&amp;nbsp;모든&amp;nbsp;TP&amp;nbsp;PDU&amp;nbsp;데이터&amp;nbsp;전송이&amp;nbsp;확인된&amp;nbsp;후&amp;nbsp;SoAd_TxConfirmation()&amp;nbsp;콜백&amp;nbsp;함수&amp;nbsp;내에서.&amp;rfloor;()&lt;br /&gt;&lt;br /&gt;참고:&amp;nbsp;동일한&amp;nbsp;PDU를&amp;nbsp;가진&amp;nbsp;새&amp;nbsp;TP&amp;nbsp;세션에&amp;nbsp;대한&amp;nbsp;SoAd_TpTransmit()는&amp;nbsp;&amp;lt;Up&amp;gt;_[SoAd][Tp]TxConfirmation&amp;gt;()&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>PDU 전송</category>
      <category>SoAd</category>
      <category>Socket Adaptor</category>
      <category>[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;Socket&amp;nbsp;Adaptor(SoAd)&amp;nbsp;2. 기능 사양 (2) PDU 전송</category>
      <category>오토사</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/595</guid>
      <comments>https://zidarn87.tistory.com/595#entry595comment</comments>
      <pubDate>Sun, 4 Sep 2022 20:02:06 +0900</pubDate>
    </item>
    <item>
      <title>[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;Socket&amp;nbsp;Adaptor(SoAd)&amp;nbsp;2. 기능 사양 (1) Socket Connections</title>
      <link>https://zidarn87.tistory.com/594</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;Socket&amp;nbsp;Adaptor(SoAd)&amp;nbsp;2.&amp;nbsp;기능&amp;nbsp;사양&amp;nbsp;(1)&amp;nbsp;Socket&amp;nbsp;Connections&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://www.autosar.org/fileadmin/user_upload/standards/classic/20-11/AUTOSAR_SWS_SocketAdaptor.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.autosar.org/fileadmin/user_upload/standards/classic/20-11/AUTOSAR_SWS_SocketAdaptor.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;436&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zT5xx/btrLjkrmxgu/Eik2cvlfQtyVUTvfukia80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zT5xx/btrLjkrmxgu/Eik2cvlfQtyVUTvfukia80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zT5xx/btrLjkrmxgu/Eik2cvlfQtyVUTvfukia80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzT5xx%2FbtrLjkrmxgu%2FEik2cvlfQtyVUTvfukia80%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;519&quot; height=&quot;436&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;436&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCP/IP 통신은 인터넷 소켓을 기반으로 합니다. 인터넷 소켓은 tuple IP 주소와 포트로 식별되는 통신 링크의 endpoint입니다.&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;전송 프로토콜에 따라 소켓은 연결이 없는 UDP 소켓과 연결 지향 TCP 소켓으로 구분됩니다. TCP는 point-to-point 통신 관계를 기반으로 하며, 브로드캐스트 또는 멀티캐스트가 불가능합니다. 또한 한 쪽이 연결을 설정하고 다른 쪽이 들어오는 요청을 수락해야 합니다. 두 스테이션은 서로 여러 연결을 설정할 수 있으며, 각각은 다른 소켓에 의해 처리되며 사용되는 포트 번호 중 적어도 하나는 달라야 합니다. TCP에서 Source에서 Sink로 전송된 모든 메시지는 순서가 보존된 연속 바이트의 연속 스트림으로 간주됩니다. 모든 메시지에 걸친 바이트 순서를 유지하기 위해 승인 체계가 마련되어 있습니다. Sink가 특정 시간 내에 수신을 확인하지 않으면 Source에서 메시지를 재전송합니다. TCP는&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;TCP/IP 통신의 추상화를 위해 SoAd는 소켓 연결을 정의합니다. SoAd 소켓 연결은 로컬 소켓(예: 로컬 주소 식별자 및 로컬 포트)과 원격 소켓(예: 원격 IP 주소 및 포트) 간의 연결은 물론 전송 프로토콜, SoAd PDU 헤더 사용, 버퍼와 같은 연결 매개변수를 지정합니다. 각 소켓 연결은 고유 식별자(SoConId)로 식별할 수 있습니다. 로컬&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;[SWS_SoAd_00588]&amp;nbsp;SoAd는&amp;nbsp;각각&amp;nbsp;SoAd_OpenSoCon()&amp;nbsp;및&amp;nbsp;SoAd_CloseSoCon()로&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;SoAd_MainFunction()에서만&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;[SWS_SoAd_00743] SoAd는 다음과 같은 상황에서 원격 주소를 lock합니다.&lt;br /&gt;(a)&amp;nbsp;SOAD_SOCON_OFFLINE&amp;nbsp;상태가&amp;nbsp;아닌&amp;nbsp;TCP&amp;nbsp;소켓&amp;nbsp;연결,&lt;br /&gt;(b) active 리셉션,&lt;br /&gt;(c)&amp;nbsp;TP-PDU의&amp;nbsp;보류&amp;nbsp;중인&amp;nbsp;수신,&lt;br /&gt;(d) active 전송,&lt;br /&gt;(e)&amp;nbsp;nPdu&amp;nbsp;기능의&amp;nbsp;전송&amp;nbsp;보류,&lt;br /&gt;(f) SoAd_IfRoutingGroupTransmit() 또는 SoAd_IfSpecificRoutingGroupTransmit() 을&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;lock된 원격 주소는 상위 계층에서 수정할 수 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 소켓 연결 Open&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_SoAd_00589] &lt;b&gt;소켓 연결을 위한 Open 시도 조건&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;SoAd_MainFunction()에서 SoAd는 다음 기준을 모두 충족하는 각 소켓 연결을 Open하려고 시도합니다.&lt;br /&gt;(1)&amp;nbsp;소켓&amp;nbsp;연결에&amp;nbsp;할당된&amp;nbsp;TcpIp&amp;nbsp;소켓이&amp;nbsp;없습니다.&lt;br /&gt;(2) Open은 (a) 다음 SoAd_CloseSoCon() 호출에 의해 취소되지 않은 이전 SoAd_OpenSoCon() 호출에 의해 명시적으로 요청되거나 (b) SoAdSocketAutomaticSoConSetup이 TRUE일 때 암시적으로 요청됩니다.&lt;br /&gt;(3)&amp;nbsp;원격&amp;nbsp;주소가&amp;nbsp;설정됨(구성에&amp;nbsp;의해&amp;nbsp;지정되거나&amp;nbsp;SoAd_SetRemoteAddr()&amp;nbsp;기능을&amp;nbsp;통해&amp;nbsp;설정됨)&lt;br /&gt;(4) 로컬 IP 주소가 할당됩니다. 즉, SoAd_LocalIpAddrAssignmentChg()가 관련 LocalAddrId 및 TCPIP_IPADDR_STATE_-ASSIGNED를 State로 사용하여 호출됩니다.&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;[SWS_SoAd_00590] &lt;b&gt;TCP 소켓 연결 open 과정&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SoAd는 SoAd_MainFunction() 내에서 다음 작업을 수행하여 단일 소켓 연결을 포함하는 소켓 연결 그룹의 일부인 UDP 소켓 연결을 open합니다.(즉, 소켓 연결 그룹 구성 컨테이너에 하나의 소켓 연결만 있음). 또는 SoAdSocketTcpInitiate가 TRUE로 설정된 TCP 소켓 연결:&lt;br /&gt;(1)&amp;nbsp;TcpIp_DomainType이&amp;nbsp;암시적으로&amp;nbsp;지정된&amp;nbsp;TcpIp_SoAdGetSocket()을&amp;nbsp;호출하여&amp;nbsp;TcpIp에서&amp;nbsp;적절한&amp;nbsp;소켓을&amp;nbsp;가져옵니다.&lt;br /&gt;SoAdSocketLocalAddressRef&amp;nbsp;및&amp;nbsp;SoAdSocketProtocol에&amp;nbsp;의해&amp;nbsp;지정된&amp;nbsp;프로토콜&amp;nbsp;유형.&lt;br /&gt;(2)&amp;nbsp;[SWS_SoAd_00689]에&amp;nbsp;따라&amp;nbsp;소켓&amp;nbsp;특정&amp;nbsp;매개변수를&amp;nbsp;변경합니다.&lt;br /&gt;(3)&amp;nbsp;SoAdSocketLocalAddressRef로&amp;nbsp;지정된&amp;nbsp;로컬&amp;nbsp;주소&amp;nbsp;식별자와&amp;nbsp;SoAdSocketLocalPort로&amp;nbsp;지정된&amp;nbsp;로컬&amp;nbsp;포트로&amp;nbsp;TcpIp_Bind()를&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;(4)&amp;nbsp;TCP&amp;nbsp;소켓의&amp;nbsp;경우&amp;nbsp;TcpIp_TcpConnect()를&amp;nbsp;호출하여&amp;nbsp;TCP&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;[SWS_SoAd_00638] &lt;b&gt;SoAdSocketTcpInitiate가 FALSE로 설정된 TCP 소켓 연결 Open 과정&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SoAd는 SoAd_MainFunction() 내에서 다음 작업을 수행하여 SoAdSocketTcpInitiate가 FALSE로 설정된 TCP 소켓 연결을 엽니다.&lt;br /&gt;(1)&amp;nbsp;소켓&amp;nbsp;연결에&amp;nbsp;Listen-Socket이&amp;nbsp;할당되지&amp;nbsp;않은&amp;nbsp;경우:&lt;br /&gt;&amp;nbsp;(a) SoAdSocketLocalAddressRef에 의해 암시적으로 지정된 TcpIp_DomainType 및 SoAdSocketProtocol에 의해 지정된 프로토콜 유형으로 TcpIp_SoAdGetSocket()을 호출하여 TcpIp에서 적절한 소켓을 가져옵니다.&lt;br /&gt;&amp;nbsp;(b) [SWS_SoAd_00689]에 따라 소켓 특정 매개변수를 변경합니다.&lt;br /&gt;&amp;nbsp;(c) SoAdSocketLocalAddressRef에 의해 지정된 로컬 주소 식별자와 SoAdSocketLocalPort에 의해 지정된 로컬 포트로 TcpIp_Bind()를 호출하여 소켓을 로컬 주소 및 포트에 바인딩합니다.&lt;br /&gt;&amp;nbsp;(d) 소켓 연결 그룹에 Listen-Socket 할당&lt;br /&gt;&amp;nbsp;(e) 소켓 연결을 활성화하여 원격 노드의 연결을 수락합니다.&lt;br /&gt;&amp;nbsp;(f) TCP 소켓 연결 그룹의 일부인 소켓 연결 수로 MaxChannels를 설정하고 TcpIp_TcpListen()을 호출하여 Listen-Socket에서 원격 연결 요청을 수신합니다.&lt;br /&gt;(2)&amp;nbsp;Listen-Socket이&amp;nbsp;소켓&amp;nbsp;연결에&amp;nbsp;이미&amp;nbsp;할당된&amp;nbsp;경우:&lt;br /&gt;&amp;nbsp;(a) 소켓 연결을 활성화하여 원격 노드의 연결을 수락합니다.&lt;br /&gt;&lt;br /&gt;참고: TCP 소켓 연결 그룹(및 SoAdSocketTcpInitiate가 FALSE로 설정됨)의 모든 소켓 연결은 들어오는 연결 요청(&quot;Listen-Socket&quot;)에 대해 하나의 TcpIp 소켓을 공유하지만 TcpIp 모듈에서 생성하고 SoAd_TcpAccepted( ) 연결이 설정된 후 Open&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;[SWS_SoAd_00639] &lt;b&gt;UDP소켓 연결 open 과정&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SoAd는 SoAd_MainFunction() 내에서 다음 작업을 수행하여 여러 소켓 연결을 포함하는 소켓 연결 그룹의 일부인 UDP 소켓 연결을 엽니다.&lt;br /&gt;(1)&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;그룹에&amp;nbsp;UDP&amp;nbsp;소켓이&amp;nbsp;할당되지&amp;nbsp;않은&amp;nbsp;경우: &lt;br /&gt;(a)&amp;nbsp;SoAdSocketLocalAddressRef에&amp;nbsp;의해&amp;nbsp;암시적으로&amp;nbsp;지정된&amp;nbsp;도메인&amp;nbsp;유형과&amp;nbsp;SoAdSocketProtocol에&amp;nbsp;의해&amp;nbsp;지정된&amp;nbsp;프로토콜&amp;nbsp;유형으로&amp;nbsp;TcpIp_SoAdGetSocket()을&amp;nbsp;호출하여&amp;nbsp;TcpIp에서&amp;nbsp;적절한&amp;nbsp;소켓을&amp;nbsp;가져옵니다. &lt;br /&gt;(b)&amp;nbsp;[SWS_SoAd_00689]에&amp;nbsp;따라&amp;nbsp;소켓&amp;nbsp;특정&amp;nbsp;매개변수를&amp;nbsp;변경합니다. &lt;br /&gt;(c)&amp;nbsp;SoAdSocketLocalAddressRef에&amp;nbsp;의해&amp;nbsp;지정된&amp;nbsp;로컬&amp;nbsp;주소&amp;nbsp;식별자와&amp;nbsp;SoAdSocketLocalPort에&amp;nbsp;의해&amp;nbsp;지정된&amp;nbsp;로컬&amp;nbsp;포트로&amp;nbsp;TcpIp_Bind()를&amp;nbsp;호출하여&amp;nbsp;소켓을&amp;nbsp;로컬&amp;nbsp;주소&amp;nbsp;및&amp;nbsp;포트에&amp;nbsp;바인딩합니다. &lt;br /&gt;(d)&amp;nbsp;UDP&amp;nbsp;소켓을&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;그룹에&amp;nbsp;할당합니다. &lt;br /&gt;(e) 소켓&amp;nbsp;연결&amp;nbsp;그룹의&amp;nbsp;공유&amp;nbsp;UDP&amp;nbsp;소켓을&amp;nbsp;통한&amp;nbsp;통신을&amp;nbsp;위해&amp;nbsp;소켓&amp;nbsp;연결을&amp;nbsp;활성화합니다.&lt;br /&gt;(2)&amp;nbsp;UDP&amp;nbsp;소켓이&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;그룹에&amp;nbsp;이미&amp;nbsp;할당된&amp;nbsp;경우: &lt;br /&gt;(a)&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;그룹의&amp;nbsp;공유&amp;nbsp;UDP&amp;nbsp;소켓을&amp;nbsp;통한&amp;nbsp;통신을&amp;nbsp;위해&amp;nbsp;소켓&amp;nbsp;연결을&amp;nbsp;활성화합니다. &lt;br /&gt;&lt;br /&gt;참고:&amp;nbsp;UDP&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;그룹의&amp;nbsp;모든&amp;nbsp;소켓&amp;nbsp;연결은&amp;nbsp;동일한&amp;nbsp;TcpIp&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;[SWS_SoAd_00689]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소켓 관련 매개변수가 새 소켓 할당의 일부로 변경되어야 하는 경우 SoAd는 아래 지정된 각 관련 절에 대해 ParameterId 및 ParameterValue를 사용하여 TcpIp_ChangeParameter()를 호출하여 연결된 소켓 연결의 구성에 따라 매개변수를 변경합니다.&amp;nbsp;&lt;br /&gt;(1) TCP 소켓의 경우: TCPIP_PARAMID_TCP_RXWND_MAX 및 선택적 매개변수가 활성화된 경우 SoAdSocketTpRxBufferMin에 의해 지정된 값&lt;br /&gt;(2)&amp;nbsp;TCPIP_PARAMID_FRAMEPRIO&amp;nbsp;및&amp;nbsp;선택적&amp;nbsp;매개변수가&amp;nbsp;활성화된&amp;nbsp;경우&amp;nbsp;SoAdSocketFramePriority에&amp;nbsp;의해&amp;nbsp;지정된&amp;nbsp;값&lt;br /&gt;(3)&amp;nbsp;TCP&amp;nbsp;소켓의&amp;nbsp;경우:&amp;nbsp;TCPIP_PARAMID_TCP_NAGLE&amp;nbsp;및&amp;nbsp;관련&amp;nbsp;선택적&amp;nbsp;매개변수&amp;nbsp;SoAdSocketTcpNoDelay가&amp;nbsp;FALSE로&amp;nbsp;설정된&amp;nbsp;경우&amp;nbsp;값&amp;nbsp;0x01&amp;nbsp;또는&amp;nbsp;매개변수가&amp;nbsp;TRUE로&amp;nbsp;설정된&amp;nbsp;경우&amp;nbsp;0x00입니다.&lt;br /&gt;(4)&amp;nbsp;TCP&amp;nbsp;소켓의&amp;nbsp;경우:&amp;nbsp;TCPIP_PARAMID_TCP_KEEPALIVE&amp;nbsp;및&amp;nbsp;SoAdSocketTcpKeepAlive에서&amp;nbsp;지정한&amp;nbsp;값&lt;br /&gt;(5)&amp;nbsp;TCP&amp;nbsp;소켓의&amp;nbsp;경우:&amp;nbsp;TCPIP_PARAMID_TCP_KEEPALIVE_TIME&amp;nbsp;및&amp;nbsp;선택적&amp;nbsp;매개변수가&amp;nbsp;활성화된&amp;nbsp;경우&amp;nbsp;SoAdSocketTcpKeepAliveTime에서&amp;nbsp;지정한&amp;nbsp;값&lt;br /&gt;(6)&amp;nbsp;TCP&amp;nbsp;소켓의&amp;nbsp;경우:&amp;nbsp;TCPIP_PARAMID_TCP_KEEPALIVE_PROBES_MAX&amp;nbsp;및&amp;nbsp;선택적&amp;nbsp;매개변수가&amp;nbsp;활성화된&amp;nbsp;경우&amp;nbsp;SoAdSocketTcpKeepAliveProbesMax에&amp;nbsp;의해&amp;nbsp;지정된&amp;nbsp;값&lt;br /&gt;(7) TCP 소켓의 경우: TCPIP_PARAMID_TCP_KEEPALIVE_INTERVAL&amp;nbsp;및&amp;nbsp;선택적&amp;nbsp;매개변수가&amp;nbsp;활성화된&amp;nbsp;경우&amp;nbsp;SoAdSocketTcpKeepAliveInterval에&amp;nbsp;의해&amp;nbsp;지정된&amp;nbsp;값.&lt;br /&gt;(8) TCP 소켓의 경우: TCPIP_PARAMID_TCP_OPTIONFILTER 및 선택적 매개변수가 활성화된 경우&amp;nbsp; SoAdSocketTCPOptionFilterRef에서 참조하는 TcpIpTcpConfigOptionFilter에 지정된 TcpIpTcpConfigOptionFilterId의 값.&lt;br /&gt;(9)&amp;nbsp;TCPIP_PARAMID_PATHMTU_ENABLE&amp;nbsp;및&amp;nbsp;선택적&amp;nbsp;매개변수가&amp;nbsp;활성화된&amp;nbsp;경우&amp;nbsp;oAdSocketPathMTUEnable에&amp;nbsp;의해&amp;nbsp;지정된&amp;nbsp;값.&lt;br /&gt;(10)&amp;nbsp;TCPIP_PARAMID_FLOWLABEL&amp;nbsp;및&amp;nbsp;선택적&amp;nbsp;매개변수가&amp;nbsp;활성화된&amp;nbsp;경우&amp;nbsp;SoAdSocketFlowLabel에&amp;nbsp;의해&amp;nbsp;지정된&amp;nbsp;값.&lt;br /&gt;(11)&amp;nbsp;TCPIP_PARAMID_DSCP&amp;nbsp;및&amp;nbsp;선택적&amp;nbsp;매개변수가&amp;nbsp;활성화된&amp;nbsp;경우&amp;nbsp;SoAdSocketDifferentiatedServicesField에&amp;nbsp;의해&amp;nbsp;지정된&amp;nbsp;값.&lt;br /&gt;(12)&amp;nbsp;UDP&amp;nbsp;소켓의&amp;nbsp;경우:&amp;nbsp;TCPIP_PARAMID_UDP_CHECKSUM&amp;nbsp;및&amp;nbsp;SoAdSocketUDPChecksumEnabled&amp;nbsp;값.&amp;nbsp;()&lt;br /&gt;(13)&amp;nbsp;TCP&amp;nbsp;소켓의&amp;nbsp;경우:&amp;nbsp;SoAdSocketTcpTlsConnectionRef가&amp;nbsp;정의된&amp;nbsp;경우&amp;nbsp;이&amp;nbsp;소켓에&amp;nbsp;TLS&amp;nbsp;연결을&amp;nbsp;할당하기&amp;nbsp;위해&amp;nbsp;매개변수&amp;nbsp;ID&amp;nbsp;TCPIP_PARAMID_TLS_CONNECTION_ASSIGNMENT&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;[SWS_SoAd_00591]&amp;nbsp;SoAd_MainFunction()&amp;nbsp;내에서&amp;nbsp;열기&amp;nbsp;작업을&amp;nbsp;성공적으로&amp;nbsp;수행한&amp;nbsp;후&amp;nbsp;SoAd는&amp;nbsp;UDP&amp;nbsp;소켓의&amp;nbsp;경우&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;상태를&amp;nbsp;SOAD_SOCON_ONLINE으로&amp;nbsp;변경하고&amp;nbsp;SoAdSocketUdpListenOnly가&amp;nbsp;TRUE로&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;[SWS_SoAd_00686]&amp;lceil;&amp;nbsp;SoAd_MainFunction()&amp;nbsp;내에서&amp;nbsp;열기&amp;nbsp;작업을&amp;nbsp;성공적으로&amp;nbsp;수행한&amp;nbsp;후&amp;nbsp;SoAd는&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;경우&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;상태를&amp;nbsp;SOAD_SOCON_RECONNECT로&amp;nbsp;변경합니다.&lt;br /&gt;(1)&amp;nbsp;TCP&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;또는&lt;br /&gt;(2) 와일드카드가 포함된 원격 주소로 구성된 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;[SWS_SoAd_00592] SoAd_RxIndication() 내에서 메시지 데이터를 분석하거나 전달하기 전에 SoAd는 (a) 와일드카드로 지정된 원격 주소 부분(예: TCPIP_IPADDR_ANY로 설정된 원격 IP 주소)을 수신된 메시지의 관련 소스 주소 부분으로 덮어씁니다. (b) 다음 조건이 모두 참인 경우 소켓 연결 상태를 SOAD_SOCON_ONLINE으로 변경합니다.&lt;br /&gt;(1)&amp;nbsp;현재&amp;nbsp;연결&amp;nbsp;상태가&amp;nbsp;SOAD_SOCON_ONLINE이&amp;nbsp;아닙니다.&lt;br /&gt;(2)&amp;nbsp;UDP&amp;nbsp;소켓&lt;br /&gt;(3)&amp;nbsp;SoAdSocketUdpListenOnly가&amp;nbsp;FALSE로&amp;nbsp;설정됩니다.&lt;br /&gt;(4)&amp;nbsp;SoAdSocketMsgAcceptanceFilterEnabled가&amp;nbsp;TRUE로&amp;nbsp;설정됨&lt;br /&gt;(5)&amp;nbsp;원격&amp;nbsp;주소가&amp;nbsp;설정되었지만&amp;nbsp;와일드카드가&amp;nbsp;포함되어&amp;nbsp;있습니다.&lt;br /&gt;(6)&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;[SWS_SoAd_00593]&amp;lceil;&amp;nbsp;SoAd_TcpConnected()&amp;nbsp;내에서&amp;nbsp;SoAd는&amp;nbsp;다음&amp;nbsp;조건이&amp;nbsp;모두&amp;nbsp;참인&amp;nbsp;경우&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;상태를&amp;nbsp;SOAD_SOCON_ONLINE으로&amp;nbsp;변경합니다.&lt;br /&gt;(1)&amp;nbsp;현재&amp;nbsp;연결&amp;nbsp;상태가&amp;nbsp;SOAD_SOCON_ONLINE이&amp;nbsp;아닙니다.&lt;br /&gt;(2)&amp;nbsp;TCP&amp;nbsp;소켓&lt;br /&gt;(3)&amp;nbsp;SoAdSocketTcpInitiate가&amp;nbsp;TRUE로&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;[SWS_SoAd_00594] SoAd_TcpAccepted()에서 SocketId와 관련된 TCP SoAdSocketConnectionGroup의 SoAdSocketTcpInitiate가 FALSE로 설정된 경우 SoAd는 다음 작업을 수행합니다.&lt;br /&gt;(1)&amp;nbsp;최상의&amp;nbsp;일치&amp;nbsp;알고리즘([SWS_SoAd_00680]&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;E_NOT_OK로&amp;nbsp;반환합니다.&lt;br /&gt;(2)&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;TCPIP_IPADDR_ANY로&amp;nbsp;설정된&amp;nbsp;원격&amp;nbsp;IP&amp;nbsp;주소)을&amp;nbsp;수신된&amp;nbsp;메시지의&amp;nbsp;관련&amp;nbsp;소스&amp;nbsp;주소&amp;nbsp;부분으로&amp;nbsp;덮어씁니다.&lt;br /&gt;(3)&amp;nbsp;설정된&amp;nbsp;연결에&amp;nbsp;사용되며&amp;nbsp;SocketIdConnected&amp;nbsp;매개변수로&amp;nbsp;제공된&amp;nbsp;TcpIp&amp;nbsp;소켓을&amp;nbsp;선택한&amp;nbsp;소켓&amp;nbsp;연결에&amp;nbsp;할당합니다.&lt;br /&gt;(4)&amp;nbsp;이&amp;nbsp;소켓&amp;nbsp;연결의&amp;nbsp;상태를&amp;nbsp;SOAD_SOCON_ONLINE으로&amp;nbsp;변경하고&amp;nbsp;E_OK를&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;[SWS_SoAd_00636] SoAd_TcpAccepted()에서 SocketId와 관련된 TCP SoAdSocketConnectionGroup이 SoAdSocketTcpInitiate와 SoAdSocketMsgAcceptanceFilterEnabled가 모두 FALSE로 설정되어 있고 온라인이 아닌 경우(즉, 현재 연결 상태가 SOAD_SOCON_ON이 아닌 경우) SoAd는 다음 작업을 수행합니다.&lt;br /&gt;(1)&amp;nbsp;설정된&amp;nbsp;연결에&amp;nbsp;사용되며&amp;nbsp;SocketIdConnected&amp;nbsp;매개변수로&amp;nbsp;제공된&amp;nbsp;TcpIp&amp;nbsp;소켓을&amp;nbsp;소켓&amp;nbsp;연결에&amp;nbsp;할당하고&lt;br /&gt;(2)&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;상태를&amp;nbsp;SOAD_SOCON_ONLINE으로&amp;nbsp;변경하고&amp;nbsp;E_OK를&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;[SWS_SoAd_00595]&amp;lceil;&amp;nbsp;PDU&amp;nbsp;헤더&amp;nbsp;모드가&amp;nbsp;비활성화된&amp;nbsp;소켓&amp;nbsp;연결(SoAdPduHeaderEnable&amp;nbsp;=&amp;nbsp;FALSE)&amp;nbsp;및&amp;nbsp;TP-API가&amp;nbsp;있는&amp;nbsp;상위&amp;nbsp;계층의&amp;nbsp;경우&amp;nbsp;SoAd는&amp;nbsp;종료&amp;nbsp;시&amp;nbsp;TpSduLength&amp;nbsp;=&amp;nbsp;0인&amp;nbsp;&amp;lt;Up&amp;gt;_[SoAd][Tp]StartOfReception()을&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 소켓 연결 Close&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_SoAd_00604]&amp;lceil;&amp;nbsp;SoAd_MainFunction()에서&amp;nbsp;SoAd는&amp;nbsp;다음&amp;nbsp;기준을&amp;nbsp;모두&amp;nbsp;충족하는&amp;nbsp;각&amp;nbsp;소켓&amp;nbsp;연결을&amp;nbsp;닫습니다.&lt;br /&gt;(1)&amp;nbsp;현재&amp;nbsp;연결&amp;nbsp;상태가&amp;nbsp;SOAD_SOCON_OFFLINE이&amp;nbsp;아닙니다.&lt;br /&gt;(2)&amp;nbsp;이전&amp;nbsp;SoAd_CloseSoCon()&amp;nbsp;호출에&amp;nbsp;의해&amp;nbsp;닫기가&amp;nbsp;명시적으로&amp;nbsp;요청됨&lt;br /&gt;(3)&amp;nbsp;SoAd_CloseSoCon()&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;SoAd_OpenSoCon()만큼&amp;nbsp;자주&amp;nbsp;SoAd_CloseSoCon()가&amp;nbsp;호출됨)&amp;nbsp;또는&amp;nbsp;중단이&amp;nbsp;TRUE로&amp;nbsp;설정된&amp;nbsp;SoAd_CloseSoCon()이&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;[SWS_SoAd_00637]&amp;lceil;&amp;nbsp;SoAd는&amp;nbsp;SoAd_MainFunction()&amp;nbsp;내에서&amp;nbsp;다음&amp;nbsp;작업을&amp;nbsp;수행하여&amp;nbsp;소켓&amp;nbsp;연결을&amp;nbsp;닫습니다.&lt;br /&gt;(1)&amp;nbsp;활성&amp;nbsp;TP&amp;nbsp;세션을&amp;nbsp;종료하고(있는&amp;nbsp;경우)&amp;nbsp;상위&amp;nbsp;계층에&amp;nbsp;종료에&amp;nbsp;대해&amp;nbsp;알립니다.&lt;br /&gt;(2)&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;E_NOT_OK로&amp;nbsp;거부되고&amp;nbsp;수신된&amp;nbsp;메시지는&amp;nbsp;단순히&amp;nbsp;폐기됩니다.&lt;br /&gt;(3)&amp;nbsp;관련&amp;nbsp;TcpIp&amp;nbsp;소켓&amp;nbsp;닫기&lt;br /&gt;(4)&amp;nbsp;SoAd_CloseSoCon()&amp;nbsp;요청으로&amp;nbsp;인해&amp;nbsp;소켓&amp;nbsp;연결이&amp;nbsp;닫히면&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;상태를&amp;nbsp;SOAD_SOCON_OFFLINE으로&amp;nbsp;변경하고&amp;nbsp;그렇지&amp;nbsp;않으면&amp;nbsp;SOAD_SOCON_RECONNECT로&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;[SWS_SoAd_00640]&amp;lceil;&amp;nbsp;SoAd_MainFunction()&amp;nbsp;내에서&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;종료&amp;nbsp;시&amp;nbsp;활성&amp;nbsp;TP&amp;nbsp;전송&amp;nbsp;종료를&amp;nbsp;상위&amp;nbsp;계층에&amp;nbsp;알리기&amp;nbsp;위해&amp;nbsp;SoAd는&amp;nbsp;&amp;lt;Up&amp;gt;_[SoAd][Tp]TxConfirmation()&amp;nbsp;매개변수&amp;nbsp;결과를&amp;nbsp;설정하여&amp;nbsp;호출해야&amp;nbsp;합니다.&lt;br /&gt;(1)&amp;nbsp;SoAd_CloseSoCon()에&amp;nbsp;의해&amp;nbsp;연결&amp;nbsp;끊김이&amp;nbsp;발생하고&amp;nbsp;모든&amp;nbsp;데이터가&amp;nbsp;올바르게&amp;nbsp;전송된&amp;nbsp;경우&amp;nbsp;E_OK&lt;br /&gt;(2)&amp;nbsp;다른&amp;nbsp;이유로&amp;nbsp;E_NOT_OK.&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00641]&amp;lceil;&amp;nbsp;SoAd_MainFunction()&amp;nbsp;내에서&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;종료&amp;nbsp;시&amp;nbsp;활성&amp;nbsp;TP&amp;nbsp;수신&amp;nbsp;종료를&amp;nbsp;상위&amp;nbsp;계층에&amp;nbsp;알리기&amp;nbsp;위해&amp;nbsp;SoAd는&amp;nbsp;&amp;lt;Up&amp;gt;_[SoAd][Tp]RxIndication()을&amp;nbsp;호출하고&amp;nbsp;매개변수&amp;nbsp;결과를&amp;nbsp;다음으로&amp;nbsp;설정합니다.&lt;br /&gt;(1)&amp;nbsp;SoAd_CloseSoCon()에&amp;nbsp;의해&amp;nbsp;연결이&amp;nbsp;끊어지고&amp;nbsp;수신된&amp;nbsp;모든&amp;nbsp;데이터가&amp;nbsp;상위&amp;nbsp;계층으로&amp;nbsp;올바르게&amp;nbsp;전달된&amp;nbsp;경우&amp;nbsp;E_OK,&lt;br /&gt;(2)&amp;nbsp;다른&amp;nbsp;이유로&amp;nbsp;E_NOT_OK.&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;[SWS_SoAd_00642] SoAd_MainFunction() 내에서 소켓 연결을 닫을 때 관련 TcpIp 소켓을 닫기 위해 SoAd는 다음 작업을 수행합니다.&lt;br /&gt;(1)&amp;nbsp;TCP&amp;nbsp;소켓&amp;nbsp;연결의&amp;nbsp;경우:&lt;br /&gt;(a)&amp;nbsp;매개변수&amp;nbsp;abort를&amp;nbsp;SoAd_CloseSoCon()에서&amp;nbsp;제공한&amp;nbsp;것과&amp;nbsp;동일한&amp;nbsp;값으로&amp;nbsp;설정하거나&amp;nbsp;SoAd_CloseSoCon()에서&amp;nbsp;닫기가&amp;nbsp;시작되지&amp;nbsp;않은&amp;nbsp;경우&amp;nbsp;FALSE로&amp;nbsp;설정하여&amp;nbsp;TcpIp_CloseSocket()을&amp;nbsp;호출하여&amp;nbsp;관련&amp;nbsp;소켓을&amp;nbsp;닫습니다.&lt;br /&gt;(b)&amp;nbsp;TCP&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;그룹의&amp;nbsp;모든&amp;nbsp;소켓&amp;nbsp;연결이&amp;nbsp;SoAd_CloseSoCon()에&amp;nbsp;의해&amp;nbsp;닫힌&amp;nbsp;경우:&amp;nbsp;매개변수&amp;nbsp;abort를&amp;nbsp;SoAd_CloseSoCon()에서&amp;nbsp;제공한&amp;nbsp;것과&amp;nbsp;동일한&amp;nbsp;값으로&amp;nbsp;설정하거나&amp;nbsp;FALSE로&amp;nbsp;설정하여&amp;nbsp;TcpIp_CloseSocket()을&amp;nbsp;호출하여&amp;nbsp;관련&amp;nbsp;Listen-Socket을&amp;nbsp;닫습니다.&amp;nbsp;닫기가&amp;nbsp;SoAd_CloseSoCon()에&amp;nbsp;의해&amp;nbsp;시작되지&amp;nbsp;않은&amp;nbsp;경우.&lt;br /&gt;(2)&amp;nbsp;UDP&amp;nbsp;소켓&amp;nbsp;연결의&amp;nbsp;경우:&lt;br /&gt;(a)&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;abort&amp;nbsp;매개변수를&amp;nbsp;다음과&amp;nbsp;동일한&amp;nbsp;값으로&amp;nbsp;설정하고&amp;nbsp;TcpIp_CloseSocket()을&amp;nbsp;호출하여&amp;nbsp;관련&amp;nbsp;소켓을&amp;nbsp;닫습니다.&amp;nbsp;SoAd_CloseSoCon()에&amp;nbsp;의해&amp;nbsp;제공되거나&amp;nbsp;SoAd_CloseSoCon()에&amp;nbsp;의해&amp;nbsp;닫기가&amp;nbsp;시작되지&amp;nbsp;않은&amp;nbsp;경우&amp;nbsp;FALSE로&amp;nbsp;설정됩니다.&lt;br /&gt;(b) UDP 소켓 연결 그룹의 모든 소켓 연결이 SoAd_CloseSoCon()에 의해 닫힌 경우: 매개변수 abort를 SoAd_CloseSoCon()에서 제공한 것과 동일한 값으로 설정하거나 FALSE로 설정하여 TcpIp_CloseSocket()을 호출하여 관련 UDP 소켓을 닫습니다. 케이스 닫기가 SoAd_CloseSoCon()에 의해 시작되지 않았습니다.&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;[SWS_SoAd_00643] 이벤트가 TCPIP_UDP_CLOSED로 설정된 SoAd_TcpIpEvent() 내에서 SoAd는&lt;br /&gt;(1)&amp;nbsp;관련&amp;nbsp;UDP&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;그룹에서&amp;nbsp;SocketId로&amp;nbsp;식별되는&amp;nbsp;TcpIp&amp;nbsp;소켓&amp;nbsp;할당을&amp;nbsp;제거하고&lt;br /&gt;(2)&amp;nbsp;SOAD_SOCON_ONLINE에&amp;nbsp;있는&amp;nbsp;관련&amp;nbsp;소켓&amp;nbsp;연결&amp;nbsp;그룹의&amp;nbsp;모든&amp;nbsp;소켓&amp;nbsp;연결을&amp;nbsp;닫습니다(즉,&amp;nbsp;관련&amp;nbsp;TcpIp&amp;nbsp;소켓&amp;nbsp;닫기를&amp;nbsp;제외하고&amp;nbsp;지정된&amp;nbsp;닫기&amp;nbsp;작업&amp;nbsp;수행)&amp;rfloor;()&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00645] 이벤트가 Listen-Socket에 대해 TCPIP_TCP_CLOSED로 설정된 SoAd_TcpIpEvent() 내에서 SoAd는 관련 TCP 소켓 연결 그룹에서 SocketId로 식별되는 TcpIp 소켓 할당을 제거해야 합니다.&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00646] 이벤트가 TCPIP_TCP_CLOSED 또는 TCPIP_TCP_RESET으로 설정된 SoAd_TcpIpEvent() 내에서 SoAd는&lt;br /&gt;(1)&amp;nbsp;관련&amp;nbsp;소켓&amp;nbsp;연결에서&amp;nbsp;SocketId로&amp;nbsp;식별되는&amp;nbsp;TcpIp&amp;nbsp;소켓&amp;nbsp;할당을&amp;nbsp;제거하고&lt;br /&gt;(2) SOAD_SOCON_ONLINE에 있는 경우 소켓 연결을 닫습니다(즉, 관련 TcpIp 소켓 닫기를 제외하고 지정된 닫기 작업 수행).&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00688] 이벤트가 TCPIP_TCP_FIN_RECEIVED로 설정된 SoAd_TcpIpEvent() 내에서 SoAd는 중단 매개변수가 FALSE로 설정된 TcpIp_Close()를 호출하여 관련 소켓을 닫습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 소켓 연결 Open/Close 시퀀스&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;Scenario&amp;nbsp;1: &lt;br /&gt;1:&amp;nbsp;Open &lt;br /&gt;2:&amp;nbsp;Main&amp;nbsp;-&amp;nbsp;ONLINE &lt;br /&gt;3:&amp;nbsp;Close &lt;br /&gt;4:&amp;nbsp;Open &lt;br /&gt;5:&amp;nbsp;Main&amp;nbsp;-&amp;nbsp;OFFLINE &lt;br /&gt;6:&amp;nbsp;Main&amp;nbsp;-&amp;nbsp;ONLINE&lt;br /&gt;설명:&amp;nbsp;닫기&amp;nbsp;요청(3)이&amp;nbsp;실행된&amp;nbsp;후&amp;nbsp;열기&amp;nbsp;요청(4)이&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;요청(4)은&amp;nbsp;닫기&amp;nbsp;요청(3)을&amp;nbsp;취소하지&amp;nbsp;않습니다.&lt;br /&gt;&lt;br /&gt;Scenario&amp;nbsp;2: &lt;br /&gt;1:&amp;nbsp;Open &lt;br /&gt;2:&amp;nbsp;Main&amp;nbsp;-&amp;nbsp;ONLINE &lt;br /&gt;3:&amp;nbsp;Close &lt;br /&gt;4:&amp;nbsp;Open &lt;br /&gt;5:&amp;nbsp;Close &lt;br /&gt;6:&amp;nbsp;Open &lt;br /&gt;7:&amp;nbsp;Close &lt;br /&gt;8:&amp;nbsp;Main&amp;nbsp;-&amp;nbsp;OFFLINE &lt;br /&gt;9:&amp;nbsp;Main,&amp;nbsp;no&amp;nbsp;change&lt;br /&gt;주석:&amp;nbsp;닫기&amp;nbsp;요청(5)은&amp;nbsp;열기&amp;nbsp;요청(4)&amp;nbsp;및&amp;nbsp;(7)&amp;nbsp;취소(6)를&amp;nbsp;취소합니다.&lt;br /&gt;합리적:&amp;nbsp;상위&amp;nbsp;계층이&amp;nbsp;활성화되기&amp;nbsp;전에&amp;nbsp;취소했으므로&amp;nbsp;통신&amp;nbsp;세션이&amp;nbsp;필요하지&amp;nbsp;않습니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 알림&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[SWS_SoAd_00597]SoAd는 소켓 연결 상태가 변경될 때마다 구성된 상위 계층 알림 함수 &amp;lt;Up&amp;gt;_SoConModeChg()와 소켓에 대해 SoAdSocketSoConModeChgNotification이 TRUE로 설정된 경우 새로운 상태를 통해 소켓 연결 상태 변경을 상위 계층에 알려야 합니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00741]소켓 연결 상태가 변경될 때마다 SoAd는 SoAdSocketSoConModeChgNotifUpperLayerRef에 의해 지정된 상위 레이어에 구성된 상위 레이어 알림 기능 &amp;lt;Up&amp;gt;_SoConModeChg()과 소켓 연결에 대한 선택적 참조가 설정된 경우 새로운 상태를 알려야 합니다.(SRS_Eth_00058)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[SWS_SoAd_00598]SoAd는 소켓 연결과 관련된 IP 주소 할당이 변경될 때마다 구성된 상위 계층 알림 기능 &amp;lt;Up&amp;gt;_LocalIpAddrAssignmentChg() 및 SoAdSocketIpAddrAssignmentChgNotification이 다음과 같을 경우 새 주소 상태를 통해 상위 계층에 IP 주소 할당 변경을 알려야 합니다. 소켓 연결에 대해 TRUE로 설정합니다.&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic&amp;nbsp;AUTOSAR]</category>
      <category>Socket Connections</category>
      <category>Socket&amp;nbsp;Adaptor(SoAd)</category>
      <category>기능 사양</category>
      <category>오토사</category>
      <category>클래식 오토사</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/594</guid>
      <comments>https://zidarn87.tistory.com/594#entry594comment</comments>
      <pubDate>Sun, 4 Sep 2022 19:23:45 +0900</pubDate>
    </item>
    <item>
      <title>[Classic AUTOSAR] Socket Adaptor(SoAd) 1. 소개 및 기능 개요</title>
      <link>https://zidarn87.tistory.com/593</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Classic&amp;nbsp;AUTOSAR]&amp;nbsp;Socket&amp;nbsp;Adaptor(SoAd)&amp;nbsp;1.&amp;nbsp;소개&amp;nbsp;및&amp;nbsp;기능&amp;nbsp;개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 : &lt;a href=&quot;https://www.autosar.org/fileadmin/user_upload/standards/classic/20-11/AUTOSAR_SWS_SocketAdaptor.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.autosar.org/fileadmin/user_upload/standards/classic/20-11/AUTOSAR_SWS_SocketAdaptor.pdf&lt;/a&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;AUTOSAR 기본 소프트웨어 모듈 소켓 어댑터(SoAd)의 기능, API 및 구성을 알아보겠습니다.&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;928&quot; data-origin-height=&quot;599&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bM1laN/btrzRnN1oMu/KMIaNFg3RbEutCRuflY8ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bM1laN/btrzRnN1oMu/KMIaNFg3RbEutCRuflY8ik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bM1laN/btrzRnN1oMu/KMIaNFg3RbEutCRuflY8ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbM1laN%2FbtrzRnN1oMu%2FKMIaNFg3RbEutCRuflY8ik%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;928&quot; height=&quot;599&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;599&quot;/&gt;&lt;/span&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;이더넷을 물리 계층으로 사용하는 데이터 전송의 TCP/IP 개념은 컴퓨팅 및 통신 환경에서 사실상의 표준으로 확립되었습니다. 응용 프로그램의 주소 지정, end points의 논리적 주소 지정 및 물리적 주소 지정은 모두 계층화된 프로토콜 및 번호 할당 제품군에서 다룹니다. 동적 구성 및 라우팅은 여기에서 구현된 개념의 핵심입니다.&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;AUTOSAR는 컴파일 타임에 미리 결정되고, 런타임 동안 고정된 정적 통신 관계의 개념을 따릅니다. 전송된 데이터는 데이터가 이동해야 하는 소스 및 싱크만큼 미리 결정된 것으로 간주됩니다. 소켓 어댑터 모듈(SoAd)은 이 두 개념 간의 격차를 해소하는 것을 목표로 합니다. AUTOSAR에 필요한 정보를 포함하는 사전 결정된 구성을 설정하고 런타임 동안 업데이트되도록 일부 항목을 열어 두어 상충되는 개념을 활용합니다. 또한 SoAd는 TCP/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;&lt;b&gt;SoAd&amp;nbsp;모듈의&amp;nbsp;주요&amp;nbsp;목적은&amp;nbsp;PDU(예:&amp;nbsp;PDU&amp;nbsp;라우터)를&amp;nbsp;사용하는&amp;nbsp;AUTOSAR&amp;nbsp;통신&amp;nbsp;서비스&amp;nbsp;모듈과&amp;nbsp;소켓&amp;nbsp;기반&amp;nbsp;TCP/IP&amp;nbsp;스택&amp;nbsp;간의&amp;nbsp;인터페이스를&amp;nbsp;생성하는&amp;nbsp;것입니다.&lt;/b&gt; I-PDU ID를 소켓 연결에 매핑하거나 그 반대로 매핑합니다. TCP/IP 프로토콜 스택은 그림 1과 같이 TcpIp SWS에 지정됩니다. TCP/IP 스택의 내부 기능 구조는 정보 제공을 위해 개략적으로 표시됩니다. SoAd 모듈 및 이에 따른 이더넷 통신 스택은 AUTOSAR R4.0.1에서 처음 도입되었으며 AUTOSAR R4.0과 AUTOSAR R4.1.1 사이에 몇 가지 주요 개념적 변경 사항이 적용되었습니다.&lt;/p&gt;</description>
      <category>AutoSar/Classic AUTOSAR</category>
      <category>Classic Autosar</category>
      <category>SoAd</category>
      <category>[Classic AUTOSAR] Socket Adaptor(SoAd) 1. 소개 및 기능 개요</category>
      <category>클래식 오토사</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/593</guid>
      <comments>https://zidarn87.tistory.com/593#entry593comment</comments>
      <pubDate>Wed, 20 Apr 2022 00:57:11 +0900</pubDate>
    </item>
    <item>
      <title>[리눅스 기반 브릿지] 3. 브리지 및 라우터로 사용되는  machine</title>
      <link>https://zidarn87.tistory.com/592</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[리눅스&amp;nbsp;기반&amp;nbsp;브릿지]&amp;nbsp;3.&amp;nbsp;브리지&amp;nbsp;및&amp;nbsp;라우터로&amp;nbsp;사용되는&amp;nbsp;&amp;nbsp;machine&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 : &lt;a href=&quot;https://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section3&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1650381982004&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;ebtables/iptables interaction on a Linux-based bridge&quot; data-og-description=&quot;ebtables/iptables interaction on a Linux-based bridge 1. Introduction This document describes how iptables and ebtables filtering tables interact on a Linux-based bridge. Getting a bridging firewall on a 2.4.x kernel consists of patching the kernel source &quot; data-og-host=&quot;ebtables.netfilter.org&quot; data-og-source-url=&quot;https://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section3&quot; data-og-url=&quot;https://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section3&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section3&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;ebtables/iptables interaction on a Linux-based bridge&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;ebtables/iptables interaction on a Linux-based bridge 1. Introduction This document describes how iptables and ebtables filtering tables interact on a Linux-based bridge. Getting a bridging firewall on a 2.4.x kernel consists of patching the kernel source&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ebtables.netfilter.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IP 코드가 통과되는 부분입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;513&quot; data-origin-height=&quot;231&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coemO1/btrzRWCzvrx/yORsUPkmxWEoRQoV800WSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coemO1/btrzRWCzvrx/yORsUPkmxWEoRQoV800WSk/img.png&quot; data-alt=&quot;그림 3a. IP 코드 관문&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coemO1/btrzRWCzvrx/yORsUPkmxWEoRQoV800WSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoemO1%2FbtrzRWCzvrx%2FyORsUPkmxWEoRQoV800WSk%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;513&quot; height=&quot;231&quot; data-origin-width=&quot;513&quot; data-origin-height=&quot;231&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 3a. IP 코드 관문&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은&amp;nbsp;iptables&amp;nbsp;패킷&amp;nbsp;탐색&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;776&quot; data-origin-height=&quot;298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBc4q5/btrzQn2ejQX/RleQPIkRR0JOjCHMLfPGNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBc4q5/btrzQn2ejQX/RleQPIkRR0JOjCHMLfPGNK/img.png&quot; data-alt=&quot;그림 3b. 라우팅 테이블(iptables) 탐색 프로세스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBc4q5/btrzQn2ejQX/RleQPIkRR0JOjCHMLfPGNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBc4q5%2FbtrzQn2ejQX%2FRleQPIkRR0JOjCHMLfPGNK%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;776&quot; height=&quot;298&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;298&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 3b. 라우팅 테이블(iptables) 탐색 프로세스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iptables NAT OUTPUT 체인은 라우팅 결정 후에 위치합니다. 이 부분은&amp;nbsp; DNAT에 대해 너무 늦습니다. IP 패킷이 DNAT된 경우 경로를 다시 지정하여 해결됩니다. 이것은 Linux 커널의 표준 동작입니다.&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;3a와&amp;nbsp;3b는&amp;nbsp;iptables&amp;nbsp;체인이&amp;nbsp;IP&amp;nbsp;후크에&amp;nbsp;연결된&amp;nbsp;위치를&amp;nbsp;명확하게&amp;nbsp;보여줍니다.&amp;nbsp;브릿지&amp;nbsp;코드와&amp;nbsp;netfilter가&amp;nbsp;커널에서&amp;nbsp;활성화되면&amp;nbsp;iptables&amp;nbsp;체인도&amp;nbsp;브리징&amp;nbsp;코드의&amp;nbsp;후크에&amp;nbsp;연결됩니다.&amp;nbsp;그러나&amp;nbsp;이것이&amp;nbsp;더&amp;nbsp;이상&amp;nbsp;표준&amp;nbsp;IP&amp;nbsp;코드&amp;nbsp;후크에&amp;nbsp;연결되지&amp;nbsp;않는다는&amp;nbsp;의미는&amp;nbsp;아닙니다.&amp;nbsp;브리징&amp;nbsp;코드와&amp;nbsp;접촉하는&amp;nbsp;IP&amp;nbsp;패킷의&amp;nbsp;경우&amp;nbsp;br-nf&amp;nbsp;코드는&amp;nbsp;iptables&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;3b와&amp;nbsp;같이&amp;nbsp;표준&amp;nbsp;방식으로&amp;nbsp;iptables&amp;nbsp;체인을&amp;nbsp;통과합니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단일 IP 패킷/프레임이 NAT PREROUTING, FILTER INPUT, NAT OUTPUT, FILTER OUTPUT 및 NAT POSTROUTING ebtables 체인을 통과하는 것을 볼 수 있습니다.&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;이것은 브리지가 라우터로도 사용될 때 발생할 수 있습니다. 해당 IP 패킷을 포함하는 이더넷 프레임은 브리지의 대상 MAC 주소를 가지지만 목적지 IP 주소는 브리지의 주소가 아닙니다. iptables 체인을 포함하여 다음은 IP 패킷이 브리지/라우터를 통해 실행되는 방식입니다.&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;719&quot; data-origin-height=&quot;212&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ypsT4/btrzQHGaXCU/RH4T2y1QNxBXernPpHJZN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ypsT4/btrzQHGaXCU/RH4T2y1QNxBXernPpHJZN1/img.png&quot; data-alt=&quot;그림 3. 브리지/라우터는 패킷을 브리지 인터페이스로 라우팅함&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ypsT4/btrzQHGaXCU/RH4T2y1QNxBXernPpHJZN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FypsT4%2FbtrzQHGaXCU%2FRH4T2y1QNxBXernPpHJZN1%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;719&quot; height=&quot;212&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;212&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;이것은 라우팅 결정이 패킷을 브리지 인터페이스로 보낸다고 가정합니다. 라우팅 결정이 패킷을 브릿지가 아닌 인터페이스로 보내는 경우 다음과 같은 현상이 발생합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;193&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k7ciI/btrzRsIbtXB/9ojBJmWZqk9NYyF0GuEk3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k7ciI/btrzRsIbtXB/9ojBJmWZqk9NYyF0GuEk3K/img.png&quot; data-alt=&quot;그림 3d. 브리지/라우터는 패킷을 브리지가 아닌 인터페이스로 라우팅&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k7ciI/btrzRsIbtXB/9ojBJmWZqk9NYyF0GuEk3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk7ciI%2FbtrzRsIbtXB%2F9ojBJmWZqk9NYyF0GuEk3K%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;644&quot; height=&quot;193&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;193&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 3d. 브리지/라우터는 패킷을 브리지가 아닌 인터페이스로 라우팅&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그림 3c와 3d는 IP 패킷이 브리지 포트에 도착했다고 가정합니다. 여기에서 분명히 &quot;비대칭&quot;인 것은 iptables PREROUTING 체인이 ebtables INPUT 체인보다 먼저 탐색되지만 기능을 희생하지 않고는 도움이 될 수 없다는 것입니다.&amp;nbsp;&lt;/p&gt;</description>
      <category>네트워크 Study</category>
      <category>ebtables</category>
      <category>iptables</category>
      <category>[리눅스 기반 브릿지] 3. 브리지 및 라우터로 사용되는 machine</category>
      <category>라우터</category>
      <category>브릿지</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/592</guid>
      <comments>https://zidarn87.tistory.com/592#entry592comment</comments>
      <pubDate>Wed, 20 Apr 2022 00:43:06 +0900</pubDate>
    </item>
    <item>
      <title>[리눅스 기반 브릿지] 2. 이더넷 프레임이 ebtables 체인을 통과하는 방법</title>
      <link>https://zidarn87.tistory.com/591</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[리눅스&amp;nbsp;기반&amp;nbsp;브릿지]&amp;nbsp;2.&amp;nbsp;이더넷&amp;nbsp;프레임이&amp;nbsp;ebtables&amp;nbsp;체인을&amp;nbsp;통과하는&amp;nbsp;방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 : &lt;a href=&quot;http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section2&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1650298115947&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;ebtables/iptables interaction on a Linux-based bridge&quot; data-og-description=&quot;ebtables/iptables interaction on a Linux-based bridge 1. Introduction This document describes how iptables and ebtables filtering tables interact on a Linux-based bridge. Getting a bridging firewall on a 2.4.x kernel consists of patching the kernel source &quot; data-og-host=&quot;ebtables.netfilter.org&quot; data-og-source-url=&quot;http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section2&quot; data-og-url=&quot;http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section2&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bYKqVo/hyN5xuFqPC/P1p1iSV68xY4xY9gKsR4r1/img.png?width=776&amp;amp;height=298&amp;amp;face=0_0_776_298,https://scrap.kakaocdn.net/dn/FmBMV/hyN5IwbWqn/3zYUr2U4huZ6XaSk9cFdh1/img.png?width=663&amp;amp;height=239&amp;amp;face=0_0_663_239,https://scrap.kakaocdn.net/dn/ds5gM0/hyN5HD3vdv/CSzZTt56LatrvTQKBraAVk/img.png?width=513&amp;amp;height=231&amp;amp;face=0_0_513_231&quot;&gt;&lt;a href=&quot;http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section2&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bYKqVo/hyN5xuFqPC/P1p1iSV68xY4xY9gKsR4r1/img.png?width=776&amp;amp;height=298&amp;amp;face=0_0_776_298,https://scrap.kakaocdn.net/dn/FmBMV/hyN5IwbWqn/3zYUr2U4huZ6XaSk9cFdh1/img.png?width=663&amp;amp;height=239&amp;amp;face=0_0_663_239,https://scrap.kakaocdn.net/dn/ds5gM0/hyN5HD3vdv/CSzZTt56LatrvTQKBraAVk/img.png?width=513&amp;amp;height=231&amp;amp;face=0_0_513_231');&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;ebtables/iptables interaction on a Linux-based bridge&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;ebtables/iptables interaction on a Linux-based bridge 1. Introduction This document describes how iptables and ebtables filtering tables interact on a Linux-based bridge. Getting a bridging firewall on a 2.4.x kernel consists of patching the kernel source&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ebtables.netfilter.org&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;ebtables는 TCP/IP 네트워크 모델에 의한 OSI 계층 2(데이터 링크 계층) 또는 계층 1(링크 계층, 네트워크 액세스 계층)에 에서 동작합니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이더넷 계층에서 작동하는 브리지에 따라 로컬 컴퓨터로 향하는 패킷이 반드시 IP 레이어에 따라 로컬 컴퓨터로 향하는 것은 아닙니다. 이것은 라우팅이 작동하는 방식입니다(MAC 대상은 라우터이고 IP 대상은 통신하려는 실제 대상자입니다).&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;153&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNS8dn/btrzLGM4jfX/u36B9YtK17W8Cm1g8Znge0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNS8dn/btrzLGM4jfX/u36B9YtK17W8Cm1g8Znge0/img.png&quot; data-alt=&quot;그림 2a. 일반 프레임 통과 방식&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNS8dn/btrzLGM4jfX/u36B9YtK17W8Cm1g8Znge0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNS8dn%2FbtrzLGM4jfX%2Fu36B9YtK17W8Cm1g8Znge0%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;512&quot; height=&quot;153&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;153&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 2a. 일반 프레임 통과 방식&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;Linux 브리징 코드에는 6개의 관문이 정의되어 있으며, 그 중 ebtables용으로 BROUTING 관문이 추가되었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/da09X2/btrzIos7fcQ/odV3U9e0SvAa5Zoq2M5Ny1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/da09X2/btrzIos7fcQ/odV3U9e0SvAa5Zoq2M5Ny1/img.png&quot; data-alt=&quot;그림 2b. 이더넷 브리징 관문&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/da09X2/btrzIos7fcQ/odV3U9e0SvAa5Zoq2M5Ny1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fda09X2%2FbtrzIos7fcQ%2FodV3U9e0SvAa5Zoq2M5Ny1%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;645&quot; height=&quot;266&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;266&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 2b. 이더넷 브리징 관문&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관문은 소프트웨어가 해당 위치를 통과하는 패킷/프레임을 처리하기 위해 자체적으로 연결할 수 있는 네트워크 코드의 특정 위치를 말합니다. 예를 들어, ebtables FORWARD 체인을 담당하는 커널 모듈은 브리지 FORWARD 관문에 연결됩니다. 이것은 모듈이 커널에 로드되거나 부팅될 때 수행됩니다.&lt;br /&gt;&lt;br /&gt;ebtables BROUTING 및 PREROUTING 체인은 브리징 결정 전에 통과하므로 이러한 체인은 브리지에서 무시할 프레임도 볼 수 있습니다. 이 체인을 사용할 때 이를 고려해야 합니다. 또한 체인은 전달되지 않는 브리지 포트로 들어오는 프레임을 볼 수 없습니다.&lt;br /&gt;프레임에&amp;nbsp;대한&amp;nbsp;브리지의&amp;nbsp;결정(그림&amp;nbsp;2b&amp;nbsp;참조)은&amp;nbsp;다음&amp;nbsp;중&amp;nbsp;하나일&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;1) 대상 MAC 주소가 브리지의 다른 쪽에 있는 경우 브리지합니다.&lt;br /&gt;2) 대상 MAC이 있는 상자의 위치가 브리지에 알려지지 않은 경우 모든 포워딩 브리지 포트에 플러딩합니다.&lt;br /&gt;3) 목적지 MAC 주소가 브리지 또는 포트 중 하나의 주소인 경우 상위 프로토콜 코드(IP 코드)로 전달합니다.&lt;br /&gt;4) 대상 MAC 주소가 브리지의 같은 쪽에 있으면 무시합니다.&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;663&quot; data-origin-height=&quot;239&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRe8Ak/btrzMKaIC5q/1a7T46Utx3V2oeEcVDDypK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRe8Ak/btrzMKaIC5q/1a7T46Utx3V2oeEcVDDypK/img.png&quot; data-alt=&quot;그림 2c. 브리징 테이블(ebtables) 통과 프로세스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRe8Ak/btrzMKaIC5q/1a7T46Utx3V2oeEcVDDypK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRe8Ak%2FbtrzMKaIC5q%2F1a7T46Utx3V2oeEcVDDypK%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;663&quot; height=&quot;239&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;239&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 2c. 브리징 테이블(ebtables) 통과 프로세스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ebtables에는&amp;nbsp;그림&amp;nbsp;2c와&amp;nbsp;같이&amp;nbsp;filter,&amp;nbsp;nat&amp;nbsp;및&amp;nbsp;broute의&amp;nbsp;세&amp;nbsp;가지&amp;nbsp;테이블이&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;broute&amp;nbsp;&lt;/b&gt;테이블에는&amp;nbsp;BROUTING&amp;nbsp;체인이&amp;nbsp;있습니다.&lt;br /&gt;&lt;b&gt;filter&amp;nbsp;&lt;/b&gt;테이블에는 FORWARD, INPUT 및 OUTPUT 체인이 있습니다.&lt;br /&gt;&lt;b&gt;nat&lt;/b&gt;&amp;nbsp;테이블에는&amp;nbsp;PREROUTING,&amp;nbsp;OUTPUT&amp;nbsp;및&amp;nbsp;POSTROUTING&amp;nbsp;체인이&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;filter OUTPUT과 nat OUTPUT 체인은 분리되어 사용됩니다.&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;그림 2b와 2c는 ebtables 체인이 브리지 관문에 부착된 위치를 명확하게 보여줍니다.&lt;br /&gt;&lt;br /&gt;브리지에 종속된 NIC가 프레임을 수신하면 프레임은 먼저 &lt;b&gt;BROUTING 체인&lt;/b&gt;을 거칩니다. 이 체인에서는 프레임을 Routing할지 브리지할지 여부를 선택할 수 있어 brouter를 만들 수 있습니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;BROUTING은 라우터가 일부 프레임/패킷을 연결하고(즉, 링크 계층 정보를 기반으로 전달) 다른 프레임/패킷을 라우팅(즉, 네트워크 계층 정보를 기반으로 전달)하는 장치입니다. 브리지/Route 결정은 구성 정보를 기반으로 합니다.&lt;br /&gt;예를 들어, Router는 두 네트워크 사이의 특정 트래픽(NetBEUI, ARP 등)을 브리징하는 동안 2개의 네트워크 사이의 IP 트래픽에 대한 일반 Router 역할을 하는 데 사용할 수 있습니다. IP 라우팅 테이블은 브리지 논리 장치를 사용하지 않으며 대신 상자에는 브리지 포트(브리지 종속 NIC)이기도 한 물리적 네트워크 장치에 할당된 IP 주소가 있습니다.&lt;br /&gt;BROUTING 체인의 기본 결정은 브리징입니다.&lt;br /&gt;&lt;br /&gt;다음으로&amp;nbsp;프레임은&amp;nbsp;&lt;b&gt;PREROUTING&amp;nbsp;체인&lt;/b&gt;을&amp;nbsp;통과합니다.&amp;nbsp;이&amp;nbsp;체인에서&amp;nbsp;프레임의&amp;nbsp;대상&amp;nbsp;MAC&amp;nbsp;주소(DNAT)를&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;MAC&amp;nbsp;주소를&amp;nbsp;보고&amp;nbsp;이를&amp;nbsp;수행하며&amp;nbsp;네트워크&amp;nbsp;계층&amp;nbsp;주소(예:&amp;nbsp;IP&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;INPUT&amp;nbsp;체인을&amp;nbsp;통과합니다.&amp;nbsp;이&amp;nbsp;체인에서&amp;nbsp;브리지&amp;nbsp;상자로&amp;nbsp;향하는&amp;nbsp;프레임을&amp;nbsp;필터링할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;INPUT&amp;nbsp;체인을&amp;nbsp;통과한&amp;nbsp;후&amp;nbsp;프레임은&amp;nbsp;네트워크&amp;nbsp;계층&amp;nbsp;코드(예:&amp;nbsp;IP&amp;nbsp;코드)로&amp;nbsp;전달됩니다.&amp;nbsp;따라서&amp;nbsp;라우팅된&amp;nbsp;IP&amp;nbsp;패킷은&amp;nbsp;ebtables&amp;nbsp;FORWARD&amp;nbsp;체인이&amp;nbsp;아니라&amp;nbsp;ebtables&amp;nbsp;INPUT&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;221&quot; data-origin-height=&quot;173&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHzBg2/btrzIplhxmS/Rtc84RVxgp1Im5iA3XFO4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHzBg2/btrzIplhxmS/Rtc84RVxgp1Im5iA3XFO4K/img.png&quot; data-alt=&quot;그림 2d. 들어오는 프레임의 체인 통과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHzBg2/btrzIplhxmS/Rtc84RVxgp1Im5iA3XFO4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHzBg2%2FbtrzIplhxmS%2FRtc84RVxgp1Im5iA3XFO4K%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;221&quot; height=&quot;173&quot; data-origin-width=&quot;221&quot; data-origin-height=&quot;173&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 2d. 들어오는 프레임의 체인 통과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇지 않으면 프레임이 브리지의 다른 쪽으로 보내질 수 있습니다. 그렇다면 프레임은 FORWARD 체인과 POSTROUTING 체인을 통과합니다. 브리지된 프레임은 FORWARD 체인에서 필터링할 수 있습니다. POSTROUTING 체인에서 MAC 소스 주소(SNAT)를 변경할 수 있습니다.&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;455&quot; data-origin-height=&quot;56&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGG8H5/btrzKt17vbQ/1jkp2CmiaiHoZKjJKTzAd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGG8H5/btrzKt17vbQ/1jkp2CmiaiHoZKjJKTzAd1/img.png&quot; data-alt=&quot;그림 2e. 전달된 프레임의 체인 통과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGG8H5/btrzKt17vbQ/1jkp2CmiaiHoZKjJKTzAd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGG8H5%2FbtrzKt17vbQ%2F1jkp2CmiaiHoZKjJKTzAd1%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;455&quot; height=&quot;56&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;56&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 2e. 전달된 프레임의 체인 통과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬에서 생성된 프레임은 브리징 결정 후 nat OUTPUT, filter OUTPUT 및 nat POSTROUTING 체인을 통과합니다. NAT OUTPUT 체인은 대상 MAC 주소를 변경할 수 있도록 하고 &lt;span&gt;filter&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;OUTPUT 체인은 브리지 박스에서 발생하는 프레임을 필터링할 수 있습니다. nat OUTPUT 체인은 브리징 결정 후에 탐색되므로 실제로는 너무 늦습니다. 속도를 빠르게 하려면, 이 부분을 변경해야 합니다. nat POSTROUTING 체인은 위에서 설명한 것과 동일합니다.&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;304&quot; data-origin-height=&quot;285&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vATXh/btrzKt8SWlN/FBeAF2JgOVpXkznPTArfDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vATXh/btrzKt8SWlN/FBeAF2JgOVpXkznPTArfDk/img.png&quot; data-alt=&quot;그림 2f. 나가는 프레임의 체인 통과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vATXh/btrzKt8SWlN/FBeAF2JgOVpXkznPTArfDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvATXh%2FbtrzKt8SWlN%2FFBeAF2JgOVpXkznPTArfDk%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;304&quot; height=&quot;285&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;285&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그림 2f. 나가는 프레임의 체인 통과&lt;/figcaption&gt;
&lt;/figure&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;있습니다.&lt;/p&gt;</description>
      <category>네트워크 Study</category>
      <category>ebtables</category>
      <category>[리눅스 기반 브릿지] 2. 이더넷 프레임이 ebtables 체인을 통과하는 방법</category>
      <category>이더넷 프레임</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/591</guid>
      <comments>https://zidarn87.tistory.com/591#entry591comment</comments>
      <pubDate>Tue, 19 Apr 2022 01:34:07 +0900</pubDate>
    </item>
    <item>
      <title>[리눅스 기반 브릿지에서의 ebtables/iptables 상호 작용] 1. 소개</title>
      <link>https://zidarn87.tistory.com/590</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[리눅스 기반 브릿지에서의 ebtables/iptables 상호 작용] 1. 소개&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 : &lt;a href=&quot;http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1650296946725&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;ebtables/iptables interaction on a Linux-based bridge&quot; data-og-description=&quot;ebtables/iptables interaction on a Linux-based bridge 1. Introduction This document describes how iptables and ebtables filtering tables interact on a Linux-based bridge. Getting a bridging firewall on a 2.4.x kernel consists of patching the kernel source &quot; data-og-host=&quot;ebtables.netfilter.org&quot; data-og-source-url=&quot;http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section1&quot; data-og-url=&quot;http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section1&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ceHq23/hyN5AEUpqF/rY05pqZnAoY28rCEbkwT01/img.png?width=719&amp;amp;height=212&amp;amp;face=0_0_719_212,https://scrap.kakaocdn.net/dn/858Im/hyN5HcYGEt/UxG46ekYuHRsvofP49h19k/img.png?width=513&amp;amp;height=231&amp;amp;face=0_0_513_231,https://scrap.kakaocdn.net/dn/pKDCl/hyN5ytzA4C/5GS0N0HU6SuvReyCnyASW1/img.png?width=304&amp;amp;height=285&amp;amp;face=0_0_304_285&quot;&gt;&lt;a href=&quot;http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html#section1&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ceHq23/hyN5AEUpqF/rY05pqZnAoY28rCEbkwT01/img.png?width=719&amp;amp;height=212&amp;amp;face=0_0_719_212,https://scrap.kakaocdn.net/dn/858Im/hyN5HcYGEt/UxG46ekYuHRsvofP49h19k/img.png?width=513&amp;amp;height=231&amp;amp;face=0_0_513_231,https://scrap.kakaocdn.net/dn/pKDCl/hyN5ytzA4C/5GS0N0HU6SuvReyCnyASW1/img.png?width=304&amp;amp;height=285&amp;amp;face=0_0_304_285');&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;ebtables/iptables interaction on a Linux-based bridge&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;ebtables/iptables interaction on a Linux-based bridge 1. Introduction This document describes how iptables and ebtables filtering tables interact on a Linux-based bridge. Getting a bridging firewall on a 2.4.x kernel consists of patching the kernel source&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ebtables.netfilter.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iptables와 ebtables 필터링 테이블이 Linux 기반 브리지에서 어떻게 상호 작용하는지 설명합니다.&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;Linux 커널 영역에서 사용되는 패킷 필터링 도구를 netfilter라고 합니다. 이 netfilter를 조작하기 위한 사용자 영역에서 사용되는 유틸리티는 iptables, ebtables, arptables 등이 있습니다. iptables는 시스템 관리자가 리눅스 커널 방화벽이 제공하는 테이블들과 그것을 저장하는 체인, 규칙들을 구성할 수 있게 해주는 사용자 영역의 응용 프로그램을 말합니다. ebtables는 이더넷 프레임(OSI 2계층) 관점에서 netfilter rule을 설정하는 사용자 영역의 응용 프로그램을 말합니다. iptables와 유사하지만 이더넷 프로토콜이 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;2.6 커널에는 ebtables 및 br-nf 코드가 포함되어 있는데, br-nf 코드는 브릿지된 IP 프레임/패킷이 iptables 체인을 통과하도록 합니다. Ebtables는 이더넷 계층에서 필터링하지만 iptables는 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;연재하는 리눅스 기반 브릿지에서의 ebtables/iptables 상호 작용에서는 TCP/IP 네트워크 모델을 사용합니다. br-nf 코드는 TCP/IP 네트워크 모델을 위반하기도 하는데, 예를 들어 Link Layer 내부에서 IP DNAT를 수행하는 것이 가능합니다.&lt;br /&gt;&lt;br /&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;이더넷 프레임 관련 내용&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조 :&amp;nbsp;&lt;a href=&quot;https://en.wikipedia.org/wiki/Ethernet_frame&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://en.wikipedia.org/wiki/Ethernet_frame&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1650297814856&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;Ethernet frame - Wikipedia&quot; data-og-description=&quot;From Wikipedia, the free encyclopedia Jump to navigation Jump to search Protocol data unit of Ethernet telecommunications technologies In computer networking, an Ethernet frame is a data link layer protocol data unit and uses the underlying Ethernet physic&quot; data-og-host=&quot;en.wikipedia.org&quot; data-og-source-url=&quot;https://en.wikipedia.org/wiki/Ethernet_frame&quot; data-og-url=&quot;https://en.wikipedia.org/wiki/Ethernet_frame&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Ethernet_frame&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://en.wikipedia.org/wiki/Ethernet_frame&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;Ethernet frame - Wikipedia&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;From Wikipedia, the free encyclopedia Jump to navigation Jump to search Protocol data unit of Ethernet telecommunications technologies In computer networking, an Ethernet frame is a data link layer protocol data unit and uses the underlying Ethernet physic&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;en.wikipedia.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.naver.com/PostView.nhn?blogId=joo1020_kr&amp;amp;logNo=221471086900&amp;amp;parentCategoryNo=&amp;amp;categoryNo=29&amp;amp;viewDate=&amp;amp;isShowPopularPosts=false&amp;amp;from=postView&quot;&gt;https://blog.naver.com/PostView.nhn?blogId=joo1020_kr&amp;amp;logNo=221471086900&amp;amp;parentCategoryNo=&amp;amp;categoryNo=29&amp;amp;viewDate=&amp;amp;isShowPopularPosts=false&amp;amp;from=postView&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1650297824697&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;이더넷 프레임(Ethernet Frame)의 개념&quot; data-og-description=&quot;이더넷 프레임(Ethernet Frame)은 OSI 2계층인 데이터 링크 계층에서 사용되는 전송 메카니즘이다. 프...&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://blog.naver.com/PostView.nhn?blogId=joo1020_kr&amp;amp;logNo=221471086900&amp;amp;parentCategoryNo=&amp;amp;categoryNo=29&amp;amp;viewDate=&amp;amp;isShowPopularPosts=false&amp;amp;from=postView&quot; data-og-url=&quot;https://blog.naver.com/joo1020_kr/221471086900&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/LTRp5/hyN5uraZUe/20phFW2M9fHVVvHvykzX20/img.png?width=743&amp;amp;height=110&amp;amp;face=0_0_743_110&quot;&gt;&lt;a href=&quot;https://blog.naver.com/PostView.nhn?blogId=joo1020_kr&amp;amp;logNo=221471086900&amp;amp;parentCategoryNo=&amp;amp;categoryNo=29&amp;amp;viewDate=&amp;amp;isShowPopularPosts=false&amp;amp;from=postView&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.naver.com/PostView.nhn?blogId=joo1020_kr&amp;amp;logNo=221471086900&amp;amp;parentCategoryNo=&amp;amp;categoryNo=29&amp;amp;viewDate=&amp;amp;isShowPopularPosts=false&amp;amp;from=postView&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/LTRp5/hyN5uraZUe/20phFW2M9fHVVvHvykzX20/img.png?width=743&amp;amp;height=110&amp;amp;face=0_0_743_110');&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;이더넷 프레임(Ethernet Frame)의 개념&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이더넷 프레임(Ethernet Frame)은 OSI 2계층인 데이터 링크 계층에서 사용되는 전송 메카니즘이다. 프...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNIfVb/btrzDPdHVeZ/JbBVVIh3C3w3ZBGKUf4Kk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNIfVb/btrzDPdHVeZ/JbBVVIh3C3w3ZBGKUf4Kk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNIfVb/btrzDPdHVeZ/JbBVVIh3C3w3ZBGKUf4Kk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNIfVb%2FbtrzDPdHVeZ%2FJbBVVIh3C3w3ZBGKUf4Kk1%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;896&quot; height=&quot;238&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>네트워크 Study</category>
      <category>ebtables</category>
      <category>iptables</category>
      <category>netfilter</category>
      <category>[리눅스 기반 브릿지에서의 ebtables/iptables 상호 작용] 1. 소개</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/590</guid>
      <comments>https://zidarn87.tistory.com/590#entry590comment</comments>
      <pubDate>Tue, 19 Apr 2022 01:05:40 +0900</pubDate>
    </item>
    <item>
      <title>2022년 1회차 네트워크관리사 1급 필기 합격 후기</title>
      <link>https://zidarn87.tistory.com/589</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2022년도 네트워크 관리사 1급 1차 시험 필기 후기 올립니다.&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;2011년도에 네트워크관리사 2급을 취득하였는데, 그때 구매하였던 아신21닷컴에서 출판한 네트워크관리사 1/2급 필기 책을 가지고 공부하였습니다. NOS에 windows 버전 다른 것과 최신기술 정보가 많이 없는 것 말고는 네트워크관리사 1급 필기를 준비하는 데에는 충분하였습니다. 이 책을 가지고 개념을 정리하였고, 이후에는 2019년 1회차부터 2021년 2회차 필기 기출문제를 계속해서 풀었고, 기출문제 관련 안드로이드 어플로 문제를 풀었습니다.&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;시험 접수할 때, 서울 지역이지만 장소는 시험일자 몇일전에 알려주었습니다. 대부분 네트워크관리사1급 필기는 서울지역은 성동공업고등학교에서 치루는 것 같습니다. 성동공업고등학교는 꽤 시설이 좋은 듯 했습니다. 준비물은 코로나 시기라 자가진단 확인서와 신분증만 있으면 되었습니다. 컴퓨터로 시험을 치루는 거라 펜은 필요없었습니다.&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;총 60문제 중에 40문제 정도가 기출문제로 출제되었고, 나머지 20문제가 새로운 문제 유형인 것 같았습니다. 그래서 기출문제만 많이 풀어보면 시험보는데 도움이 많이 될 듯 합니다. 시험은 총 60분이 주어지는데, 문제를 다 풀면 10분 후에 퇴실이 가능하였습니다. 시험 시작한지 15분쯤에? 다른 분이 나가길래 조금 있다가 퇴실하였습니다.&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;정말 기출문제 많이 풀어봤던게 도움이 되었고, 개념을 잘 알고 있고, 최신기술을 많이 접하신 분들은 좋은 점수를 얻으리라 생각됩니다.&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;시험은 4월 10일에 보았는데, 컴퓨터로 시험을 보는거라 그런지 결과는 2일 후에 확인할 수 있었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dyKoFe/btrzihuJjnK/VKaZmCLvmN2fq0q4uQn4N1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dyKoFe/btrzihuJjnK/VKaZmCLvmN2fq0q4uQn4N1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dyKoFe/btrzihuJjnK/VKaZmCLvmN2fq0q4uQn4N1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdyKoFe%2FbtrzihuJjnK%2FVKaZmCLvmN2fq0q4uQn4N1%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;870&quot; height=&quot;197&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>자격증/네트워크관리사1급</category>
      <category>네트워크관리사 1급</category>
      <category>네트워크관리사 1급 필기 후기</category>
      <category>합격 후기</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/589</guid>
      <comments>https://zidarn87.tistory.com/589#entry589comment</comments>
      <pubDate>Wed, 13 Apr 2022 23:56:16 +0900</pubDate>
    </item>
    <item>
      <title>네트워크관리사 1급 / TCP/IP - IP Class</title>
      <link>https://zidarn87.tistory.com/588</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;네트워크관리사 1급 / TCP/IP - IP Class&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;IP Class&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- A Class : IP 주소의 32bit 중에서 최상위가 0으로 시작하는 주소입니다. 가장 많은 호스트를 가질 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 주소 범위 : (1 ~ 126).(0 ~ 255).(&lt;span&gt;0 ~&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;255).(&lt;span&gt;0 ~&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;255)&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;- B Class : IP 주소의 32bit 중에서 최상위가 10으로 시작하는 주소입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 주소 범위 : (128~191).(0/255).(&lt;span&gt;0 ~&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;255).(&lt;span&gt;0 ~&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;255)&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;- C Class : IP 주소의 32bit 중에서 최상위가 110으로 시작하는 주소입니다. Host ID는 254개 가질 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 주소 범위 : (192~223).(0/255).(0/255).(0 ~ 255)&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;- D Class : &lt;span&gt;IP 주소의 32bit 중에서 최상위가 1110으로 시작하는 주소입니다.&lt;span&gt; Multicast 용도로 사용됩니다.&amp;nbsp;&lt;/span&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;- E Class : IP 주소의 32bit 중에서 최상위가 11110으로 시작하는 주소입니다.&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&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;&lt;span&gt;&lt;span&gt;- Boradcast 주소 : 모든 호스트 bit가 1인 주소입니다.&lt;/span&gt;&lt;/span&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;span&gt;&lt;span&gt;관련 문제&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;2021년&amp;nbsp;2회&amp;nbsp;Multicast용으로&amp;nbsp;사용되는&amp;nbsp;IP&amp;nbsp;Address는? &lt;br /&gt;①&amp;nbsp;163.152.71.86 ②&amp;nbsp;128.134.2.51 &lt;br /&gt;③&amp;nbsp;213.122.1.45 ❹&amp;nbsp;231.159.61.29 &lt;br /&gt;&lt;br /&gt;2021년&amp;nbsp;2회&amp;nbsp;IP&amp;nbsp;Address&amp;nbsp;할당에&amp;nbsp;대한&amp;nbsp;설명으로&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;❶&amp;nbsp;198.34.45.255는&amp;nbsp;개별&amp;nbsp;호스트에&amp;nbsp;할당&amp;nbsp;가능한&amp;nbsp;주소이다. &lt;br /&gt;②&amp;nbsp;127.0.0.1은&amp;nbsp;로컬&amp;nbsp;Loopback으로&amp;nbsp;사용되는&amp;nbsp;특별한&amp;nbsp;주소이다. &lt;br /&gt;③&amp;nbsp;172.16.0.0은&amp;nbsp;네트워크를&amp;nbsp;나타내는&amp;nbsp;대표&amp;nbsp;주소이므로&amp;nbsp;개별&amp;nbsp;호스트에&amp;nbsp;할당할&amp;nbsp;수&amp;nbsp;없다. &lt;br /&gt;④&amp;nbsp;220.148.120.256은&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;없는&amp;nbsp;주소이다. &lt;br /&gt;&lt;br /&gt;2021년&amp;nbsp;1회&amp;nbsp;IP&amp;nbsp;Address&amp;nbsp;&amp;prime;138.212.30.25&amp;prime;가&amp;nbsp;속하는&amp;nbsp;Class는? &lt;br /&gt;①&amp;nbsp;A&amp;nbsp;Class ❷&amp;nbsp;B&amp;nbsp;Class &lt;br /&gt;③&amp;nbsp;C&amp;nbsp;Class ④&amp;nbsp;D&amp;nbsp;Class &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2020년&amp;nbsp;2회&amp;nbsp;IP&amp;nbsp;Address&amp;nbsp;중&amp;nbsp;Class가&amp;nbsp;다른&amp;nbsp;주소는? &lt;br /&gt;①&amp;nbsp;225.234.149.32 ②&amp;nbsp;230.234.115.33 &lt;br /&gt;③&amp;nbsp;235.236.138.34 ❹&amp;nbsp;240.236.126.35 &lt;br /&gt;&lt;br /&gt;2020년&amp;nbsp;1회&amp;nbsp;브로드캐스트(Broadcast)에&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;때&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;④&amp;nbsp;호스트의&amp;nbsp;Bit가&amp;nbsp;전부&amp;nbsp;'0'일&amp;nbsp;경우이다. &lt;br /&gt;&lt;br /&gt;2020년&amp;nbsp;1회&amp;nbsp;IP&amp;nbsp;Address&amp;nbsp;중&amp;nbsp;Class가&amp;nbsp;다른&amp;nbsp;주소는? &lt;br /&gt;❶&amp;nbsp;191.235.47.35 &lt;br /&gt;②&amp;nbsp;128.128.105.4 &lt;br /&gt;③&amp;nbsp;169.146.58.5 &lt;br /&gt;④&amp;nbsp;195.204.26.34 &lt;br /&gt;&lt;br /&gt;2019년&amp;nbsp;2회&amp;nbsp;B&amp;nbsp;Class에&amp;nbsp;대한&amp;nbsp;설명&amp;nbsp;중&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;Network&amp;nbsp;ID는&amp;nbsp;128.0&amp;nbsp;~&amp;nbsp;191.255&amp;nbsp;이고,&amp;nbsp;Host&amp;nbsp;ID는&amp;nbsp;0.1&amp;nbsp;~&amp;nbsp;255.254&amp;nbsp;가&amp;nbsp;된다. &lt;br /&gt;②&amp;nbsp;IP&amp;nbsp;Address가&amp;nbsp;150.32.25.3인&amp;nbsp;경우,&amp;nbsp;Network&amp;nbsp;ID는&amp;nbsp;150.32&amp;nbsp;Host&amp;nbsp;ID는&amp;nbsp;25.3&amp;nbsp;이&amp;nbsp;된다. &lt;br /&gt;❸&amp;nbsp;Multicast&amp;nbsp;등과&amp;nbsp;같이&amp;nbsp;특수한&amp;nbsp;기능이나&amp;nbsp;실험을&amp;nbsp;위해&amp;nbsp;사용된다. &lt;br /&gt;④&amp;nbsp;Host&amp;nbsp;ID가&amp;nbsp;255.255일&amp;nbsp;때는&amp;nbsp;메시지가&amp;nbsp;네트워크&amp;nbsp;전체로&amp;nbsp;브로드&amp;nbsp;캐스트&amp;nbsp;된다. &lt;br /&gt;&lt;br /&gt;2019년&amp;nbsp;1회&amp;nbsp;C&amp;nbsp;Class인&amp;nbsp;IP&amp;nbsp;Address는? &lt;br /&gt;①&amp;nbsp;191.234.56.34 ②&amp;nbsp;125.76.133.234 &lt;br /&gt;③&amp;nbsp;131.15.45.120 ❹&amp;nbsp;192.168.17.34&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>자격증/네트워크관리사1급</category>
      <category>ip class</category>
      <category>네트워크관리사 1급</category>
      <category>네트워크관리사 1급 / TCP/IP - IP Class</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/588</guid>
      <comments>https://zidarn87.tistory.com/588#entry588comment</comments>
      <pubDate>Tue, 22 Mar 2022 01:26:28 +0900</pubDate>
    </item>
    <item>
      <title>네트워크관리사 1급 / TCP/IP - IPv6</title>
      <link>https://zidarn87.tistory.com/587</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;네트워크관리사&amp;nbsp;1급&amp;nbsp;/&amp;nbsp;TCP/IP&amp;nbsp;-&amp;nbsp;IPv6&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;IPv6&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IPv4 체계에서의 주소 고갈에 대한 해결 방안으로 나온 프로토콜입니다. 128비트를 사용하여 32비트보다 훨씬 많은 주소를 사용할 수 있습니다. IPv6는 암호처리 및 사용자 인증기능이 내장 되어 있으며, 라우터의 부담을 줄이고 네트워크 부하를 분산시킬 수 있습니다. 또한 기존 IPv4에서 쉽게 전이할 수 있도록 설계되었습니다.&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;IPv6 종류&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- UniCast Type : 모든 네트워크의 단일 인터페이스에 할당하는 주소입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- AnyCast Type : 네트워크상의 여러 인터페이스에 할당 가능한 주소입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- MultiCast Type : 네트워크상의 그룹을 확인하기 위한 주소입니다.&amp;nbsp;&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;2021년&amp;nbsp;2회&amp;nbsp;IPv6에&amp;nbsp;대한&amp;nbsp;설명으로&amp;nbsp;잘못된&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;IPv6는&amp;nbsp;IPng의&amp;nbsp;일부분으로&amp;nbsp;여기서&amp;nbsp;ng는&amp;nbsp;Next&amp;nbsp;Generation을&amp;nbsp;의미한다. &lt;br /&gt;②&amp;nbsp;IPv6가&amp;nbsp;필요하게&amp;nbsp;된&amp;nbsp;동기는&amp;nbsp;현재&amp;nbsp;인터넷&amp;nbsp;사용자가&amp;nbsp;급증하기&amp;nbsp;때문이다. &lt;br /&gt;❸&amp;nbsp;IPv6는&amp;nbsp;32bit로&amp;nbsp;구성되어&amp;nbsp;있다. &lt;br /&gt;④&amp;nbsp;IPv6는&amp;nbsp;암호처리&amp;nbsp;및&amp;nbsp;사용자&amp;nbsp;인증기능이&amp;nbsp;내장&amp;nbsp;되어&amp;nbsp;있다. &lt;br /&gt;&lt;br /&gt;2021년&amp;nbsp;1회&amp;nbsp;IPv6에&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;있다. &lt;br /&gt;❷&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;있다. &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;있다. &lt;br /&gt;&lt;br /&gt;2020년&amp;nbsp;2회&amp;nbsp;IPv6&amp;nbsp;프로토콜의&amp;nbsp;구조는? &lt;br /&gt;①&amp;nbsp;32비트 ②&amp;nbsp;64비트 &lt;br /&gt;❸&amp;nbsp;128비트 ④&amp;nbsp;256비트 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2020년&amp;nbsp;1회&amp;nbsp;IPv6를&amp;nbsp;IPv4와&amp;nbsp;비교할&amp;nbsp;때&amp;nbsp;기대효과라&amp;nbsp;할&amp;nbsp;수&amp;nbsp;없는&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;IPv4에&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;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;가능하다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2019년&amp;nbsp;2회&amp;nbsp;IPv6&amp;nbsp;주소&amp;nbsp;체계의&amp;nbsp;종류로&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;Unicast&amp;nbsp;주소 ②&amp;nbsp;Anycast&amp;nbsp;주소 &lt;br /&gt;③&amp;nbsp;Multicast&amp;nbsp;주소 ❹&amp;nbsp;Broadcast&amp;nbsp;주소 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2019년&amp;nbsp;1회&amp;nbsp;IPv6에&amp;nbsp;대한&amp;nbsp;설명으로&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;현재&amp;nbsp;IPv4를&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;IPv4에서&amp;nbsp;쉽게&amp;nbsp;전이할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;설계되었다. &lt;br /&gt;❹&amp;nbsp;32bit&amp;nbsp;주소&amp;nbsp;공간을&amp;nbsp;가진다.&lt;/p&gt;</description>
      <category>자격증/네트워크관리사1급</category>
      <category>IPv6</category>
      <category>네트워크관리사 1급</category>
      <category>네트워크관리사 1급 / TCP/IP - IPv6</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/587</guid>
      <comments>https://zidarn87.tistory.com/587#entry587comment</comments>
      <pubDate>Tue, 22 Mar 2022 00:56:07 +0900</pubDate>
    </item>
    <item>
      <title>[리눅스 명령어] brctl - 이더넷 브릿지 설정</title>
      <link>https://zidarn87.tistory.com/586</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[리눅스&amp;nbsp;명령어]&amp;nbsp;brctl&amp;nbsp;-&amp;nbsp;이더넷&amp;nbsp;브릿지&amp;nbsp;설정&lt;br /&gt;&lt;br /&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://man7.org/linux/man-pages/man8/brctl.8.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://man7.org/linux/man-pages/man8/brctl.8.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1647355898933&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;brctl(8) - Linux manual page&quot; data-og-description=&quot;brctl(8) &amp;mdash; Linux manual page BRCTL(8) BRCTL(8) NAME &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top brctl - ethernet bridge administration SYNOPSIS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top brctl [command] DESCRIPTION &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top brctl is used to set up, maintain, and inspect the ethernet bridge configurati&quot; data-og-host=&quot;man7.org&quot; data-og-source-url=&quot;https://man7.org/linux/man-pages/man8/brctl.8.html&quot; data-og-url=&quot;https://man7.org/linux/man-pages/man8/brctl.8.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://man7.org/linux/man-pages/man8/brctl.8.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://man7.org/linux/man-pages/man8/brctl.8.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;brctl(8) - Linux manual page&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;brctl(8) &amp;mdash; Linux manual page BRCTL(8) BRCTL(8) NAME &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top brctl - ethernet bridge administration SYNOPSIS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top brctl [command] DESCRIPTION &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top brctl is used to set up, maintain, and inspect the ethernet bridge configurati&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;man7.org&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;brctl 명령어란&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Linux 커널에서 이더넷 브리지 구성을 설정, 유지 관리 및 검사하는 데 사용됩니다. 이더넷&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;brctl 명령어 포맷&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# &lt;b&gt;brctl addbr &amp;lt;name&amp;gt;&lt;/b&gt; : 이더넷 브리지의 새 인스턴스를 만듭니다. 브리지에 해당하는 네트워크 인터페이스를 &amp;lt;name&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;b&gt;brctl delbr &amp;lt;name&amp;gt;&lt;/b&gt; : 이더넷 브리지의 &amp;lt;name&amp;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;b&gt;brctl show &amp;lt;brname&amp;gt;&lt;/b&gt; : 브리지&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;# &lt;b&gt;brctl addif &amp;lt;brname&amp;gt; &amp;lt;ifname&amp;gt;&lt;/b&gt; : 인터페이스&amp;nbsp;&amp;lt;ifname&amp;gt;을&amp;nbsp;브리지&amp;nbsp;&amp;lt;brname&amp;gt;의&amp;nbsp;포트로&amp;nbsp;만듭니다.&amp;nbsp;이는&amp;nbsp;&amp;lt;ifname&amp;gt;에&amp;nbsp;수신된&amp;nbsp;모든&amp;nbsp;프레임이&amp;nbsp;브리지로&amp;nbsp;향하는&amp;nbsp;것처럼&amp;nbsp;처리됨을&amp;nbsp;의미합니다.&amp;nbsp;또한&amp;nbsp;&amp;lt;brname&amp;gt;에서&amp;nbsp;프레임을&amp;nbsp;보낼&amp;nbsp;때&amp;nbsp;&amp;lt;ifname&amp;gt;은&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;# &lt;b&gt;brctl delif &amp;lt;brname&amp;gt; &amp;lt;ifname&amp;gt; &lt;/b&gt;: &amp;lt;brname&amp;gt;&amp;nbsp;브리지에서&amp;nbsp;인터페이스&amp;nbsp;&amp;lt;ifname&amp;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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;​brctl 명령어 예제&amp;nbsp;&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;eth0와 eth1을 br0로 묶어 보도록 하겠습니다.&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) #brctl addbr br0&amp;nbsp; &amp;nbsp; // ​br0 인터페이스를 추가합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) #brctl addif br0 eth0&amp;nbsp; &amp;nbsp;// eth0을 br0의 포트로 만듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) #brctl addif br0 eth1&amp;nbsp; &amp;nbsp;// eth1을 br0의 포트로 만듭니다. &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;​4) #ifconfig eth0 0.0.0.0&amp;nbsp; &amp;nbsp;// eth0 구동을 정지합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5) #ifconfig eth1 0.0.0.0&amp;nbsp; &amp;nbsp;// eth1 구동을 정지합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6) #ifconfig br0 192.168.0.1 // br0에 ip를 설정합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7) #ip link set br0 up&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// br0 링크를 활성화합니다.&amp;nbsp;&lt;/p&gt;</description>
      <category>자격증/리눅스마스터1급</category>
      <category>brctl</category>
      <category>[리눅스 명령어] brctl - 이더넷 브릿지 설정</category>
      <category>리눅스 명령어</category>
      <category>이더넷 브릿지 설정</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/586</guid>
      <comments>https://zidarn87.tistory.com/586#entry586comment</comments>
      <pubDate>Wed, 16 Mar 2022 00:10:54 +0900</pubDate>
    </item>
    <item>
      <title>[shell script] 비교 표현식 -gt -ge -lt -le -eq -ne</title>
      <link>https://zidarn87.tistory.com/585</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;비교&amp;nbsp;표현식&amp;nbsp;-gt&amp;nbsp;-lt&amp;nbsp;-ge&amp;nbsp;-le&amp;nbsp;-eq&amp;nbsp;-ne&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GT : greater&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LT : Little&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EQ : Equal&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 67.7889%; height: 140px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.2868%; height: 20px;&quot;&gt;구분&lt;/td&gt;
&lt;td style=&quot;width: 21.3565%; height: 20px;&quot;&gt;표현식&lt;/td&gt;
&lt;td style=&quot;width: 29.1473%; height: 20px;&quot;&gt;비교&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.2868%; height: 20px;&quot;&gt;크다&lt;/td&gt;
&lt;td style=&quot;width: 21.3565%; height: 20px;&quot;&gt;a -gt b&lt;/td&gt;
&lt;td style=&quot;width: 29.1473%; height: 20px;&quot;&gt;a &amp;gt; b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.2868%; height: 20px;&quot;&gt;크거나 같다&lt;/td&gt;
&lt;td style=&quot;width: 21.3565%; height: 20px;&quot;&gt;a -ge b&lt;/td&gt;
&lt;td style=&quot;width: 29.1473%; height: 20px;&quot;&gt;a &amp;gt;= b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.2868%; height: 20px;&quot;&gt;작다&lt;/td&gt;
&lt;td style=&quot;width: 21.3565%; height: 20px;&quot;&gt;a -lt b&lt;/td&gt;
&lt;td style=&quot;width: 29.1473%; height: 20px;&quot;&gt;a &amp;lt; b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.2868%; height: 20px;&quot;&gt;작거나 같다&lt;/td&gt;
&lt;td style=&quot;width: 21.3565%; height: 20px;&quot;&gt;a -le b&lt;/td&gt;
&lt;td style=&quot;width: 29.1473%; height: 20px;&quot;&gt;a &amp;lt;= b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.2868%; height: 20px;&quot;&gt;같다&lt;/td&gt;
&lt;td style=&quot;width: 21.3565%; height: 20px;&quot;&gt;a -eq b&lt;/td&gt;
&lt;td style=&quot;width: 29.1473%; height: 20px;&quot;&gt;a == b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 17.2868%; height: 20px;&quot;&gt;같지 않다&lt;/td&gt;
&lt;td style=&quot;width: 21.3565%; height: 20px;&quot;&gt;a -ne b&lt;/td&gt;
&lt;td style=&quot;width: 29.1473%; height: 20px;&quot;&gt;a != b&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;</description>
      <category>프로그래밍/shell script</category>
      <category>EQ</category>
      <category>GE</category>
      <category>GT</category>
      <category>Le</category>
      <category>lt</category>
      <category>NE</category>
      <category>shell script</category>
      <category>[shell script] 비교 표현식 -gt -lt -ge -le -eq -ne</category>
      <category>비교 표현식</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/585</guid>
      <comments>https://zidarn87.tistory.com/585#entry585comment</comments>
      <pubDate>Mon, 14 Mar 2022 18:04:15 +0900</pubDate>
    </item>
    <item>
      <title>[리눅스 명령어] ip link - 네트워크 인터페이스 확인 및 설정</title>
      <link>https://zidarn87.tistory.com/584</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[리눅스&amp;nbsp;명령어]&amp;nbsp;ip&amp;nbsp;link&amp;nbsp;-&amp;nbsp;네트워크&amp;nbsp;인터페이스&amp;nbsp;확인&amp;nbsp;및&amp;nbsp;설정&lt;/h2&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://man7.org/linux/man-pages/man8/ip-link.8.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://man7.org/linux/man-pages/man8/ip-link.8.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1647246653537&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;ip-link(8) - Linux manual page&quot; data-og-description=&quot;ip-link(8) &amp;mdash; Linux manual page IP-LINK(8) Linux IP-LINK(8) NAME &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top ip-link - network device configuration SYNOPSIS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top ip link { COMMAND | help } ip link add [ link DEVICE ] [ name ] NAME [ txqueuelen PACKETS ] [ address LLADDR ]&quot; data-og-host=&quot;man7.org&quot; data-og-source-url=&quot;https://man7.org/linux/man-pages/man8/ip-link.8.html&quot; data-og-url=&quot;https://man7.org/linux/man-pages/man8/ip-link.8.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://man7.org/linux/man-pages/man8/ip-link.8.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://man7.org/linux/man-pages/man8/ip-link.8.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;ip-link(8) - Linux manual page&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;ip-link(8) &amp;mdash; Linux manual page IP-LINK(8) Linux IP-LINK(8) NAME &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top ip-link - network device configuration SYNOPSIS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top ip link { COMMAND | help } ip link add [ link DEVICE ] [ name ] NAME [ txqueuelen PACKETS ] [ address LLADDR ]&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;man7.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ip&amp;nbsp;link 명령어란&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;네트워크 인터페이스를 표시하고 수정합니다.&lt;/span&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;ip link 명령어 종류&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;ip link add : 작동할 물리적 장치를 지정(추가)합니다. NAME은 새 가상 장치의 이름을 지정합니다. TYPE은&amp;nbsp;새&amp;nbsp;장치의&amp;nbsp;유형을&amp;nbsp;지정합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ip link set : 장치 속성 변경합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ip link delete : 가상 링크를 삭제합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ip link show : 장치의 속성을 출력합니다.&amp;nbsp;&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;bridge&amp;nbsp;-&amp;nbsp;Ethernet&amp;nbsp;Bridge&amp;nbsp;device &lt;br /&gt;bond&amp;nbsp;-&amp;nbsp;Bonding&amp;nbsp;device &lt;br /&gt;dummy&amp;nbsp;-&amp;nbsp;Dummy&amp;nbsp;network&amp;nbsp;interface &lt;br /&gt;hsr&amp;nbsp;-&amp;nbsp;High-availability&amp;nbsp;Seamless&amp;nbsp;Redundancy&amp;nbsp;device &lt;br /&gt;ifb&amp;nbsp;-&amp;nbsp;Intermediate&amp;nbsp;Functional&amp;nbsp;Block&amp;nbsp;device &lt;br /&gt;ipoib&amp;nbsp;-&amp;nbsp;IP&amp;nbsp;over&amp;nbsp;Infiniband&amp;nbsp;device &lt;br /&gt;macvlan&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;interface&amp;nbsp;base&amp;nbsp;on&amp;nbsp;link&amp;nbsp;layer&amp;nbsp;address&amp;nbsp;(MAC) &lt;br /&gt;macvtap&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;interface&amp;nbsp;based&amp;nbsp;on&amp;nbsp;link&amp;nbsp;layer&amp;nbsp;address&amp;nbsp;(MAC)&amp;nbsp;and&amp;nbsp;TAP. &lt;br /&gt;vcan&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;Controller&amp;nbsp;Area&amp;nbsp;Network&amp;nbsp;interface &lt;br /&gt;vxcan&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;Controller&amp;nbsp;Area&amp;nbsp;Network&amp;nbsp;tunnelinterface &lt;br /&gt;veth&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;ethernet&amp;nbsp;interface &lt;br /&gt;vlan&amp;nbsp;-&amp;nbsp;802.1q&amp;nbsp;tagged&amp;nbsp;virtual&amp;nbsp;LAN&amp;nbsp;interface &lt;br /&gt;vxlan&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;eXtended&amp;nbsp;LAN &lt;br /&gt;ip6tnl&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;tunnel&amp;nbsp;interface&amp;nbsp;IPv4|IPv6&amp;nbsp;overIPv6 &lt;br /&gt;ipip&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;tunnel&amp;nbsp;interface&amp;nbsp;IPv4&amp;nbsp;over&amp;nbsp;IPv4 &lt;br /&gt;sit&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;tunnel&amp;nbsp;interface&amp;nbsp;IPv6&amp;nbsp;over&amp;nbsp;IPv4 &lt;br /&gt;gre&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;tunnel&amp;nbsp;interface&amp;nbsp;GRE&amp;nbsp;over&amp;nbsp;IPv4 &lt;br /&gt;gretap&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;L2&amp;nbsp;tunnel&amp;nbsp;interface&amp;nbsp;GRE&amp;nbsp;over&amp;nbsp;IPv4 &lt;br /&gt;erspan&amp;nbsp;-&amp;nbsp;Encapsulated&amp;nbsp;Remote&amp;nbsp;SPAN&amp;nbsp;over&amp;nbsp;GRE&amp;nbsp;andIPv4 &lt;br /&gt;ip6gre&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;tunnel&amp;nbsp;interface&amp;nbsp;GRE&amp;nbsp;over&amp;nbsp;IPv6 &lt;br /&gt;ip6gretap&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;L2&amp;nbsp;tunnel&amp;nbsp;interface&amp;nbsp;GRE&amp;nbsp;overIPv6 &lt;br /&gt;ip6erspan&amp;nbsp;-&amp;nbsp;Encapsulated&amp;nbsp;Remote&amp;nbsp;SPAN&amp;nbsp;over&amp;nbsp;GRE&amp;nbsp;andIPv6 &lt;br /&gt;vti&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;tunnel&amp;nbsp;interface &lt;br /&gt;nlmon&amp;nbsp;-&amp;nbsp;Netlink&amp;nbsp;monitoring&amp;nbsp;device &lt;br /&gt;ipvlan&amp;nbsp;-&amp;nbsp;Interface&amp;nbsp;for&amp;nbsp;L3&amp;nbsp;(IPv6/IPv4)&amp;nbsp;based&amp;nbsp;VLANs &lt;br /&gt;ipvtap&amp;nbsp;-&amp;nbsp;Interface&amp;nbsp;for&amp;nbsp;L3&amp;nbsp;(IPv6/IPv4)&amp;nbsp;based&amp;nbsp;VLANsand&amp;nbsp;TAP &lt;br /&gt;lowpan&amp;nbsp;-&amp;nbsp;Interface&amp;nbsp;for&amp;nbsp;6LoWPAN&amp;nbsp;(IPv6)&amp;nbsp;over&amp;nbsp;IEEE802.15.4&amp;nbsp;/&amp;nbsp;Bluetooth &lt;br /&gt;geneve&amp;nbsp;-&amp;nbsp;GEneric&amp;nbsp;NEtwork&amp;nbsp;VirtualizationEncapsulation &lt;br /&gt;bareudp&amp;nbsp;-&amp;nbsp;Bare&amp;nbsp;UDP&amp;nbsp;L3&amp;nbsp;encapsulation&amp;nbsp;support &lt;br /&gt;macsec&amp;nbsp;-&amp;nbsp;Interface&amp;nbsp;for&amp;nbsp;IEEE&amp;nbsp;802.1AE&amp;nbsp;MAC&amp;nbsp;Security(MACsec) &lt;br /&gt;vrf&amp;nbsp;-&amp;nbsp;Interface&amp;nbsp;for&amp;nbsp;L3&amp;nbsp;VRF&amp;nbsp;domains &lt;br /&gt;netdevsim&amp;nbsp;-&amp;nbsp;Interface&amp;nbsp;for&amp;nbsp;netdev&amp;nbsp;API&amp;nbsp;tests &lt;br /&gt;rmnet&amp;nbsp;-&amp;nbsp;Qualcomm&amp;nbsp;rmnet&amp;nbsp;device &lt;br /&gt;xfrm&amp;nbsp;-&amp;nbsp;Virtual&amp;nbsp;xfrm&amp;nbsp;interface&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ip link 명령어 포맷&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ip&amp;nbsp;link&amp;nbsp;delete&lt;/b&gt;&amp;nbsp;{&amp;nbsp;DEVICE&amp;nbsp;|&amp;nbsp;group&amp;nbsp;GROUP&amp;nbsp;}&amp;nbsp;type&amp;nbsp;TYPE&amp;nbsp;[&amp;nbsp;ARGS&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;b&gt;ip&amp;nbsp;link&amp;nbsp;add&lt;/b&gt;&amp;nbsp;[&amp;nbsp;link&amp;nbsp;DEVICE&amp;nbsp;]&amp;nbsp;[&amp;nbsp;name&amp;nbsp;]&amp;nbsp;NAME &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;txqueuelen&amp;nbsp;PACKETS&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;address&amp;nbsp;LLADDR&amp;nbsp;]&amp;nbsp;[&amp;nbsp;broadcast&amp;nbsp;LLADDR&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;mtu&amp;nbsp;MTU&amp;nbsp;]&amp;nbsp;[&amp;nbsp;index&amp;nbsp;IDX&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;numtxqueues&amp;nbsp;QUEUE_COUNT&amp;nbsp;]&amp;nbsp;[&amp;nbsp;numrxqueues&amp;nbsp;QUEUE_COUNT&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;gso_max_size&amp;nbsp;BYTES&amp;nbsp;]&amp;nbsp;[&amp;nbsp;gso_max_segs&amp;nbsp;SEGMENTS&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;&amp;nbsp;&amp;nbsp;type&amp;nbsp;TYPE&amp;nbsp;[&amp;nbsp;ARGS&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;b&gt;VLAN Type 지원하는 경우&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ip&amp;nbsp;link&amp;nbsp;add&amp;nbsp;&lt;/b&gt;link&amp;nbsp;DEVICE&amp;nbsp;name&amp;nbsp;NAME&amp;nbsp;type&amp;nbsp;vlan&amp;nbsp;[&amp;nbsp;protocol &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;VLAN_PROTO&amp;nbsp;]&amp;nbsp;id&amp;nbsp;VLANID&amp;nbsp;[&amp;nbsp;reorder_hdr&amp;nbsp;{&amp;nbsp;on&amp;nbsp;|&amp;nbsp;off&amp;nbsp;}&amp;nbsp;]&amp;nbsp;[&amp;nbsp;gvrp &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;on&amp;nbsp;|&amp;nbsp;off&amp;nbsp;}&amp;nbsp;]&amp;nbsp;[&amp;nbsp;mvrp&amp;nbsp;{&amp;nbsp;on&amp;nbsp;|&amp;nbsp;off&amp;nbsp;}&amp;nbsp;]&amp;nbsp;[&amp;nbsp;loose_binding&amp;nbsp;{&amp;nbsp;on &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;off&amp;nbsp;}&amp;nbsp;]&amp;nbsp;[&amp;nbsp;bridge_binding&amp;nbsp;{&amp;nbsp;on&amp;nbsp;|&amp;nbsp;off&amp;nbsp;}&amp;nbsp;]&amp;nbsp;[&amp;nbsp;ingress-qos- &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;map&amp;nbsp;QOS-MAP&amp;nbsp;]&amp;nbsp;[&amp;nbsp;egress-qos-map&amp;nbsp;QOS-MAP&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;b&gt;ip&amp;nbsp;link&amp;nbsp;set&lt;/b&gt;&amp;nbsp;{&amp;nbsp;DEVICE&amp;nbsp;|&amp;nbsp;group&amp;nbsp;GROUP&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;{&amp;nbsp;up&amp;nbsp;|&amp;nbsp;down&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;type&amp;nbsp;ETYPE&amp;nbsp;TYPE_ARGS&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;arp&amp;nbsp;{&amp;nbsp;on&amp;nbsp;|&amp;nbsp;off&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;dynamic&amp;nbsp;{&amp;nbsp;on&amp;nbsp;|&amp;nbsp;off&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;multicast&amp;nbsp;{&amp;nbsp;on&amp;nbsp;|&amp;nbsp;off&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;allmulticast&amp;nbsp;{&amp;nbsp;on&amp;nbsp;|&amp;nbsp;off&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;promisc&amp;nbsp;{&amp;nbsp;on&amp;nbsp;|&amp;nbsp;off&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;protodown&amp;nbsp;{&amp;nbsp;on&amp;nbsp;|&amp;nbsp;off&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;protodown_reason&amp;nbsp;PREASON&amp;nbsp;{&amp;nbsp;on&amp;nbsp;|&amp;nbsp;off&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;trailers&amp;nbsp;{&amp;nbsp;on&amp;nbsp;|&amp;nbsp;off&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;txqueuelen&amp;nbsp;PACKETS&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;name&amp;nbsp;NEWNAME&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;address&amp;nbsp;LLADDR&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;broadcast&amp;nbsp;LLADDR&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;mtu&amp;nbsp;MTU&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;netns&amp;nbsp;{&amp;nbsp;PID&amp;nbsp;|&amp;nbsp;NETNSNAME&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;link-netnsid&amp;nbsp;ID&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;alias&amp;nbsp;NAME&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;vf&amp;nbsp;NUM&amp;nbsp;[&amp;nbsp;mac&amp;nbsp;LLADDR&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;VFVLAN-LIST&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;rate&amp;nbsp;TXRATE&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;max_tx_rate&amp;nbsp;TXRATE&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;min_tx_rate&amp;nbsp;TXRATE&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;spoofchk&amp;nbsp;{&amp;nbsp;on&amp;nbsp;|&amp;nbsp;off&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;query_rss&amp;nbsp;{&amp;nbsp;on&amp;nbsp;|&amp;nbsp;off&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;state&amp;nbsp;{&amp;nbsp;auto&amp;nbsp;|&amp;nbsp;enable&amp;nbsp;|&amp;nbsp;disable&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;trust&amp;nbsp;{&amp;nbsp;on&amp;nbsp;|&amp;nbsp;off&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;node_guid&amp;nbsp;eui64&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;port_guid&amp;nbsp;eui64&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;{&amp;nbsp;xdp&amp;nbsp;|&amp;nbsp;xdpgeneric&amp;nbsp;|&amp;nbsp;xdpdrv&amp;nbsp;|&amp;nbsp;xdpoffload&amp;nbsp;}&amp;nbsp;{&amp;nbsp;off&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;object&amp;nbsp;FILE&amp;nbsp;[&amp;nbsp;section&amp;nbsp;NAME&amp;nbsp;]&amp;nbsp;[&amp;nbsp;verbose&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pinned&amp;nbsp;FILE&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;master&amp;nbsp;DEVICE&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;nomaster&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;vrf&amp;nbsp;NAME&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;addrgenmode&amp;nbsp;{&amp;nbsp;eui64&amp;nbsp;|&amp;nbsp;none&amp;nbsp;|&amp;nbsp;stable_secret&amp;nbsp;|&amp;nbsp;random&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;&amp;nbsp;&amp;nbsp;[&amp;nbsp;macaddr&amp;nbsp;[&amp;nbsp;MACADDR&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;&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;flush&amp;nbsp;|&amp;nbsp;add&amp;nbsp;|&amp;nbsp;del&amp;nbsp;}&amp;nbsp;MACADDR&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;&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;set&amp;nbsp;MACADDR&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;b&gt;ip&amp;nbsp;link&amp;nbsp;show&lt;/b&gt;&amp;nbsp;[&amp;nbsp;DEVICE&amp;nbsp;|&amp;nbsp;group&amp;nbsp;GROUP&amp;nbsp;]&amp;nbsp;[&amp;nbsp;up&amp;nbsp;]&amp;nbsp;[&amp;nbsp;master &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;DEVICE&amp;nbsp;]&amp;nbsp;[&amp;nbsp;type&amp;nbsp;ETYPE&amp;nbsp;]&amp;nbsp;[&amp;nbsp;vrf&amp;nbsp;NAME&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ip link 명령어 예제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ip link show type bridge&lt;/b&gt; # 브릿지 타입의 디바이스를 출력합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ip link show type vlan&lt;/b&gt; # vlan 타입의 디바이스를 출력합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ip link delete dev eth0.10&lt;/b&gt; # vlan 디바이스를 삭제합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ip link set eth0.100 up&lt;/b&gt; # vlan 디바이스의 상태를 활성화시킵니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ip link add link eth0 name eth0.10 type vlan id 10&lt;/b&gt; # 장치&amp;nbsp;eth0에&amp;nbsp;새&amp;nbsp;VLAN&amp;nbsp;장치&amp;nbsp;eth0.10을&amp;nbsp;만듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ip link set veth0.10 type vlan egress 4:5&lt;/b&gt; # 이&amp;nbsp;&quot;4&quot;&amp;nbsp;우선&amp;nbsp;순위는&amp;nbsp;송신&amp;nbsp;qos&amp;nbsp;매핑에서&amp;nbsp;VLAN&amp;nbsp;우선&amp;nbsp;순위&amp;nbsp;&quot;5&quot;를&amp;nbsp;설정하는&amp;nbsp;데&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;</description>
      <category>리눅스 명령어</category>
      <category>ip link</category>
      <category>[리눅스 명령어] ip link - 네트워크 인터페이스 확인 및 설정</category>
      <category>네트워크 인터페이스 확인 및 설정</category>
      <category>리눅스 명령어</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/584</guid>
      <comments>https://zidarn87.tistory.com/584#entry584comment</comments>
      <pubDate>Mon, 14 Mar 2022 17:53:21 +0900</pubDate>
    </item>
    <item>
      <title>[리눅스 명령어] sysctl - 커널 설정 확인 및 변경하기</title>
      <link>https://zidarn87.tistory.com/583</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[리눅스&amp;nbsp;명령어]&amp;nbsp;sysctl&amp;nbsp;-&amp;nbsp;커널&amp;nbsp;설정&amp;nbsp;확인&amp;nbsp;및&amp;nbsp;변경하기&lt;/h2&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;a href=&quot;https://man7.org/linux/man-pages/man8/sysctl.8.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://man7.org/linux/man-pages/man8/sysctl.8.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1647244947953&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;sysctl(8) - Linux manual page&quot; data-og-description=&quot;sysctl(8) &amp;mdash; Linux manual page SYSCTL(8) System Administration SYSCTL(8) NAME &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top sysctl - configure kernel parameters at runtime SYNOPSIS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top sysctl [options] [variable[=value]] [...] sysctl -p [file or regexp] [...] DESCRIPTION &quot; data-og-host=&quot;man7.org&quot; data-og-source-url=&quot;https://man7.org/linux/man-pages/man8/sysctl.8.html&quot; data-og-url=&quot;https://man7.org/linux/man-pages/man8/sysctl.8.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://man7.org/linux/man-pages/man8/sysctl.8.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://man7.org/linux/man-pages/man8/sysctl.8.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;sysctl(8) - Linux manual page&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;sysctl(8) &amp;mdash; Linux manual page SYSCTL(8) System Administration SYSCTL(8) NAME &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top sysctl - configure kernel parameters at runtime SYNOPSIS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; top sysctl [options] [variable[=value]] [...] sysctl -p [file or regexp] [...] DESCRIPTION&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;man7.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;sysctl 명령어란&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sysctl은 런타임에 커널 매개변수를 수정하는 데 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용 가능한 매개변수는 /proc/sys/에 나열된 매개변수입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sysctl을&amp;nbsp;사용하여&amp;nbsp;sysctl&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;h3 data-ke-size=&quot;size23&quot;&gt;명령어 포맷 및 옵션&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sysctl&amp;nbsp;[options]&amp;nbsp;[variable[=value]]&amp;nbsp;[...] &lt;/b&gt;&lt;br /&gt;&lt;b&gt;sysctl -p [file or regexp] [...]&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;&amp;lt;주요 옵션&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;#variable(변수)&lt;/b&gt; : 읽을 키의 이름입니다. 키는 '.' 또는 '/'로 구분할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#variable=value : 키를 설정하는 부분이고, 문자열일 경우에는 따옴표(&quot; &quot;)를 사용할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#-n, --values : 값을&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;# -e, --ignore : 알&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;# -w, --write : 모든 전달인자가 설정할 키를 규정하는 경우 이 옵션을 사용하십시오.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# &amp;nbsp;-a, --all : 현재&amp;nbsp;사용&amp;nbsp;가능한&amp;nbsp;모든&amp;nbsp;값을&amp;nbsp;표시합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# &amp;nbsp;-V, --version : 버전&amp;nbsp;정보를&amp;nbsp;표시하고&amp;nbsp;종료합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# -p[FILE], --load[=FILE] : 지정된 파일에서 sysctl 설정을 로드합니다. 지정되지 않은 경우 /etc/sysctl.conf를 로드합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# --system : 모든&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /etc/sysctl.d/*.conf &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;/run/sysctl.d/*.conf &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;/usr/local/lib/sysctl.d/*.conf &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;/usr/lib/sysctl.d/*.conf &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;/lib/sysctl.d/*.conf &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;/etc/sysctl.conf&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;h2 data-ke-size=&quot;size26&quot;&gt;sysctl 명령어 예시&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/sbin/sysctl&amp;nbsp;-a &lt;br /&gt;/sbin/sysctl -n kernel.hostname &lt;br /&gt;/sbin/sysctl -w kernel.domainname=&quot;example.com&quot; &lt;br /&gt;/sbin/sysctl -p/etc/sysctl.conf &lt;br /&gt;/sbin/sysctl -a --pattern forward &lt;br /&gt;/sbin/sysctl -a --pattern forward$ &lt;br /&gt;/sbin/sysctl -a --pattern 'net.ipv4.conf.(eth|wlan)0.arp' &lt;br /&gt;/sbin/sysctl&amp;nbsp;&amp;nbsp;--pattern '^net.ipv6' --system&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/sbin/sysctl&amp;nbsp;-w&amp;nbsp;net.ipv6.conf.eth0.disable_ipv6=1&lt;/p&gt;</description>
      <category>리눅스 명령어</category>
      <category>sysctl</category>
      <category>[리눅스 명령어] sysctl - 커널 설정 확인 및 변경하기</category>
      <category>커널 설정 확인 및 변경하기</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/583</guid>
      <comments>https://zidarn87.tistory.com/583#entry583comment</comments>
      <pubDate>Mon, 14 Mar 2022 17:17:37 +0900</pubDate>
    </item>
    <item>
      <title>네트워크관리사 1급 / TCP/IP - TCP 헤더</title>
      <link>https://zidarn87.tistory.com/582</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;네트워크관리사&amp;nbsp;1급&amp;nbsp;/&amp;nbsp;TCP/IP&amp;nbsp;-&amp;nbsp;TCP&amp;nbsp;헤더&lt;/h2&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;h2 data-ke-size=&quot;size26&quot;&gt;TCP&amp;nbsp;헤더&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) Source Port(16bit)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) Destination Port(16bit)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 순서번호(32bit) : 세그먼트에 포함된 데이터의 첫번째 바이트에 부여된 번호를 표시합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4) 확인응답 번호(32bit) : 세그먼트를 수신한 수신 노드가 상대편 노드로부터 수신하고자 하는 바이트의 번호를 정의합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5) 헤더길이(4bit)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6) Reserved&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7) Flag(8bit) : URG, ACK, PSH, RST, SYN, FIN이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8) 윈도우 크기(16bit) : 바이트 형태의 송신 TCP의 최대 윈도우 크기를 나타냅니다. 최대 크기는 65,535 바이트입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9) 검사합(16bit)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10) 긴급 포인터(16bit) : 긴급 플래그(URG)가 1로 설정되어 있는 경우에만 유효합니다.&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;306&quot; data-origin-height=&quot;165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yYgCK/btrvRzeTRsS/XgEfhJvxf5R6xNeLIPxtzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yYgCK/btrvRzeTRsS/XgEfhJvxf5R6xNeLIPxtzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yYgCK/btrvRzeTRsS/XgEfhJvxf5R6xNeLIPxtzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyYgCK%2FbtrvRzeTRsS%2FXgEfhJvxf5R6xNeLIPxtzK%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;306&quot; height=&quot;165&quot; data-origin-width=&quot;306&quot; data-origin-height=&quot;165&quot;/&gt;&lt;/span&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;p data-ke-size=&quot;size16&quot;&gt;2020년&amp;nbsp;2회&amp;nbsp;TCP&amp;nbsp;헤더&amp;nbsp;포맷에&amp;nbsp;대한&amp;nbsp;설명으로&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;Checksum은&amp;nbsp;1의&amp;nbsp;보수라&amp;nbsp;불리는&amp;nbsp;수학적&amp;nbsp;기법을&amp;nbsp;사용하여&amp;nbsp;계산된다. &lt;br /&gt;❷&amp;nbsp;Source&amp;nbsp;포트&amp;nbsp;32bit&amp;nbsp;필드는&amp;nbsp;TCP&amp;nbsp;연결을&amp;nbsp;위해&amp;nbsp;지역&amp;nbsp;호스트가&amp;nbsp;사용하는&amp;nbsp;TCP&amp;nbsp;포트를&amp;nbsp;포함한다. &lt;br /&gt;③&amp;nbsp;Sequence&amp;nbsp;Number&amp;nbsp;32bit&amp;nbsp;필드는&amp;nbsp;세그먼트들이&amp;nbsp;수신지&amp;nbsp;호스트에서&amp;nbsp;재구성되어야&amp;nbsp;할&amp;nbsp;순서를&amp;nbsp;가리킨다. &lt;br /&gt;④&amp;nbsp;Data&amp;nbsp;Offset&amp;nbsp;4bit&amp;nbsp;필드는&amp;nbsp;32bit&amp;nbsp;워드에서&amp;nbsp;TCP&amp;nbsp;헤더의&amp;nbsp;크기를&amp;nbsp;가리킨다. &lt;br /&gt;&lt;br /&gt;2019년&amp;nbsp;1회&amp;nbsp;TCP&amp;nbsp;헤더의&amp;nbsp;설명으로&amp;nbsp;올바른&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;RST&amp;nbsp;플래그&amp;nbsp;:&amp;nbsp;데이터가&amp;nbsp;제대로&amp;nbsp;전송된&amp;nbsp;것을&amp;nbsp;알려준다. &lt;br /&gt;❷&amp;nbsp;Window&amp;nbsp;Size&amp;nbsp;:&amp;nbsp;현재&amp;nbsp;상태의&amp;nbsp;최대&amp;nbsp;버퍼&amp;nbsp;크기를&amp;nbsp;말한다. &lt;br /&gt;③&amp;nbsp;Reserved&amp;nbsp;:&amp;nbsp;수신된&amp;nbsp;Sequence&amp;nbsp;Number에&amp;nbsp;대하여&amp;nbsp;예상된&amp;nbsp;다음&amp;nbsp;옥텟을&amp;nbsp;명시한다. &lt;br /&gt;④&amp;nbsp;FIN&amp;nbsp;플래그&amp;nbsp;:&amp;nbsp;3-Way&amp;nbsp;handshaking&amp;nbsp;과정을&amp;nbsp;제의하는&amp;nbsp;플래그이다. &lt;/p&gt;</description>
      <category>자격증/네트워크관리사1급</category>
      <category>TCP 헤더</category>
      <category>TCP/IP</category>
      <category>네트워크관리사 1급</category>
      <category>네트워크관리사 1급 / TCP/IP - TCP 헤더</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/582</guid>
      <comments>https://zidarn87.tistory.com/582#entry582comment</comments>
      <pubDate>Mon, 14 Mar 2022 16:08:34 +0900</pubDate>
    </item>
    <item>
      <title>네트워크관리사 1급 / TCP/IP - TCP</title>
      <link>https://zidarn87.tistory.com/581</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;네트워크관리사&amp;nbsp;1급&amp;nbsp;/&amp;nbsp;TCP/IP&amp;nbsp;-&amp;nbsp;TCP&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;TCP(&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;Transmission Control Protocol)&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156;&quot;&gt;거리 통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러없이 교환할 수 있게 합니다.&amp;nbsp;&lt;/span&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;span style=&quot;color: #4d5156;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span&gt;대표적인&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;TCP포트&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style=&quot;color: #4d5156;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;FTP&amp;nbsp;데이터&amp;nbsp;:&amp;nbsp;20 &lt;br /&gt;FTP&amp;nbsp;제어&amp;nbsp;:&amp;nbsp;21 &lt;br /&gt;SSH&amp;nbsp;:&amp;nbsp;22 &lt;br /&gt;Telnet&amp;nbsp;:&amp;nbsp;23 &lt;br /&gt;SMTP&amp;nbsp;:&amp;nbsp;25 &lt;br /&gt;DNS&amp;nbsp;:&amp;nbsp;53 &lt;br /&gt;HTTP&amp;nbsp;:&amp;nbsp;80 &lt;br /&gt;POP3&amp;nbsp;:&amp;nbsp;110 &lt;br /&gt;IMAP3&amp;nbsp;:&amp;nbsp;220 &lt;br /&gt;HTTPS&amp;nbsp;:&amp;nbsp;443&lt;/span&gt;&lt;/span&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;span style=&quot;background-color: #ffffff; color: #4d5156;&quot;&gt;관련 문제&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #4d5156;&quot;&gt;2021년&amp;nbsp;2회&amp;nbsp;TCP&amp;nbsp;세션의&amp;nbsp;성립에&amp;nbsp;대한&amp;nbsp;설명으로&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;세션&amp;nbsp;성립은&amp;nbsp;TCP&amp;nbsp;Three-Way&amp;nbsp;Handshake&amp;nbsp;응답&amp;nbsp;확인&amp;nbsp;방식이라&amp;nbsp;한다. &lt;br /&gt;②&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;ACK&amp;nbsp;플래그를&amp;nbsp;&amp;prime;0&amp;prime;으로&amp;nbsp;설정하는&amp;nbsp;TCP&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;&lt;br /&gt;2021년&amp;nbsp;2회&amp;nbsp;15.&amp;nbsp;TCP의&amp;nbsp;프로토콜&amp;nbsp;이름과&amp;nbsp;일반&amp;nbsp;사용(Well-Known)&amp;nbsp;포트&amp;nbsp;연결로&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;SMTP&amp;nbsp;:&amp;nbsp;25 &lt;br /&gt;②&amp;nbsp;HTTP&amp;nbsp;:&amp;nbsp;80 &lt;br /&gt;❸&amp;nbsp;POP3&amp;nbsp;:&amp;nbsp;100 &lt;br /&gt;④&amp;nbsp;FTP-Data&amp;nbsp;:&amp;nbsp;20 &lt;br /&gt;&lt;br /&gt;2020년&amp;nbsp;2회&amp;nbsp;TCP에&amp;nbsp;대한&amp;nbsp;설명&amp;nbsp;중&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;❶&amp;nbsp;비연결형&amp;nbsp;서비스이고,&amp;nbsp;UDP&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;있다. &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;세그먼트(Segment)&amp;nbsp;단위로&amp;nbsp;나눈다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2019년&amp;nbsp;2회&amp;nbsp;TCP(Transmission&amp;nbsp;Control&amp;nbsp;Protocol)에&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;확인한다. &lt;br /&gt;②&amp;nbsp;연결지향(Connection&amp;nbsp;Oriented)이다. &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;데이터의&amp;nbsp;에러를&amp;nbsp;검사하여&amp;nbsp;에러가&amp;nbsp;있으면&amp;nbsp;스스로&amp;nbsp;수정한다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>자격증/네트워크관리사1급</category>
      <category>TCP</category>
      <category>네트워크관리사 1급</category>
      <category>네트워크관리사 1급 / TCP/IP - TCP</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/581</guid>
      <comments>https://zidarn87.tistory.com/581#entry581comment</comments>
      <pubDate>Mon, 14 Mar 2022 16:00:07 +0900</pubDate>
    </item>
    <item>
      <title>네트워크관리사 1급 / TCP/IP</title>
      <link>https://zidarn87.tistory.com/580</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;네트워크관리사&amp;nbsp;1급&amp;nbsp;/&amp;nbsp;TCP/IP&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;TCP/IP(Transmission Control Protocol/Internet Protocol)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패킷&amp;nbsp;통신&amp;nbsp;방식의&amp;nbsp;인터넷&amp;nbsp;프로토콜인&amp;nbsp;IP&amp;nbsp;(인터넷&amp;nbsp;프로토콜)와&amp;nbsp;전송&amp;nbsp;조절&amp;nbsp;프로토콜인&amp;nbsp;TCP&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;319&quot; data-origin-height=&quot;158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwxs4o/btrvY3ENrb5/nLicckhSAWu5GfRRvTdXh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwxs4o/btrvY3ENrb5/nLicckhSAWu5GfRRvTdXh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwxs4o/btrvY3ENrb5/nLicckhSAWu5GfRRvTdXh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcwxs4o%2FbtrvY3ENrb5%2FnLicckhSAWu5GfRRvTdXh1%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;319&quot; height=&quot;158&quot; data-origin-width=&quot;319&quot; data-origin-height=&quot;158&quot;/&gt;&lt;/span&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;p data-ke-size=&quot;size16&quot;&gt;2021년&amp;nbsp;1회&amp;nbsp;TCP/IP&amp;nbsp;에&amp;nbsp;대한&amp;nbsp;설명으로&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;TCP는&amp;nbsp;전송계층(Transport&amp;nbsp;Layer)프로토콜이다. &lt;br /&gt;②&amp;nbsp;IP는&amp;nbsp;네트워크계층(Network&amp;nbsp;Layer)의&amp;nbsp;프로토콜이다. &lt;br /&gt;❸&amp;nbsp;TCP는&amp;nbsp;전송을&amp;nbsp;담당하고,&amp;nbsp;IP는&amp;nbsp;데이터의&amp;nbsp;에러&amp;nbsp;검출을&amp;nbsp;담당한다. &lt;br /&gt;④&amp;nbsp;Telnet과&amp;nbsp;FTP는&amp;nbsp;모두&amp;nbsp;TCP/IP&amp;nbsp;프로토콜이다. &lt;br /&gt;&lt;br /&gt;2020년&amp;nbsp;2회&amp;nbsp;OSI&amp;nbsp;참조모델의&amp;nbsp;트랜스포트&amp;nbsp;계층에&amp;nbsp;대응하는&amp;nbsp;프로토콜은? &lt;br /&gt;❶&amp;nbsp;TCP ②&amp;nbsp;IP &lt;br /&gt;③&amp;nbsp;ARP ④&amp;nbsp;SNMP &lt;br /&gt;&lt;br /&gt;2020년&amp;nbsp;1회&amp;nbsp;TCP/IP&amp;nbsp;계층&amp;nbsp;중&amp;nbsp;다른&amp;nbsp;계층에서&amp;nbsp;동작하는&amp;nbsp;프로토콜은? &lt;br /&gt;①&amp;nbsp;IP &lt;br /&gt;②&amp;nbsp;ICMP &lt;br /&gt;❸&amp;nbsp;UDP &lt;br /&gt;④&amp;nbsp;IGMP &lt;br /&gt;&lt;br /&gt;2020년&amp;nbsp;1회&amp;nbsp;아래&amp;nbsp;설명하는&amp;nbsp;내용&amp;nbsp;중&amp;nbsp;(&amp;nbsp;)&amp;nbsp;안에&amp;nbsp;적합한&amp;nbsp;것은? &lt;br /&gt;TCP/IP&amp;nbsp;프로토콜&amp;nbsp;구조는&amp;nbsp;4개(링크,&amp;nbsp;네트워크,&amp;nbsp;트랜스포트,&amp;nbsp;응용)의&amp;nbsp;계층으로&amp;nbsp;구분할&amp;nbsp;수&amp;nbsp;있는데&amp;nbsp;TCP와&amp;nbsp;UDP는&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;&lt;br /&gt;2019년&amp;nbsp;2회&amp;nbsp;TCP/IP에&amp;nbsp;대한&amp;nbsp;설명으로&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;❶&amp;nbsp;TCP는&amp;nbsp;데이터링크계층(Data&amp;nbsp;Link&amp;nbsp;Layer)&amp;nbsp;프로토콜이다. &lt;br /&gt;②&amp;nbsp;IP는&amp;nbsp;네트워크계층(Network&amp;nbsp;Layer)의&amp;nbsp;프로토콜이다. &lt;br /&gt;③&amp;nbsp;TCP는&amp;nbsp;전송&amp;nbsp;및&amp;nbsp;에러검출을&amp;nbsp;담당한다. &lt;br /&gt;④&amp;nbsp;Telnet과&amp;nbsp;FTP는&amp;nbsp;모두&amp;nbsp;TCP/IP&amp;nbsp;프로토콜이다.&lt;/p&gt;</description>
      <category>자격증/네트워크관리사1급</category>
      <category>TCP/IP</category>
      <category>Transmission Control Protocol/Internet Protocol</category>
      <category>네트워크관리사 1급</category>
      <category>네트워크관리사 1급 / TCP/IP</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/580</guid>
      <comments>https://zidarn87.tistory.com/580#entry580comment</comments>
      <pubDate>Mon, 14 Mar 2022 15:51:32 +0900</pubDate>
    </item>
    <item>
      <title>네트워크관리사 1급 / TCP/IP - FTP 프로토콜</title>
      <link>https://zidarn87.tistory.com/579</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;네트워크관리사&amp;nbsp;1급&amp;nbsp;/&amp;nbsp;TCP/IP&amp;nbsp;-&amp;nbsp;FTP&amp;nbsp;프로토콜&lt;/h2&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;h3 data-ke-size=&quot;size23&quot;&gt;FTP(File Transfer Protocol)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일&amp;nbsp;전송&amp;nbsp;프로토콜은&amp;nbsp;TCP/IP&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;TCP/IP&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;h3 data-ke-size=&quot;size23&quot;&gt;관련 문제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2021년&amp;nbsp;1회&amp;nbsp;FTP&amp;nbsp;서버에&amp;nbsp;접속&amp;nbsp;후&amp;nbsp;&amp;prime;ls&amp;nbsp;-al&amp;prime;&amp;nbsp;명령어를&amp;nbsp;통해&amp;nbsp;얻은&amp;nbsp;결과&amp;nbsp;중&amp;nbsp;일부이다.&amp;nbsp;맨&amp;nbsp;앞의&amp;nbsp;&amp;prime;d&amp;prime;가&amp;nbsp;의미하는&amp;nbsp;것은? &lt;br /&gt;drwxr-xr-x&amp;nbsp;2&amp;nbsp;user&amp;nbsp;group&amp;nbsp;512&amp;nbsp;Mar&amp;nbsp;20&amp;nbsp;2017&amp;nbsp;icqa &lt;br /&gt;①&amp;nbsp;링크&amp;nbsp;파일 ❷&amp;nbsp;디렉터리 &lt;br /&gt;③&amp;nbsp;삭제된&amp;nbsp;파일 ④&amp;nbsp;임시&amp;nbsp;파일 &lt;br /&gt;&lt;br /&gt;2019년&amp;nbsp;1회&amp;nbsp;FTP의&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;❸&amp;nbsp;다른&amp;nbsp;컴퓨터의&amp;nbsp;파일을&amp;nbsp;실행한다. &lt;br /&gt;④&amp;nbsp;서버에&amp;nbsp;접속해&amp;nbsp;자료를&amp;nbsp;전송받는다.&lt;/p&gt;</description>
      <category>자격증/네트워크관리사1급</category>
      <category>ftp</category>
      <category>FTP 프로토콜</category>
      <category>네트워크관리사 1급</category>
      <category>네트워크관리사 1급 / TCP/IP - FTP 프로토콜</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/579</guid>
      <comments>https://zidarn87.tistory.com/579#entry579comment</comments>
      <pubDate>Mon, 14 Mar 2022 15:42:01 +0900</pubDate>
    </item>
    <item>
      <title>네트워크관리사 1급 / TCP/IP - IP header</title>
      <link>https://zidarn87.tistory.com/578</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;네트워크관리사&amp;nbsp;1급&amp;nbsp;/&amp;nbsp;TCP/IP&amp;nbsp;-&amp;nbsp;IP&amp;nbsp;header&lt;/h2&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;h2 data-ke-size=&quot;size26&quot;&gt;IP&amp;nbsp;header&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) Version(4bit) : IP 프로토콜의 버전을 표시합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) Header 길이(4bit) : IP 헤더의 전체 길이를 4바이트 단위로 표시됩니다. 값이 5이면 헤더의 길이는 20바이트가 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 서비스 유형(8bit) : IP가 어떻게 처리되어야 하는가를 정의합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4) 전체 길이(16bit) : 헤더와 데이터를 포함하는 IP 패킷의 전체 길이를 바이트 단위로 표시합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5) 식별(16bit) : 단편화를 위해 사용됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6) 플래그(3bit) : 단편화를 위해 사용됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7) 단편화 오프셋(13bit) : 단편화를 위해 사용됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8) TTL(8bit) : 방문되는 최대 홉(라우터) 수를 제어하기 위해 사용됩니다. 각 라우터는 이 필드의 값을 1씩 감소시킵니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9) 프로토콜(8bit) : IP 계층의 서비스를 사용하는 상위 계층 프로토콜을 정의합니다. TCP, UDP, ICMP, IGMP와 같은 여러 종류의 상위 프로토콜을 캡슐화할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10) 검사합(16bit) : 검사합을 표시합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;11) Source IP Address (32bit)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;12) Destination IP Address (32bit)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;636&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T7Lcv/btrvXTWUFGM/iB8dLOJP5C52If8hlQfIuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T7Lcv/btrvXTWUFGM/iB8dLOJP5C52If8hlQfIuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T7Lcv/btrvXTWUFGM/iB8dLOJP5C52If8hlQfIuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT7Lcv%2FbtrvXTWUFGM%2FiB8dLOJP5C52If8hlQfIuk%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;636&quot; height=&quot;312&quot; data-origin-width=&quot;636&quot; data-origin-height=&quot;312&quot;/&gt;&lt;/span&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;p data-ke-size=&quot;size16&quot;&gt;2021년&amp;nbsp;2회&amp;nbsp;IP&amp;nbsp;프로토콜의&amp;nbsp;헤더&amp;nbsp;체크섬(Checksum)에&amp;nbsp;대한&amp;nbsp;설명&amp;nbsp;중&amp;nbsp;올바른&amp;nbsp;것은? &lt;br /&gt;❶&amp;nbsp;체크섬&amp;nbsp;필드를&amp;nbsp;&amp;prime;0&amp;prime;으로&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;나타낸다. &lt;br /&gt;④&amp;nbsp;IP&amp;nbsp;헤더에&amp;nbsp;대해서만&amp;nbsp;포함되며&amp;nbsp;데이터&amp;nbsp;필드를&amp;nbsp;포함한다. &lt;br /&gt;&lt;br /&gt;2021년&amp;nbsp;1회&amp;nbsp;IP&amp;nbsp;Header&amp;nbsp;Fields에&amp;nbsp;대한&amp;nbsp;내용&amp;nbsp;중&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;Version&amp;nbsp;-&amp;nbsp;4bits &lt;br /&gt;❷&amp;nbsp;TTL&amp;nbsp;-&amp;nbsp;16bits &lt;br /&gt;③&amp;nbsp;Type&amp;nbsp;of&amp;nbsp;Service&amp;nbsp;-&amp;nbsp;8bits &lt;br /&gt;④&amp;nbsp;Header&amp;nbsp;Checksum&amp;nbsp;-&amp;nbsp;16bits &lt;br /&gt;&lt;br /&gt;2020년&amp;nbsp;2회&amp;nbsp;IP&amp;nbsp;헤더&amp;nbsp;필드&amp;nbsp;중&amp;nbsp;단편화&amp;nbsp;금지(Don&amp;prime;t&amp;nbsp;Fragment)를&amp;nbsp;포함하고&amp;nbsp;있는&amp;nbsp;필드는? &lt;br /&gt;①&amp;nbsp;TTL ②&amp;nbsp;Source&amp;nbsp;IP&amp;nbsp;Address &lt;br /&gt;③&amp;nbsp;Identification ❹&amp;nbsp;Flags &lt;br /&gt;&lt;br /&gt;2020년&amp;nbsp;1회&amp;nbsp;Internet&amp;nbsp;Layer를&amp;nbsp;구성하는&amp;nbsp;프로토콜들의&amp;nbsp;헤더에&amp;nbsp;대한&amp;nbsp;설명으로&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;IP&amp;nbsp;헤더의&amp;nbsp;TTL&amp;nbsp;필드는&amp;nbsp;Looping에&amp;nbsp;의해&amp;nbsp;패킷이&amp;nbsp;영구히&amp;nbsp;떠도는&amp;nbsp;것을&amp;nbsp;방지하기&amp;nbsp;위한&amp;nbsp;필드이다. &lt;br /&gt;②&amp;nbsp;IP&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;ICMP&amp;nbsp;Echo&amp;nbsp;Request&amp;nbsp;패킷의&amp;nbsp;Type,&amp;nbsp;Code는&amp;nbsp;각각&amp;nbsp;&amp;lsquo;0',&amp;nbsp;&amp;lsquo;0'이다. &lt;br /&gt;④&amp;nbsp;ARP&amp;nbsp;Request&amp;nbsp;패킷의&amp;nbsp;목적지&amp;nbsp;MAC&amp;nbsp;Address는&amp;nbsp;브로드&amp;nbsp;캐스트인&amp;nbsp;'FF-FF-FF-FF-FF-FF'이다. &lt;br /&gt;&lt;br /&gt;2020년&amp;nbsp;1회&amp;nbsp;IP&amp;nbsp;패킷의&amp;nbsp;구조에서&amp;nbsp;헤더&amp;nbsp;부분에&amp;nbsp;들어가는&amp;nbsp;항목으로&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;Version &lt;br /&gt;②&amp;nbsp;Total&amp;nbsp;Length &lt;br /&gt;③&amp;nbsp;TTL(Time&amp;nbsp;to&amp;nbsp;Live) &lt;br /&gt;❹&amp;nbsp;Data &lt;br /&gt;&lt;br /&gt;2019년&amp;nbsp;2회&amp;nbsp;IP&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;IHL(IP&amp;nbsp;Header&amp;nbsp;Length) &lt;br /&gt;❷&amp;nbsp;TOS(Type&amp;nbsp;of&amp;nbsp;Service) &lt;br /&gt;③&amp;nbsp;TTL(Time&amp;nbsp;To&amp;nbsp;Live) &lt;br /&gt;④&amp;nbsp;Header&amp;nbsp;Checksum&lt;/p&gt;</description>
      <category>자격증/네트워크관리사1급</category>
      <category>IP 헤더</category>
      <category>네트워크관리사 1급</category>
      <category>네트워크관리사 1급 / TCP/IP - IP header</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/578</guid>
      <comments>https://zidarn87.tistory.com/578#entry578comment</comments>
      <pubDate>Mon, 14 Mar 2022 15:24:30 +0900</pubDate>
    </item>
    <item>
      <title>네트워크관리사 1급 / TCP/IP - SNMP 프로토콜</title>
      <link>https://zidarn87.tistory.com/577</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;네트워크관리사&amp;nbsp;1급&amp;nbsp;/&amp;nbsp;TCP/IP&amp;nbsp;-&amp;nbsp;SNMP&amp;nbsp;프로토콜&lt;/h2&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;h2 data-ke-size=&quot;size26&quot;&gt;SNMP(&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;Simple Network Management Protocol)&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;IP 네트워크상의 장치로부터 정보를 수집 및 관리하며, 또한 정보를 수정하여 장치의 동작을 변경하는 데에 사용되는 인터넷 표준 프로토콜입니다.&amp;nbsp;&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;관련 문제&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;2021년&amp;nbsp;2회&amp;nbsp;TCP/IP&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;FTP &lt;br /&gt;②&amp;nbsp;ICMP &lt;br /&gt;❸&amp;nbsp;SNMP &lt;br /&gt;④&amp;nbsp;SMTP &lt;br /&gt;&lt;br /&gt;2020년&amp;nbsp;1회&amp;nbsp;SNMP에&amp;nbsp;대한&amp;nbsp;설명&amp;nbsp;중&amp;nbsp;올바른&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;TCP/IP&amp;nbsp;프로토콜의&amp;nbsp;IP에서&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;IP에서의&amp;nbsp;오류(Error)제어를&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;/span&gt;&lt;/p&gt;</description>
      <category>자격증/네트워크관리사1급</category>
      <category>SNMP</category>
      <category>네트워크관리사 1급</category>
      <category>네트워크관리사 1급 / TCP/IP - SNMP 프로토콜</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/577</guid>
      <comments>https://zidarn87.tistory.com/577#entry577comment</comments>
      <pubDate>Mon, 14 Mar 2022 14:44:17 +0900</pubDate>
    </item>
    <item>
      <title>네트워크관리사 1급 / TCP/IP - IGMP 프로토콜</title>
      <link>https://zidarn87.tistory.com/576</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;네트워크관리사&amp;nbsp;1급&amp;nbsp;/&amp;nbsp;TCP/IP&amp;nbsp;-&amp;nbsp;IGMP&amp;nbsp;프로토콜&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;IGMP&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(Internet Group Management Protocol)&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;호스트 컴퓨터와 인접 라우터가 멀티캐스트 그룹 멤버십을 구성하는 데 사용하는 통신 프로토콜로써, 시작지 호스트에서 여러 목적지 호스트로 데이터를 전송할 때 사용됩니다.&lt;/span&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;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;관련 문제&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;2021년&amp;nbsp;2회&amp;nbsp;IGMP에&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;TCP/IP&amp;nbsp;프로토콜의&amp;nbsp;IP에서&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;정한다. &lt;br /&gt;④&amp;nbsp;IP에서의&amp;nbsp;오류(Error)&amp;nbsp;제어를&amp;nbsp;위하여&amp;nbsp;사용되며,&amp;nbsp;시작지&amp;nbsp;호스트의&amp;nbsp;라우팅&amp;nbsp;실패를&amp;nbsp;보고한다. &lt;br /&gt;&lt;br /&gt;2021년&amp;nbsp;1회&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;SMTP ②&amp;nbsp;ICMP &lt;br /&gt;③&amp;nbsp;SCTP ❹&amp;nbsp;IGMP &lt;br /&gt;&lt;br /&gt;2019년&amp;nbsp;2회&amp;nbsp;IGMP&amp;nbsp;패킷의&amp;nbsp;필드에&amp;nbsp;대한&amp;nbsp;설명&amp;nbsp;중&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;체크섬(Checksum)은&amp;nbsp;데이터가&amp;nbsp;전송도중에&amp;nbsp;문제가&amp;nbsp;생기지&amp;nbsp;않았음을&amp;nbsp;보장하는&amp;nbsp;역할을&amp;nbsp;한다. &lt;br /&gt;②&amp;nbsp;Message&amp;nbsp;Type은&amp;nbsp;질의&amp;nbsp;보고서&amp;nbsp;등의&amp;nbsp;메시지&amp;nbsp;종류를&amp;nbsp;나타내는데&amp;nbsp;사용된다. &lt;br /&gt;❸&amp;nbsp;Version&amp;nbsp;필드에는&amp;nbsp;값이&amp;nbsp;0으로&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;0으로&amp;nbsp;설정된다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>자격증/네트워크관리사1급</category>
      <category>IGMP</category>
      <category>네트워크관리사 1급</category>
      <category>네트워크관리사 1급 / TCP/IP - IGMP 프로토콜</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/576</guid>
      <comments>https://zidarn87.tistory.com/576#entry576comment</comments>
      <pubDate>Mon, 14 Mar 2022 14:39:56 +0900</pubDate>
    </item>
    <item>
      <title>네트워크관리사 1급 / TCP/IP - ARP, RARP 프로토콜</title>
      <link>https://zidarn87.tistory.com/575</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;네트워크관리사&amp;nbsp;1급&amp;nbsp;/&amp;nbsp;TCP/IP&amp;nbsp;-&amp;nbsp;ARP,&amp;nbsp;RARP&amp;nbsp;프로토콜&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ARP(Address Resolution Protocol)란&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;IP Address -&amp;gt; MAC Address&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;Source 호스트는 IP Address와 MAC Address를 Source 호스트의 ARP 캐시에 추가한다. 이후 source 호스트는 자신이 가지고 있는 ARP 캐시를 검사하여 destination 호스트의 IP Address가 있는지 없는지를 확인합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Destination 호스트는 자신의 IP Address와 MAC Address 를 포함하는 ARP에 응답합니다.&amp;nbsp;&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;Gratuitous&amp;nbsp;ARP란&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ARP 브로드캐스트를 이용해서 다른 장비에게 네트워크에 있는 자신의 존재를 알리는 목적으로만 사용되는 ARP 변형 프로토콜로써, 같은 IP Address의 중복 사용을 방지합니다.&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;RARP(Reverse Address Resolution Protocol)란&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;MAC Address -&amp;gt; &lt;span&gt;IP Address&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&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;2021년&amp;nbsp;2회&amp;nbsp;호스트의&amp;nbsp;IP&amp;nbsp;Address를&amp;nbsp;호스트와&amp;nbsp;연결된&amp;nbsp;네트워크&amp;nbsp;접속장치의&amp;nbsp;물리적&amp;nbsp;주소로&amp;nbsp;번역해주는&amp;nbsp;프로토콜은? &lt;br /&gt;①&amp;nbsp;TCP ❷&amp;nbsp;ARP &lt;br /&gt;③&amp;nbsp;IP ④&amp;nbsp;UDP &lt;br /&gt;&lt;br /&gt;2021년&amp;nbsp;1회&amp;nbsp;지역&amp;nbsp;네트워크&amp;nbsp;구획에서&amp;nbsp;호스트가&amp;nbsp;다른&amp;nbsp;호스트와&amp;nbsp;통신하려&amp;nbsp;할&amp;nbsp;때,&amp;nbsp;ARP&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;ARP&amp;nbsp;캐시를&amp;nbsp;검사하여&amp;nbsp;목적지&amp;nbsp;호스트의&amp;nbsp;IP&amp;nbsp;Address가&amp;nbsp;있는지&amp;nbsp;없는지를&amp;nbsp;알아본다. &lt;br /&gt;❷&amp;nbsp;각&amp;nbsp;호스트는&amp;nbsp;목적지&amp;nbsp;호스트의&amp;nbsp;IP&amp;nbsp;Address가&amp;nbsp;ARP&amp;nbsp;패킷에&amp;nbsp;있는&amp;nbsp;IP와&amp;nbsp;일치하지&amp;nbsp;않으면&amp;nbsp;패킷을&amp;nbsp;저장하고,&amp;nbsp;일치하면&amp;nbsp;목적지&amp;nbsp;호스트는&amp;nbsp;IP&amp;nbsp;Address와&amp;nbsp;MAC&amp;nbsp;Address&amp;nbsp;정보를&amp;nbsp;ARP&amp;nbsp;캐시에&amp;nbsp;추가한다. &lt;br /&gt;③&amp;nbsp;목적지&amp;nbsp;호스트는&amp;nbsp;자신의&amp;nbsp;IP&amp;nbsp;Address와&amp;nbsp;MAC&amp;nbsp;Address&amp;nbsp;를&amp;nbsp;포함하는&amp;nbsp;ARP&amp;nbsp;회답을&amp;nbsp;만든다. &lt;br /&gt;④&amp;nbsp;시작지&amp;nbsp;호스트는&amp;nbsp;IP&amp;nbsp;Address와&amp;nbsp;MAC&amp;nbsp;Address를&amp;nbsp;시작지&amp;nbsp;호스트의&amp;nbsp;ARP&amp;nbsp;캐시에&amp;nbsp;추가한다. &lt;br /&gt;&lt;br /&gt;2020년&amp;nbsp;2회&amp;nbsp;ARP와&amp;nbsp;RARP에&amp;nbsp;대한&amp;nbsp;설명&amp;nbsp;중&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;ARP와&amp;nbsp;RARP는&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;ARP는&amp;nbsp;IP&amp;nbsp;데이터그램을&amp;nbsp;정확한&amp;nbsp;목적지&amp;nbsp;호스트로&amp;nbsp;보내기&amp;nbsp;위해&amp;nbsp;IP에&amp;nbsp;의해&amp;nbsp;보조적으로&amp;nbsp;사용되는&amp;nbsp;프로토콜이다. &lt;br /&gt;③&amp;nbsp;RARP는&amp;nbsp;로컬&amp;nbsp;디스크가&amp;nbsp;없는&amp;nbsp;네트워크상에&amp;nbsp;연결된&amp;nbsp;시스템에&amp;nbsp;사용된다. &lt;br /&gt;❹&amp;nbsp;RARP는&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;2020년&amp;nbsp;1회&amp;nbsp;ARP&amp;nbsp;브로드캐스트를&amp;nbsp;이용해서&amp;nbsp;다른&amp;nbsp;장비에게&amp;nbsp;네트워크에&amp;nbsp;있는&amp;nbsp;자신의&amp;nbsp;존재를&amp;nbsp;알리는&amp;nbsp;목적으로만&amp;nbsp;사용되는&amp;nbsp;ARP&amp;nbsp;변형&amp;nbsp;프로토콜로,&amp;nbsp;같은&amp;nbsp;IP&amp;nbsp;Address의&amp;nbsp;중복&amp;nbsp;사용을&amp;nbsp;방지하는&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;Reverse&amp;nbsp;ARP ②&amp;nbsp;Inverse&amp;nbsp;ARP &lt;br /&gt;③&amp;nbsp;DHCP&amp;nbsp;ARP ❹&amp;nbsp;Gratuitous&amp;nbsp;ARP &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2019년&amp;nbsp;2회&amp;nbsp;ARP의&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;위해&amp;nbsp;사용된다. &lt;br /&gt;②&amp;nbsp;목적지&amp;nbsp;호스트의&amp;nbsp;IP&amp;nbsp;Address를&amp;nbsp;MAC&amp;nbsp;Address로&amp;nbsp;바꾸는&amp;nbsp;역할을&amp;nbsp;하며,&amp;nbsp;목적지&amp;nbsp;호스트가&amp;nbsp;시작지의&amp;nbsp;IP&amp;nbsp;Address를&amp;nbsp;MAC&amp;nbsp;Address로&amp;nbsp;바꾸는&amp;nbsp;것을&amp;nbsp;보장한다. &lt;br /&gt;❸&amp;nbsp;기본적으로&amp;nbsp;ARP&amp;nbsp;캐시(Cache)를&amp;nbsp;사용하지&amp;nbsp;않으며,&amp;nbsp;매번&amp;nbsp;서버와&amp;nbsp;통신할&amp;nbsp;때&amp;nbsp;마다&amp;nbsp;MAC&amp;nbsp;Address를&amp;nbsp;요구한다. &lt;br /&gt;④&amp;nbsp;ARP&amp;nbsp;캐시(Cache)는&amp;nbsp;MAC&amp;nbsp;Address와&amp;nbsp;IP&amp;nbsp;Address의&amp;nbsp;리스트를&amp;nbsp;저장한다. &lt;br /&gt;&lt;br /&gt;2019년&amp;nbsp;1회&amp;nbsp;RARP에&amp;nbsp;관한&amp;nbsp;설명으로&amp;nbsp;옳지&amp;nbsp;않은&amp;nbsp;것은? &lt;br /&gt;①&amp;nbsp;RARP&amp;nbsp;요청&amp;nbsp;패킷은&amp;nbsp;브로드캐스트&amp;nbsp;되고&amp;nbsp;RARP&amp;nbsp;응답&amp;nbsp;패킷은&amp;nbsp;유니캐스트&amp;nbsp;방식으로&amp;nbsp;전달된다. &lt;br /&gt;②&amp;nbsp;RARP&amp;nbsp;패킷의&amp;nbsp;형식은&amp;nbsp;ARP&amp;nbsp;패킷의&amp;nbsp;형식과&amp;nbsp;동일하지만&amp;nbsp;들어가는&amp;nbsp;값이&amp;nbsp;다르다. &lt;br /&gt;③&amp;nbsp;RARP는&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;RARP&amp;nbsp;메시지는&amp;nbsp;IP&amp;nbsp;데이터그램의&amp;nbsp;형태로&amp;nbsp;캡슐화&amp;nbsp;되어&amp;nbsp;전송된다.&lt;/p&gt;</description>
      <category>자격증/네트워크관리사1급</category>
      <category>ARP</category>
      <category>RARP</category>
      <category>RARP 프로토콜</category>
      <category>네트워크관리사 1급</category>
      <category>네트워크관리사 1급 / TCP/IP - ARP</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/575</guid>
      <comments>https://zidarn87.tistory.com/575#entry575comment</comments>
      <pubDate>Mon, 14 Mar 2022 14:34:49 +0900</pubDate>
    </item>
    <item>
      <title>[C++11] std::thread, join() 간단한 사용법 (함수, 클래스)</title>
      <link>https://zidarn87.tistory.com/574</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;[C++11]&amp;nbsp;std::thread&amp;nbsp;사용법&amp;nbsp;(함수,&amp;nbsp;클래스)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;std::thread란&amp;nbsp;&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;std::thread는 C++11에서 표준으로 되었습니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;std::thread Header 파일&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;#include &amp;lt;thread&amp;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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;thread 생성 방법&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;thread 생성은 보통 아래 방법이 있습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;lambda를 이용한 방법도 있는데, 나중에 한번 알아보도록 하겠습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;1. 함수를 이용한 생성 =&amp;gt; std::thread 변수(함수명, 전달인자)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;2. Class 멤버 함수를 이용한 생성 =&amp;gt; std::thread&amp;nbsp; 변수(class명::thread 수행할 함수, class 생성자, 전달 인자);&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;3. Class Static 함수를 이용한 생성 &lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;=&amp;gt; std::thread&amp;nbsp; 변수(class명::thread 수행할 함수, 전달 인자);&lt;/span&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;&amp;nbsp;&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;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;thread 생성 예제&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;thread가 작업 중인데, main 함수에서 return 0; 으로 종료하려고 할 때, 비정상적으로 종료될 수 있습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;이를 방지하고자, thread의 join 함수를 사용하여, main thread는 자식 thread의 작업을 기다리고, thread의 작업이 끝나면, main thread는 실행을 재개합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;thread를 실행시킬 때, 함수의 전달인자를 넣을 수도 있고, 넣지 않아도 됩니다.&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;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;1. 함수를 이용한 생성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1부터 1000까지 더하는 작업을 하는 thread를 만들어 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1647064410280&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;thread&amp;gt;


void sum_thread()
{
    int sum = 0;
    for (int i = 1; i &amp;lt;= 1000; i++)
        sum += i;
    std::cout &amp;lt;&amp;lt; &quot;sum_thread() : &quot; &amp;lt;&amp;lt; sum &amp;lt;&amp;lt; std::endl;
}

int main()
{
    std::thread sum(sum_thread);

    std::cout &amp;lt;&amp;lt; &quot;main() : start&quot; &amp;lt;&amp;lt; std::endl;
    sum.join();
    std::cout &amp;lt;&amp;lt; &quot;main() : finish&quot; &amp;lt;&amp;lt; std::endl;
}&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;thread의 작업이 끝날때까지 기다리기위해 join 함수를 사용하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;join 함수가 끝나고 main thread에서 실행을 재개합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rRNp4/btrvF3mMxHW/DFIgY7TD4STS2II3wnc6k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rRNp4/btrvF3mMxHW/DFIgY7TD4STS2II3wnc6k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rRNp4/btrvF3mMxHW/DFIgY7TD4STS2II3wnc6k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrRNp4%2FbtrvF3mMxHW%2FDFIgY7TD4STS2II3wnc6k1%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;742&quot; height=&quot;270&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;270&quot;/&gt;&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;2. Class 멤버 함수를 이용한 생성 &amp;amp; &lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;3. Class Static 함수를 이용한 생성&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1647071357714&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;thread&amp;gt;


class SUM {
public :
    static void sum_static(int num) {
        int sum = 0;
        for (int i = num; i &amp;lt;= 100; i++)
            sum += i;
        std::cout &amp;lt;&amp;lt; &quot;sum_static() : &quot; &amp;lt;&amp;lt; sum &amp;lt;&amp;lt; std::endl;
    }
    void sum_func(int num) {
        int sum = 0;
        for (int i = num; i &amp;lt;= 1000; i++)
            sum += i;
        std::cout &amp;lt;&amp;lt; &quot;sum_func() : &quot; &amp;lt;&amp;lt; sum &amp;lt;&amp;lt; std::endl;
    }
};

int main()
{

    // 2. Class의 멤버 함수를 사용한 Thread 생성
    std::thread thread1(&amp;amp;SUM::sum_func, SUM(), 10);


    // 3. Class의 Static 함수를 사용한 Thread 생성
    std::thread thread2(SUM::sum_static, 10);




    std::cout &amp;lt;&amp;lt; &quot;main() : start&quot; &amp;lt;&amp;lt; std::endl;
    thread1.join();
    thread2.join();
    std::cout &amp;lt;&amp;lt; &quot;main() : finish&quot; &amp;lt;&amp;lt; std::endl;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;thread가 병렬로 작업을 수행해서 출력이 섞여서 출력이 됩니다.&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;715&quot; data-origin-height=&quot;239&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/babDq6/btrvLA4xazt/KVPv8R5FjueZ450sKLc050/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/babDq6/btrvLA4xazt/KVPv8R5FjueZ450sKLc050/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/babDq6/btrvLA4xazt/KVPv8R5FjueZ450sKLc050/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbabDq6%2FbtrvLA4xazt%2FKVPv8R5FjueZ450sKLc050%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;715&quot; height=&quot;239&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;239&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프로그래밍/c++</category>
      <category>c++11</category>
      <category>join</category>
      <category>join() 간단한 사용법 (함수</category>
      <category>std::thread</category>
      <category>[C++11] std::thread</category>
      <category>클래스)</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/574</guid>
      <comments>https://zidarn87.tistory.com/574#entry574comment</comments>
      <pubDate>Sat, 12 Mar 2022 16:52:18 +0900</pubDate>
    </item>
    <item>
      <title>[Boost] boost 설치 및 visual studio에 설정하여 hello world 출력 - 윈도우 용</title>
      <link>https://zidarn87.tistory.com/573</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;[Boost]&amp;nbsp;boost&amp;nbsp;설치&amp;nbsp;및&amp;nbsp;visual&amp;nbsp;studio에&amp;nbsp;설정하여&amp;nbsp;hello&amp;nbsp;world&amp;nbsp;출력&amp;nbsp;-&amp;nbsp;윈도우&amp;nbsp;용&lt;/h2&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;h3 data-ke-size=&quot;size23&quot;&gt;Boost 라이브러리란&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Boost는 C++ 프로그래밍 언어를 위한 선형대수, 의사 난수 발생, 멀티스레딩, 영상 처리, 정규 표현식, 그리고 유닛 테스트와 같은 작업들과 구조들을 지원하는 라이브러리들의 집합입니다. Boost 라이브러리는 무료이며, Smart Pointer , Regular Expression, Thread - Mutex 등등 직접적으로 구현하고 안정화 시키기에 오랜 시간을 필요로하는 것을 알고리즘으로 한데 묶어놓아 개발자들이 사용하기 편하도록 API를 제공해줍니다.&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;0. Visual Studio 다운로드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Visual Studio IDE는 아래 경로에서 다운로드할 수 있습니다.&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;a href=&quot;https://visualstudio.microsoft.com/ko/free-developer-offers/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://visualstudio.microsoft.com/ko/free-developer-offers/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1646832998640&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;무료 개발자 소프트웨어 및 서비스 - Visual Studio&quot; data-og-description=&quot;무료 제공: Visual Studio Community, Visual Studio Code, VSTS 및 Dev Essentials.&quot; data-og-host=&quot;visualstudio.microsoft.com&quot; data-og-source-url=&quot;https://visualstudio.microsoft.com/ko/free-developer-offers/&quot; data-og-url=&quot;https://visualstudio.microsoft.com/ko/free-developer-offers/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lsuDT/hyNEosdYkb/LqmsGoAZgKizIO8XxBOMO0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/exPoje/hyNEsg9N9S/Rd9bdddkNUmlCMulbFSNQk/img.png?width=1024&amp;amp;height=512&amp;amp;face=0_0_1024_512,https://scrap.kakaocdn.net/dn/c5nIeU/hyNEgAZlfg/auBCBzWf3Qed0KgIsEZsy1/img.png?width=1&amp;amp;height=1&amp;amp;face=0_0_1_1&quot;&gt;&lt;a href=&quot;https://visualstudio.microsoft.com/ko/free-developer-offers/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://visualstudio.microsoft.com/ko/free-developer-offers/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lsuDT/hyNEosdYkb/LqmsGoAZgKizIO8XxBOMO0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/exPoje/hyNEsg9N9S/Rd9bdddkNUmlCMulbFSNQk/img.png?width=1024&amp;amp;height=512&amp;amp;face=0_0_1024_512,https://scrap.kakaocdn.net/dn/c5nIeU/hyNEgAZlfg/auBCBzWf3Qed0KgIsEZsy1/img.png?width=1&amp;amp;height=1&amp;amp;face=0_0_1_1');&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;무료 개발자 소프트웨어 및 서비스 - Visual Studio&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;무료 제공: Visual Studio Community, Visual Studio Code, VSTS 및 Dev Essentials.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;visualstudio.microsoft.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;1. Boost 라이브러리 다운로드&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;2022년 3월 9일 기준으로 최신버전은 1.78.0 버전입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;압축파일 용량은 183MB 정도입니다.&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;a href=&quot;https://www.boost.org/users/download/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.boost.org/users/download/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1646832558623&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;Boost Downloads&quot; data-og-description=&quot;Current Release Version 1.78.0 December 8th, 2021 03:45 GMT Updated Libraries: Asio, Assert, Atomic, Beast, Core, Describe, DLL, Filesystem, Geometry, JSON, Lambda2, Log, Math, MultiIndex, Multiprecision, PFR, Predef, Regex, System, Utility, Variant2. Down&quot; data-og-host=&quot;www.boost.org&quot; data-og-source-url=&quot;https://www.boost.org/users/download/&quot; data-og-url=&quot;https://www.boost.org/users/download/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.boost.org/users/download/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boost.org/users/download/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;Boost Downloads&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Current Release Version 1.78.0 December 8th, 2021 03:45 GMT Updated Libraries: Asio, Assert, Atomic, Beast, Core, Describe, DLL, Filesystem, Geometry, JSON, Lambda2, Log, Math, MultiIndex, Multiprecision, PFR, Predef, Regex, System, Utility, Variant2. Down&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.boost.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;606&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u82Ki/btrvBkNTG2U/OmMkpQWzHnHqvCLjEn6jK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u82Ki/btrvBkNTG2U/OmMkpQWzHnHqvCLjEn6jK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u82Ki/btrvBkNTG2U/OmMkpQWzHnHqvCLjEn6jK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu82Ki%2FbtrvBkNTG2U%2FOmMkpQWzHnHqvCLjEn6jK1%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;1102&quot; height=&quot;606&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;606&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Boost 라이브러리 압축 풀기 및 bootstrap.bat 파일 실행(빌드)&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;그 중에 bootstrap.bat 파일을 실행시킵니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;523&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SRQ2f/btrvuOpRPsj/OD4baUUu8K0klUTmmBpWBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SRQ2f/btrvuOpRPsj/OD4baUUu8K0klUTmmBpWBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SRQ2f/btrvuOpRPsj/OD4baUUu8K0klUTmmBpWBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSRQ2f%2FbtrvuOpRPsj%2FOD4baUUu8K0klUTmmBpWBK%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;697&quot; height=&quot;523&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;523&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&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmz91H/btrvxjCs1RV/JqkjX1X0ytITAJ82WQSOak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmz91H/btrvxjCs1RV/JqkjX1X0ytITAJ82WQSOak/img.png&quot; data-origin-width=&quot;534&quot; data-origin-height=&quot;500&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmz91H/btrvxjCs1RV/JqkjX1X0ytITAJ82WQSOak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbmz91H%2FbtrvxjCs1RV%2FJqkjX1X0ytITAJ82WQSOak%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;534&quot; height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IDEIO/btrvuOwEMbo/R2khQq3khBUJRKlLcnXzJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IDEIO/btrvuOwEMbo/R2khQq3khBUJRKlLcnXzJ1/img.png&quot; data-origin-width=&quot;534&quot; data-origin-height=&quot;500&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IDEIO/btrvuOwEMbo/R2khQq3khBUJRKlLcnXzJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIDEIO%2FbtrvuOwEMbo%2FR2khQq3khBUJRKlLcnXzJ1%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;534&quot; height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행하면 visual studio 폴더를 찾고, 빌드가 시작됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 몇분 지나면 완료되고 cmd 창이 자동으로 종료됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfmYTj/btrvvcjIdPr/TDWL9MIwrSxDz6SO2WQ8B1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfmYTj/btrvvcjIdPr/TDWL9MIwrSxDz6SO2WQ8B1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfmYTj/btrvvcjIdPr/TDWL9MIwrSxDz6SO2WQ8B1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfmYTj%2FbtrvvcjIdPr%2FTDWL9MIwrSxDz6SO2WQ8B1%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;979&quot; height=&quot;512&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 b2.exe 파일이 생성된 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ec9v7c/btrvwi4Q8wp/tAxzwo4TiueYEOc0axF6XK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ec9v7c/btrvwi4Q8wp/tAxzwo4TiueYEOc0axF6XK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ec9v7c/btrvwi4Q8wp/tAxzwo4TiueYEOc0axF6XK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fec9v7c%2Fbtrvwi4Q8wp%2FtAxzwo4TiueYEOc0axF6XK%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;742&quot; height=&quot;541&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;541&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. b2.exe 파일 실행하기 (boost 라이브러리 빌드)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;b2.exe 파일을 실행시키면 boost 라이브러리 빌드를 시작합니다.&amp;nbsp;&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;970&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p2aeS/btrvwijuO9e/bOwHvTKHWGphTqYyjydfsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p2aeS/btrvwijuO9e/bOwHvTKHWGphTqYyjydfsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p2aeS/btrvwijuO9e/bOwHvTKHWGphTqYyjydfsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp2aeS%2FbtrvwijuO9e%2FbOwHvTKHWGphTqYyjydfsk%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;970&quot; height=&quot;512&quot; data-origin-width=&quot;970&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드가 완료되면 cmd 창이 자동으로 종료되고, 아래와 같이 폴더 2개가 생성됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 boost 라이브러리는 준비되었고, Visual Studio에서 Boost 라이브러리를 사용해보도록 하겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;502&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GGl3q/btrvAUawIgq/si7eIAzgUGm409EUongoak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GGl3q/btrvAUawIgq/si7eIAzgUGm409EUongoak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GGl3q/btrvAUawIgq/si7eIAzgUGm409EUongoak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGGl3q%2FbtrvAUawIgq%2Fsi7eIAzgUGm409EUongoak%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;593&quot; height=&quot;502&quot; data-origin-width=&quot;593&quot; data-origin-height=&quot;502&quot;/&gt;&lt;/span&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;4. Visual Studio에서 새로운 프로젝트 생성 및 boost 라이브러리 추가하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;콘솔 앱으로 프로젝트를 생성해서, 간단하게 boost 라이브러리를 불러왔을 때, 에러없이 빌드가 되는지 확인해보겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;895&quot; data-origin-height=&quot;679&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yd6oT/btrvvaM5DsS/OKnFV1C0WjMkxLpDzLs0Dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yd6oT/btrvvaM5DsS/OKnFV1C0WjMkxLpDzLs0Dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yd6oT/btrvvaM5DsS/OKnFV1C0WjMkxLpDzLs0Dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fyd6oT%2FbtrvvaM5DsS%2FOKnFV1C0WjMkxLpDzLs0Dk%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;895&quot; height=&quot;679&quot; data-origin-width=&quot;895&quot; data-origin-height=&quot;679&quot;/&gt;&lt;/span&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-origin-width=&quot;900&quot; data-origin-height=&quot;677&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhkF1B/btrvva0xZZu/48V4ILBv2dJZuoZGViX9J1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhkF1B/btrvva0xZZu/48V4ILBv2dJZuoZGViX9J1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhkF1B/btrvva0xZZu/48V4ILBv2dJZuoZGViX9J1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhkF1B%2Fbtrvva0xZZu%2F48V4ILBv2dJZuoZGViX9J1%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;900&quot; height=&quot;677&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;677&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트가 생성되었으면, 이제 boost 라이브러리를 가져오도록 하겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 프로젝트 &amp;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;937&quot; data-origin-height=&quot;631&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bv0gFq/btrvxkIb4Oe/9GOl91Fye69yPyzL24xVZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bv0gFq/btrvxkIb4Oe/9GOl91Fye69yPyzL24xVZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bv0gFq/btrvxkIb4Oe/9GOl91Fye69yPyzL24xVZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbv0gFq%2FbtrvxkIb4Oe%2F9GOl91Fye69yPyzL24xVZ0%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;937&quot; height=&quot;631&quot; data-origin-width=&quot;937&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;속성 페이지에서 2가지를 추가해야 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) include 경로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) lib 경로&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) include 경로 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;속성 페이지 &amp;gt; C/C++ &amp;gt; 일반 &amp;gt; 추가 포함 디렉터리에서 boost 경로를 추가해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eaBV4k/btrvuPPWsVK/f1BgjQbwtQfosfKoYjYg8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eaBV4k/btrvuPPWsVK/f1BgjQbwtQfosfKoYjYg8k/img.png&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;538&quot; data-is-animation=&quot;false&quot; style=&quot;width: 51.5294%; margin-right: 10px;&quot; data-widthpercent=&quot;52.14&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eaBV4k/btrvuPPWsVK/f1BgjQbwtQfosfKoYjYg8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeaBV4k%2FbtrvuPPWsVK%2Ff1BgjQbwtQfosfKoYjYg8k%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;783&quot; height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwoy2S/btrvvbrD1Aa/DZS3cW8PUMV7o9qQUelTHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwoy2S/btrvvbrD1Aa/DZS3cW8PUMV7o9qQUelTHk/img.png&quot; data-origin-width=&quot;473&quot; data-origin-height=&quot;354&quot; data-is-animation=&quot;false&quot; style=&quot;width: 47.3078%;&quot; data-widthpercent=&quot;47.86&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwoy2S/btrvvbrD1Aa/DZS3cW8PUMV7o9qQUelTHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcwoy2S%2FbtrvvbrD1Aa%2FDZS3cW8PUMV7o9qQUelTHk%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;473&quot; height=&quot;354&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRePLG/btrvBl7bPKU/IdwMoMHRc230cLwjknuZDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRePLG/btrvBl7bPKU/IdwMoMHRc230cLwjknuZDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRePLG/btrvBl7bPKU/IdwMoMHRc230cLwjknuZDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRePLG%2FbtrvBl7bPKU%2FIdwMoMHRc230cLwjknuZDk%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;786&quot; height=&quot;544&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;544&quot;/&gt;&lt;/span&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) lib 경로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;속성 페이지 &amp;gt; 링커 &amp;gt; 일반 &amp;gt; 추가 라이브러리 디렉터리에서 boost 라이브러리의 경로를 추가해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1), 2)를 추가하였으면 적용을 누르고 확인 버트을 누릅니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCyF3h/btrvBkAqIwV/KTbBvIYITiRE0fZ9h63XY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCyF3h/btrvBkAqIwV/KTbBvIYITiRE0fZ9h63XY0/img.png&quot; data-origin-width=&quot;834&quot; data-origin-height=&quot;562&quot; data-is-animation=&quot;false&quot; style=&quot;width: 52.0091%; margin-right: 10px;&quot; data-widthpercent=&quot;52.62&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCyF3h/btrvBkAqIwV/KTbBvIYITiRE0fZ9h63XY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCyF3h%2FbtrvBkAqIwV%2FKTbBvIYITiRE0fZ9h63XY0%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;834&quot; height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CT8gi/btrvxkuDEte/4AYnDmCTBnrghcnkKSD9q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CT8gi/btrvxkuDEte/4AYnDmCTBnrghcnkKSD9q0/img.png&quot; data-origin-width=&quot;473&quot; data-origin-height=&quot;354&quot; data-is-animation=&quot;false&quot; style=&quot;width: 46.8282%;&quot; data-widthpercent=&quot;47.38&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CT8gi/btrvxkuDEte/4AYnDmCTBnrghcnkKSD9q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCT8gi%2FbtrvxkuDEte%2F4AYnDmCTBnrghcnkKSD9q0%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;473&quot; height=&quot;354&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;837&quot; data-origin-height=&quot;572&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8lTpl/btrvAaY5DUP/GIz1VTlp7p5OkHkRIkzN20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8lTpl/btrvAaY5DUP/GIz1VTlp7p5OkHkRIkzN20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8lTpl/btrvAaY5DUP/GIz1VTlp7p5OkHkRIkzN20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8lTpl%2FbtrvAaY5DUP%2FGIz1VTlp7p5OkHkRIkzN20%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;837&quot; height=&quot;572&quot; data-origin-width=&quot;837&quot; data-origin-height=&quot;572&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. boost 라이브러리 추가하고 빌드하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 boost 라이브러리를 사용할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;include로 boost/ 를 입력해보면 아래와 같이 사용할 수 있는 라이브러리 header 파일이 자동으로 출력됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;755&quot; data-origin-height=&quot;453&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3noi5/btrvy21mJoM/PKjSpE8kvXbSUt5zoKfxCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3noi5/btrvy21mJoM/PKjSpE8kvXbSUt5zoKfxCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3noi5/btrvy21mJoM/PKjSpE8kvXbSUt5zoKfxCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3noi5%2Fbtrvy21mJoM%2FPKjSpE8kvXbSUt5zoKfxCK%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;755&quot; height=&quot;453&quot; data-origin-width=&quot;755&quot; data-origin-height=&quot;453&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 boost의 lambda api를 사용해보도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 코드를 작성하고 컴파일하면 컴파일 성공된 것을 볼 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1646839752180&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;boost/lambda/lambda.hpp&amp;gt;
#include &amp;lt;iterator&amp;gt;
#include &amp;lt;algorithm&amp;gt;

int main()
{
    typedef std::istream_iterator&amp;lt;int&amp;gt; in;

    std::cout &amp;lt;&amp;lt; &quot;Hello Boost!&quot; &amp;lt;&amp;lt; std::endl;

    std::cout &amp;lt;&amp;lt; &quot;Type in any number: &quot;;

    std::for_each(
        in(std::cin), in(), std::cout
        &amp;lt;&amp;lt; (boost::lambda::_1 * 10)
        &amp;lt;&amp;lt; &quot;\nType in another number: &quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴파일이 성공되고, boost의 lambda를 사용한 출력물을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWh7qd/btrvylGQZoO/EmE0LdXzaePmb5r6nn6TK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWh7qd/btrvylGQZoO/EmE0LdXzaePmb5r6nn6TK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWh7qd/btrvylGQZoO/EmE0LdXzaePmb5r6nn6TK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWh7qd%2FbtrvylGQZoO%2FEmE0LdXzaePmb5r6nn6TK1%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;979&quot; height=&quot;512&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프로그래밍/boost</category>
      <category>boost visual studio</category>
      <category>boost 라이브러리 다운로드</category>
      <category>boost 라이브러리 설치</category>
      <category>boost 윈도우 설치</category>
      <category>[Boost] boost 설치 및 visual studio에 설정하여 hello world 출력 - 윈도우 용</category>
      <author>응답하라AI</author>
      <guid isPermaLink="true">https://zidarn87.tistory.com/573</guid>
      <comments>https://zidarn87.tistory.com/573#entry573comment</comments>
      <pubDate>Thu, 10 Mar 2022 00:31:40 +0900</pubDate>
    </item>
  </channel>
</rss>