<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>rubii</title>
    <link>https://rubii.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 11 Aug 2026 03:53:48 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>rubii</managingEditor>
    <image>
      <title>rubii</title>
      <url>https://tistory1.daumcdn.net/tistory/4907183/attach/61f11d2380ec46b580f2416e1c7d45ef</url>
      <link>https://rubii.tistory.com</link>
    </image>
    <item>
      <title>교착 상태 (Deadlock)</title>
      <link>https://rubii.tistory.com/150</link>
      <description>&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;교착 상태(Deadlock)&lt;/b&gt; 는&lt;br /&gt;여러 프로세스가 &lt;b&gt;서로가 가진 자원을 기다리며 무한히 대기하는 상태&lt;/b&gt;를 말함&lt;br /&gt;즉, &lt;b&gt;서로가 서로를 기다리느라 아무도 앞으로 진행하지 못하는 상황&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 교착 상태의 예시&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;예시 상황&lt;/h4&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&gt;프로세스&lt;/td&gt;
&lt;td&gt;현재 보유 자원&lt;/td&gt;
&lt;td&gt;요청 중 자원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P1&lt;/td&gt;
&lt;td&gt;프린터&lt;/td&gt;
&lt;td&gt;스캐너&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P2&lt;/td&gt;
&lt;td&gt;스캐너&lt;/td&gt;
&lt;td&gt;프린터&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; P1은 스캐너가 필요하고,&lt;br /&gt;&amp;rarr; P2는 프린터가 필요하지만,&lt;br /&gt;서로가 자원을 내놓지 않아 &lt;b&gt;무한 대기 상태&lt;/b&gt; 발생.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 교착 상태 발생의 4가지 조건 (필수 조건)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교착 상태는 아래 4가지 조건이 &lt;b&gt;모두 만족될 때만 발생&lt;/b&gt;&lt;br /&gt;하나라도 깨뜨리면 교착 상태를 예방할 수 있음.&lt;/p&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;text-align: center;&quot;&gt;&lt;b&gt;조건&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;상호 배제 (Mutual Exclusion)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;자원을 한 번에 하나의 프로세스만 사용 가능&lt;/td&gt;
&lt;td&gt;프린터 1대만 사용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;점유와 대기 (Hold and Wait)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;자원을 보유한 채 다른 자원을 기다림&lt;/td&gt;
&lt;td&gt;프린터를 잡고 스캐너 대기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;비선점 (No Preemption)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;이미 할당된 자원을 강제로 뺏을 수 없음&lt;/td&gt;
&lt;td&gt;사용 중인 자원을 OS가 회수 불가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;순환 대기 (Circular Wait)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;프로세스 간 자원 대기 관계가 원형으로 연결&lt;/td&gt;
&lt;td&gt;P1 &amp;rarr; P2 &amp;rarr; P3 &amp;rarr; P1 형태&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교착 상태 발생 조건 4가지 암기법:&lt;br /&gt;&lt;b&gt;상&amp;middot;점&amp;middot;비&amp;middot;순 (상호배제 / 점유대기 / 비선점 / 순환대기)&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 교착 상태 해결 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제는 교착 상태를 &lt;b&gt;예방(Prevention)&lt;/b&gt;, &lt;b&gt;회피(Avoidance)&lt;/b&gt;, &lt;b&gt;탐지(Detection)&lt;/b&gt;, &lt;b&gt;복구(Recovery)&lt;/b&gt; 네 가지 방법으로 처리&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 95px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;방법&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;예방 (Prevention)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;발생 조건 4개 중 하나 이상을 미리 차단&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;상&amp;middot;점&amp;middot;비&amp;middot;순 조건 중 최소 하나 제거&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;회피 (Avoidance)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;교착 상태가 발생하지 않도록 자원 할당을 조절&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;대표적으로 &lt;b&gt;은행원 알고리즘 (Banker&amp;rsquo;s Algorithm)&lt;/b&gt; 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;탐지 (Detection)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;교착 상태 발생 후 탐지 알고리즘으로 확인&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;자원 할당 그래프(Resource Allocation Graph) 활용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;복구 (Recovery)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;교착 상태 프로세스를 종료하거나 자원을 회수&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;프로세스 강제 종료 또는 자원 선점&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 교착 상태 예방 (Prevention)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교착 상태 발생 조건을 &lt;b&gt;애초에 성립하지 않게 만드는 방법&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 95px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;조건&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;예방 방법&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;상호 배제 제거&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;공유 가능한 자원으로 설계&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;프린터 대신 네트워크 프린터 공유&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;점유와 대기 제거&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;모든 자원을 한 번에 요청&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;프로세스 시작 시 모든 자원 미리 확보&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;비선점 제거&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;자원 선점 가능하도록 설계&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;자원을 뺏고 나중에 재시도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;순환 대기 제거&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;자원 번호를 부여해 순서대로 요청&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;자원 우선순위 규칙 적용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단점: 시스템 자원 낭비나 대기 시간 증가 가능&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. 교착 상태 회피 (Avoidance)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교착 상태가 발생할 &lt;b&gt;가능성이 있는 상태를 미리 피하는 방식&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 대표적인 알고리즘은 &lt;b&gt;은행원 알고리즘(Banker's Algorithm)&lt;/b&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;  은행원 알고리즘 (Banker&amp;rsquo;s Algorithm)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자원 할당 전, &lt;b&gt;시스템이 안전 상태(Safe State)&lt;/b&gt; 인지 검사&lt;/li&gt;
&lt;li&gt;만약 안전 상태를 벗어날 가능성이 있으면 자원 할당을 보류&lt;/li&gt;
&lt;li&gt;&amp;ldquo;모든 프로세스가 결국 자원을 얻어 종료될 수 있다면 안전한 상태&amp;rdquo;&lt;/li&gt;
&lt;/ul&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;text-align: center;&quot;&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;안전 상태 (Safe State)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;모든 프로세스가 순차적으로 실행될 수 있는 상태&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;불안전 상태 (Unsafe State)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;교착 상태로 발전할 수 있는 상태&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. 교착 상태 탐지 (Detection)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교착 상태를 &lt;b&gt;허용한 뒤, 주기적으로 검사하여 탐지&lt;/b&gt;하는 방식&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OS가 자원 할당 그래프(Resource Allocation Graph, RAG)를 유지하며 상태를 확인&lt;/li&gt;
&lt;li&gt;그래프에서 &lt;b&gt;사이클(Cycle)&lt;/b&gt; 이 존재하면 교착 상태 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;자원 할당 그래프 예시&lt;/h4&gt;
&lt;pre class=&quot;tp&quot;&gt;&lt;code&gt;P1 &amp;rarr; R1
P2 &amp;rarr; R2
R1 &amp;rarr; P2
R2 &amp;rarr; P1
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 순환(Cycle)이 존재하므로 교착 상태 발생&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;8. 교착 상태 복구 (Recovery)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교착 상태 탐지 후, 시스템을 정상 상태로 되돌리는 단계&lt;/p&gt;
&lt;/blockquote&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;text-align: center;&quot;&gt;&lt;b&gt;방법&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;프로세스 종료&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;교착된 프로세스 일부 또는 전부 강제 종료&lt;/td&gt;
&lt;td&gt;작업 손실 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;자원 선점&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;일부 자원을 회수하여 다른 프로세스에 재할당&lt;/td&gt;
&lt;td&gt;상태 복원 어려움&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;프로세스 롤백(Rollback)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;체크포인트 이전으로 되돌리기&lt;/td&gt;
&lt;td&gt;오버헤드 큼&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;9. 교착 상태 처리 방법 요약&lt;/h3&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&gt;단계&lt;/td&gt;
&lt;td&gt;방식&lt;/td&gt;
&lt;td&gt;키워드&lt;/td&gt;
&lt;td&gt;대표 알고리즘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;예방&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;발생 조건 제거&lt;/td&gt;
&lt;td&gt;상&amp;middot;점&amp;middot;비&amp;middot;순 중 하나 차단&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;회피&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;안전 상태 유지&lt;/td&gt;
&lt;td&gt;자원 할당 제어&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Banker&amp;rsquo;s Algorithm&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;탐지&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;발생 허용 후 감시&lt;/td&gt;
&lt;td&gt;사이클 탐색&lt;/td&gt;
&lt;td&gt;&lt;b&gt;자원 할당 그래프&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;복구&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;탐지 후 처리&lt;/td&gt;
&lt;td&gt;종료&amp;middot;선점&amp;middot;롤백&lt;/td&gt;
&lt;td&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/OS</category>
      <category>DEADLOCK</category>
      <category>교착상태</category>
      <category>은행원알고리즘</category>
      <category>자원할당그래프</category>
      <author>rubii</author>
      <guid isPermaLink="true">https://rubii.tistory.com/150</guid>
      <comments>https://rubii.tistory.com/150#entry150comment</comments>
      <pubDate>Tue, 25 Nov 2025 20:15:57 +0900</pubDate>
    </item>
    <item>
      <title>메모리 관리 &amp;ndash; 페이징과 세그먼테이션</title>
      <link>https://rubii.tistory.com/149</link>
      <description>&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제에서 &lt;b&gt;메모리 관리(Memory Management)&lt;/b&gt; 는 프로세스가 사용할 메모리 공간을 &lt;b&gt;효율적이고 안전하게 분배하는 핵심 기능&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리 관리의 목표는 다음과 같음&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;한정된 메모리 자원을 효율적으로 사용&lt;/li&gt;
&lt;li&gt;여러 프로세스가 동시에 실행될 수 있도록 지원 (멀티프로그램)&lt;/li&gt;
&lt;li&gt;서로 다른 프로세스가 메모리를 침범하지 않도록 보호&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 메모리 관리 기법의 분류&lt;/h3&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;text-align: center;&quot;&gt;&lt;b&gt;분류&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;연속 메모리 할당 (Contiguous)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;하나의 프로세스가 연속된 물리 공간을 차지&lt;/td&gt;
&lt;td&gt;단일 분할, 다중 분할&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;비연속 메모리 할당 (Non-contiguous)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;프로세스가 여러 영역으로 나뉘어 저장&lt;/td&gt;
&lt;td&gt;페이징(Paging), 세그먼테이션(Segmentation)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현대 운영체제는 대부분 &lt;b&gt;비연속 메모리 관리(Paging + Segmentation)&lt;/b&gt; 방식을 사용&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 연속 메모리 할당 기법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로세스 크기에 따라 연속된 메모리를 배정하는 방식&lt;/p&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&gt;&lt;b&gt;기법&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;고정 분할 (Fixed Partition)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;메모리를 일정 크기로 나누어 각 프로세스에 할당&lt;/td&gt;
&lt;td&gt;내부 단편화(Internal Fragmentation) 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;가변 분할 (Variable Partition)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;프로세스 크기에 맞춰 동적으로 분할&lt;/td&gt;
&lt;td&gt;외부 단편화(External Fragmentation) 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;단편화(Fragments)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내부 단편화: 할당된 영역 내부의 미사용 공간&lt;/li&gt;
&lt;li&gt;외부 단편화: 할당되지 않은 빈 공간이 흩어져 사용 불가한 상태&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 페이징 (Paging)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리를 &lt;b&gt;고정 크기의 블록(Page)&lt;/b&gt; 으로 나누어 관리하는 기법&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로세스는 &lt;b&gt;페이지(Page)&lt;/b&gt; 단위로 분할&lt;/li&gt;
&lt;li&gt;물리 메모리는 &lt;b&gt;프레임(Frame)&lt;/b&gt; 단위로 분할&lt;/li&gt;
&lt;li&gt;운영체제가 &lt;b&gt;페이지 테이블(Page Table)&lt;/b&gt; 을 통해 논리주소(Logical Address) &amp;rarr; 물리주소(Physical Address) 변환&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;페이징 구조&lt;/h4&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;[프로세스의 논리 메모리]
  Page 0 &amp;rarr; Frame 5
  Page 1 &amp;rarr; Frame 9
  Page 2 &amp;rarr; Frame 2
  ...

[물리 메모리]
  Frame 0
  Frame 1
  Frame 2 &amp;larr; Page 2
  ...
  Frame 5 &amp;larr; Page 0
  Frame 9 &amp;larr; Page 1
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;주요 특징&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 95px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;페이지 크기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;보통 4KB ~ 8KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;주소 변환&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;페이지 번호(Page Number) + 페이지 오프셋(Page Offset)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;외부 단편화 없음, 메모리 활용률 향상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;내부 단편화 발생 가능, 주소 변환 오버헤드 존재&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;TLB (Translation Lookaside Buffer)&lt;/b&gt;&lt;br /&gt;주소 변환 속도를 높이기 위한 캐시 역할 (최근 사용된 페이지 테이블 항목 저장)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 세그먼테이션 (Segmentation)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리를 &lt;b&gt;논리적 단위(세그먼트, Segment)&lt;/b&gt; 로 나누어 관리하는 방식&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그램을 의미 있는 논리 단위로 구분 (예: 코드, 데이터, 스택 등)&lt;br /&gt;각 세그먼트는 &lt;b&gt;서로 다른 크기&lt;/b&gt;를 가질 수 있음&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;  세그먼트 구조 예시&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;프로그램 구성:
  세그먼트 0 &amp;rarr; Code (크기 3000)
  세그먼트 1 &amp;rarr; Data (크기 1200)
  세그먼트 2 &amp;rarr; Stack (크기 800)
&lt;/code&gt;&lt;/pre&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;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;세그먼트 번호(Segment Number)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;논리적 단위 식별자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;세그먼트 오프셋(Segment Offset)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;세그먼트 내 상대 주소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;세그먼트 테이블(Segment Table)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;각 세그먼트의 시작 주소(Base)와 길이(Limit) 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주소 변환: &lt;b&gt;물리주소 = Base + Offset&lt;/b&gt;&lt;br /&gt;(단, Offset &amp;le; Limit 인 경우만 접근 허용)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;주요 특징&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 76px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;주소 구조&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;세그먼트 번호 + 오프셋&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;논리적 구조 반영, 접근 보호 용이&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;외부 단편화 발생 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. 페이징 vs 세그먼테이션 비교&lt;/h3&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;text-align: center; width: 15.6977%;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 38.2558%;&quot;&gt;&lt;b&gt;페이징(Paging)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 45.9302%;&quot;&gt;&lt;b&gt;세그먼테이션(Segmentation)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 15.6977%;&quot;&gt;&lt;b&gt;기준&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 38.2558%;&quot;&gt;물리적 크기(Page 단위)&lt;/td&gt;
&lt;td style=&quot;width: 45.9302%;&quot;&gt;논리적 단위(Segment 단위)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 15.6977%;&quot;&gt;&lt;b&gt;단위 크기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 38.2558%;&quot;&gt;고정 (일정 크기)&lt;/td&gt;
&lt;td style=&quot;width: 45.9302%;&quot;&gt;가변 (세그먼트마다 다름)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 15.6977%;&quot;&gt;&lt;b&gt;단편화 유형&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 38.2558%;&quot;&gt;내부 단편화&lt;/td&gt;
&lt;td style=&quot;width: 45.9302%;&quot;&gt;외부 단편화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 15.6977%;&quot;&gt;&lt;b&gt;주소 구성&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 38.2558%;&quot;&gt;페이지 번호 + 오프셋&lt;/td&gt;
&lt;td style=&quot;width: 45.9302%;&quot;&gt;세그먼트 번호 + 오프셋&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 15.6977%;&quot;&gt;&lt;b&gt;테이블&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 38.2558%;&quot;&gt;페이지 테이블&lt;/td&gt;
&lt;td style=&quot;width: 45.9302%;&quot;&gt;세그먼트 테이블&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 15.6977%;&quot;&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 38.2558%;&quot;&gt;메모리 활용 효율 높음&lt;/td&gt;
&lt;td style=&quot;width: 45.9302%;&quot;&gt;논리적 프로그램 구조 반영&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 15.6977%;&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 38.2558%;&quot;&gt;논리 구조 반영 어려움&lt;/td&gt;
&lt;td style=&quot;width: 45.9302%;&quot;&gt;외부 단편화 발생 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. 페이징 + 세그먼테이션 혼합 방식&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현대 운영체제(예: Linux, Windows)는 &lt;b&gt;&amp;ldquo;세그먼테이션 기반의 페이징 구조(Segmented Paging)&amp;rdquo;&lt;/b&gt; 를 사용&lt;/p&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;text-align: center;&quot;&gt;&lt;b&gt;단계&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;①&lt;/td&gt;
&lt;td&gt;세그먼트 번호로 해당 세그먼트의 페이지 테이블 위치 검색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;②&lt;/td&gt;
&lt;td&gt;페이지 번호로 실제 프레임 위치 찾기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;③&lt;/td&gt;
&lt;td&gt;오프셋으로 최종 물리 주소 계산&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 세그먼트로 논리 구조를 나누고, 각 세그먼트를 페이징으로 물리적으로 관리하는 하이브리드 구조.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;8. 단편화(Fragmentation) 요약&lt;/h3&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;text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;정의&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;원인&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;내부 단편화&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;할당된 블록 내부의 미사용 공간&lt;/td&gt;
&lt;td&gt;고정 크기 분할&lt;/td&gt;
&lt;td&gt;페이지 단위로 남는 2KB 공간 등&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;외부 단편화&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;블록 사이에 사용 불가능한 빈 공간&lt;/td&gt;
&lt;td&gt;가변 크기 분할&lt;/td&gt;
&lt;td&gt;여러 프로세스가 차지 후 중간 공간 남음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외부 단편화는 &lt;b&gt;압축(Compaction)&lt;/b&gt; 으로 해소 가능하지만, CPU 부하가 크기 때문에 실시간 시스템에는 부적합&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;9. 핵심 요약&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;페이징&lt;/b&gt;: 고정 크기, 내부 단편화 발생&lt;/li&gt;
&lt;li&gt;&lt;b&gt;세그먼테이션&lt;/b&gt;: 가변 크기, 외부 단편화 발생&lt;/li&gt;
&lt;li&gt;&lt;b&gt;페이징+세그먼테이션&lt;/b&gt;: 논리 구조 + 효율 결합&lt;/li&gt;
&lt;li&gt;&lt;b&gt;TLB&lt;/b&gt;는 주소 변환 속도를 향상시키는 캐시&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단편화&lt;/b&gt;는 메모리 관리 효율 저하의 주요 원인&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;핵심 암기 문장&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;페이징은 고정, 세그먼트는 가변.&amp;rdquo;&lt;br /&gt;&amp;ldquo;내부 단편화는 Paging, 외부 단편화는 Segmentation.&amp;rdquo;&lt;br /&gt;&amp;ldquo;현대 OS는 둘 다 씀 &amp;mdash; 세그먼트 기반 페이징.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/OS</category>
      <category>TLB</category>
      <category>단편화</category>
      <category>메모리관리</category>
      <category>세그먼테이션</category>
      <category>페이징</category>
      <author>rubii</author>
      <guid isPermaLink="true">https://rubii.tistory.com/149</guid>
      <comments>https://rubii.tistory.com/149#entry149comment</comments>
      <pubDate>Wed, 5 Nov 2025 12:43:15 +0900</pubDate>
    </item>
    <item>
      <title>CPU 스케줄링 알고리즘</title>
      <link>https://rubii.tistory.com/148</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제에서 &lt;b&gt;CPU 스케줄링(CPU Scheduling)&lt;/b&gt; 은&lt;br /&gt;Ready 상태의 여러 프로세스 중 &lt;b&gt;어떤 프로세스에 CPU를 할당할지 결정하는 작업&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한정된 CPU 자원을 효율적으로 배분하여 &lt;b&gt;처리량(Throughput) 증가&lt;/b&gt;, &lt;b&gt;응답시간 단축&lt;/b&gt;, &lt;b&gt;공정성(Fairness)&lt;/b&gt; 을 달성하는 것이 목표&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 95px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;스케줄링(Scheduling)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;프로세스 실행 순서를 결정하는 과정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;디스패처(Dispatcher)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;선택된 프로세스에 실제로 CPU를 넘겨주는 역할&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;컨텍스트 스위칭(Context Switching)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;CPU 제어권을 다른 프로세스로 전환하는 과정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;Ready Queue&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;실행 대기 중인 프로세스들의 대기열&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 스케줄링의 분류&lt;/h3&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&gt;기준&lt;/td&gt;
&lt;td&gt;구분&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;선점 여부&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;비선점(Non-preemptive)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;CPU를 한 번 할당하면 종료 시까지 점유 (예: FCFS, SJF, HRN)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;선점(Preemptive)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;더 높은 우선순위가 오면 CPU를 빼앗김 (예: SRTF, RR, Priority)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;시점&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;장기(Long-term), 중기(Mid-term), 단기(Short-term)&lt;/td&gt;
&lt;td&gt;프로세스 생성&amp;middot;실행&amp;middot;대기 상태 관리 단계별 스케줄링&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;단기 스케줄러&lt;/b&gt;가 CPU 할당을 직접 담당&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 주요 스케줄링 알고리즘&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(1) &lt;b&gt;FCFS (First Come, First Served)&lt;/b&gt;&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;먼저 온 순서대로 처리&amp;rdquo; &amp;mdash; 큐 구조(FIFO)&lt;/p&gt;
&lt;/blockquote&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;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;방식&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;Ready Queue에 먼저 들어온 프로세스부터 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;단순하지만, 긴 작업이 앞에 있으면 대기 시간 증가 (Convoy Effect)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;선점 여부&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;비선점형&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;P1(24), P2(3), P3(3) 실행 시 &amp;rarr; 평균 대기시간 증가&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPU 버스트가 긴 프로세스가 앞에 있으면 전체 성능 저하.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(2) &lt;b&gt;SJF (Shortest Job First)&lt;/b&gt;&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;CPU 사용시간이 짧은 프로세스부터 실행&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&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;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;방식&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;CPU 버스트(예상 실행 시간)가 짧은 순서로 스케줄링&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;평균 대기시간 최소화 (이론적으로 최적)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;선점 여부&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;비선점형&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;CPU 버스트 시간을 미리 알기 어려움&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(3) &lt;b&gt;SRTF (Shortest Remaining Time First)&lt;/b&gt;&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SJF의 선점형 버전&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;방식&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;새로 도착한 프로세스의 남은 시간이 더 짧으면 CPU 선점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;응답 시간이 짧은 프로세스 우선 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;선점 여부&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;선점형&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;잦은 컨텍스트 스위칭 &amp;rarr; 오버헤드 증가&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(4) &lt;b&gt;Priority Scheduling (우선순위 스케줄링)&lt;/b&gt;&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;우선순위(priority)가 높은 프로세스 먼저 실행&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&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;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;방식&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;프로세스에 우선순위 값(priority)을 부여하여 높은 순서대로 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;중요 작업 우선 처리 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;기아(Starvation)&lt;/b&gt; 발생 가능 &amp;rarr; Aging 기법으로 해결&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;선점 여부&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;선점/비선점 모두 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Aging&lt;/b&gt;: 오래 기다린 프로세스의 우선순위를 점진적으로 높이는 기법&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(5) &lt;b&gt;RR (Round Robin)&lt;/b&gt;&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;시분할(Time-sharing)&amp;rdquo; 시스템의 대표적인 선점형 방식&lt;/p&gt;
&lt;/blockquote&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;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;방식&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;각 프로세스에 동일한 &lt;b&gt;타임퀀텀(Time Quantum)&lt;/b&gt; 을 부여, 순환 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;공정성(Fairness) 보장, 응답 시간 일정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;타임퀀텀이 너무 크면 FCFS와 유사 / 너무 작으면 스위칭 오버헤드 증가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;적용 환경&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;시분할 시스템, 멀티태스킹 운영체제&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;적절한 타임퀀텀 설정이 핵심&lt;/b&gt; &amp;mdash; 보통 10~100ms 수준&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(6) &lt;b&gt;HRN (Highest Response Ratio Next)&lt;/b&gt;&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;대기시간과 실행시간을 고려한 균형형 스케줄링&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 74px;&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;height: 17px;&quot;&gt;항목&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;우선순위 계산식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;(대기시간 + 서비스시간) / 서비스시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;대기시간이 길수록 우선순위 상승 &amp;rarr; 기아현상 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;선점 여부&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;비선점형&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SJF의 단점을 보완한 현실적인 방식&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 알고리즘 비교 요약&lt;/h3&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;text-align: center;&quot;&gt;&lt;b&gt;알고리즘&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;선점 여부&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;주요 기준&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;FCFS&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;비선점&lt;/td&gt;
&lt;td&gt;도착 순서&lt;/td&gt;
&lt;td&gt;단순&lt;/td&gt;
&lt;td&gt;긴 작업이 앞에 있으면 대기 길어짐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;SJF&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;비선점&lt;/td&gt;
&lt;td&gt;CPU 버스트 시간&lt;/td&gt;
&lt;td&gt;평균 대기시간 최소&lt;/td&gt;
&lt;td&gt;예측 어려움&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;SRTF&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;선점&lt;/td&gt;
&lt;td&gt;남은 실행 시간&lt;/td&gt;
&lt;td&gt;빠른 응답&lt;/td&gt;
&lt;td&gt;오버헤드 증가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Priority&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;혼합&lt;/td&gt;
&lt;td&gt;우선순위&lt;/td&gt;
&lt;td&gt;중요 작업 우선&lt;/td&gt;
&lt;td&gt;기아 발생 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;RR&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;선점&lt;/td&gt;
&lt;td&gt;시간 할당량&lt;/td&gt;
&lt;td&gt;공정성&lt;/td&gt;
&lt;td&gt;오버헤드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;HRN&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;비선점&lt;/td&gt;
&lt;td&gt;응답률&lt;/td&gt;
&lt;td&gt;기아 방지&lt;/td&gt;
&lt;td&gt;계산 복잡&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 스케줄링 성능 평가 지표&lt;/h3&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;text-align: center; width: 33.2558%;&quot;&gt;&lt;b&gt;지표&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 51.2791%;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 15.3488%;&quot;&gt;&lt;b&gt;목표&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 33.2558%;&quot;&gt;&lt;b&gt;대기 시간 (Waiting Time)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.2791%;&quot;&gt;Ready Queue에서 기다린 총 시간&lt;/td&gt;
&lt;td style=&quot;width: 15.3488%;&quot;&gt;최소화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 33.2558%;&quot;&gt;&lt;b&gt;응답 시간 (Response Time)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.2791%;&quot;&gt;첫 CPU 할당까지 걸린 시간&lt;/td&gt;
&lt;td style=&quot;width: 15.3488%;&quot;&gt;최소화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 33.2558%;&quot;&gt;&lt;b&gt;처리량 (Throughput)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.2791%;&quot;&gt;단위 시간당 완료된 프로세스 수&lt;/td&gt;
&lt;td style=&quot;width: 15.3488%;&quot;&gt;최대화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 33.2558%;&quot;&gt;&lt;b&gt;CPU 이용률 (CPU Utilization)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.2791%;&quot;&gt;CPU가 실제로 일한 시간 비율&lt;/td&gt;
&lt;td style=&quot;width: 15.3488%;&quot;&gt;최대화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 33.2558%;&quot;&gt;&lt;b&gt;Turnaround Time (소요 시간)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 51.2791%;&quot;&gt;프로세스 생성 &amp;rarr; 종료까지 전체 시간&lt;/td&gt;
&lt;td style=&quot;width: 15.3488%;&quot;&gt;최소화&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. 선점형 스케줄링의 컨텍스트 스위칭&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPU가 다른 프로세스로 전환될 때, 현재 프로세스의 레지스터, 프로그램 카운터 등 상태를 PCB에 저장하고&lt;br /&gt;새로운 프로세스의 상태를 복원하는 과정을 &lt;b&gt;컨텍스트 스위칭(Context Switching)&lt;/b&gt; 이라고 함&lt;/p&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;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;CPU를 효율적으로 분배 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;저장/복원 오버헤드 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;발생 시점&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;타임퀀텀 만료, I/O 요청, 우선순위 변화 등&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. 핵심 요약&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CPU 스케줄링은 &lt;b&gt;Ready Queue의 프로세스 실행 순서&lt;/b&gt;를 결정하는 핵심 기능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;비선점형:&lt;/b&gt; FCFS, SJF, HRN&lt;/li&gt;
&lt;li&gt;&lt;b&gt;선점형:&lt;/b&gt; SRTF, Priority, RR&lt;/li&gt;
&lt;li&gt;&lt;b&gt;RR&lt;/b&gt;은 시분할 시스템에서 공정성 확보에 효과적&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Aging&lt;/b&gt;으로 Priority 스케줄링의 기아현상 해결&lt;/li&gt;
&lt;li&gt;&lt;b&gt;성능 지표:&lt;/b&gt; 대기시간&amp;darr;, 처리량&amp;uarr;, 응답시간&amp;darr;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;핵심 암기 문장&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;SJF는 짧은 작업 우선, RR은 순환, Priority는 중요도 중심.&amp;rdquo;&lt;br /&gt;&amp;ldquo;Aging은 기다림에 보상.&amp;rdquo;&lt;br /&gt;&amp;ldquo;CPU 스케줄링의 목표는 효율&amp;middot;공정&amp;middot;속도.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/OS</category>
      <category>FCFS</category>
      <category>HRN</category>
      <category>priority</category>
      <category>RR</category>
      <category>SJF</category>
      <category>SRTF</category>
      <category>스케줄링</category>
      <author>rubii</author>
      <guid isPermaLink="true">https://rubii.tistory.com/148</guid>
      <comments>https://rubii.tistory.com/148#entry148comment</comments>
      <pubDate>Tue, 4 Nov 2025 17:34:49 +0900</pubDate>
    </item>
    <item>
      <title>프로세스와 스레드 차이</title>
      <link>https://rubii.tistory.com/147</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제(OS, Operating System)는 &lt;b&gt;프로그램 실행과 자원 관리&lt;/b&gt;를 담당하는 핵심 소프트웨어&lt;br /&gt;이 중에서도 &lt;b&gt;프로세스(Process)&lt;/b&gt; 와 &lt;b&gt;스레드(Thread)&lt;/b&gt; 는 CPU가 작업을 수행하는 기본 단위로, 운영체제 이해의 핵심 개념&lt;/p&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;text-align: center; width: 17.0931%;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 41.279%;&quot;&gt;&lt;b&gt;프로세스&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 41.5117%;&quot;&gt;&lt;b&gt;스레드&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 17.0931%;&quot;&gt;&lt;b&gt;정의&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 41.279%;&quot;&gt;실행 중인 프로그램&lt;/td&gt;
&lt;td style=&quot;width: 41.5117%;&quot;&gt;프로세스 내의 실행 흐름 단위&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 17.0931%;&quot;&gt;&lt;b&gt;독립성&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 41.279%;&quot;&gt;독립적인 메모리 공간 보유&lt;/td&gt;
&lt;td style=&quot;width: 41.5117%;&quot;&gt;같은 프로세스 내 메모리 공유&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 17.0931%;&quot;&gt;&lt;b&gt;통신 방식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 41.279%;&quot;&gt;프로세스 간 통신(IPC) 필요&lt;/td&gt;
&lt;td style=&quot;width: 41.5117%;&quot;&gt;공유 메모리로 간단한 통신 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 17.0931%;&quot;&gt;&lt;b&gt;자원 소모&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 41.279%;&quot;&gt;크다 (프로세스별 메모리, PCB 등 생성)&lt;/td&gt;
&lt;td style=&quot;width: 41.5117%;&quot;&gt;작다 (Stack만 분리)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 17.0931%;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 41.279%;&quot;&gt;Chrome.exe, Discord.exe&lt;/td&gt;
&lt;td style=&quot;width: 41.5117%;&quot;&gt;탭 단위 실행, 채팅 전송 스레드 등&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 프로세스(Process)란?&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; font-size: 16px; letter-spacing: 0px;&quot;&gt;실행 중인 프로그램(Program in Execution)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제는 프로그램을 실행할 때 메모리에 적재하고, CPU 스케줄링 대상이 되는 &lt;b&gt;하나의 독립된 작업 단위(프로세스)&lt;/b&gt; 로 관리&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;프로세스 구성 요소&lt;/h4&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;text-align: center;&quot;&gt;&lt;b&gt;구성 요소&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&amp;nbsp;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Code 영역&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;실행할 프로그램 명령어 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Data 영역&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;전역 변수, 정적 변수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Heap 영역&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;동적 할당된 메모리 공간 (new, malloc 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Stack 영역&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;함수 호출 시 지역 변수와 리턴 주소 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;PCB (Process Control Block)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;프로세스의 상태 정보를 저장하는 자료구조 (PID, 레지스터 값, 상태 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;PCB&lt;/b&gt;는 운영체제가 프로세스를 식별하고 관리하기 위한 핵심 구조&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 스레드(Thread)란?&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; font-size: 16px; letter-spacing: 0px;&quot;&gt;프로세스 내에서 &lt;/span&gt;&lt;b&gt;실제 작업을 수행하는 실행 흐름 단위&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 프로세스가 여러 스레드를 포함할 수 있으며, 이 스레드들이 동시에 실행되어 &lt;b&gt;병렬 처리(Parallel Processing)&lt;/b&gt; 를 수행&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;스레드 구성 요소&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 95px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;Stack&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;각 스레드별 독립적인 함수 호출 공간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;Program Counter (PC)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;스레드의 현재 실행 위치 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;Register Set&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;연산 중인 데이터 값 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;공유 자원&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;Code, Data, Heap 영역은 프로세스 내에서 공유&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;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 프로세스 vs 스레드 메모리 구조 비교&lt;/h3&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;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;메모리 영역&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;프로세스 간 공유 여부&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;스레드 간 공유 여부&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Code&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;❌&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Data&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;❌&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Heap&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;❌&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Stack&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;❌&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;❌ (각 스레드 독립)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 포인트:&lt;/b&gt;&lt;br /&gt;스레드는 Code, Data, Heap을 공유하지만 Stack은 독립적으로 가짐&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 멀티프로세스 vs 멀티스레드&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 114px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;멀티프로세스(Multi-Process)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;&amp;nbsp;멀티스레드(Multi-Thread)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;정의&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;여러 개의 프로세스를 동시에 실행&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;하나의 프로세스 내에서 여러 스레드 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;메모리 구조&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;프로세스 간 완전 분리&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;스레드 간 자원 공유&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;안정성 높음 (하나 죽어도 다른 프로세스 영향 X)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;자원 효율 높음, 빠른 통신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;단점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;오버헤드 큼 (메모리 많이 사용)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;한 스레드 오류 시 전체 프로세스에 영향&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;Chrome 탭별 독립 실행&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;하나의 워드프로세스 내 자동 저장, 맞춤법 검사 스레드&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;비유:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;멀티프로세스 = 여러 개의 독립된 집&lt;/li&gt;
&lt;li&gt;멀티스레드 = 한 집 안의 여러 방에서 동시에 일하는 사람들&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. 상태 전이 (Process State Transition)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로세스는 실행 중 다음과 같은 상태를 순환하며 변화&lt;/p&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;text-align: center; width: 29.7674%;&quot;&gt;&lt;b&gt;상태&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 70.1163%;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 29.7674%;&quot;&gt;&lt;b&gt;New&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 70.1163%;&quot;&gt;프로세스 생성 중&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 29.7674%;&quot;&gt;&lt;b&gt;Ready&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 70.1163%;&quot;&gt;실행 대기 (CPU 할당 기다림)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 29.7674%;&quot;&gt;&lt;b&gt;Running&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 70.1163%;&quot;&gt;CPU에서 실행 중&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 29.7674%;&quot;&gt;&lt;b&gt;Waiting(Blocked)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 70.1163%;&quot;&gt;I/O 등 이벤트 대기 중&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 29.7674%;&quot;&gt;&lt;b&gt;Terminated&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 70.1163%;&quot;&gt;실행 완료 및 종료&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre class=&quot;ada&quot;&gt;&lt;code&gt;New &amp;rarr; Ready &amp;rarr; Running &amp;rarr; Waiting &amp;rarr; Ready &amp;rarr; Terminated
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPU 스케줄러는 Ready 큐에서 프로세스를 선택해 CPU를 할당&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. 프로세스 간 통신(IPC)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로세스는 메모리를 공유하지 않기 때문에, &lt;b&gt;Inter-Process Communication (IPC)&lt;/b&gt; 방식으로 데이터를 주고받음&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 95px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;방식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;Pipe (파이프)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;부모&amp;ndash;자식 간 단방향 통신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;Message Queue&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;커널 공간에 메시지를 저장해 통신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;Shared Memory&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;동일한 메모리 영역을 여러 프로세스가 공유&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;Socket&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;네트워크 기반 프로세스 통신 (TCP/IP 기반)&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;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/OS</category>
      <category>OS</category>
      <category>멀티스레드</category>
      <category>멀티프로세스</category>
      <category>스레드</category>
      <category>운영체제</category>
      <category>프로세스</category>
      <author>rubii</author>
      <guid isPermaLink="true">https://rubii.tistory.com/147</guid>
      <comments>https://rubii.tistory.com/147#entry147comment</comments>
      <pubDate>Mon, 3 Nov 2025 12:23:03 +0900</pubDate>
    </item>
    <item>
      <title>패킷 전달 과정 (라우팅)</title>
      <link>https://rubii.tistory.com/146</link>
      <description>&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라우팅(Routing)은 네트워크에서 &lt;b&gt;데이터 패킷이 목적지까지 이동하는 경로를 결정하는 과정&lt;/b&gt;&lt;br /&gt;송신지에서 수신지로 가는 동안 여러 네트워크 장비(라우터, 게이트웨이 등)를 거치며 전달됨&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 95px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;패킷(Packet)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;전송되는 데이터의 단위 (네트워크 계층에서 사용)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;라우팅(Routing)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;패킷이 이동할 최적 경로를 선택하는 과정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;라우터(Router)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;네트워크 간 패킷 전달을 담당하는 장비&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;게이트웨이(Gateway)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;다른 네트워크로 나가는 출입구 역할&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 패킷 전달 기본 흐름&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시: PC(192.168.10.5) &amp;rarr; 웹 서버(203.0.113.10) 접속 과정&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;1. PC는 브라우저를 통해 HTTP 요청 생성
2. 전송 계층(TCP)이 데이터를 세그먼트로 분할
3. 네트워크 계층(IP)이 목적지 IP(203.0.113.10)를 지정해 패킷 생성
4. 패킷이 게이트웨이(라우터)로 전송
5. 라우터가 라우팅 테이블을 참조하여 다음 홉(Next Hop)으로 전달
6. 여러 라우터를 거쳐 목적지 네트워크로 이동
7. 수신 측 네트워크의 라우터가 서버(203.0.113.10)로 패킷 전달
8. 서버가 응답 패킷을 역방향으로 전송&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 라우팅 방식의 종류&lt;/h3&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;text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;정적 라우팅 (Static Routing)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;관리자가 수동으로 경로 지정&lt;/td&gt;
&lt;td&gt;단순&amp;middot;작은 네트워크에 적합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;동적 라우팅 (Dynamic Routing)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;라우터 간 정보 교환으로 자동 경로 결정&lt;/td&gt;
&lt;td&gt;대규모 네트워크에 적합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;디폴트 라우팅 (Default Routing)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;목적지 경로를 모를 때 지정된 기본 경로로 전달&lt;/td&gt;
&lt;td&gt;인터넷 접속 시 주로 사용 (0.0.0.0/0)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예: 가정용 공유기의 &amp;ldquo;기본 게이트웨이&amp;rdquo;가 바로 디폴트 라우팅&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 라우팅 테이블 (Routing Table)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라우터는 &lt;b&gt;라우팅 테이블(Routing Table)&lt;/b&gt; 을 기반으로&lt;br /&gt;&amp;ldquo;어떤 네트워크로 가려면 어디(Next Hop)로 보낼지&amp;rdquo;를 판단&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 72px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;목적지 네트워크&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;넷마스크&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;게이트웨이&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;인터페이스&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;메트릭&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;192.168.10.0&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;255.255.255.0&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;직접 연결&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;eth0&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;172.16.0.0&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;255.255.0.0&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;192.168.10.1&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;eth0&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;0.0.0.0&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;0.0.0.0&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;192.168.10.1&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;eth0&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;메트릭(Metric)&lt;/b&gt;: 경로 우선순위 (낮을수록 우선)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;0.0.0.0/0&lt;/b&gt;: 모든 목적지에 대한 기본 경로 (디폴트 게이트웨이)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 동적 라우팅 프로토콜&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라우터 간에 네트워크 경로 정보를 자동으로 교환하기 위해 사용됨&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 76px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;프로토콜&lt;br /&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;방식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;사용 계층&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;RIP (Routing Information Protocol)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;거리 벡터&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;홉 수 기반(최대 15홉), 단순하지만 느림&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;네트워크 계층&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;OSPF (Open Shortest Path First)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;링크 상태&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;대규모 네트워크에 적합, 빠른 수렴 속도&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;네트워크 계층&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;BGP (Border Gateway Protocol)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;경로 벡터&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;자율 시스템(AS) 간 라우팅, 인터넷 백본용&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;네트워크 계층&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;요약&lt;br /&gt;&lt;/b&gt;RIP: 거리 기반 (Distance Vector)&lt;br /&gt;OSPF: 링크 기반 (Link State)&lt;br /&gt;BGP: 경로 기반 (Path Vector)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. 라우팅 알고리즘 개념&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 76px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;알고리즘&lt;br /&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;적용 프로토콜&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;거리 벡터 알고리즘&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;인접 라우터와 거리 정보를 교환하여 최단 경로 계산&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;RIP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;링크 상태 알고리즘&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;전체 네트워크 맵을 기반으로 최단 경로 탐색 (Dijkstra 알고리즘 사용)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;OSPF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;경로 벡터 알고리즘&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;자율 시스템(AS) 간 경로 정보 교환 (정책 기반 라우팅)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;BGP&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. 패킷 전달 예시&lt;/h3&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;[PC 192.168.10.5]
   &amp;darr;
[공유기 192.168.10.1]
   &amp;darr; (ISP 네트워크)
[라우터 A]
   &amp;darr;
[라우터 B]
   &amp;darr;
[서버 203.0.113.10]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;동작 요약&lt;/b&gt;&lt;br /&gt;1. PC는 게이트웨이(192.168.10.1)로 패킷 전송&lt;br /&gt;2. 게이트웨이는 ISP의 상위 라우터로 전달&lt;br /&gt;3. 중간 라우터들은 각자의 라우팅 테이블을 참조해 다음 홉을 결정&lt;br /&gt;4. 목적지 네트워크에 도착하면 서버에 직접 전달&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;8. 라우팅과 스위칭의 차이&lt;/h3&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;text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;라우팅 (Routing)&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;스위칭 (Switching)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;동작 계층&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;네트워크 계층 (3계층)&lt;/td&gt;
&lt;td&gt;데이터 링크 계층 (2계층)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;식별 기준&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;IP 주소&lt;/td&gt;
&lt;td&gt;MAC 주소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;장비&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;라우터&lt;/td&gt;
&lt;td&gt;스위치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;기능&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;네트워크 간 패킷 전달&lt;/td&gt;
&lt;td&gt;같은 네트워크 내 프레임 전달&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스위치는 &amp;ldquo;LAN 내부 이동&amp;rdquo;, 라우터는 &amp;ldquo;LAN 간 이동&amp;rdquo;을 담당한다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;9. 핵심 요약&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;라우팅은 &lt;b&gt;패킷이 목적지까지 가는 경로를 결정하는 과정&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;라우터는 라우팅 테이블을 참조하여 다음 홉을 선택&lt;/li&gt;
&lt;li&gt;정적/동적/디폴트 라우팅 방식 존재&lt;/li&gt;
&lt;li&gt;동적 라우팅 프로토콜: &lt;b&gt;RIP, OSPF, BGP&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;스위칭은 LAN 내부, 라우팅은 네트워크 간 이동&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/Network</category>
      <category>bgp</category>
      <category>OSPF</category>
      <category>rip</category>
      <category>게이트웨이</category>
      <category>라우터</category>
      <category>라우팅</category>
      <category>패킷전달</category>
      <author>rubii</author>
      <guid isPermaLink="true">https://rubii.tistory.com/146</guid>
      <comments>https://rubii.tistory.com/146#entry146comment</comments>
      <pubDate>Sun, 2 Nov 2025 15:07:18 +0900</pubDate>
    </item>
    <item>
      <title>DNS 동작 원리</title>
      <link>https://rubii.tistory.com/145</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DNS(Domain Name System)는&lt;br /&gt;&lt;b&gt;도메인 이름(예: &lt;a href=&quot;http://www.google.com/&quot;&gt;www.google.com&lt;/a&gt;)&lt;/b&gt; 을 &lt;b&gt;IP 주소(예: 142.250.196.132)&lt;/b&gt; 로 변환해주는 시스템&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사람은 기억하기 쉬운 &amp;ldquo;이름&amp;rdquo;으로 접근하지만, 컴퓨터는 &amp;ldquo;숫자(IP 주소)&amp;rdquo;로 통신하기 때문에&lt;br /&gt;DNS는 이 둘을 연결하는 &lt;b&gt;인터넷 전화번호부&lt;/b&gt; 역할을 함&lt;/p&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;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;도메인 이름&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://www.google.com/&quot;&gt;www.google.com&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;사람이 인식하기 쉬운 주소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;IP 주소&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;142.250.196.132&lt;/td&gt;
&lt;td&gt;컴퓨터가 인식하는 주소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;변환 과정&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;도메인 &amp;rarr; IP&lt;/td&gt;
&lt;td&gt;DNS가 수행&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. DNS의 기본 개념&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DNS는 &lt;b&gt;분산형 계층 구조&lt;/b&gt;로 설계되어 있음.&lt;br /&gt;즉, 전 세계의 수많은 DNS 서버가 서로 역할을 나눠 도메인을 관리한다.&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%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;계층&lt;/td&gt;
&lt;td&gt;예시&lt;/td&gt;
&lt;td&gt;역할&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Root DNS&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;최상위 루트 서버 (전 세계에 13개 존재)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Top-Level Domain (TLD)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;.com, .net, .kr&lt;/td&gt;
&lt;td&gt;국가&amp;middot;기관별 도메인 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Authoritative DNS (권한 서버)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;google.com&lt;/td&gt;
&lt;td&gt;실제 IP 주소를 보유한 최종 서버&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Recursive Resolver (재귀 DNS)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;8.8.8.8, 1.1.1.1&lt;/td&gt;
&lt;td&gt;사용자의 요청을 받아 대신 질의 수행&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. DNS 동작 과정&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 웹 브라우저에 www.example.com 을 입력했을 때 DNS가 작동하는 순서&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. &lt;b&gt;브라우저 캐시 확인&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;먼저 로컬 캐시(브라우저, OS)에 이전 조회 결과가 있는지 확인&lt;/li&gt;
&lt;li&gt;있으면 바로 IP 주소 반환 &amp;rarr; DNS 질의 종료&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. &lt;b&gt;로컬 DNS(Recursive Resolver)에 요청&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;없으면, 로컬 네임서버(예: 8.8.8.8, 1.1.1.1)에 질의&lt;/li&gt;
&lt;li&gt;이 서버가 대신 여러 DNS 서버에 순차적으로 질의 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. &lt;b&gt;Root DNS 서버 질의&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;ldquo;.com 주소는 어디에 있어?&amp;rdquo; &amp;rarr; TLD 서버 주소를 알려줌&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. &lt;b&gt;TLD 서버 질의&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;ldquo;example.com의 주소는 어디야?&amp;rdquo; &amp;rarr; 권한 서버 주소를 알려줌&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. &lt;b&gt;Authoritative DNS 서버 질의&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;ldquo;www.example.com의 IP 주소는?&amp;rdquo; &amp;rarr; 실제 IP(예: 93.184.216.34) 응답&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. &lt;b&gt;결과 반환 및 캐싱&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로컬 DNS가 IP 주소를 사용자에게 전달&lt;/li&gt;
&lt;li&gt;결과는 일정 시간(TTL, Time To Live) 동안 캐시에 저장되어 재사용됨&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. DNS 동작 요약 다이어그램&lt;/h3&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;[사용자 브라우저]
   &amp;darr;
[로컬 DNS 서버]
   &amp;darr;
[Root DNS 서버]
   &amp;darr;
[TLD DNS 서버]
   &amp;darr;
[Authoritative DNS 서버]
   &amp;darr;
IP 주소 반환 &amp;rarr; [사용자 브라우저]
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. DNS 레코드 종류&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DNS는 단순히 도메인&amp;rarr;IP 변환뿐 아니라, 이메일, 서브도메인, 별칭 등 다양한 정보를 관리&lt;/p&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;text-align: center;&quot;&gt;&lt;b&gt;레코드 유형&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;A (Address)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;example.com &amp;rarr; 93.184.216.34&lt;/td&gt;
&lt;td&gt;도메인 &amp;rarr; IPv4 주소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;AAAA&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;example.com &amp;rarr; 2606:2800:220:1:248:1893:25c8:1946&lt;/td&gt;
&lt;td&gt;도메인 &amp;rarr; IPv6 주소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;CNAME (Canonical Name)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;www &amp;rarr; example.com&lt;/td&gt;
&lt;td&gt;별칭 도메인 설정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;MX (Mail Exchange)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;mail.example.com&lt;/td&gt;
&lt;td&gt;이메일 서버 주소 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;NS (Name Server)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;ns1.example.com&lt;/td&gt;
&lt;td&gt;도메인을 관리하는 네임서버 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;TXT&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&quot;v=spf1 include:_spf.google.com ~all&quot;&lt;/td&gt;
&lt;td&gt;도메인 검증용 텍스트 정보 (보안, 인증 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. DNS 캐싱과 TTL&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DNS 응답은 네트워크 부하를 줄이기 위해 일정 시간 동안 저장됨&lt;br /&gt;이때 저장 시간은 &lt;b&gt;TTL(Time To Live)&lt;/b&gt; 로 정의됨&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 94px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;height: 18px; text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 18px; text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;TTL&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;DNS 레코드가 캐시에 유지되는 시간(초 단위)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;캐시 위치&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;브라우저, OS, 로컬 DNS 서버 등&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;효과&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;반복 조회 시 속도 향상, 네트워크 부하 감소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;주의점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;IP 변경 시 TTL 만료 전까지는 이전 정보 사용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. DNS 보안 관련 개념&lt;/h3&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;text-align: center;&quot;&gt;&lt;b&gt;개념&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;DNS 스푸핑 (DNS Spoofing)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;공격자가 가짜 IP 주소를 응답시켜 사용자를 위조 사이트로 유도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;DNSSEC (DNS Security Extensions)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;DNS 응답에 &lt;b&gt;전자서명(Digital Signature)&lt;/b&gt; 을 추가해 위&amp;middot;변조 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;DoH (DNS over HTTPS)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;DNS 요청 자체를 HTTPS로 암호화하여 중간 공격 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;DoT (DNS over TLS)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;DNS 요청을 TLS로 보호하는 방식 (보안 강화 버전)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;8. 핵심 요약&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DNS = &lt;b&gt;도메인 이름 &amp;rarr; IP 주소 변환 시스템&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;구조: Root &amp;rarr; TLD &amp;rarr; Authoritative &amp;rarr; Resolver&lt;/li&gt;
&lt;li&gt;주요 레코드: A, CNAME, MX, NS, TXT&lt;/li&gt;
&lt;li&gt;TTL을 통해 캐시 성능 향상&lt;/li&gt;
&lt;li&gt;DNS 보안 강화 기술: &lt;b&gt;DNSSEC, DoH, DoT&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/Network</category>
      <category>dns</category>
      <category>DNS 동작원리</category>
      <author>rubii</author>
      <guid isPermaLink="true">https://rubii.tistory.com/145</guid>
      <comments>https://rubii.tistory.com/145#entry145comment</comments>
      <pubDate>Thu, 30 Oct 2025 12:46:31 +0900</pubDate>
    </item>
    <item>
      <title>HTTP vs HTTPS</title>
      <link>https://rubii.tistory.com/144</link>
      <description>&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 통신은 기본적으로 &lt;b&gt;HTTP (HyperText Transfer Protocol)&lt;/b&gt; 을 사용하지만,&lt;br /&gt;보안이 필요한 환경에서는 &lt;b&gt;HTTPS (HTTP Secure)&lt;/b&gt; 로 통신함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 프로토콜의 가장 큰 차이는 &lt;b&gt;데이터를 암호화하여 전송하느냐(HTTPS) vs 평문으로 전송하느냐(HTTP)&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 114px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;HTTP&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;HTTPS&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;포트 번호&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;80&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;443&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;암호화&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;없음 (평문 전송)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;SSL/TLS 기반 암호화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;보안성&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;낮음&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;속도&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;빠름&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;약간 느림 (암호화 과정 때문)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;URL 예시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;a href=&quot;http://example.com&quot;&gt;http://example.com&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;a href=&quot;https://example.com&quot;&gt;https://example.com&lt;/a&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;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. HTTP 동작 원리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP는 &lt;b&gt;클라이언트&amp;ndash;서버 모델&lt;/b&gt;로 동작.&lt;br /&gt;즉, 클라이언트(웹 브라우저)가 요청(Request)을 보내면, 서버가 응답(Response)을 돌려주는 구조.&lt;/p&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;[브라우저] &amp;rarr; HTTP 요청 &amp;rarr; [웹 서버]
[브라우저] &amp;larr; HTTP 응답 &amp;larr; [웹 서버]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP는 기본적으로 &lt;b&gt;비연결성(stateless)&lt;/b&gt; 이며, 요청이 끝나면 서버와의 연결이 바로 끊어짐&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. HTTPS 동작 원리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTPS는 &lt;b&gt;HTTP + SSL/TLS&lt;/b&gt; 가 결합된 프로토콜.&lt;br /&gt;HTTP 통신을 &lt;b&gt;암호화된 터널(Secure Tunnel)&lt;/b&gt; 안에서 수행.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;SSL/TLS란?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SSL(Secure Socket Layer) &amp;rarr; TLS(Transport Layer Security)로 발전&lt;/li&gt;
&lt;li&gt;데이터를 &lt;b&gt;암호화&amp;middot;복호화&lt;/b&gt;, &lt;b&gt;무결성 검증&lt;/b&gt;, &lt;b&gt;서버 인증&lt;/b&gt; 기능을 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;HTTPS 통신 과정 (핸드셰이크 과정 요약)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1️⃣ &lt;b&gt;클라이언트 헬로(Client Hello)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저가 서버에 &amp;ldquo;암호화 방식&amp;rdquo;과 &amp;ldquo;TLS 버전&amp;rdquo;을 제안함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2️⃣ &lt;b&gt;서버 헬로(Server Hello)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버가 사용할 암호화 방식을 선택하고&lt;br /&gt;&lt;b&gt;SSL 인증서(서버 공개키 포함)&lt;/b&gt; 를 클라이언트에 전송&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3️⃣ &lt;b&gt;인증서 검증 (CA 서명 확인)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저가 인증서를 발급한 기관(CA, Certificate Authority)의 신뢰성을 검증&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4️⃣ &lt;b&gt;세션키 생성 (대칭키 교환)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트와 서버가 협의한 방식으로 &lt;b&gt;임시 세션키&lt;/b&gt; 생성&lt;/li&gt;
&lt;li&gt;이 키로 이후 데이터 암호화 통신 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5️⃣ &lt;b&gt;암호화된 HTTP 통신 시작&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이제 실제 데이터(요청&amp;middot;응답)는 SSL 세션키로 암호화되어 전송됨&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;HTTP 데이터 &amp;harr; SSL/TLS 암호화 계층 &amp;harr; TCP/IP
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 인증서(Certificate) 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTPS 통신에는 &lt;b&gt;공인 인증서(SSL Certificate)&lt;/b&gt; 가 반드시 필요.&lt;br /&gt;이 인증서는 서버가 &amp;ldquo;나는 진짜 example.com이야&amp;rdquo;라고 신원 증명하는 역할을 함.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 114px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;발급 기관 (CA)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;인증서 서명 및 발급을 담당하는 신뢰 기관&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;공개키 (Public Key)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;데이터를 암호화할 때 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;개인키 (Private Key)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;서버만 알고 있는 복호화 키&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;유효 기간&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;인증서의 만료 기간 (보통 1년)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;도메인 정보&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;인증서가 적용되는 도메인(example.com 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  CA 예시: Let's Encrypt, DigiCert, GlobalSign, Sectigo 등&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/Network</category>
      <category>http</category>
      <category>https</category>
      <category>ssl</category>
      <category>TLS</category>
      <author>rubii</author>
      <guid isPermaLink="true">https://rubii.tistory.com/144</guid>
      <comments>https://rubii.tistory.com/144#entry144comment</comments>
      <pubDate>Tue, 28 Oct 2025 16:48:58 +0900</pubDate>
    </item>
    <item>
      <title>포트 번호와 프로토콜</title>
      <link>https://rubii.tistory.com/143</link>
      <description>&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포트(Port)는 &lt;b&gt;하나의 IP 주소 안에서 여러 프로그램(프로세스)을 구분하기 위한 논리적 번호&lt;/b&gt;&lt;br /&gt;IP가 &amp;ldquo;건물 주소&amp;rdquo;라면, 포트는 &amp;ldquo;건물 안의 각 방 번호&amp;rdquo;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCP/IP 네트워크에서는 &lt;b&gt;IP 주소 + 포트 번호&lt;/b&gt; 조합으로 통신이 이루어짐.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;예를 들어, 웹 브라우저가 &lt;a href=&quot;http://www.example.com에&quot;&gt;www.example.com에&lt;/a&gt; 접속할 때는 IP 주소를 찾은 후 &lt;b&gt;포트 80(HTTP)&lt;/b&gt; 으로 연결을 시도&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 76px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;IP 주소&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;192.168.0.10&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;컴퓨터(호스트) 자체의 주소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;포트 번호&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;80&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;특정 서비스(웹 서버)의 식별자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;조합&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;192.168.0.10:80&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;특정 서버의 특정 서비스에 연결&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 포트 번호 체계&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포트 번호는 16비트(0~65535) 정수로 표현되며, &lt;b&gt;세 가지 범위로 구분&lt;/b&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: 74px;&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;height: 17px; text-align: center;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: center;&quot;&gt;&lt;b&gt;범위&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;Well-known Port (공인 포트)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;0 ~ 1023&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;전 세계적으로 표준화된 주요 서비스용 포트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;Registered Port (등록 포트)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;1024 ~ 49151&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;일반 응용 프로그램에서 사용하는 등록 포트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;Dynamic / Private Port (임시 포트)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;49152 ~ 65535&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;클라이언트가 통신 시 임시로 사용하는 포트 (Ephemeral Port)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예: 웹 브라우저는 49152 이후의 &lt;b&gt;임시 포트&lt;/b&gt;를 사용해 서버의 80포트에 접속한다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 대표 프로토콜 포트 번호&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주요 포트(80, 443, 22, 25, 53 등)는 반드시 암기&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 266px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center; width: 26.3953%;&quot;&gt;&lt;b&gt;프로토콜&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center; width: 21.9767%;&quot;&gt;&lt;b&gt;포트 번호&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center; width: 19.7675%;&quot;&gt;&lt;b&gt;&amp;nbsp;사용 계층&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center; width: 31.6279%;&quot;&gt;&lt;b&gt;&amp;nbsp;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 26.3953%;&quot;&gt;&lt;b&gt;HTTP&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 21.9767%;&quot;&gt;&lt;b&gt;80&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 19.7675%;&quot;&gt;애플리케이션 계층&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.6279%;&quot;&gt;웹 페이지 전송 (암호화 X)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 26.3953%;&quot;&gt;&lt;b&gt;HTTPS&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 21.9767%;&quot;&gt;&lt;b&gt;443&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 19.7675%;&quot;&gt;애플리케이션 계층&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.6279%;&quot;&gt;보안 웹 통신 (SSL/TLS)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 26.3953%;&quot;&gt;&lt;b&gt;FTP (File Transfer Protocol)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 21.9767%;&quot;&gt;20, 21&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 19.7675%;&quot;&gt;애플리케이션 계층&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.6279%;&quot;&gt;파일 전송 (20=데이터, 21=제어)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 26.3953%;&quot;&gt;&lt;b&gt;SSH&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 21.9767%;&quot;&gt;&lt;b&gt;22&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 19.7675%;&quot;&gt;애플리케이션 계층&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.6279%;&quot;&gt;보안 원격 접속&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 26.3953%;&quot;&gt;&lt;b&gt;Telnet&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 21.9767%;&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 19.7675%;&quot;&gt;애플리케이션 계층&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.6279%;&quot;&gt;원격 접속 (암호화 X)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 26.3953%;&quot;&gt;&lt;b&gt;SMTP&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 21.9767%;&quot;&gt;&lt;b&gt;25&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 19.7675%;&quot;&gt;애플리케이션 계층&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.6279%;&quot;&gt;이메일 발신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 26.3953%;&quot;&gt;&lt;b&gt;POP3&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 21.9767%;&quot;&gt;110&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 19.7675%;&quot;&gt;애플리케이션 계층&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.6279%;&quot;&gt;이메일 수신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 26.3953%;&quot;&gt;&lt;b&gt;IMAP&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 21.9767%;&quot;&gt;143&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 19.7675%;&quot;&gt;애플리케이션 계층&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.6279%;&quot;&gt;이메일 수신(서버 동기화)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 26.3953%;&quot;&gt;&lt;b&gt;DNS&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 21.9767%;&quot;&gt;&lt;b&gt;53&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 19.7675%;&quot;&gt;애플리케이션 계층&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.6279%;&quot;&gt;도메인 이름 &amp;harr; IP 주소 변환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 26.3953%;&quot;&gt;&lt;b&gt;DHCP&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 21.9767%;&quot;&gt;67(서버), 68(클라이언트)&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 19.7675%;&quot;&gt;애플리케이션 계층&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.6279%;&quot;&gt;IP 자동 할당&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 26.3953%;&quot;&gt;&lt;b&gt;MySQL&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 21.9767%;&quot;&gt;3306&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 19.7675%;&quot;&gt;애플리케이션 계층&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.6279%;&quot;&gt;DB 접속 포트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 26.3953%;&quot;&gt;&lt;b&gt;HTTPS(SSL)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 21.9767%;&quot;&gt;443&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 19.7675%;&quot;&gt;전송 계층(TCP)&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.6279%;&quot;&gt;암호화된 HTTP 통신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 26.3953%;&quot;&gt;&lt;b&gt;RDP (원격 데스크톱)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 21.9767%;&quot;&gt;3389&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 19.7675%;&quot;&gt;애플리케이션 계층&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 31.6279%;&quot;&gt;윈도우 원격 제어&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. TCP vs UDP 비교&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포트 번호는 TCP와 UDP 모두에서 사용됨.&lt;br /&gt;둘 다 전송 계층 프로토콜이지만, &lt;b&gt;데이터 전송 방식이 다름&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 133px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;TCP (Transmission Control Protocol)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;UDP (User Datagram Protocol)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;연결 방식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;연결지향 (3-way handshake)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;비연결형&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;신뢰성&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;전송 보장 (재전송, 순서 제어)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;보장 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;속도&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;느림&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;빠름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;데이터 단위&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;세그먼트 (Segment)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;데이터그램 (Datagram)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;흐름 제어&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;있음&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;대표 사용 서비스&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;HTTP, HTTPS, FTP, SMTP&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;DNS, DHCP, 스트리밍, 게임&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심:&lt;/b&gt;&lt;br /&gt;TCP는 신뢰성이 중요한 서비스(파일 전송, 웹), UDP는 지연이 중요한 서비스(동영상, 실시간 통신)에 사용&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 포트 충돌과 방화벽 개념&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(1) 포트 충돌 (Port Conflict)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일한 포트 번호를 &lt;b&gt;여러 프로그램이 동시에 사용하려 하면 충돌&lt;/b&gt;이 발생&lt;br /&gt;&amp;rarr; 서버에서는 하나의 포트에 하나의 프로세스만 바인딩(bind) 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예: 웹 서버(Apache)가 80포트를 이미 사용 중일 때, 다른 웹 서버(Nginx)가 같은 포트를 사용하려 하면 실행 불가.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(2) 방화벽(Firewall)과 포트 제어&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보안 장비나 OS 방화벽에서는 &lt;b&gt;포트 허용/차단 규칙&lt;/b&gt;을 설정해 외부 접근을 제어&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 81.2791%; height: 67px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 38.8372%; text-align: center;&quot;&gt;&lt;b&gt;상황&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 42.3256%; text-align: center;&quot;&gt;&lt;b&gt;결과&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 38.8372%;&quot;&gt;TCP 22 (SSH) 허용&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 42.3256%;&quot;&gt;원격 접속 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 38.8372%;&quot;&gt;TCP 3306 (MySQL) 차단&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 42.3256%;&quot;&gt;외부 DB 접근 불가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; width: 38.8372%;&quot;&gt;TCP 80, 443 허용&lt;/td&gt;
&lt;td style=&quot;height: 19px; width: 42.3256%;&quot;&gt;웹 트래픽만 허용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 서버 보안에서는 &lt;b&gt;필요한 포트만 열고 나머지는 기본 차단&lt;/b&gt;하는 것이 원칙&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;</description>
      <category>Computer Science/Network</category>
      <category>dns</category>
      <category>http</category>
      <category>https</category>
      <category>ssh</category>
      <category>tcp</category>
      <category>udp</category>
      <category>방화벽</category>
      <category>프로토콜</category>
      <author>rubii</author>
      <guid isPermaLink="true">https://rubii.tistory.com/143</guid>
      <comments>https://rubii.tistory.com/143#entry143comment</comments>
      <pubDate>Tue, 21 Oct 2025 18:39:55 +0900</pubDate>
    </item>
    <item>
      <title>IP주소와 서브넷 마스크 + 예제 문제</title>
      <link>https://rubii.tistory.com/142</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IP주소는 네트워크 상에서 &lt;b&gt;각 장치를 식별하기 위한 고유 주소&lt;/b&gt;이며&lt;br /&gt;데이터가 목적지까지 도달하기 위해 반드시 필요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IP는 계층적으로 구성되어 있고 &lt;b&gt;네트워크 주소 + 호스트 주소&lt;/b&gt;로 나뉨&lt;br /&gt;또한 네트워크를 효율적으로 분할하기 위해 &lt;b&gt;서브넷 마스크(Subnet Mask)&lt;/b&gt; 가 함께 사용됨&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. IP주소의 구조&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 114px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;IP 버전&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;IPv4 (&lt;b&gt;32&lt;/b&gt;비트, &lt;b&gt;4옥텟&lt;/b&gt;), IPv6 (&lt;b&gt;128&lt;/b&gt;비트, 8그룹 16진수)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;표기 방식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;IPv4: 192.168.0.1 / IPv6: 2001:0db8::1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;구성 요소&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;네트워크 ID + 호스트 ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;역할&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;네트워크 ID는 네트워크 구분, 호스트 ID는 해당 네트워크 내 장치 식별&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;단위&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;1옥텟 = 8비트 &amp;rarr; IPv4 전체 32비트 (예: 192.168.10.25 &amp;rarr; 11000000.10101000.00001010.00011001)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. IP주소 클래스(Class)&lt;/h3&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: 114px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;범위&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;기본 서브넷 마스크&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;A 클래스&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;0.0.0.0 ~ 127.255.255.255&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;255.0.0.0 (/8)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;대규모 네트워크용 (정부, 대기업 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;B 클래스&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;128.0.0.0 ~ 191.255.255.255&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;255.255.0.0 (/16)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;중형 네트워크용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;C 클래스&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;192.0.0.0 ~ 223.255.255.255&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;255.255.255.0 (/24)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;소규모 네트워크용 (가정, 일반 기업)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;D 클래스&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;224.0.0.0 ~ 239.255.255.255&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;-&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;멀티캐스트용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;E 클래스&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;240.0.0.0 ~ 255.255.255.255&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;-&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;연구&amp;middot;실험용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고: 실제 인터넷에서 사용 가능한 주소는 &lt;b&gt;A~C 클래스&lt;/b&gt;이며, D와 E는 특수 목적&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 서브넷 마스크 (Subnet Mask)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브넷 마스크는 IP주소 중 &lt;b&gt;네트워크 부분과 호스트 부분을 구분하기 위한 값&lt;/b&gt;&lt;br /&gt;1은 네트워크 비트를, 0은 호스트 비트를 의미&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;IP 주소: 192.168.10.25  
서브넷 마스크: 255.255.255.0  
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 255 부분은 네트워크 영역(1), 0은 호스트 영역(0)&lt;br /&gt;&amp;rarr; 이 경우 앞의 24비트(192.168.10)가 네트워크, 마지막 8비트가 호스트&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. CIDR 표기법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CIDR(Classless Inter-Domain Routing)은 기존의 클래스(A, B, C) 개념을 대신해 &lt;b&gt;네트워크 비트 수를 /숫자 형태로 표현하는 방식&lt;/b&gt;&lt;br /&gt;즉, / 뒤의 숫자는 &amp;ldquo;앞에서부터 몇 비트가 네트워크 영역인지&amp;rdquo;를 뜻함.&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: 76px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;192.168.10.0/24&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;앞의 24비트는 네트워크, 나머지 8비트는 호스트 &amp;rarr; &lt;b&gt;총 2⁸ = 256개의 주소 조합 (254개 사용 가능)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;10.0.0.0/8&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;A클래스 기본 서브넷. 네트워크 8비트 + 호스트 24비트 &amp;rarr; &lt;b&gt;2&amp;sup2;⁴ = 16,777,216개 주소 조합&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;172.16.0.0/16&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;B클래스 기본 서브넷. 네트워크 16비트 + 호스트 16비트 &amp;rarr; &lt;b&gt;2&amp;sup1;⁶ = 65,536개 주소 조합&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;CIDR 계산 원리&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IPv4 주소는 항상 &lt;b&gt;32비트(= 4옥텟)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;/ 뒤 숫자는 네트워크 비트 수&lt;/li&gt;
&lt;li&gt;&lt;b&gt;남은 비트는 호스트 부분&lt;/b&gt; &amp;rarr; 호스트 수 계산 가능&lt;/li&gt;
&lt;/ul&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;text-align: center; width: 11.7442%;&quot;&gt;&lt;b&gt;CIDR&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 18.3721%;&quot;&gt;&lt;b&gt;네트워크 비트&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 17.4418%;&quot;&gt;&lt;b&gt;호스트 비트&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 21.7442%;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;전체 IP 수&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 30.5814%;&quot;&gt;&lt;b&gt;사용 가능 IP 수(&amp;minus;2)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 11.7442%;&quot;&gt;&lt;b&gt;/24&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;24&lt;/td&gt;
&lt;td style=&quot;width: 17.4418%;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;width: 21.7442%;&quot;&gt;2⁸ = 256&lt;/td&gt;
&lt;td style=&quot;width: 30.5814%;&quot;&gt;254&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 11.7442%;&quot;&gt;&lt;b&gt;/25&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;25&lt;/td&gt;
&lt;td style=&quot;width: 17.4418%;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;width: 21.7442%;&quot;&gt;2⁷ = 128&lt;/td&gt;
&lt;td style=&quot;width: 30.5814%;&quot;&gt;126&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 11.7442%;&quot;&gt;&lt;b&gt;/26&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;26&lt;/td&gt;
&lt;td style=&quot;width: 17.4418%;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;width: 21.7442%;&quot;&gt;2⁶ = 64&lt;/td&gt;
&lt;td style=&quot;width: 30.5814%;&quot;&gt;62&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 11.7442%;&quot;&gt;&lt;b&gt;/27&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;27&lt;/td&gt;
&lt;td style=&quot;width: 17.4418%;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;width: 21.7442%;&quot;&gt;2⁵ = 32&lt;/td&gt;
&lt;td style=&quot;width: 30.5814%;&quot;&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center; width: 11.7442%;&quot;&gt;&lt;b&gt;/28&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;28&lt;/td&gt;
&lt;td style=&quot;width: 17.4418%;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 21.7442%;&quot;&gt;2⁴ = 16&lt;/td&gt;
&lt;td style=&quot;width: 30.5814%;&quot;&gt;14&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맨 처음 주소(모두 0)는 &lt;b&gt;네트워크 주소&lt;/b&gt;, 맨 마지막 주소(모두 1)는 &lt;b&gt;브로드캐스트 주소&lt;/b&gt;로 예약되어 사용 불가&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;CIDR 정리&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CIDR 표기법은 &lt;b&gt;유연한 네트워크 분할(Subnetting)&lt;/b&gt; 을 가능하게 함.&lt;/li&gt;
&lt;li&gt;/ 뒤 숫자가 &lt;b&gt;커질수록 네트워크는 세분화되고, 호스트 수는 줄어듬&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;예: /24 &amp;rarr; /25 &amp;rarr; /26 &amp;rarr; /27 로 갈수록 네트워크는 2배씩 늘고, 각 네트워크 내 호스트 수는 절반씩 감소한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. 서브넷 분할&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브넷 분할은 호스트 부분에서 몇 비트를 &amp;lsquo;빌려서&amp;rsquo; 네트워크로 바꾸는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, , &lt;b&gt;하나의 큰 네트워크를 여러 개의 작은 네트워크(서브넷)로 나누는 과정&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목표: 192.168.10.0 네트워크를 4개의 서브넷으로 나누기&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 112px;&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;height: 17px; text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; text-align: center;&quot;&gt;&lt;b&gt;값&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;기본 서브넷 마스크&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;255.255.255.0 (/24)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;필요한 서브넷 수&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;4개 &amp;rarr; 추가 비트 2개 필요 (2&amp;sup2; = 4)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;새 서브넷 마스크&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;255.255.255.192 (/26)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;각 서브넷 크기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;64 IP 주소 (62개 사용 가능)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;서브넷 범위&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;192.168.10.0 ~ 192.168.10.63 / 192.168.10.64 ~ 192.168.10.127 / &lt;br /&gt;192.168.10.128 ~ 192.168.10.191 / 192.168.10.192 ~ 192.168.10.255&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;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;비트를 빌린다는 뜻&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;/24의 경우, &lt;b&gt;앞 24비트가 네트워크 / 뒤 8비트가 호스트&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[ 네트워크 24비트 ][ 호스트 8비트 ]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;여기서 &lt;b&gt;호스트 비트 2개를 네트워크 비트로 빌리면&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[ 네트워크 26비트 ][ 호스트 6비트 ]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;즉, &lt;b&gt;네트워크가 2&amp;sup2; = 4개로 늘어나고&lt;/b&gt;, 각 네트워크 안에서 쓸 수 있는 &lt;b&gt;호스트 수는 2⁶ &amp;minus; 2 = 62개&lt;/b&gt;가 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;새 서브넷 마스크가 255.255.255.192(/26)이 되는 이유&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 /24는&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;11111111.11111111.11111111.00000000
&amp;rarr; 255.255.255.0
&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;4개의 서브넷을 만들기 위해&lt;br /&gt;&amp;rarr; 호스트 비트 8개 중 &lt;b&gt;2비트를 네트워크 비트로 전환&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;dns&quot;&gt;&lt;code&gt;11111111.11111111.11111111.11000000
&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;마지막 옥텟 11000000을 10진수로 바꾸면&lt;/p&gt;
&lt;pre class=&quot;basic&quot;&gt;&lt;code&gt;128 + 64 = 192
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 새로운 서브넷 마스크는&lt;/p&gt;
&lt;pre class=&quot;accesslog&quot;&gt;&lt;code&gt;255.255.255.192 &amp;rarr; /26
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 앞의 26비트가 네트워크 영역이고, 마지막 6비트가 호스트 영역이 됨&lt;br /&gt;(2⁶ &amp;minus; 2 = 62개의 호스트 가능)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;왜 64씩 증가할까?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브넷의 &amp;ldquo;증가 간격(블록 크기)&amp;rdquo;은 다음 공식으로 계산&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;256 &amp;minus; 서브넷 마스크의 마지막 옥텟 값 = 블록 크기&lt;/b&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시로 /26은&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서브넷 마스크: 255.255.255.192&lt;/li&gt;
&lt;li&gt;마지막 옥텟 = 192&lt;/li&gt;
&lt;li&gt;블록 크기 = 256 &amp;minus; 192 = &lt;b&gt;64&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉,&lt;/p&gt;
&lt;pre class=&quot;accesslog&quot;&gt;&lt;code&gt;192.168.10.0  
192.168.10.64  
192.168.10.128  
192.168.10.192
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 &lt;b&gt;64씩 증가하면서 4개의 네트워크 구간이 생성&lt;/b&gt;되는 것&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;각 서브넷 상세 구조&lt;/h4&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;text-align: center;&quot;&gt;&lt;b&gt;서브넷 번호&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;네트워크 주소&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;브로드캐스트 주소&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;사용 가능한 IP 범위&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;192.168.10.0&lt;/td&gt;
&lt;td&gt;192.168.10.63&lt;/td&gt;
&lt;td&gt;192.168.10.1 ~ 192.168.10.62&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;192.168.10.64&lt;/td&gt;
&lt;td&gt;192.168.10.127&lt;/td&gt;
&lt;td&gt;192.168.10.65 ~ 192.168.10.126&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;192.168.10.128&lt;/td&gt;
&lt;td&gt;192.168.10.191&lt;/td&gt;
&lt;td&gt;192.168.10.129 ~ 192.168.10.190&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;4&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;192.168.10.192&lt;/td&gt;
&lt;td&gt;192.168.10.255&lt;/td&gt;
&lt;td&gt;192.168.10.193 ~ 192.168.10.254&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;서브넷 분할 정리&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;호스트 비트를 네트워크로 빌릴수록&lt;/b&gt; 서브넷은 많아지고, 각 서브넷 내 호스트는 줄어듬&lt;/li&gt;
&lt;li&gt;&lt;b&gt;증가 단위(블록 크기)&lt;/b&gt; 는 256에서 마지막 옥텟 값을 뺀 수로 계산&lt;/li&gt;
&lt;li&gt;네트워크 주소는 모든 호스트 비트가 0, 브로드캐스트 주소는 모든 호스트 비트가 1&lt;/li&gt;
&lt;li&gt;/24 &amp;rarr; /25 &amp;rarr; /26 &amp;rarr; /27 로 갈수록 &lt;b&gt;서브넷 수는 2배, 호스트 수는 절반&lt;/b&gt;이 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. 공인 IP와 사설 IP&lt;/h3&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;text-align: center; width: 18.9535%;&quot;&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 44.0698%;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 36.8604%;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 18.9535%;&quot;&gt;&lt;b&gt;공인 IP (Public IP)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 44.0698%;&quot;&gt;인터넷 서비스 제공업체(ISP)가 부여하는 고유 주소. &lt;br /&gt;외부 인터넷 통신 가능.&lt;/td&gt;
&lt;td style=&quot;width: 36.8604%;&quot;&gt;예: 203.252.123.10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 18.9535%;&quot;&gt;&lt;b&gt;사설 IP (Private IP)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 44.0698%;&quot;&gt;내부 네트워크에서만 사용되는 주소. 인터넷 직접 접속 불가.&lt;/td&gt;
&lt;td style=&quot;width: 36.8604%;&quot;&gt;예: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  사설 IP는 NAT(Network Address Translation)을 통해 공인 IP로 변환되어 외부와 통신&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;8. 브로드캐스트 주소와 네트워크 주소&lt;/h3&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;text-align: center;&quot;&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;예시 (/24 기준)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;네트워크 주소&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;네트워크 전체를 대표하는 주소. 모든 호스트 비트가 0.&lt;/td&gt;
&lt;td&gt;192.168.10.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;브로드캐스트 주소&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;네트워크 내 모든 호스트에게 데이터 전송 시 사용. 모든 호스트 비트가 1.&lt;/td&gt;
&lt;td&gt;192.168.10.255&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;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;9. 핵심 요약&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IP주소 = &lt;b&gt;네트워크 ID + 호스트 ID&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;서브넷 마스크는 두 영역을 구분&lt;/li&gt;
&lt;li&gt;CIDR 표기법으로 유연한 서브넷 관리 가능&lt;/li&gt;
&lt;li&gt;공인 IP &amp;harr; 사설 IP 변환은 NAT를 통해 수행&lt;/li&gt;
&lt;li&gt;네트워크 주소와 브로드캐스트 주소는 예약되어 사용 불가&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;10. 관련 개념 정리&lt;/h3&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;text-align: center;&quot;&gt;&lt;b&gt;개념&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;게이트웨이 (Gateway)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;내부 네트워크와 외부 네트워크를 연결하는 장치 (일반적으로 라우터)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;DNS (Domain Name System)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;도메인 이름을 IP 주소로 변환하는 시스템&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;DHCP (Dynamic Host Configuration Protocol)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;IP주소를 자동으로 할당하는 프로토콜&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;11. IP주소 계산 문제 예시&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예제 1. 서브넷 개수와 호스트 수 구하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;br /&gt;IP 주소가 192.168.10.0/26인 네트워크가 있다.&lt;br /&gt;이 네트워크의&lt;br /&gt;① 서브넷 개수&lt;br /&gt;② 각 서브넷당 사용 가능한 호스트 수를 구하시오.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1️⃣ /26 &amp;rarr; 서브넷 마스크: 255.255.255.192&lt;br /&gt;(기본 /24에서 &lt;b&gt;2비트 추가 차용&lt;/b&gt; &amp;rarr; 2⁶⁴, 즉 블록 크기 64)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2️⃣ &lt;b&gt;서브넷 개수 계산&lt;/b&gt;&lt;br /&gt;추가된 비트 수 = 2 &amp;rarr; 서브넷 수 = 2&amp;sup2; = &lt;b&gt;4개&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3️⃣ &lt;b&gt;호스트 수 계산&lt;/b&gt;&lt;br /&gt;남은 비트 = 6 &amp;rarr; 호스트 수 = 2⁶ - 2 = &lt;b&gt;62개&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4️⃣ &lt;b&gt;결과&lt;/b&gt;&lt;/p&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;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;값&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;서브넷 수&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;4개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;호스트 수 (서브넷당)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;62개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;서브넷 범위&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;192.168.10.0 /26192.168.10.64 /26192.168.10.128 /26192.168.10.192 /26&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;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;예제 2. 네트워크 주소와 브로드캐스트 주소 구하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;br /&gt;IP 주소 172.16.35.200/20 의 네트워크 주소와 브로드캐스트 주소를 구하시오.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1️⃣ /20 &amp;rarr; 서브넷 마스크: 255.255.240.0 &amp;rarr; 네트워크 비트 20개, 호스트 비트 12개&lt;/p&gt;
&lt;pre class=&quot;dns&quot;&gt;&lt;code&gt;11111111.11111111.11110000.00000000
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2️⃣ &lt;b&gt;블록 크기 계산&lt;/b&gt;&lt;br /&gt;마지막 옥텟(세 번째)에서 네트워크 비트는 4개(11110000)&lt;br /&gt;즉 남은 4비트가 호스트 영역.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블록 크기 = 256 &amp;minus; 240 = &lt;b&gt;16 -&amp;gt;&lt;/b&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;따라서 &lt;/span&gt;&lt;b&gt;세 번째 옥텟이 16 단위로 증가&lt;/b&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;한다.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;...0.0  
...16.0  
...32.0  
...48.0  
...64.0 ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 각 서브넷의 네트워크 주소는&lt;br /&gt;172.16.0.0, 172.16.16.0, 172.16.32.0, 172.16.48.0, &amp;hellip; 이런 식으로 생김&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3️⃣ &lt;b&gt;172.16.35.200은 어디에 속하나?&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;35는 16 &amp;times; 2 = 32보다 크고, 16 &amp;times; 3 = 48보다 작음&lt;br /&gt;&amp;rarr; 즉, &lt;b&gt;32와 48 사이 구간에 속함&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서&lt;br /&gt;  &lt;b&gt;네트워크 주소 = 172.16.32.0&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4️⃣ &lt;b&gt;브로드캐스트 주소 계산&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 블록 크기는 16이므로, 다음 네트워크 주소 바로 앞이 브로드캐스트 주소&lt;br /&gt;&amp;rarr; 32 + 16 = 48 &amp;rarr; 그 직전인 &lt;b&gt;47&lt;/b&gt;이 마지막 네트워크 영역임.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;네트워크: 172.16.32.0  
브로드캐스트: 172.16.47.255
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5️⃣ &lt;b&gt;유효 호스트 범위&lt;/b&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%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;값&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;네트워크 주소&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;172.16.32.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;브로드캐스트 주소&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;172.16.47.255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;유효 호스트 범위&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;172.16.32.1 ~ 172.16.47.254&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;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;풀이 팁 정리&amp;nbsp;&lt;/h3&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;text-align: center;&quot;&gt;&lt;b&gt;개념&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;공식 / 기억법&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;서브넷 개수&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;2ⁿ (n = 차용한 비트 수)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;호스트 수&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;2ʰ - 2 (h = 남은 비트 수)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;블록 크기&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;256 - (서브넷 마스크 해당 옥텟 값)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;네트워크 주소&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;호스트 비트를 0으로 채운 값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;브로드캐스트 주소&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;호스트 비트를 1로 채운 값&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/Network</category>
      <category>cidr</category>
      <category>IP주소</category>
      <category>네트워크 주소</category>
      <category>브로드캐스트</category>
      <category>서브넷마스크</category>
      <author>rubii</author>
      <guid isPermaLink="true">https://rubii.tistory.com/142</guid>
      <comments>https://rubii.tistory.com/142#entry142comment</comments>
      <pubDate>Thu, 16 Oct 2025 12:59:43 +0900</pubDate>
    </item>
    <item>
      <title>TCP/IP 4계층 구조</title>
      <link>https://rubii.tistory.com/141</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCP/IP 모델은 실제 인터넷 통신에서 사용되는 프로토콜 구조로, OSI 7계층을 4단계로 단순화한 형태&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 계층은 데이터 전송의 역할을 분담하여 하위 계층의 서비스를 이용하고 상위 계층에 서비스를 제공&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCP/IP는 실질적으로 &lt;b&gt;인터넷 표준 통신 모델&lt;/b&gt;로 사용되고 있으며 데이터 전송의 효율성과 확장성을 고려해 설계됨.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. TCP/IP 4계층 구조&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 209px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.5814%; height: 38px;&quot;&gt;&lt;b&gt;계층&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 21.6278%; height: 38px;&quot;&gt;&lt;b&gt;주요 기능&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 16.2791%; height: 38px;&quot;&gt;&lt;b&gt;데이터 단위&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 46.9768%; height: 38px;&quot;&gt;&lt;b&gt;대표 프로토콜&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.4186%; height: 38px;&quot;&gt;&lt;b&gt;대응되는 OSI 계층&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.5814%; height: 38px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 21.6278%; text-align: center; height: 38px;&quot;&gt;애플리케이션 계층&lt;br /&gt;(Application Layer)&lt;/td&gt;
&lt;td style=&quot;width: 16.2791%; text-align: center; height: 38px;&quot;&gt;사용자 서비스 제공&lt;/td&gt;
&lt;td style=&quot;width: 46.9768%; text-align: center; height: 38px;&quot;&gt;HTTP(웹 통신), HTTPS(보안 웹 통신), FTP(파일 전송),&lt;br /&gt;SMTP(이메일 발신), POP3(이메일 수신), DNS(도메인 해석),&lt;br /&gt;SSH(원격 접속)&lt;/td&gt;
&lt;td style=&quot;width: 9.4186%; text-align: center; height: 38px;&quot;&gt;5~7계층&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.5814%; height: 38px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;width: 21.6278%; text-align: center; height: 38px;&quot;&gt;전송 계층&lt;br /&gt;(Transport Layer)&lt;/td&gt;
&lt;td style=&quot;width: 16.2791%; text-align: center; height: 38px;&quot;&gt;종단 간 신뢰성 확보&lt;/td&gt;
&lt;td style=&quot;width: 46.9768%; text-align: center; height: 38px;&quot;&gt;TCP(연결지향, 신뢰성 보장), UDP(비연결형, 빠른 전송)&lt;/td&gt;
&lt;td style=&quot;width: 9.4186%; text-align: center; height: 38px;&quot;&gt;4계층&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.5814%; height: 38px;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 21.6278%; text-align: center; height: 38px;&quot;&gt;인터넷 계층&lt;br /&gt;(Internet Layer)&lt;/td&gt;
&lt;td style=&quot;width: 16.2791%; text-align: center; height: 38px;&quot;&gt;패킷 라우팅, &lt;br /&gt;IP 주소 관리&lt;/td&gt;
&lt;td style=&quot;width: 46.9768%; text-align: center; height: 38px;&quot;&gt;IP(주소 지정 및 라우팅), ICMP(오류 보고 및 진단),&lt;br /&gt;ARP(IP &amp;harr; MAC 변환)&lt;/td&gt;
&lt;td style=&quot;width: 9.4186%; text-align: center; height: 38px;&quot;&gt;3계층&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 57px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.5814%; height: 57px;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 21.6278%; text-align: center; height: 57px;&quot;&gt;네트워크 액세스 계층&lt;br /&gt;(Network Access Layer)&lt;/td&gt;
&lt;td style=&quot;width: 16.2791%; text-align: center; height: 57px;&quot;&gt;물리 매체를 통한 &lt;br /&gt;데이터 전송&lt;/td&gt;
&lt;td style=&quot;width: 46.9768%; text-align: center; height: 57px;&quot;&gt;Ethernet(유선 LAN), Wi-Fi(무선 LAN), PPP(점대점 연결)&lt;/td&gt;
&lt;td style=&quot;width: 9.4186%; text-align: center; height: 57px;&quot;&gt;1~2계층&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;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 데이터 흐름 과정&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;HTTP 요청을 예로 들면, 데이터는 다음과 같이 흐흠&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;애플리케이션 계층:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;브라우저가 HTTP 요청 메시지를 생성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;전송 계층:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;TCP가 데이터를 세그먼트로 분할하고 포트 번호 부여&lt;/li&gt;
&lt;li&gt;&lt;b&gt;인터넷 계층:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;IP 주소를 이용해 패킷을 라우팅&lt;/li&gt;
&lt;li&gt;&lt;b&gt;네트워크 액세스 계층:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;프레임을 전기 신호로 변환해 실제 전송&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;수신 측에서는 반대 방향(1 &amp;rarr; 4)으로 데이터를 복원&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 각 계층별 정리&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;① 애플리케이션 계층 (Application Layer)&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 133px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;역할&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;사용자에게 직접 서비스를 제공. OSI의 응용, 표현, 세션 계층 기능을 모두 포함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;데이터 단위&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;데이터(Data)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;height: 38px; text-align: center;&quot;&gt;&lt;b&gt;대표 프로토콜&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 38px;&quot;&gt;&lt;b&gt;HTTP / HTTPS&lt;/b&gt;(웹 문서 전송 및 보안 통신), &lt;b&gt;FTP&lt;/b&gt;(파일 전송), &lt;b&gt;SMTP / POP3&lt;/b&gt;(메일 송수신),&lt;br /&gt;&lt;b&gt;DNS&lt;/b&gt;(도메인 이름 해석), &lt;b&gt;SSH&lt;/b&gt;(원격 접속)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;기능 요약&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;애플리케이션 간 데이터 송수신, 메시지 포맷 정의&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;사용자가 웹 브라우저를 통해 HTTP 요청을 전송할 때 동작&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;② 전송 계층 (Transport Layer)&lt;/h4&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;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;역할&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;송신지와 수신지 간 &lt;b&gt;종단 간(end-to-end)&lt;/b&gt; 데이터 전달을 담당. 데이터 분할, 순서 제어, 오류 제어 수행.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;데이터 단위&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;세그먼트(Segment)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;대표 프로토콜&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;TCP&lt;/b&gt;(연결지향, 신뢰성 보장), &lt;b&gt;UDP&lt;/b&gt;(비연결형, 빠른 전송)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;기능 요약&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;포트 번호 관리, 흐름 제어, 오류 복구, 순서 재조립, 혼잡 제어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;예시&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;웹 페이지 전송(TCP), 동영상 스트리밍(UDP), DNS 요청(UDP)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;③ 인터넷 계층 (Internet Layer)&lt;/h4&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;text-align: center;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;역할&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;패킷의 논리적 주소(IP)를 이용하여 목적지까지 경로를 설정하고 전달&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;데이터 단위&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;패킷(Packet)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;대표 프로토콜&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;IP&lt;/b&gt;(주소 지정 및 라우팅), &lt;b&gt;ICMP&lt;/b&gt;(오류 보고 및 진단), &lt;b&gt;ARP&lt;/b&gt;(IP &amp;harr; MAC 주소 변환)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;대표 장비&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;라우터(Router)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;기능 요약&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;IP 주소 관리, 라우팅, 경로 선택, 패킷 단편화 및 재조립&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;b&gt;오류 유형&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;IP 충돌, 라우팅 루프, TTL 만료 등&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;④ 네트워크 액세스 계층 (Network Access Layer)&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 133px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;내용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;역할&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;실제 물리적 네트워크 매체를 통해 데이터를 전송. OSI의 물리&amp;middot;데이터 링크 계층 기능을 수행.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;데이터 단위&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;프레임(Frame) / 비트(Bit)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;대표 프로토콜&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;Ethernet&lt;/b&gt;(유선 LAN), &lt;b&gt;Wi-Fi (IEEE 802.11)&lt;/b&gt;(무선 LAN), &lt;b&gt;PPP&lt;/b&gt;(점대점 연결)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;대표 장비&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;스위치(Switch), 허브(Hub), NIC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;기능 요약&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;물리 신호 변환, MAC 주소 기반 통신, 오류 검출, 재전송&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 19px;&quot;&gt;&lt;b&gt;오류 유형&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;케이블 불량, 신호 감쇠, CRC 오류&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;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 정리&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;TCP/IP는 실제 인터넷 통신의 &lt;b&gt;표준 프로토콜 구조&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;OSI보다 단순하지만 &lt;b&gt;현실적인 모델&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;각 계층은 &lt;b&gt;명확한 역할 분담&lt;/b&gt;을 통해 데이터 전송 효율성을 극대화&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/Network</category>
      <category>TCP/IP</category>
      <category>TCP/IP 4계층</category>
      <category>네트워크 구조</category>
      <author>rubii</author>
      <guid isPermaLink="true">https://rubii.tistory.com/141</guid>
      <comments>https://rubii.tistory.com/141#entry141comment</comments>
      <pubDate>Wed, 15 Oct 2025 11:48:25 +0900</pubDate>
    </item>
  </channel>
</rss>