<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>dmori_2562.log</title>
        <link>https://velog.io/</link>
        <description>어제보다 더 나은 오늘의 나를 위해 달려나가는 중입니다!</description>
        <lastBuildDate>Mon, 12 Dec 2022 09:03:06 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>dmori_2562.log</title>
            <url>https://images.velog.io/images/dmori_2562/profile/ef008d67-4641-4558-be42-3c7f5c097e70/KakaoTalk_20220319_220918090.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. dmori_2562.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/dmori_2562" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Intra-ISP 라우팅 프로토콜: OSPF]]></title>
            <link>https://velog.io/@dmori_2562/Intra-ISP-%EB%9D%BC%EC%9A%B0%ED%8C%85-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-OSPF</link>
            <guid>https://velog.io/@dmori_2562/Intra-ISP-%EB%9D%BC%EC%9A%B0%ED%8C%85-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-OSPF</guid>
            <pubDate>Mon, 12 Dec 2022 09:03:06 GMT</pubDate>
            <description><![CDATA[<h1 id="network-layer">Network layer</h1>
<hr>
<h2 id="확장-가능한-라우팅에-대한-인터넷-접근-방식">확장 가능한 라우팅에 대한 인터넷 접근 방식</h2>
<p>라우터를 &quot;Autonomous Systems&quot;(AS)로 알려진 영역으로 통합 (일명: &quot;ISP or domain&quot;)
<img src="https://velog.velcdn.com/images/dmori_2562/post/685c9738-66e9-4a92-86b9-9da5ef97cfbe/image.png" alt=""></p>
<ol>
<li><p>Intra-AS routing</p>
<blockquote>
<ul>
<li>동일한 AS(&quot;네트워크&quot;)에 있는 <strong>호스트, 라우터</strong> 간 라우팅</li>
</ul>
</blockquote>
<ul>
<li>AS의 모든 라우터가 동일한 도메인 내 프로토콜을 실행해야 함</li>
<li>서로 다른 AS에 있는 라우터가 서로 다른 도메인 내 라우팅 프로토콜을 실행할 수 있음</li>
<li><strong>게이트웨이 라우터</strong>: 자체 AS의 &quot;가장자리&quot;에 다른 AS의 라우터에 대한 링크가 있음</li>
</ul>
</li>
<li><p>Inter-AS routing</p>
<blockquote>
<ul>
<li><strong>AS</strong> 간 라우팅</li>
</ul>
</blockquote>
<ul>
<li><p>게이트웨이는 intra-domain 라우팅뿐만 아니라 inter-domain 라우팅도 수행합니다.</p>
<p>Forwarding table</p>
<blockquote>
<ul>
<li>intra-와 inter-AS 라우팅으로 결정되어진다.</li>
</ul>
</blockquote>
</li>
<li><p><strong>AS 내</strong> 목적지에 대한 항목: intra-AS 라우팅에서 결정</p>
</li>
<li><p><strong>외부</strong> 목적지에 대한 항목: intra-AS 및 inter-AS가 결정</p>
</li>
</ul>
</li>
</ol>
<hr>
<h2 id="intra-as-라우팅">Intra-AS 라우팅</h2>
<p>Interior Gateway Protocols(IGP)라고도 불린다</p>
<p>종류</p>
<blockquote>
<ul>
<li>RIP: Routing Information Protocol</li>
</ul>
</blockquote>
<ul>
<li>OSPF: Open Shortest Path First</li>
<li>IGRP: Interior Gateway Routing Protocol</li>
</ul>
<h3 id="ospf">OSPF</h3>
<p>&quot;open&quot;: 공개적으로 사용 가능</p>
<blockquote>
<ul>
<li>LS 알고리즘을 사용</li>
</ul>
</blockquote>
<ul>
<li>링크 상태 패킷 배포</li>
<li>각 노드에 topology map</li>
<li>다익스트라 알고리즘을 사용하여 경로를 계산</li>
</ul>
<p>라우터는 전체 AS의 다른 모든 라우터에 OSPF 링크 상태 알림을 플러딩한다.</p>
<p>IS-IS 라우팅 프로토콜: OSPF와 거의 동일.</p>
<h3 id="ospf의-계층-구조">OSPF의 계층 구조</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/655f2a3e-c69c-4ebc-a06c-15103084913a/image.png" alt=""></p>
<p>두 단계의 계층</p>
<ul>
<li>local area</li>
<li>backbone<blockquote>
<ul>
<li>링크 상태 알림은 오직 area 안에서만 작동.</li>
<li>각 노드는 자세한 area topology를 가지고 있다.</li>
</ul>
</blockquote>
</li>
</ul>
<p>용어 정리</p>
<blockquote>
<ul>
<li>Area border routers: 자신의 영역에 있는 네트워크까지의 거리를 &quot;요약&quot;하고, 다른 영역 경계 라우터에 광고합니다.</li>
</ul>
</blockquote>
<ul>
<li>Backbone routers: OSPF 라우팅을 backbone으로 제한하여 실행합니다.</li>
<li>Boundary routers: 다른 AS들과 연결되어있다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[라우팅 프로토콜]]></title>
            <link>https://velog.io/@dmori_2562/%EB%9D%BC%EC%9A%B0%ED%8C%85-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C</link>
            <guid>https://velog.io/@dmori_2562/%EB%9D%BC%EC%9A%B0%ED%8C%85-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C</guid>
            <pubDate>Mon, 12 Dec 2022 08:22:02 GMT</pubDate>
            <description><![CDATA[<h1 id="network-layer">Network Layer</h1>
<hr>
<h2 id="라우팅-프로토콜의-목적">라우팅 프로토콜의 목적</h2>
<p>: 송신 호스트부터 수신 호스트까지 네트워크의 라우터를 통하는 &quot;좋은&quot; 경로를 결정하는 것.</p>
<p>경로: 패킷이 지나는 라우터의 순서</p>
<h2 id="그래프">그래프</h2>
<ul>
<li><p>G = (N, E)</p>
</li>
<li><p>N = 라우터의 집합</p>
</li>
<li><p>E = 이음선의 집합</p>
</li>
<li><p>c(x, x&#39;) = 이음선(x, x&#39;)의 비용</p>
</li>
</ul>
<p>u와 z 사이에 최소 비용 경로에 대해 라우팅 알고리즘을 통해 찾는다.</p>
<h2 id="라우팅-알고리즘의-분류">라우팅 알고리즘의 분류</h2>
<ol>
<li><p>정보(Global vs Decentralized)</p>
<p> Global:</p>
<blockquote>
<ul>
<li>모든 라우터가 비용과 관련한 정보를 알고 있음</li>
</ul>
</blockquote>
<ul>
<li><p>&quot;link state&quot; 알고리즘</p>
<p>Decentralized:</p>
<blockquote>
<ul>
<li>라우터는 근처에 연결된 라우터의 비용만 알고 있음</li>
</ul>
</blockquote>
</li>
<li><p>계산의 반복 프로세스, 이웃과의 정보 교환</p>
</li>
<li><p>&quot;distance vector&quot; 알고리즘</p>
</li>
</ul>
</li>
<li><p>정적(static) vs 동적(static)</p>
<p> static:</p>
<blockquote>
<ul>
<li>경로는 매우 느리게 변한다</li>
</ul>
</blockquote>
<p> dynamic:</p>
<blockquote>
<ul>
<li>경로가 매우 빠르게 변한다<blockquote>
<ul>
<li>주기적으로 업데이트</li>
<li>비용 변할 때, 반응</li>
</ul>
</blockquote>
</li>
</ul>
</blockquote>
</li>
</ol>
<hr>
<h2 id="link-state-알고리즘">link-state 알고리즘</h2>
<p>다익스트라 알고리즘!</p>
<blockquote>
<ul>
<li>모든 노드에 경로와 그 비용이 알려져 있다.</li>
</ul>
</blockquote>
<ul>
<li>한 출발지 노드에서 모든 다른 노드로의 최소 비용 경로를 계산</li>
<li>반복 횟수: k번 반복할 시, 최소 k개의 목적지에 대한 최소 경로를 지닌다.</li>
</ul>
<p>용어 정리</p>
<blockquote>
<ul>
<li>c(x,y): 노드 x부터 y까지의 링크 비용
단, 연결되지 않을 시 INF로 지정.</li>
</ul>
</blockquote>
<ul>
<li>D(v): 출발지에서 목적지 v까지의 현재 비용</li>
<li>p(v): 출발지에서 목적지 v로의 경로를 따른 이전 노드</li>
<li>N&#39;: 최소 비용 경로가 명확하게 알려진 노드 집합</li>
</ul>
<h3 id="예제-1">예제 1</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/32df44db-a2e8-4d56-a442-e1ec30edb7e4/image.png" alt=""></p>
<h3 id="예제-2">예제 2</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/29b77733-e83f-4cc6-a6b3-98d5293542ae/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/28e5e79c-7fc0-43b8-beb9-9d6963900836/image.png" alt=""></p>
<h3 id="추가-정보">추가 정보</h3>
<p>알고리즘의 시간 복잡도: O(n^2)
-&gt; O(nlogn)까지 향상 가능.</p>
<p><strong>진동</strong>이 가능하다.
<img src="https://velog.velcdn.com/images/dmori_2562/post/fba61a20-c2b6-4d9f-8471-88616cdd6211/image.png" alt=""></p>
<hr>
<h2 id="distance-vector-알고리즘">Distance vector 알고리즘</h2>
<p>Bellman-Ford 방정식
<img src="https://velog.velcdn.com/images/dmori_2562/post/f36a6fe1-e3d1-40b5-b8e9-e7b0e959b852/image.png" alt=""></p>
<h3 id="작동-방식">작동 방식</h3>
<p>node x:</p>
<ul>
<li>각 이웃으로의 비용에 대해 알고있다</li>
<li>이웃의 거리 벡터를 유지</li>
</ul>
<br>

<p>핵심 아이디어:</p>
<ul>
<li>때때로, 각 노드는 자신의 거리 벡터 추정치를 이웃에게 보냅니다.</li>
<li>x가 인접 네트워크로부터 새 DV 추정치를 수신하면 B-F를 사용하여 자체 DV를 업데이트합니다. <blockquote>
<p>방정식:
<img src="https://velog.velcdn.com/images/dmori_2562/post/69fe12b3-87eb-4cca-a1f6-5ed728a9625d/image.png" alt=""></p>
</blockquote>
</li>
</ul>
<blockquote>
<p>사소한 자연 조건 하에서 추정 𝐷(𝑦)는 실제 최소 비용 𝑑(𝑦)으로 수렴!</p>
</blockquote>
<br>

<p><img src="https://velog.velcdn.com/images/dmori_2562/post/ec057f64-2630-4290-8e63-3c2cefbbafd1/image.png" alt=""></p>
<p>반복, 비동기: 각 로컬 반복은 다음과 같이 발생합니다.</p>
<blockquote>
<ul>
<li>지역 링크 비용의 변화</li>
</ul>
</blockquote>
<ul>
<li>인접 네트워크의 DV 업데이트 메시지</li>
</ul>
<p>분산:</p>
<blockquote>
<ul>
<li>각 노드는 노드의 DV가 변경되었을 때만, 이웃에게 알린다.</li>
</ul>
</blockquote>
<ul>
<li>이웃들은 그들의 이웃에게 필요할경우 알린다.</li>
</ul>
<h3 id="예제-1-1">예제 1</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/d54e8a17-b32f-4e55-8a4c-47aba303ccbf/image.png" alt=""></p>
<h3 id="링크-비용-변화">링크 비용 변화</h3>
<ul>
<li>노드는 지역 링크 비용의 변화를 감지한다.</li>
<li>라우팅 정보를 업데이트하고, DV를 재계산한다.</li>
<li>DV가 변할경우, 주위에 알린다.</li>
</ul>
<h4 id="좋은-뉴스는-빨리-퍼진다">좋은 뉴스는 빨리 퍼진다</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/38dbe001-f984-4bdb-b1d3-954f4dbf90e4/image.png" alt="">
<img src="https://velog.velcdn.com/images/dmori_2562/post/04425579-11c4-4be0-b1c3-53c3901be019/image.png" alt=""></p>
<h4 id="나쁜-뉴스는-느리게-퍼진다">나쁜 뉴스는 느리게 퍼진다.</h4>
<p>count to infinity 문제</p>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/7aa01017-f103-47d7-991e-72ed05b38f9e/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/0b43ba81-825b-41b7-a315-da1a1d1fa86c/image.png" alt=""></p>
<h4 id="해결방안">해결방안</h4>
<p>poisoned reverse 방식!</p>
<blockquote>
<p>만약 Z가 Y를 지나 X로 간다고 하자.
Z -&gt; Y -&gt; X
이때, Z는 Y에게 Z에서 X로 가는 비용이 무한하다고 알린다.</p>
</blockquote>
<p>하지만 이 방식또한 완전하게 해결하는 것은 아니다.</p>
<h2 id="ls와-dv-알고리즘의-비교">LS와 DV 알고리즘의 비교</h2>
<p><strong>메시지 복잡성</strong></p>
<ul>
<li>LS: N개의 노드, E개의 이음선, O(N*E) 메시지를 보낸다.</li>
<li>DV: 이웃끼리만 교환한다.</li>
</ul>
<p><strong>수렴 속도</strong></p>
<ul>
<li><p>LS: O(N^2) 알고리즘은 O(N*E)개의 메시지가 필요하다</p>
<blockquote>
<p>진동을 가질 수도 있다.</p>
</blockquote>
</li>
<li><p>DV: 수렴 시간은 달라진다.</p>
<blockquote>
<ul>
<li>routing loops가 있을 수 있다.</li>
<li>count-to-infinity 문제</li>
</ul>
</blockquote>
</li>
</ul>
<p><strong>견고성: 라우터가 오작동하면 어떻게 됩니까?</strong></p>
<ul>
<li><p>LS:</p>
<blockquote>
<ul>
<li>노드는 잘못된 비용을 광고한다.</li>
<li>각 노드는 각자의 테이블만 계산한다.</li>
</ul>
</blockquote>
</li>
<li><p>DV:</p>
<blockquote>
<ul>
<li>노드는 잘못된 경로 비용을 광고한다.</li>
<li>각 노드의 테이블은 다른 노드들에 의해서 사용된다. </li>
<li>오류가 네트워크를 통해 전파됨</li>
</ul>
</blockquote>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[라우터 내부에 무엇이 있을까?]]></title>
            <link>https://velog.io/@dmori_2562/%EB%9D%BC%EC%9A%B0%ED%84%B0-%EC%95%88%EC%97%90-%EB%AC%B4%EC%97%87%EC%9D%B4-%EC%9E%88%EB%8A%94%EA%B0%80</link>
            <guid>https://velog.io/@dmori_2562/%EB%9D%BC%EC%9A%B0%ED%84%B0-%EC%95%88%EC%97%90-%EB%AC%B4%EC%97%87%EC%9D%B4-%EC%9E%88%EB%8A%94%EA%B0%80</guid>
            <pubDate>Tue, 06 Dec 2022 13:59:24 GMT</pubDate>
            <description><![CDATA[<h1 id="라우터의-구조">라우터의 구조</h1>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/1fe79167-8f1a-4a8e-85ca-0f7d219ee51f/image.png" alt=""></p>
<ul>
<li><p>입력 포트</p>
</li>
<li><p>Switch fabric</p>
</li>
<li><p>출력 포트</p>
</li>
</ul>
<br>

<hr>
<h2 id="입력-포트의-기능">입력 포트의 기능</h2>
<img src="https://velog.velcdn.com/images/dmori_2562/post/828b5f62-3e30-408d-a29e-5d8e7289b775/image.png" width ="600px">

<h3 id="1-line-termination">1. line termination</h3>
<ul>
<li><p>물리적 계층(Physical layer)에 해당</p>
</li>
<li><p>비트 레벨 수신</p>
</li>
</ul>
<h3 id="2-link-layer-protocol">2. link layer protocol</h3>
<ul>
<li><p>데이터 링크 계층(Data link layer)에 해당</p>
</li>
<li><p>ex) Ethernet</p>
</li>
</ul>
<h3 id="3-decentralized-switching">3. Decentralized Switching</h3>
<ol>
<li>Lookup: Datagram의 목적지 주소로 입력포트 메모리에 있는 Forwarding table을 이용하여 출력 포트를 검색한다. </li>
</ol>
<blockquote>
<p>목적: &#39;라인 속도&#39;로 입력 포트 processing 완료</p>
</blockquote>
<blockquote>
<p><strong>Longest prefix matching</strong>
<img src="https://velog.velcdn.com/images/dmori_2562/post/21f11530-3c2d-4165-8eca-20b4df7abbd4/image.png" alt="">
지정된 destination 주소에 대한 forwarding table 항목을 찾을 때, destination 주소와 일치하는 가장 긴 address prefix 사용</p>
</blockquote>
<ol start="2">
<li>Forwarding</li>
</ol>
<blockquote>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/b37e8200-d645-4531-8be0-45a75b739502/image.png" alt=""></p>
</blockquote>
<ul>
<li>destination-based forwarding: 목적지의 IP 주소만을 활용하여 forward</li>
<li>generalized forwarding: 헤더 필드 값을 통해서 forward</li>
</ul>
<ol start="3">
<li>Queuing: datagram이 forwarding 속도보다 빠를경우 진행</li>
</ol>
<br>

<hr>
<h2 id="switch-fabric의-기능">Switch fabric의 기능</h2>
<p>라우터의 <strong>핵심</strong>이라고 볼 수 있다.</p>
<p>패킷이 실제로 이 fabric을 통해 입력 포트에서 출력 포트로 전환된다.</p>
<h3 id="switching의-종류">Switching의 종류</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/9cc74b2a-9ec3-4c71-a6ca-13dd48236a28/image.png" alt=""></p>
<blockquote>
<p>대기열 지연(queueing delay)과 손실(loss) -&gt; 입력 버퍼의 overflow로 발생!</p>
</blockquote>
<blockquote>
<p><strong>Head-of-the-Line (HOL) blocking</strong>
<img src="https://velog.velcdn.com/images/dmori_2562/post/5c8adb88-ec29-4c33-9194-1000f68c1152/image.png" alt="">
대기열 앞에 대기 중인 데이터그램은 대기열에 있는 다른 사람들이 앞으로 이동하지 못하게 한다.</p>
</blockquote>
<br>

<hr>
<h2 id="출력-포트의-기능">출력 포트의 기능</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/ae396581-b2a6-46e0-b6dd-0f12090186f8/image.png" alt=""></p>
<ul>
<li>Buffering: datagram이 전송 속도(transmission rate)보다 빠르게 도착할 때 필요!</li>
</ul>
<blockquote>
<p>Datagram (packets)은 혼잡과 버퍼 용량 부족으로 인해 손실될 수 있다.</p>
</blockquote>
<br>

<h3 id="스케쥴링-규칙">스케쥴링 규칙</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/eb15063b-5d2a-4c4a-9683-fc73d9f5db96/image.png" alt=""></p>
<p>스케쥴링: 링크로 보낼 다음 패킷을 선택한다.</p>
<h4 id="1-fifofirst-in-first-out">1. FIFO(First In First Out)</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/cda631d2-e435-464b-8880-d5d54d7f8b26/image.png" alt=""></p>
<ul>
<li><p>큐에 도착한 순서대로 전송</p>
</li>
<li><p>FCFS(First Come First Served)라고도 불린다.</p>
</li>
</ul>
<h4 id="2-priority">2. Priority</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/0d5dff54-ab98-426c-bfe4-8a3489335894/image.png" alt=""></p>
<ul>
<li><p>다른 우선순위를 가진 여러 개의 클래스(대기열)</p>
</li>
<li><p>클래스는 marking 또는 기타 헤더 정보(예: source/destination의 IP, 포트 번호 등)에 따라 달라진다.</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/4e735cd6-9b0a-4e4a-95b9-927731956ed8/image.png" alt=""></p>
<ul>
<li>우선순위가 가장 높은 대기열 패킷을 전송</li>
</ul>
<h4 id="3-round-robinrr">3. Round Robin(RR)</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/8e5132d2-c4cd-40b3-aff7-897fc6bbde4e/image.png" alt=""></p>
<ul>
<li><p>여러 개의 대기열</p>
</li>
<li><p>주기적으로 클래스 대기열 검색, 각 클래스에서 하나의 전체 패킷 전송(사용 가능한 경우)</p>
<blockquote>
<p>너 한번, 나 한번!</p>
</blockquote>
</li>
</ul>
<h4 id="4-weighted-fair-queuingwfq">4. Weighted Fair Queuing(WFQ)</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/717cd140-c864-44b3-b437-49bc49c57116/image.png" alt=""></p>
<ul>
<li><p>Round Robin의 일반화 버전</p>
</li>
<li><p>각 클래스는 각 사이클에서 가중된 서비스 양을 얻는다.</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[네트워크 계층 개요에 대해서]]></title>
            <link>https://velog.io/@dmori_2562/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B3%84%EC%B8%B5-%EA%B0%9C%EC%9A%94</link>
            <guid>https://velog.io/@dmori_2562/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B3%84%EC%B8%B5-%EA%B0%9C%EC%9A%94</guid>
            <pubDate>Mon, 05 Dec 2022 12:19:01 GMT</pubDate>
            <description><![CDATA[<h2 id="네트워크-계층">네트워크 계층</h2>
<img src="https://velog.velcdn.com/images/dmori_2562/post/28176a0b-c0aa-435f-a585-aae3463a4919/image.png" width="400px">

<p>송신에서 수신 호스트로 세그먼트 전송</p>
<ul>
<li><p>송신 측: 세그먼트를 캡슐화</p>
</li>
<li><p>수신 측: 전송 계층으로 세그먼트 전달</p>
</li>
</ul>
<br>

<p>네트워크 계층 프로토콜은 모든 호스트, 라우터에 존재한다. </p>
<ul>
<li>라우터는 그것을 통과하는 모든 IP 데이터그램의 헤더 필드를 검사한다.</li>
</ul>
<br>

<h2 id="네트워크-계층의-기능">네트워크 계층의 기능</h2>
<ul>
<li><p>Forwarding: 라우터 입력에서 적절한 라우터 출력으로 패킷 이동</p>
</li>
<li><p>Routing: 패킷이 source에서 destination으로 이동하는 경로 결정</p>
</li>
</ul>
<br>

<h2 id="네트워크-계층-data-plane-control-plane">네트워크 계층: data plane, control plane</h2>
<h3 id="data-plane">Data plane</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/008be774-7de4-4e2e-aa0e-a48bd89f2400/image.png" alt=""></p>
<ul>
<li><p>지역적으로 라우터마다 기능.</p>
</li>
<li><p>라우터 입력 포트에 도착하는 데이터그램이 라우터 출력 포트로 전달되는 방법을 결정</p>
</li>
<li><p>forwarding</p>
</li>
</ul>
<h3 id="control-plane">Control plane</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/bb3ffca7-ea14-4be5-babd-a61cc6da5e33/image.png" alt=""></p>
<ul>
<li><p>네트워크적으로 넓게 기능</p>
</li>
<li><p>source에서 destination까지의 종단 경로를 따라 라우터 간에 데이터그램이 라우팅되는 방법을 결정</p>
</li>
</ul>
<blockquote>
<p>방법의 두 가지</p>
</blockquote>
<ul>
<li>traditional 라우팅 알고리즘: 라우터에서 제공</li>
<li>software-defined networking (SDN): 서버에서 제공</li>
</ul>
<h4 id="the-traditional-approach">The Traditional Approach</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/58b584df-2198-462c-b044-6d5483f29b27/image.png" alt=""></p>
<p>각 라우터 및 모든 라우터의 개별 라우팅 알고리즘 구성요소가 제어부에서 상호작용한다.</p>
<h4 id="the-sdn-approach">The SDN Approach</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/b4db7abd-2b5b-452d-adb3-2b355841b9ec/image.png" alt=""></p>
<p>고유한(일반적으로 원격) 컨트롤러가 로컬 제어 에이전트(CA)와 상호작용한다.</p>
<br>

<h2 id="네트워크-서비스-모델">네트워크 서비스 모델</h2>
<p>네트워크 서비스 모델은 송신 호스트와 수신 호스트 간 패킷의 종단간 전송 특성을 정의한다.</p>
<ul>
<li><p>Guaranteed 전송 </p>
</li>
<li><p>제한된 delay로 Guaranteed 전송</p>
</li>
<li><p>순서대로 패킷 전송</p>
</li>
<li><p>최소 대역폭 보장</p>
</li>
<li><p>보안</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TCP 혼잡 제어에 대해서]]></title>
            <link>https://velog.io/@dmori_2562/TCP-%ED%98%BC%EC%9E%A1-%EC%A0%9C%EC%96%B4%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C</link>
            <guid>https://velog.io/@dmori_2562/TCP-%ED%98%BC%EC%9E%A1-%EC%A0%9C%EC%96%B4%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C</guid>
            <pubDate>Mon, 05 Dec 2022 05:41:44 GMT</pubDate>
            <description><![CDATA[<h1 id="전송-계층transport-layer">전송 계층(Transport-Layer)</h1>
<hr>
<h1 id="end-to-end-혼잡-제어">End-to-end 혼잡 제어</h1>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/03ee099d-dec6-4033-8383-b8d665d05c2b/image.png" alt=""></p>
<blockquote>
<p>송신자는 손실이 발생할 때까지 사용 가능한 대역폭을 탐색하여 전송 속도(전송 크기)를 증가시킵니다.</p>
</blockquote>
<ul>
<li><p>congestion window - cwnd로 표기</p>
</li>
<li><p>additive 증가: 손실이 감지될 때까지 RTT마다 1MSS씩 cwnd 증가</p>
</li>
<li><p>multiplicative 감소: 손실이 감지된 뒤, cwnd를 절반으로 감소 </p>
</li>
</ul>
<br>

<h2 id="혼잡-제어-원리">혼잡 제어: 원리</h2>
<p>송신자에서 작동하는 TCP 혼잡 제어 메커니즘은 congestion window(cwnd)라는 추가 변수를 추적한다.</p>
<blockquote>
<p><strong>cwnd</strong>: TCP 송신자가 네트워크로 트래픽을 보낼 수 있는 속도에 제약을 가한다.</p>
</blockquote>
<br>

<p>특히, 송신자의 unacked 데이터 양은 최소 cwnd 및 rwnd를 초과할 수 없다.</p>
<pre><code>LastByteSent - LastByteAcked &lt;= min(cwnd, rwnd)</code></pre><blockquote>
<p>하지만 우리는 rwnd는 고려하지 않고, <strong>cwnd의 값에만 집중</strong>하기로 한다!</p>
</blockquote>
<br>

<h2 id="혼잡-제어-세부사항">혼잡 제어: 세부사항</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/8064be13-d273-41e9-a525-0c6c2bd1c078/image.png" alt="">
송신자는 전송을 제한한다.</p>
<blockquote>
<p>TCP의 전송 속도: cwnd/RTT (bytes/sec)</p>
</blockquote>
<ul>
<li>cwnd 바이트만큼 전송하고, RTT시간동안 ACK를 기다린다.</li>
<li>그 후, 바이트를 더 보낸다.</li>
</ul>
<p>TCP 혼잡 제어 알고리즘은 3가지 요소가 존재한다.</p>
<ul>
<li><p>slow start(느린 시작)</p>
</li>
<li><p>congestion avoidance(혼잡 회피)</p>
</li>
<li><p>fast recovery(빠른 회복)</p>
</li>
</ul>
<hr>
<h3 id="1-tcp-slow-start">1. TCP Slow Start</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/9dc8a466-30da-4e12-9b19-6eebc8f74ce1/image.png" alt=""></p>
<p>연결을 시작했을 때, 손실이 발생하기 전까지 기하급수적으로 속도를 증가시킨다.</p>
<ul>
<li><p>처음 cwnd: 1 MSS</p>
</li>
<li><p>RTT마다 cwnd를 2배로 늘린다.</p>
</li>
<li><p>수신된 모든 ACK에 대해 cwnd를 증가시킴으로써 수행된다.</p>
</li>
</ul>
<blockquote>
<p>초기 속도는 느리지만 기하급수적으로 빠르게 증가한다!</p>
</blockquote>
<br>

<h3 id="2-congestion-avoidance">2. Congestion Avoidance</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/a306582d-38e7-4d10-9392-932ca8a9c8c2/image.png" alt="">
혼잡 방지(congestion-avoidance) 상태로 진입할 때,</p>
<ul>
<li><p>cwnd의 값은 정체가 마지막으로 발생했을 때의 값의 약 절반이다.</p>
</li>
<li><p>TCP는 RTT마다 cwnd 값을 두 배로 증가시키는 것보다 더 보수적인 접근 방식을 채택하고 RTT마다 단 하나의 MSS만큼 cwnd 값을 증가시킨다.</p>
</li>
</ul>
<br>

<h3 id="3-fast-recovery">3. Fast Recovery</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/2523ac6c-21f1-4416-b714-ae85f2b1006f/image.png" alt=""></p>
<ul>
<li><p>손실이 발생했을 때, cwnd의 값을 절반으로 감소시킨 뒤, +3한 값을 cwnd로 설정한다.</p>
</li>
<li><p>fast recovery에서 cwnd의 값은 중복 ACK마다 1MSS씩 증가한다.</p>
</li>
<li><p>추천되지만, 요구사항은 아니다!</p>
</li>
</ul>
<h3 id="총-정리">총 정리</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/b1e7f4fe-433e-4415-a550-603d12779f87/image.png" alt=""></p>
<hr>
<h2 id="tcp-fairness">TCP Fairness</h2>
<h3 id="목적">목적</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/91ae1e72-0246-4478-835d-3e665f0fe5cd/image.png" alt=""></p>
<p>K개의 TCP 세션이 대역폭 R의 동일한 bottleneck(병목 링크)를 공유하는 경우, 각 세션은 평균 R/K 속도를 가져야 한다.</p>
<br>

<h3 id="방법">방법</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/161df19e-5b23-455b-bfb9-3e047d1af566/image.png" alt=""></p>
<p>두 개의 경쟁 세션이 있을 때,</p>
<ul>
<li>Additive increase는 전체적으로 증가함에 따라 기울기가 1이 된다.</li>
<li>Multiplicative decrease는 처리량을 비례적으로 감소시킨다.</li>
</ul>
<hr>
<h1 id="network-assisted-혼잡-제어">Network-assisted 혼잡 제어</h1>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/0600eb9f-605a-4ea1-9f1b-9b4bdc387457/image.png" alt=""></p>
<p>Explicit Congestion Notification(ECN)</p>
<p>이름만 알아두고 넘어갑시다~</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[혼잡 제어의 원리에 대해서]]></title>
            <link>https://velog.io/@dmori_2562/%ED%98%BC%EC%9E%A1-%EC%A0%9C%EC%96%B4%EC%9D%98-%EC%9B%90%EB%A6%AC%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C</link>
            <guid>https://velog.io/@dmori_2562/%ED%98%BC%EC%9E%A1-%EC%A0%9C%EC%96%B4%EC%9D%98-%EC%9B%90%EB%A6%AC%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C</guid>
            <pubDate>Mon, 05 Dec 2022 04:48:28 GMT</pubDate>
            <description><![CDATA[<h1 id="전송-계층transport-layer">전송 계층(Transport-Layer)</h1>
<hr>
<p>혼잡 제어에 대해 알기 위해서는 혼잡(congestion)이 무엇인지 알아야겠죠?</p>
<img src="https://velog.velcdn.com/images/dmori_2562/post/3e23b90e-77c3-4898-bd76-610df256c8d1/image.png" width="400px">

<br>


<h1 id="혼잡congestion이란">혼잡(Congestion)이란?</h1>
<p>너무 많은 <strong>송신자</strong>가 너무 많은 <strong>데이터</strong>를 너무 <strong>빠르게</strong> 네트워크에 보내는 것</p>
<blockquote>
<p>흐름 제어(flow control)와는 다르다!</p>
</blockquote>
<p>혼잡의 징후</p>
<ul>
<li><p>패킷의 손실 (라우터에서의 버퍼의 넘침)</p>
</li>
<li><p>긴 지연 (라우터 버퍼에서의 지연)</p>
</li>
</ul>
<hr>
<h2 id="예시-1">예시 1</h2>
<h3 id="상황">상황</h3>
<img src="https://velog.velcdn.com/images/dmori_2562/post/e53775eb-0539-4e2c-843d-5bbde72c5fe0/image.png" width="500px">

<ul>
<li><p>두 명의 송신자, 두 명의 수신자</p>
</li>
<li><p>하나의 라우터, 무한한 버퍼</p>
</li>
<li><p>출력 링크 용량: R</p>
</li>
<li><p>재전송 없음</p>
</li>
</ul>
<h3 id="원인-및-비용">원인 및 비용</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/7d424ae9-6880-444f-926c-462a82dc4eaf/image.png" alt=""></p>
<p>위와 같은 이상적인 예시에서도, 우리는 이미 혼잡한 네트워크의 한 가지 비용을 발견할 수 있다!</p>
<blockquote>
<p>패킷 도착 속도가 링크 용량(R/2)에 가까워짐
--&gt; 대규모 대기열 지연이 발생!</p>
</blockquote>
<br>

<h2 id="예시-2">예시 2</h2>
<h3 id="상황-1">상황</h3>
<img src="https://velog.velcdn.com/images/dmori_2562/post/68d9d524-6eb2-4900-a62a-0edd0d7a4355/image.png">

<ul>
<li><p>하나의 라우터, 제한된 버퍼</p>
</li>
<li><p>시간 초과된 패킷에 대한 송신자의 재전송</p>
</li>
<li><p>응용 계층의 입력 = 응용 계층의 출력</p>
</li>
<li><p>전송 계층의 입력은 재전송을 포함</p>
</li>
</ul>
<h3 id="원인-및-비용-1">원인 및 비용</h3>
<h4 id="가정-완전한-지식">가정: 완전한 지식</h4>
<p>송신자는 라우터의 버퍼가 사용가능할 때만 보낸다.</p>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/0974fb6a-d06c-40cc-8e83-85a2fdc6d49b/image.png" alt=""></p>
<h4 id="가정-패킷이-손실된-것을-알고있다">가정: 패킷이 손실된 것을 알고있다.</h4>
<p>송신자는 패킷이 손실될 때만 재전송한다.</p>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/70492ba7-8dcf-462f-b94d-1749750409e0/image.png" alt=""></p>
<blockquote>
<p>패킷 재전송으로 인해서 성능이 감소!</p>
</blockquote>
<h4 id="현실-중복-발생">현실: 중복 발생</h4>
<p>송신자의 시간 초과가 일찍 발생해, 이미 보낸 패킷에 대해 중복이 발생한다.
<img src="https://velog.velcdn.com/images/dmori_2562/post/cead5590-9664-4525-ad64-00062cec6c01/image.png" alt=""></p>
<blockquote>
<p><strong>혼잡의 비용</strong></p>
</blockquote>
<ul>
<li>재전송: 주어진 입력에 대해 더 많은 작업</li>
<li>불필요한 재전송: 링크가 여러 개의 패킷 복사본을 전송</li>
</ul>
<br>

<h2 id="예시-3">예시 3</h2>
<h3 id="상황-2">상황</h3>
<img src="https://velog.velcdn.com/images/dmori_2562/post/fce9dbed-41dd-458a-96ef-52153f22c6e4/image.png" width="500px">

<ul>
<li><p>네 명의 송신자들</p>
</li>
<li><p>multihop 경로</p>
</li>
<li><p>시간 초과 + 재전송</p>
</li>
</ul>
<p>Q: 빨간색 입력량이 증가한다면 어떤 일이 발생하는가?</p>
<blockquote>
<p>라우터에 도착하는 모든 파란색의 패킷들은 큐에서 대기하다가 버려지고,
<strong>파란색 처리량은 0이 된다.</strong></p>
</blockquote>
<h3 id="원인-및-비용-2">원인 및 비용</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/5431fc8d-fa49-424c-83fc-1b4020a9d24d/image.png" alt=""></p>
<blockquote>
<p><strong>혼잡의 비용</strong></p>
</blockquote>
<ul>
<li>패킷이 삭제되면 해당 패킷에 사용된 &quot;전송 용량&quot;이 낭비!</li>
</ul>
<h1 id="혼잡-제어-방법">혼잡 제어 방법</h1>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/3dd3990f-0267-444c-99ef-a4d4e35a194e/image.png" alt=""></p>
<blockquote>
<ul>
<li>End-to-end 혼잡 제어</li>
</ul>
</blockquote>
<ul>
<li>Network-assisted 혼잡 제어</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[TCP(연결 지향형 프로토콜)이란?]]></title>
            <link>https://velog.io/@dmori_2562/TCP%EC%97%B0%EA%B2%B0-%EC%A7%80%ED%96%A5%ED%98%95-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@dmori_2562/TCP%EC%97%B0%EA%B2%B0-%EC%A7%80%ED%96%A5%ED%98%95-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Mon, 24 Oct 2022 10:43:41 GMT</pubDate>
            <description><![CDATA[<h1 id="tcp-미리보기">TCP 미리보기</h1>
<ul>
<li><p>가득찬 양방향의 데이터(full  duplex data)</p>
<blockquote>
<p>같은 연결 내에서 양방향의 데이터 흐름</p>
</blockquote>
</li>
<li><p><em>MSS*</em>: Maximum Segment Size</p>
</li>
<li><p>연결 지향적(connection-oriented)</p>
<blockquote>
<p>데이터를 교환하기 전에 handshaking 과정을 거친다.</p>
</blockquote>
</li>
<li><p>흐름 제어(flow controlled)</p>
<blockquote>
<p>수신자의 용량에 넘치도록 데이터를 보내지 않는다.</p>
</blockquote>
</li>
<li><p>1:1(point-to-point)</p>
<blockquote>
<p>하나의 송신자, 수신자</p>
</blockquote>
</li>
<li><p>신뢰성 있는(reliable), 순서가 보장되는(in-order)</p>
</li>
<li><p>파이프라이닝(pipelined)</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/4832325c-11e7-4791-96ff-011405d598b5/image.png" alt=""></p>
<hr>
<h1 id="tcp-세그먼트">TCP 세그먼트</h1>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/d69cc6d6-5e42-43d2-81e3-881235618834/image.png" alt=""></p>
<br>

<h2 id="1-시퀀스-번호와-acks">1. 시퀀스 번호와 ACKs</h2>
<img src="https://velog.velcdn.com/images/dmori_2562/post/c07c957c-7ccb-4058-96e4-9ca62d9f0f42/image.png" width="600px">

<blockquote>
<ul>
<li>데이터 흐름의 첫 번째 바이트는 0번으로 지정된다.</li>
</ul>
</blockquote>
<p>예제 1: File은 500,000 바이트, MSS는 1,000 바이트.</p>
<ul>
<li>첫 번째 세그먼트는 시퀀스 번호가 0으로 지정된다.</li>
<li>두 번째 세그먼트는 시퀀스 번호가 1000으로 지정된다.</li>
<li>그 이후도 이런 식으로 진행된다.</li>
</ul>
<blockquote>
<p><strong>MSS vs MTU</strong>
<img src="https://velog.velcdn.com/images/dmori_2562/post/7bc10aaf-da6e-42c3-ae1c-866e1a7d4004/image.png" alt="">
<strong>MSS</strong>: Maximum Segment Size
<strong>MTU</strong>: Maximum Transmission Unit</p>
</blockquote>
<p>예제 2: 호스트 A가 호스트 B로부터 0<del>535까지 바이트와 900</del>1000까지 바이트를 받았다고 하자.</p>
<ul>
<li>이 경우, 호스트 A는 536~899까지 바이트를 받지 못한 것이다.</li>
<li>이 경우 호스트 A는 536 바이트를 기다리고 있고, 호스트 B에게 536 바이트가 포함된 ACK 번호 필드를 보낼 것이다.<blockquote>
<p>TCP는 스트림에서 첫 번째 누락된 바이트까지만 바이트를 인식하기 때문에, TCP는 누적된 ACK(cumulative acknowledgements)을 제공한다.</p>
</blockquote>
</li>
</ul>
<br>

<h3 id="시퀀스-번호">시퀀스 번호</h3>
<ul>
<li><p>처음: 랜덤한 난수로 지정된 시퀀스 번호(Initial sequence number)</p>
</li>
<li><p>그 이후: Initial sequence number(ISN) + 전송한 바이트의 수</p>
</li>
</ul>
<h3 id="ack">ACK</h3>
<ul>
<li><p>다른 측에서 올 것이라고 예상되는 seq # 번호.</p>
</li>
<li><p>누적된 ACK 방식.</p>
</li>
</ul>
<h4 id="시퀀스-번호와-ack-예제">시퀀스 번호와 ACK 예제</h4>
<img src="https://velog.velcdn.com/images/dmori_2562/post/fc0fd837-6e65-42da-bb27-7351b80d6cde/image.png" width="500px">

<p>위의 그림에서는 클라이언트와 서버의 시퀀스 번호가 각각 42와 79로 시작.
보내는 데이터의 바이트 수가 1이기에 +1씩 된 것임.</p>
<br>

<h2 id="2-tcp의-rtt와-timeout">2. TCP의 RTT와 timeout</h2>
<h3 id="어떻게-tcp의-timeout-값을-결정할까">어떻게 TCP의 timeout 값을 결정할까?</h3>
<ul>
<li>RTT보다는 길게 한다.</li>
</ul>
<blockquote>
<p>하지만 RTT의 값은 변화한다!</p>
</blockquote>
<ul>
<li>timeout이 너무 짧다면? - 일찍 timeout이 될 수 있고, 불필요한 재전송이 일어날 수 있다.</li>
<li>timeout이 너무 길다면? - 세그먼트 손실에 대해 느리게 반응한다.</li>
</ul>
<h3 id="어떻게-rtt를-측정하는가">어떻게 RTT를 측정하는가?</h3>
<ul>
<li>SampleRTT를 통해 측정한다. </li>
</ul>
<blockquote>
<ul>
<li>SampleRTT는 달라지기에, estimated RTT를 &quot;smoother&quot;하게 만들어야 한다.
<img src="https://velog.velcdn.com/images/dmori_2562/post/39b7a3dd-61b8-40c3-9360-7b7e23f4eb75/image.png" alt=""></li>
</ul>
</blockquote>
<ul>
<li>주로 a = 0.125 이다.</li>
</ul>
<h3 id="timeout-간격">timeout 간격</h3>
<p>Estimated RTT + <strong>safety margin</strong></p>
<hr>
<h1 id="tcp의-신뢰적인-데이터-전송">TCP의 신뢰적인 데이터 전송</h1>
<p>TCP는 IP를 신뢰할 수 없기에 그 위에 rdt 서비스를 만든다.</p>
<ul>
<li><p>파이프라이닝 된 세그먼트</p>
</li>
<li><p>누적된 ACKs</p>
</li>
<li><p>단일의 재전송 타이머</p>
</li>
</ul>
<blockquote>
<p>재전송의 <strong>유발 요소</strong></p>
</blockquote>
<ul>
<li>timeout 이벤트</li>
<li>중복된 ACKs</li>
</ul>
<br>

<h2 id="간단한-tcp-예제">간단한 TCP 예제</h2>
<ul>
<li><p>중복된 ACKs를 무시한다.</p>
</li>
<li><p>흐름 제어와 혼잡 제어를 무시한다.</p>
</li>
</ul>
<h3 id="재전송-1-ack-lost-발생시">재전송 1) ACK lost 발생시</h3>
<img src="https://velog.velcdn.com/images/dmori_2562/post/9760b6a4-6fa9-4f04-a46b-cb9777a25878/image.png" width="400px">

<h3 id="재전송-2-timeout-발생시seq100은-재전송-x">재전송 2) timeout 발생시(Seq=100은 재전송 X)</h3>
<img src="https://velog.velcdn.com/images/dmori_2562/post/fe03835c-100d-420b-af77-75a6db228ee1/image.png" width="400px">

<blockquote>
<p>재전송을 통해 수신자는 Seq=92를 받았지만, 이전에 <strong>Seq=100, 20 bytes의 data 까지 받았다</strong>는 뜻으로 <strong>ACK=120</strong>을 보낸다!</p>
</blockquote>
<h3 id="늦은-재전송-timeout-interval이-너무-김">늦은 재전송: timeout interval이 너무 김</h3>
<img src="https://velog.velcdn.com/images/dmori_2562/post/dfa488fe-c007-41dc-8024-9494c3d865ff/image.png" width="600px">

<h2 id="tcp의-빠른-재전송">TCP의 빠른 재전송</h2>
<p><strong>중복된 ACKs</strong>를 통해서 잃어버린 세그먼트를 탐색한다.</p>
<blockquote>
<p><strong>TCP 빠른 재전송</strong>
송신자가 같은 데이터에 대해서 <strong>3 ACKs(&quot;triple duplicate ACKs)</strong>를 받으면 가장 작은 seq #를 가지고 있는 unACKed 세그먼트를 재전송한다.</p>
</blockquote>
<img src="https://velog.velcdn.com/images/dmori_2562/post/544f38f0-2f8a-4e2f-bea4-444131021745/image.png" width="400px">

<hr>
<h2 id="tcp의-흐름-제어">TCP의 흐름 제어</h2>
<p>TCP는 흐름 제어 서비스를 어플리케이션에 제공한다.</p>
<blockquote>
<p><strong>왜?</strong>
: 송신자가 수신자의 버퍼를 넘치게 하는 가능성을 제거하기 위해서!</p>
</blockquote>
<blockquote>
<p><strong>어떻게?</strong>
: TCP는 송신자가 수신 창이라는 변수를 유지 관리하도록 하여 흐름 제어를 제공한다.</p>
</blockquote>
<br>

<h3 id="rcvbuffer">RcvBuffer</h3>
<p>송신자가 TCP 연결을 통해 수신자에게 큰 파일을 보내고 있다고 가정하자.</p>
<ul>
<li><p>수신자는 이 연결에 수신 버퍼를 할당하고, <strong>RcvBuffer</strong>로 그 크기를 나타낸다.</p>
<blockquote>
<p>RcvBuffer의 크기는 소켓 옵션에 설정되어있다.(주로 4096 바이트 크기)</p>
<img src="https://velog.velcdn.com/images/dmori_2562/post/db4daa8e-2a98-45f5-a962-6021e01192d7/image.png" width="400px">
</blockquote>
</li>
<li><p>수신자는 수신자 대 송신자 세그먼트의 TCP 헤더에 <strong>rwnd 값</strong>을 포함함으로써 사용 가능한 버퍼 공간을 &quot;<strong>광고</strong>&quot;한다.</p>
<blockquote>
<p>송신자는 unACKed(&quot;in-flight&quot;) 데이터의 양을 수신자의 rwnd 값으로 제한하여 수신자의 버퍼가 넘치지 않도록 한다!</p>
</blockquote>
</li>
</ul>
<hr>
<br>

<h2 id="연결-관리">연결 관리</h2>
<h3 id="연결-시작">연결 시작</h3>
<p>데이터를 교환하기 전에, 송신자와 수신자는 &quot;handshake&quot;를 진행한다.</p>
<blockquote>
<p>TCP 연결은 <strong>3-way handshake</strong>가 기반이 된다!
<img src="https://velog.velcdn.com/images/dmori_2562/post/da65dc55-a752-4e50-bbb6-0abc323c2eb1/image.png" width="450px"></p>
</blockquote>
<h3 id="연결-종료">연결 종료</h3>
<p>클라이언트, 서버 각각이 연결 측면을 닫는다.</p>
<ul>
<li><p>FIN bit가 1인 TCP 세그먼트를 보낸다.</p>
</li>
<li><p>수신한 FIN에 ACK로 응답한다.
<img src="https://velog.velcdn.com/images/dmori_2562/post/30644afa-35f0-4078-a29b-e472f1a65880/image.png" alt=""></p>
</li>
</ul>
<h3 id="syn-flood-attack">Syn Flood Attack</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/0b89d5e9-78a1-4bf0-9787-7c8a346a62d7/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[신뢰할 수 있는 데이터 전송 원리에 대해서]]></title>
            <link>https://velog.io/@dmori_2562/%EC%8B%A0%EB%A2%B0%ED%95%A0-%EC%88%98-%EC%9E%88%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%84%EC%86%A1-%EC%9B%90%EB%A6%AC%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C</link>
            <guid>https://velog.io/@dmori_2562/%EC%8B%A0%EB%A2%B0%ED%95%A0-%EC%88%98-%EC%9E%88%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%84%EC%86%A1-%EC%9B%90%EB%A6%AC%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C</guid>
            <pubDate>Sun, 23 Oct 2022 10:56:52 GMT</pubDate>
            <description><![CDATA[<h1 id="어떻게-데이터-전송에-신뢰성을-추가하는가">어떻게 데이터 전송에 신뢰성을 추가하는가?</h1>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/7750df69-859b-4075-81ef-be05714e3e56/image.png" alt=""></p>
<h2 id="전송-과정">전송 과정</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/ee35523b-13ef-4147-8b9d-4223f24be014/image.png" alt=""></p>
<h4 id="1-rdt_send">1. rdt_send()</h4>
<ul>
<li>수신기 상위 계층에 전달할 데이터 전달</li>
</ul>
<h4 id="2-udt_send">2. udt_send()</h4>
<ul>
<li><p>rdt에 의해 호출된다.</p>
</li>
<li><p>신뢰할 수 없는 채널을 통해 패킷을 전송한다.</p>
</li>
</ul>
<h4 id="3-rdt_rcv">3. rdt_rcv()</h4>
<ul>
<li>패킷이 채널의 rcv-side에 도착하면 호출된다.</li>
</ul>
<h4 id="4-deliver_data">4. deliver_data()</h4>
<ul>
<li><p>rdt에 의해 호출된다.</p>
</li>
<li><p>데이터를 상위 계층에 전달한다.</p>
</li>
</ul>
<hr>
<h1 id="rdt-만들기">rdt 만들기</h1>
<p>유한 상태 기계를 통해서 rdt를 만들어보자!</p>
<h2 id="유한-상태-기계fsm이란">유한 상태 기계(FSM)이란?</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/ca151a8b-1c04-43d6-b7ee-c22bc33156c3/image.png" alt=""></p>
<p>유한 상태 기계(finite-state machine, FSM) 또는 유한 오토마톤(finite automaton, 복수형: 유한 오토마타 finite automata)는 컴퓨터 프로그램과 전자 논리 회로를 설계하는 데에 쓰이는 수학적 모델이다.</p>
<h4 id="관련-용어">관련 용어</h4>
<blockquote>
<ul>
<li><strong>현재 상태(Current State)</strong>: 임의의 주어진 시간의 상태</li>
</ul>
</blockquote>
<ul>
<li><strong>전이(Transition)</strong>: 기계가 어떠한 사건(Event)에 의해 한 상태에서 다른 상태로 변화하는 현상</li>
</ul>
<h4 id="fsm-작동-구조">FSM 작동 구조</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/54c015c7-f830-440d-899e-6d340379280b/image.png" alt=""></p>
<h2 id="rdt10-완벽히-신뢰할-수-있는-채널">rdt1.0: 완벽히 신뢰할 수 있는 채널</h2>
<h4 id="송신측">송신측</h4>
<img src="https://velog.velcdn.com/images/dmori_2562/post/b801782c-8b73-4265-a3ab-77d0a2f1c3a0/image.png" width="500px">

<h4 id="수신측">수신측</h4>
<img src="https://velog.velcdn.com/images/dmori_2562/post/6a4b589a-082d-4d88-8150-3c27b8a3bd8e/image.png" width="500px">

<h4 id="완벽히-신뢰할-수-있는-채널">완벽히 신뢰할 수 있는 채널?</h4>
<ul>
<li>비트 에러가 없다</li>
<li>패킷의 손실또한 없다</li>
</ul>
<blockquote>
<p>하지만 현실에서 이렇게 완벽히 신뢰할 수 있는 채널을 짜는 것은 힘들다.</p>
</blockquote>
<br>

<h2 id="rdt20-비트-에러가-있는-채널">rdt2.0: 비트 에러가 있는 채널</h2>
<p>기본 채널은 패킷 속의 비트에 에러가 발생할 수 있다.</p>
<blockquote>
<p>rdt2.0에서는 비트 에러를 찾기 위해 <strong>체크섬(checksum)</strong>을 사용한다!</p>
</blockquote>
<br>

<h4 id="어떻게-에러를-회복할-수-있을까">어떻게 에러를 회복할 수 있을까?</h4>
<ul>
<li><p>acknowledgements (ACKs): 수신자가 송신자에게 패킷을 잘 수신했다고 알려준다.</p>
</li>
<li><p>negative acknowledgements (NAKs): 수신자가 송신자에게 패킷에 에러가 있다고 알려준다.</p>
</li>
</ul>
<h4 id="송신측-1">송신측</h4>
<img src="https://velog.velcdn.com/images/dmori_2562/post/fe6e9038-3a40-4a1c-8e86-a2bdd57c5ab1/image.png" width="500px">

<blockquote>
<p>송신자가 Wait-for-ACK-or-NAK 상태에 있을 때, 상위 계층에서 더 많은 데이터를 가져올 수 없다.</p>
</blockquote>
<p>따라서, rdt2.0을 <strong>Stop-and-Wait</strong> 프로토콜이라고 한다.</p>
<h4 id="수신측-1">수신측</h4>
<img src="https://velog.velcdn.com/images/dmori_2562/post/a9ce2c28-ccc8-4457-9680-eef4591b01b9/image.png" width="500px">

<blockquote>
<p>하지만 rdt2.0에도 치명적인 오류가 존재한다!
데이터 흐름에 문제가 생겨 ACK나 NAK 패킷이 <strong>손상(corrupt)</strong>될 수 있다.</p>
</blockquote>
<br>

<h4 id="acknak가-손상된다면">ACK/NAK가 손상된다면?</h4>
<ul>
<li><p>송신자는 수신자에게 무슨 일이 발생했는 지 알 수 없다.</p>
</li>
<li><p>송신자는 같은 패킷을 재전송 할 가능성이 생긴다! --&gt; 중복</p>
</li>
</ul>
<blockquote>
<p><strong>중복을 다루는 방법</strong></p>
</blockquote>
<ul>
<li>송신자가 ACK/NAK 패킷이 손상된다면 현재의 패킷을 재전송한다</li>
<li>송신자가 각 패킷에 sequence 숫자를 추가한다</li>
<li>수신자가 중복되는 패킷은 버린다.</li>
</ul>
<br>

<h2 id="rdt21-중복-패킷-제어-채널">rdt2.1: 중복 패킷 제어 채널</h2>
<h4 id="송신측-2">송신측</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/085b8612-fb56-4d52-9ba5-09899f1d7d16/image.png" alt=""></p>
<h4 id="수신측-2">수신측</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/d313b97a-24bc-4104-8efd-f933859d5ef8/image.png" alt=""></p>
<br>

<h2 id="rdt22-nak가-없는-프로토콜">rdt2.2: NAK가 없는 프로토콜</h2>
<ul>
<li><p>rdt2.1과 성능은 동일하지만, ACks만을 사용한다.</p>
</li>
<li><p>NAK 대신, 수신자는 지난 패킷을 제대로 수신했다는 의미로 ACK를 보낸다.</p>
<blockquote>
<p>단, 수신자는 ACK 패킷에 seq #를 첨부한다.</p>
</blockquote>
</li>
<li><p>보낸 사람의 ACK가 중복되면 NAK와 동일한 작업이 수행됩니다.</p>
</li>
</ul>
<h4 id="송신측-3">송신측</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/b297a841-9927-4cc5-b5ed-43137fd445ae/image.png" alt=""></p>
<p>송신자가 ACK 0을 기다릴 때, ACK 1이 온다면 패킷을 재전송한다.
ACK 1을 기다릴때도 마찬가지이다.</p>
<h4 id="수신측-3">수신측</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/16b6dffd-d9d0-4b71-bc2a-d1d93d47b1d5/image.png" alt=""></p>
<h2 id="rdt30-에러와-손실이-있는-채널">rdt3.0: 에러와 손실이 있는 채널</h2>
<h4 id="손실이-없을-때">손실이 없을 때</h4>
<img src="https://velog.velcdn.com/images/dmori_2562/post/72b1de9f-0c24-4ce6-8038-70d0e3435309/image.png" width="400px">

<h4 id="패킷-손실">패킷 손실</h4>
<img src="https://velog.velcdn.com/images/dmori_2562/post/7c3e8783-7b62-47fa-9199-baed40c7cf98/image.png" width="400px">

<h4 id="ack-손실">ACK 손실</h4>
<img src="https://velog.velcdn.com/images/dmori_2562/post/629b3d77-5fe9-4e89-a6d5-ebd6df019ecd/image.png" width="400px">

<h4 id="timeout이-일찍-되거나-ack가-지연됐을-때">timeout이 일찍 되거나 ACK가 지연됐을 때</h4>
<img src="https://velog.velcdn.com/images/dmori_2562/post/4d8fa03c-80c1-4cb1-b765-31faedbc8fb0/image.png" width="400px">


<h4 id="송신측-4">송신측</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/f278aaf4-d78b-490c-898b-fcc7af398bfb/image.png" alt=""></p>
<h4 id="수신측-4">수신측</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/0ef64c51-e8fd-48c1-968b-a61e0107c7c6/image.png" alt=""></p>
<hr>
<h1 id="파이프라이닝">파이프라이닝</h1>
<p>rdt3.0은 기능적으로 옳은 프로토콜이지만, 성능이 최악이다.</p>
<blockquote>
<p><strong>stop-and-wait</strong> 방법으로 패킷을 전송하기 때문!!!</p>
</blockquote>
<h2 id="rdt30의-성능-분석">rdt3.0의 성능 분석</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/8c704edf-21ad-4014-a7e5-40e2825035ec/image.png" alt=""></p>
<p>1 Gbps link, RTT 30msec, 8000bit packet이라고 가정하자.</p>
<img src="https://velog.velcdn.com/images/dmori_2562/post/d971d098-04c2-419a-b530-345091178a31/image.png" width="400px">

<img src="https://velog.velcdn.com/images/dmori_2562/post/c6327502-2d68-4a85-82c3-5c3c2bcc711d/image.png" width="600px">

<blockquote>
<ul>
<li>1Gbps 링크를 통한 33kB/초 처리량</li>
</ul>
</blockquote>
<ul>
<li>네트워크 프로토콜이 물리적 자원의 사용을 <strong>제한</strong>하고 있다!</li>
</ul>
<br>

<h2 id="파이프라이닝된-데이터-전송-프로토콜">파이프라이닝된 데이터 전송 프로토콜</h2>
<p>파이프라이닝: 송신자는 패킷의 다중 전송을 허락한다.</p>
<ul>
<li><p>시퀀스 넘버는 반드시 증가해야 한다.</p>
</li>
<li><p>보낸 사람 및/또는 받는 사람 버퍼링</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/f5dfe728-9f48-4e45-b357-79fdd5014ffc/image.png" alt=""></p>
<blockquote>
<p>파이프라이닝은 utilization을 증가시킨다!</p>
</blockquote>
<h3 id="파이프라인-프로토콜의-두-가지-종류">파이프라인 프로토콜의 두 가지 종류</h3>
<ul>
<li>go-Back-N</li>
<li>선택적 반복(selective repeat)</li>
</ul>
<h3 id="go-back-n">go-back-N</h3>
<ul>
<li><p>송신자는 파이프라인 안에 N개의 unacked 패킷을 가질 수 있다.</p>
</li>
<li><p>수신자는 오직 누적 ack만 보낸다(차이가 있으면 ack 패킷을 보내지 않는다)</p>
</li>
<li><p>송신자는 unacked 패킷에 대해 타이머를 가지고 있다.</p>
<blockquote>
<p>타이머가 만기되면, unacked 패킷을 재전송한다.</p>
</blockquote>
</li>
</ul>
<h3 id="go-back-n-송신자-윈도우">go-back-N: 송신자 윈도우</h3>
<ul>
<li><p>패킷 헤더 안에 k-bit의 seq #을 가지고 있다.</p>
</li>
<li><p>최대 N개의 &quot;윈도우&quot;이며, 연속적으로 unacked 패킷이 허용된다.
<img src="https://velog.velcdn.com/images/dmori_2562/post/f4baefde-3881-425d-b1ea-d29502d09a0c/image.png" alt=""></p>
</li>
</ul>
<blockquote>
<p>위 그림에 대한 이해.</p>
</blockquote>
<ul>
<li><strong>ACK(n)</strong>의 의미: n 숫자 이하의 패킷들은 모두 ACK까지 완료된 상태이다.</li>
<li><strong>timeout(n)</strong>: 윈도우에 있는 n 숫자 이상의 패킷들을 모두 다시 재전송한다.</li>
<li>윈도우는 총 N개의 패킷을 관리한다.</li>
<li>base부터 nextseqnum 전까지는 ack를 기다리고 있다.</li>
<li>어플리케이션에서는 data를 6번(회색 패킷의 개수) 보낼 수 있다.</li>
</ul>
<h4 id="go-back-n의-예제">go-Back-N의 예제</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/ad26e28b-6689-4a98-b3a7-466505b1e6fb/image.png" alt=""></p>
<h3 id="선택적인-반복">선택적인 반복</h3>
<ul>
<li><p>수신자는 모든 받은 패킷에 대해 개별적으로 ack를 보낸다.</p>
</li>
<li><p>송신자는 ack를 받지 못한 패킷만 재전송한다.</p>
<blockquote>
<p>각 unACKed 패킷에 대해 타이머가 존재한다.</p>
</blockquote>
</li>
<li><p>송신자의 window는 연속된 N개의 seq #를 가지고 있다.</p>
<blockquote>
<p>보냈거나, unACKed 된 패킷의 seq #를 제한한다.</p>
</blockquote>
</li>
</ul>
<h3 id="선택적인-반복-송신자-수신자-윈도우">선택적인 반복: 송신자, 수신자 윈도우</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/5abf07bd-9cfa-40f9-a757-43cba908a74a/image.png" alt=""></p>
<h4 id="송신자">송신자</h4>
<blockquote>
<p>다음에 사용 가능한 seq 번호가 window에 있으면 pkt를 보낸다.</p>
</blockquote>
<blockquote>
<p><strong>timeout(n)</strong>: 패킷 n을 다시 보내고, 타이머를 다시 시작한다.</p>
</blockquote>
<blockquote>
<p><strong>ACK(n)을 받았을 때</strong> (윈도우 안에 있을 때)</p>
</blockquote>
<ul>
<li>패킷 n을 받은 것으로 표시한다.</li>
<li>n이 ACK되지 않은 패킷 중 가장 작은 패킷이면 창 베이스를 다음 ACK되지 않은 시퀀스 #로 이동합니다.</li>
</ul>
<h4 id="수신자">수신자</h4>
<blockquote>
<p><strong>패킷 n이 윈도우 안에 있을 때[rcvbase, rcvbase+N-1]</strong></p>
</blockquote>
<ul>
<li>ACK(n)을 보낸다.</li>
<li>n이 순서와 다르다면? 버퍼에 넣는다.</li>
<li>n이 순서와 같다면? (버퍼된 순서대로 패킷도 전달), 아직 receive 되지 않은 다음 패킷으로 윈도우를 옮긴다.</li>
</ul>
<blockquote>
<p><strong>패킷 n이 윈도우 이전 패킷부터 윈도우 크기만큼일 때[rcvbase-N, rcvbase-1]</strong></p>
</blockquote>
<ul>
<li>ACK(n)을 보낸다.</li>
</ul>
<blockquote>
<p><strong>그 이외의 경우</strong></p>
</blockquote>
<ul>
<li>무시한다.</li>
</ul>
<h4 id="선택적인-반복의-예제">선택적인 반복의 예제</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/ae35fd82-9e77-4ec2-97e3-edc088c21ab2/image.png" alt=""></p>
<h3 id="선택적인-반복의-딜레마">선택적인 반복의 딜레마</h3>
<ul>
<li><p>seq #&#39;s: 0, 1, 2, 3</p>
</li>
<li><p>윈도우 크기 = 3</p>
</li>
</ul>
<img src="https://velog.velcdn.com/images/dmori_2562/post/3c1fd7dc-5bc3-4942-87ef-64a31567585d/image.png" width="400px">

<blockquote>
<p>위의 문제를 피하기 위해서는 seq # 크기는 윈도우의 크기의 2배 이상은 되야한다.</p>
</blockquote>
<hr>
<h1 id="신뢰성-있는-전송의-요약">신뢰성 있는 전송의 요약</h1>
<ul>
<li><p><strong>체크섬(Checksum)</strong>: 전송된 패킷의 비트 에러를 체크하기 위해 사용.</p>
</li>
<li><p><strong>타이머(Timer)</strong>: 만약 패킷(또는 해당 ACK)이 채널 내에서 손실되었을 가능성이 있기에, 패킷 시간 초과(timeout)/재전송에 사용됩니다.</p>
</li>
<li><p><strong>시퀀스 번호(Sequence number)</strong>: 송신자에서 수신자로 흐르는 데이터 패킷의 순차적 번호 부여에 사용</p>
</li>
<li><p><strong>인정(Acknowledgement)</strong>: 수신자가 송신자에게 패킷을 잘 받았음을 알리기 위해 사용</p>
</li>
<li><p><strong>부정 인정(Negative Acknowledgement)</strong>: 수신자가 송신자에게 패킷을 못 받았음을 알리기 위해 사용</p>
</li>
<li><p><strong>윈도우(Window)와 파이프라이닝(pipelining)</strong>: 송신자는 지정된 범위 내에 있는 시퀀스 번호의 패킷만 전송하도록 제한될 수 있다.</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[네트워크 장비에 대해서]]></title>
            <link>https://velog.io/@dmori_2562/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9E%A5%EB%B9%84%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C</link>
            <guid>https://velog.io/@dmori_2562/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9E%A5%EB%B9%84%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C</guid>
            <pubDate>Sun, 23 Oct 2022 05:48:41 GMT</pubDate>
            <description><![CDATA[<h1 id="네트워크-장비">네트워크 장비</h1>
<h2 id="기본적인-네트워크의-구성">기본적인 네트워크의 구성</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/d2463c2c-d8bf-4370-8841-6086b8ca1c81/image.png" alt=""></p>
<br>

<h2 id="스위치의-종류">스위치의 종류</h2>
<ul>
<li><p>L2 스위치: MAC 정보 기반 네트워크 통신 지원</p>
</li>
<li><p>L3 스위치: IP 정보 기반 네트워크 통신 지원</p>
</li>
<li><p>L4 스위치: IP 정보 + 포트정보 기반 네트워크 통신 지원</p>
</li>
<li><p>L7 스위치: Application Data 기반 네트워크 통신 지원</p>
</li>
</ul>
<br>

<h2 id="홈-네트워크-예시">홈 네트워크 예시</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/1c45da69-2f90-4470-8516-d79a54bd77ea/image.png" alt=""></p>
<br>

<h2 id="네트워크-인프라">네트워크 인프라</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/2f8ef8ea-e7a1-4c3e-8c98-8e7adb0a018b/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[UDP란?]]></title>
            <link>https://velog.io/@dmori_2562/UDP%EB%9E%80</link>
            <guid>https://velog.io/@dmori_2562/UDP%EB%9E%80</guid>
            <pubDate>Wed, 19 Oct 2022 15:47:33 GMT</pubDate>
            <description><![CDATA[<h1 id="transport-layer전송-계층">Transport-layer(전송 계층)</h1>
<hr>
<h2 id="udp">UDP</h2>
<ul>
<li>User Datagram Protocol의 약자<br>


</li>
</ul>
<h3 id="udp의-사용처">UDP의 사용처</h3>
<ul>
<li>멀티미디어 어플리케이션의 스트리밍</li>
<li>DNS (Domain Name Service)</li>
<li>Simple Network Management Protocol (SNMP)<br>

</li>
</ul>
<h3 id="udp의-특징">UDP의 특징</h3>
<ol>
<li><p>혼잡 조절 기능이 없다.</p>
</li>
<li><p>연결 설정도 없다.</p>
</li>
<li><p>헤더 사이즈가 작다.</p>
</li>
</ol>
<br>

<h3 id="udp-세그먼트의-특징">UDP 세그먼트의 특징</h3>
<ul>
<li><p>손실 가능성(lost)</p>
</li>
<li><p>순서와 상관없이(out-of-order) 앱으로 전송된다.</p>
<br>

</li>
</ul>
<hr>
<h2 id="udp-세그먼트-구조">UDP 세그먼트 구조</h2>
<img src="https://velog.velcdn.com/images/dmori_2562/post/a8907742-9670-4606-ba0c-2971e4246ed6/image.png" width="400px">

<ul>
<li>UDP 세그먼트 구조는 RFC 768에 정의되어있다.</li>
</ul>
<blockquote>
<ul>
<li>데이터 필드: 어플리케이션 데이터</li>
</ul>
</blockquote>
<ul>
<li>길이 필드: UDP 세그먼트 안의 바이트 수</li>
<li>checksum 필드: 세그먼트에 오류가 있는지 없는지 체크</li>
</ul>
<h3 id="checksum-필드가-전송-계층에-있는-이유">checksum 필드가 전송 계층에 있는 이유</h3>
<ul>
<li>링크 계층 프로토콜이 에러 체크 기능을 제공하지 않을 수 있기 때문</li>
</ul>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/4ab0e1d9-6396-4504-bea7-ead48b7c439e/image.png" alt=""></p>
<ul>
<li>세그먼트가 라우터의 메모리에 저장될 때 비트 에러가 발생할 수도 있기 때문</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[다중화와 역다중화란?]]></title>
            <link>https://velog.io/@dmori_2562/%EB%8B%A4%EC%A4%91%ED%99%94%EC%99%80-%EC%97%AD%EB%8B%A4%EC%A4%91%ED%99%94%EB%9E%80</link>
            <guid>https://velog.io/@dmori_2562/%EB%8B%A4%EC%A4%91%ED%99%94%EC%99%80-%EC%97%AD%EB%8B%A4%EC%A4%91%ED%99%94%EB%9E%80</guid>
            <pubDate>Wed, 19 Oct 2022 15:17:17 GMT</pubDate>
            <description><![CDATA[<h1 id="transport-layer전송-계층">Transport-layer(전송 계층)</h1>
<hr>
<p>다중화와 역다중화를 알기 위해서는 먼저 소켓부터 알아야한다!</p>
<h2 id="소켓이란">소켓이란?</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/f8e98a5a-a956-4377-8b7f-af43fe774ce7/image.png" alt=""></p>
<ul>
<li><p>소켓은 데이터가 네트워크에서 프로세스로 이동할 때 문의 역할!</p>
</li>
<li><p>각각의 프로세스는 하나 또는 그 이상의 소켓을 가지고 있다.</p>
</li>
</ul>
<blockquote>
<p>전송 계층에서 호스트는 데이터를 직접 받지 않고, 소켓을 통해서 받는다!</p>
</blockquote>
<br>

<h2 id="다중화와-역다중화에-대해서">다중화와 역다중화에 대해서</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/48fbe883-046e-4ace-9777-1b679df86355/image.png" alt=""></p>
<h3 id="다중화와-역다중화">다중화와 역다중화</h3>
<h4 id="다중화">다중화</h4>
<ul>
<li><p>송신 측에서 이루어진다.</p>
</li>
<li><p>여러 소켓의 데이터를 처리</p>
</li>
<li><p>전송 계층 헤더를 추가(추후에 역다중화에서 쓰인다)</p>
</li>
</ul>
<h4 id="역다중화">역다중화</h4>
<ul>
<li><p>수신 측에서 이루어진다.</p>
</li>
<li><p>헤더 정보를 사용하여 수신된 세그먼트를 올바른 소켓으로 전송</p>
</li>
</ul>
<br>

<h3 id="다중화의-필요-조건">다중화의 필요 조건</h3>
<ul>
<li><p>소켓은 특별한 식별자를 가지고 있다.</p>
</li>
<li><p>각 세그먼트는 소켓의 식별자를 가리키는 <strong>특별한 필드</strong>를 지녀야한다.</p>
</li>
</ul>
<img src="https://velog.velcdn.com/images/dmori_2562/post/8b33985a-d4e6-4816-b710-010e84d712a6/image.png" width="300px">

<blockquote>
<ul>
<li>소스 포트 번호 필드</li>
</ul>
</blockquote>
<ul>
<li>도착 포트 번호 필드</li>
</ul>
<p><strong>포트 번호</strong>: 16비트의 숫자로 되어있고, 0~65535의 범위의 숫자이다.</p>
<blockquote>
<p>IP 주소 또한 소켓 식별자를 가리킬 때 사용된다.</p>
</blockquote>
<br>

<h3 id="실제-예제">실제 예제</h3>
<pre><code class="language-python">clientSocket = socket(AF_INET, SOCK_DGRAM)</code></pre>
<p>호스트는 위와 같이 UDP 소켓을 만든다.</p>
<p>소켓을 만들 때, 전송 계층은 자동으로 포트 번호(1024 ~ 65535)를 지정해준다.</p>
<pre><code class="language-python">clinetSocket.bind((&#39;&#39;, 19157))</code></pre>
<p>위와 같이 포트 번호(19157)를 직접 지정해줄 수도 있다.</p>
<hr>
<h2 id="udp에서의-다중화-및-역다중화">UDP에서의 다중화 및 역다중화</h2>
<h3 id="udp-소켓의-식별">UDP 소켓의 식별</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/74951c60-3640-4ab3-95c5-a8a7f895a030/image.png" alt=""></p>
<ul>
<li>UDP 소켓은 <strong>대상 IP 주소</strong>와 <strong>대상 포트 번호</strong>로 구성된 2개의 튜플에 의해 완전히 식별된다.</li>
</ul>
<blockquote>
<ul>
<li>IP 주소와 포트 번호가 동일한 패킷: 동일한 목적지를 향해 전송!</li>
</ul>
</blockquote>
<ul>
<li>소스 포트 번호는 &quot;반송 주소&quot;의 일부로서 기능한다.</li>
</ul>
<h4 id="예제">예제</h4>
<pre><code class="language-python">recvfrom()</code></pre>
<p>파이썬 코드에서 서버는 위의 코드를 통해 client 측의 포트 번호를 받아낸다. </p>
<br>

<h2 id="tcp에서의-다중화-및-역다중화">TCP에서의 다중화 및 역다중화</h2>
<h3 id="tcp-소켓의-식별">TCP 소켓의 식별</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/22116e85-80c1-4978-992c-d4eda5eed966/image.png" alt=""></p>
<ul>
<li>TCP 소켓은 <strong>소스 IP 주소, 소스 포트 번호, 대상 IP 주소, 대상 포트 번호</strong>로 구성된 4개의 튜플에 의해 완전히 식별된다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[전송 계층 서비스에 대해서]]></title>
            <link>https://velog.io/@dmori_2562/%EC%A0%84%EC%86%A1-%EA%B3%84%EC%B8%B5-%EC%84%9C%EB%B9%84%EC%8A%A4%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C</link>
            <guid>https://velog.io/@dmori_2562/%EC%A0%84%EC%86%A1-%EA%B3%84%EC%B8%B5-%EC%84%9C%EB%B9%84%EC%8A%A4%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C</guid>
            <pubDate>Wed, 19 Oct 2022 13:48:42 GMT</pubDate>
            <description><![CDATA[<h1 id="transport-layer전송-계층">Transport-layer(전송 계층)</h1>
<hr>
<h2 id="전송-서비스와-프로토콜">전송 서비스와 프로토콜</h2>
<img src="https://velog.velcdn.com/images/dmori_2562/post/6041a796-f16e-4345-907c-d72abd503f7c/image.png" width="500px">

<ul>
<li>전송 계층은 서로 다른 호스트에서 실행되는 애플리케이션 프로세스 간에 논리적 통신을 제공한다.</li>
</ul>
<br>

<h3 id="전송-프로토콜은-종단-시스템-안에서-구동된다">전송 프로토콜은 종단 시스템 안에서 구동된다</h3>
<ul>
<li><p>송신 측: 애플리케이션 메시지를 세그먼트로 나누고, 네트워크 계층으로 전달한다.</p>
</li>
<li><p>수신 측: 세그먼트를 메시지로 재결합시키고, 어플리케이션 계층으로 전달한다.</p>
</li>
</ul>
<br>

<h2 id="전송-계층과-네트워크-계층의-차이">전송 계층과 네트워크 계층의 차이</h2>
<ul>
<li><p>네트워크 계층: <strong>호스트</strong>간의 논리적 통신.</p>
</li>
<li><p>전송 계층: <strong>프로세스</strong>간의 논리적 통신.</p>
</li>
</ul>
<br>

<h2 id="전송-계층-프로토콜의-종류">전송 계층 프로토콜의 종류</h2>
<h3 id="tcp">TCP</h3>
<ul>
<li>Transmission Control Protocol의 약자</li>
<li>신뢰할 수 있고(Reliable), 순서대로 전달하는(in-order deliver)</li>
</ul>
<blockquote>
<h4 id="tcp의-역할">TCP의 역할</h4>
</blockquote>
<ul>
<li>혼잡 통제(Congestion control)</li>
<li>흐름 제어(Flow control)</li>
<li>연결 설정(Connection management)</li>
</ul>
<h3 id="udp">UDP</h3>
<ul>
<li>User Datagram Protocol의 약자</li>
<li>신뢰할 수 없고(Unreliable), 순서가 없이 전달하는(unordered delivery)</li>
</ul>
<br>

<h2 id="전송-계층-프로토콜의-단위">전송 계층 프로토콜의 단위</h2>
<blockquote>
<p>세그먼트(segment): 전송 계층의 패킷</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[네트워크 계층 구조에 대해서]]></title>
            <link>https://velog.io/@dmori_2562/0.-Overview-0.3-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0</link>
            <guid>https://velog.io/@dmori_2562/0.-Overview-0.3-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0</guid>
            <pubDate>Wed, 19 Oct 2022 13:02:18 GMT</pubDate>
            <description><![CDATA[<h1 id="네트워크-계층-구조">네트워크 계층 구조</h1>
<h2 id="네트워크-계층화에-대한-이해">네트워크 계층화에 대한 이해</h2>
<ul>
<li><p>1980년대 초 ISO(International Organization for Standardization)는 여러 업체가 만든 시스템에 대해 상호연동이 가능한 표준 네트워크 모델을 제정할 필요성을 인식</p>
</li>
<li><p>1984년 <strong>OSI(Open System Interconnection) 네트워크 모델</strong>을 발표</p>
</li>
</ul>
<img src="https://velog.velcdn.com/images/dmori_2562/post/0bd428df-66a0-4080-be24-956af4c52549/image.png" width="400px">

<h3 id="osi-7계층-모델">OSI 7계층 모델</h3>
<img src="https://velog.velcdn.com/images/dmori_2562/post/39f9e467-9eaf-4c96-ad28-f87a92920cf2/image.png" width="600px">

<h3 id="osi-참조-모델에서의-정보-교환-캡슐화-및-역캡슐화">OSI 참조 모델에서의 정보 교환 (캡슐화 및 역캡슐화)</h3>
<img src="https://velog.velcdn.com/images/dmori_2562/post/40998a94-a703-4019-8623-6cbc5367ec01/image.png" width="600px">

<h3 id="tcpip-4계층">TCP/IP 4계층</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/b76b6e4d-1fba-434b-8324-45aace37c39b/image.png" alt=""></p>
<h3 id="osi-7계층-vs-tcpip-4계층">OSI 7계층 vs TCP/IP 4계층</h3>
<ul>
<li><p>OSI는 <strong>개념적인 모델</strong>(실제 구현에서 반드시 지킨다고 볼 수 없음)</p>
</li>
<li><p>TCP/IP 프로토콜은 OSI 모델보다 먼저 개발됨</p>
</li>
<li><p>TCP/IP 프로토콜의 계층은 OSI 모델의 계층과 정확하게 일치하지 않음</p>
</li>
<li><p>두 계층을 비교할 때, 세션(Session)과 표현(presentation) 2개의 계층이 TCP/IP 프로토콜 그룹에 없다는 것을 알 수 있음</p>
</li>
<li><p>OSI 7 Layer는 장비 개발과 통신 자체를 어떻게 표준으로 잡을지 사용되는 반면에 실질적인 통신 자체는 주로 TCP/IP 프로토콜을 사용함</p>
</li>
<li><p>최근에는 TCP/IP 모델을 5계층으로 분류하기도 함</p>
</li>
</ul>
<hr>
<h1 id="1계층-물리-계층physical-layer">1계층: 물리 계층(Physical Layer)</h1>
<img src="https://velog.velcdn.com/images/dmori_2562/post/8c54bfcd-2f6d-4390-8cbc-efd0959950e6/image.png" width="500px">

<ul>
<li><p>두 시스템 간에 데이터를 전송하려고 링크를 활성화하고 관리하는 전기적, 기계적, 절차적, 기능적 특성을 정의함</p>
</li>
<li><p>또한 물리 계층은 허브, 라우터, 네트워크 카드, 케이블 등 전송매체를 통해 비트(bit)를 전송함</p>
</li>
<li><p>OSI 참조 모델 7계층 중 물리 계층은 최하위 계층인 첫 번째 계층으로, <strong>상위 계층에서 전송된 데이터를 물리매체를 통해 다른 시스템에 전기적 신호로 전송함</strong></p>
</li>
<li><p><strong>LAN 카드, 케이블, 허브, 라우터 등 물리적인 것과 데이터 전송에 사용하는 전압</strong> 등 기본적인 것이 물리계층에 속한다.</p>
</li>
</ul>
<img src="https://velog.velcdn.com/images/dmori_2562/post/50cbc270-d151-4a2b-a6c2-354217a5ef6a/image.png" width="600px">

<ul>
<li><p>송신 측의 물리 계층은 데이터 링크 계층에서 0과 1로 구성된 비트열의 데이터(프레임)을 받아 전기적 신호로 변환한 후 전송매체를 통하여 수신 측에 보냄</p>
</li>
<li><p>수신 측의 물리 계층은 송신 측에서 받은 전기 신호를 0과 1로 구성된 비트열로 복원하여 수신 측의 데이터 링크 계층에 전송함</p>
</li>
</ul>
<blockquote>
<ul>
<li>즉, <strong>실제 장치를 연결</strong>하는 데 필요한 <strong>전기적, 물리적 세부 사항</strong>을 정의</li>
</ul>
</blockquote>
<ul>
<li>물리 계층의 장치로는 <strong>허브나 리피터</strong>가 있음</li>
</ul>
<br>

<h2 id="물리-계층-관련-장비">물리 계층 관련 장비</h2>
<h3 id="리피터repeater">리피터(Repeater)</h3>
<img src="https://velog.velcdn.com/images/dmori_2562/post/398672f2-bad3-4b55-856c-4566560e0ef6/image.png" width="300px">

<ul>
<li><p>네트워크를 연장하기 위한 장비</p>
</li>
<li><p>불분명해진 <strong>신호 세기를 다시 증가</strong>시키는 역할</p>
</li>
<li><p>최근에는 리피터가 모든 네트워크 장비에 공통으로 들어가는 기능이 됨.</p>
</li>
</ul>
<h3 id="허브hub">허브(Hub)</h3>
<img src="https://velog.velcdn.com/images/dmori_2562/post/439caa11-417e-4b95-a74d-afe975ac3ca8/image.png" width="500px">

<ul>
<li><p>요즘 쓰이는 스위치의 예전 형태</p>
</li>
<li><p>허브는 스위치와 형태나 사용 방법이 같지만 패킷을 모든 곳에 똑같이 복사해서 보내는 것이 다름(스위치는 목적지에만 데이터를 전송)</p>
</li>
</ul>
<hr>
<h1 id="2계층-데이터-링크-계층data-link-layer">2계층: 데이터 링크 계층(Data Link Layer)</h1>
<img src="https://velog.velcdn.com/images/dmori_2562/post/22ddb017-c26e-4337-9eee-ca455b337a43/image.png" width="600px">

<ul>
<li><p><strong>물리적 링크를 이용하여 신뢰성 있는 데이터를 전송하는 계층</strong>으로, 네트워크를 통해 데이터를 전송할 때 전송로 역할을 한다.</p>
</li>
<li><p>데이터 링크 계층에서는 <strong>비트를 프레임이라는 논리적 단위로 구성했다.</strong></p>
</li>
<li><p>OSI 참조 모델 7계층 중 데이터 링크 계층은 하위 계층인 두 번째 계층으로, 물리 계층의 바로 위에 위치한다.</p>
</li>
<li><p>시스템 간에 오류 없이 데이터를 전송하려고 <strong>네트워크 계층에서 받은 데이터 단위(패킷)을 프레임으로 구성하여 물리 계층으로 전송한다.</strong></p>
</li>
</ul>
<img src="https://velog.velcdn.com/images/dmori_2562/post/9c935d0e-d690-4e5a-b4d5-bc69b13e09ff/image.png" width="400px">

<ul>
<li><p>위의 그림은 물리 주소 14인 노드가 물리 주소 93인 노드로 프레임을 보내고 두 노드는 링크로 연결되어 있다.</p>
</li>
<li><p>이 프레임은 헤더에 물리 주소가 있는데, 여기서는 데이터 링크 계층에서 해당 물리 주소로 통신이 가능함</p>
</li>
</ul>
<blockquote>
<p><strong>헤더의 끝</strong>에는 필요한 정보가 들어 있음
<strong>트레일러</strong>에는 오류를 검출하는 특별한 비트들이 있음</p>
</blockquote>
<h2 id="mac-주소">MAC 주소</h2>
<ul>
<li>데이터 링크 계층의 물리적인 주소: 랜 카드나 네트워크 장비의 하드웨어 주소(<strong>MAC 주소</strong>)</li>
</ul>
<blockquote>
<p><strong>MAC 주소</strong>
<img src="https://velog.velcdn.com/images/dmori_2562/post/1a41b778-c44f-4884-b45d-975a00d8e45b/image.png" width="400px"></p>
</blockquote>
<ul>
<li>총 12개의 16진수로 구성</li>
<li>앞쪽 6개는 네트워크 카드를 만든 회사(OUI: Organizationally Unique Identifier)를 뜻하고, 뒤쪽 6개는 호스트 식별자(Host Identifier)로 각 회사에서 임의로 붙이는 일종의 시리얼</li>
<li>같은 MAC 주소는 존재하지 않음. </li>
</ul>
<br>

<h2 id="데이터-링크-계층-프로토콜-이더넷">데이터 링크 계층 프로토콜: 이더넷</h2>
<ul>
<li>제록스의 PARC(Palo Alto Research Center)에서 1970년대에 개발한 데이터 링크 계층의 프로토콜</li>
</ul>
<br>

<h3 id="csmacd-carrier-sense-multipul-accesscollision-detection">CSMA/CD (Carrier Sense Multipul Access/Collision Detection)</h3>
<ul>
<li><p>이더넷의 통신 방식</p>
</li>
<li><p>이더넷 환경에서 통신을 하고 싶을 때, Carrier Sense를 수행함</p>
</li>
<li><p>복수개의 디바이스가 동시에 통신을 시작할 때, Collision이 발생하고 이를 Detection할 수 있음</p>
</li>
<li><p>Collision Detection이 일어난 후, 랜덤한 시간을 기다린 후 데이터를 다시 보냄</p>
</li>
</ul>
<br>

<h2 id="데이터-링크-계층-장비">데이터 링크 계층 장비</h2>
<h3 id="브리지bridge">브리지(Bridge)</h3>
<img src="https://velog.velcdn.com/images/dmori_2562/post/5285c425-d34b-406c-80bd-f0b2d19a9f73/image.png" width="300px">


<ul>
<li><p>랜(LAN)과 랜(LAN)을 연결하는 초기의 네트워크 장치</p>
</li>
<li><p>데이터 링크 계층에서 통신 선로를 따라서 한 네트워크에서 그 다음 네트워크로 데이터 프레임을 복사하는 역할</p>
</li>
</ul>
<blockquote>
<img src="https://velog.velcdn.com/images/dmori_2562/post/c1e30f9a-c16d-4b75-b1a5-97c48d6c813a/image.png" width="500px">
Bridge는 Collision이 커지는 것을 막고, Collision들을 단절시킴.
</blockquote>
<h3 id="스위치switch">스위치(Switch)</h3>
<img src="https://velog.velcdn.com/images/dmori_2562/post/9a148fe5-822c-45c1-a14a-7257d123ba7f/image.png" width="300px">

<ul>
<li><p>기본적으로 데이터 링크 계층에서 작동하는 스위치를 뜻함(L2 스위치)</p>
</li>
<li><p>허브의 단점인 Collision Domain의 확대를 해결</p>
</li>
</ul>
<blockquote>
<p>L2 스위치는 연결된 시스템이 늘어날수록 패킷 간 충돌 때문에 매우 낮은 속도로 동작하는 더미 허브의 문제점을 해결하는 획기적인 방안</p>
</blockquote>
<ul>
<li>과거에는 브릿지를 통해서 Collision Domain을 나누었지만, 현재는 스위치가 인기가 많음</li>
</ul>
<blockquote>
<h2 id="스위치의-mac주소-테이블">스위치의 MAC주소 테이블</h2>
<img src="https://velog.velcdn.com/images/dmori_2562/post/a16c01fe-2c85-41d4-8e03-7f3eb440eca7/image.png" width="500px">
시스템 간의 원활한 통신을 위해 주소 테이블을 생성하고 관리하는 역할
</blockquote>
<hr>
<h1 id="3계층-네트워크-계층network-layer">3계층: 네트워크 계층(Network Layer)</h1>
<img src="https://velog.velcdn.com/images/dmori_2562/post/9a95b780-7531-4ce5-92b8-bd5088f43b2c/image.png" width="500px">

<ul>
<li><p>랜(LAN)을 벗어난 통신을 하기 위해 <strong>네트워크 계층에서는 IP 주소를 사용</strong>한다.</p>
</li>
<li><p><strong>라우팅 프로토콜</strong>을 사용하여 최적의 경로를 선택한다.</p>
</li>
<li><p>네트워크 계층은 <strong>데이터를 패킷 단위로 분할하여 전송</strong>한 후 재결합한다.</p>
</li>
<li><p>OSI 참조 모델 7계층 중 네트워크 계층은 세 번째 계층으로, 패킷을 송신 측에서 수신 측으로 전송한다.</p>
</li>
</ul>
<br>

<h2 id="네트워크-계층-프로토콜">네트워크 계층 프로토콜</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/19ea619e-3cca-4afc-b6dc-71f44e8ba85e/image.png" alt=""></p>
<ul>
<li>ARP</li>
<li>IP</li>
<li>ICMP</li>
<li>IGMP</li>
</ul>
<h3 id="arp-address-resolution-protocol">ARP (Address Resolution Protocol)</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/f4047018-3ee0-4e2d-b0a0-72c61c33eff1/image.png" alt=""></p>
<ul>
<li><p>데이터를 <strong>전달하려는 IP 주소의 통신에 필요한 물리적인 주소(MAC)</strong>를 알아내는 프로토콜</p>
</li>
<li><p>선택된 매체에 브로드캐스트를 통해 특정 IP 주소를 사용하는 호스트가 응답을 하도록 요구하는 방식을 사용</p>
</li>
</ul>
<br>

<h3 id="ip-internet-protocol">IP (Internet Protocol)</h3>
<ul>
<li><p>가장 대표적인 네트워크 계층의 프로토콜</p>
</li>
<li><p>하위 계층의 서비스를 이용하여 두 노드 간의 데이터 전송 경로를 확립해주는 역할 (단말장치 간 패킷 전송 서비스)</p>
</li>
</ul>
<br>

<h4 id="ip-주소-체계">IP 주소 체계</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/4f0740fe-fb51-4edf-adbb-91cdb7daed4e/image.png" alt=""></p>
<ul>
<li>32자리 2진수로, 8자리마다 점을 찍어 구분</li>
</ul>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/91c6de28-d399-4d4b-b429-bd071db831d2/image.png" alt=""></p>
<ul>
<li><p><strong>A, B, C, D, E 클래스로 구분</strong>하는데 각 클래스는 네트워크 부분과 호스트 부분으로 구성</p>
</li>
<li><p>A, B, C 클래스는 맨 앞부분에 시작하는 2진수 숫자에 따라 구분</p>
</li>
</ul>
<blockquote>
<p>사설 네트워크: <strong>사설 네트워크는 공인 네트워크 주소 부족 현상을 해결</strong>하기 위해 많이 사용
<img src="https://velog.velcdn.com/images/dmori_2562/post/9f1e4719-5113-4f3c-be96-855b3b9970d6/image.png" alt=""></p>
</blockquote>
<br>

<h3 id="icmp-internet-control-message-protocol">ICMP (Internet Control Message Protocol)</h3>
<ul>
<li><p>ICMP는 호스트 서버와 인터넷 게이트웨이 사이에서 <strong>메시지를 제어하고 오류를 알려주는</strong> 프로토콜이다.</p>
</li>
<li><p>대표적인 툴은 ping.</p>
</li>
<li><p>ICMP Echo Request 메시지: 송신측의 전송 패킷이 목적지 노드나 라우터에 잘 도착했는지를 확인하는데 사용</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/8226171d-67e8-4338-bb45-00d0f85d02aa/image.png" alt=""></p>
<h3 id="igmp-internet-group-management-protocol">IGMP (Internet Group Management Protocol)</h3>
<ul>
<li><p><a href="https://velog.io/@dmori_2562/%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%86%B5%EC%8B%A0%EA%B3%BC%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC1.-Overview">멀티캐스트</a>에 관여하는 프로토콜</p>
</li>
<li><p>멀티캐스트 그룹을 관리하는 역할</p>
</li>
</ul>
<br>

<h2 id="네트워크-계층-관련-장비">네트워크 계층 관련 장비</h2>
<h3 id="라우터gateway">라우터(Gateway)</h3>
<img src="https://velog.velcdn.com/images/dmori_2562/post/9a885bbe-1ece-4c1e-a2cc-1aba005f2bef/image.png" width="400px">

<ul>
<li><p>네트워크의 대표적인 장비, 게이트웨이라고도 한다.</p>
</li>
<li><p>논리적으로 분리된 둘 이상의 네트워크를 연결.</p>
</li>
<li><p><strong>로컬 네트워크에서 브로드캐스트를 차단하여 네트워크를 분리.</strong></p>
</li>
<li><p>패킷의 최적 경로를 찾기 위한 라우팅 테이블을 구성.</p>
</li>
<li><p>패킷을 목적지까지 가장 빠르게 보내는 길잡이 역할을 담당.</p>
</li>
</ul>
<h4 id="정적-라우팅">정적 라우팅</h4>
<img src="https://velog.velcdn.com/images/dmori_2562/post/1339d9d3-1752-49cb-b6a2-e894d848445e/image.png" width="600px">


<ul>
<li><p>관리자 권환으로 특정 경로를 통해서만 패킷이 지날 수 있도록 설정</p>
</li>
<li><p>네트워크 변경사항이 발생할경우 <strong>라우팅 테이블을 수동으로 직접 고쳐야한다</strong>.</p>
</li>
<li><p>보안이 중요한 경우 선택된다.</p>
</li>
</ul>
<blockquote>
<p><strong>특징</strong></p>
</blockquote>
<ul>
<li>초기에 <strong>관리자</strong>가 다양한 라우팅 정보를 분석한 최적의 경로 설정 가능</li>
<li>라우팅 알고리즘을 통한 경로 설정이 이루어지지 않아 <strong>처리 부하 감소</strong></li>
<li>네트워크 환경 변화에 대한 <strong>능동적인 대처가 어려움</strong></li>
<li>네트워크 환경 변화 시 관리자가 경로를 재산출하여 <strong>각 라우터에 제공해야 함</strong></li>
<li>비교적 <strong>환경 변화가 적은</strong> 형태의 네트워크에 적합</li>
</ul>
<h4 id="동적-라우팅">동적 라우팅</h4>
<img src="https://velog.velcdn.com/images/dmori_2562/post/7f600752-2461-47a0-b95e-2ba556028f0d/image.png" width="600px">

<ul>
<li><p>라우터가 네트워크 연결 상태를 스스로 파악하여 최적의 경로를 선택해 전송</p>
</li>
<li><p>네트워크 변경사항이 발생할경우 <strong>자동으로 문제를 해결</strong></p>
</li>
</ul>
<blockquote>
<p><strong>특징</strong></p>
</blockquote>
<ul>
<li>경로 설정이 실시간으로 이루어져 네트워크 <strong>환경 변화에 능동적으로 대처</strong> 가능</li>
<li>라우팅 알고리즘을 통해 자동으로 경로 설정이 이루어져 <strong>관리가 쉬움</strong></li>
<li>주기적인 라우팅 정보 송수신으로 인한 <strong>대역폭 낭비 초래</strong></li>
<li>네트워크 환경 변화 시 라우터의 처리 부하 증가로 <strong>지연</strong>이 발생</li>
<li>수시로 <strong>환경이 변하는</strong> 형태의 네트워크에 적합</li>
</ul>
<hr>
<h1 id="4계층-전송-계층transport-layer">4계층: 전송 계층(Transport Layer)</h1>
<img src="https://velog.velcdn.com/images/dmori_2562/post/5c59a932-3554-48f4-acb8-3cb08f09207e/image.png" width="600px">


<ul>
<li><p><strong>프로토콜(TCP, UDP)과 관련된 계층으로 오류 복구와 흐름 제어</strong> 등을 담당, 두 시스템 간에 <strong>신뢰성 있는</strong> 데이터를 전송함</p>
</li>
<li><p>네트워크 계층에서 전송한 데이터와 실제 운영체제의 프로그램이 연결되는 통신 경로</p>
</li>
<li><p>네트워크 계층에서 온 데이터를 세션 계층의 어느 애플리케이션에 보낼 것인지 판독하고, <strong>전송할 경로(Port, 포트)</strong>를 선택함</p>
</li>
</ul>
<blockquote>
<p><strong>포트 주소</strong>
<img src="https://velog.velcdn.com/images/dmori_2562/post/40ce23b2-870e-4177-919e-4d56b6951df8/image.png" width="400px"></p>
</blockquote>
<ul>
<li>전송 계층의 대표 프로토콜인 TCP(Transmission Control Protocol)가 가진 주소</li>
<li>0 ~ 65535(2^16-1)번까지 존재</li>
<li>0 ~ 1023(1,024)를 잘 알려진 포트(Well Known Port)라고 부름(보통 0번 포트는 사용하지 않는다)</li>
<li>즉, 포트는 TCP가 상위 계층으로 데이터를 전달하거나 상위 계층에서 TCP로 데이터를 전달할 때 상호 간에 사용하는 <strong>데이터의 이동 통로</strong>를 말함
<img src="https://velog.velcdn.com/images/dmori_2562/post/c024f3c4-41d6-460a-a466-b202502a1f62/image.png" alt=""></li>
<li>파일을 동시에 다운로드할 수 있는 이유는 TCP 프로토콜이 <strong>포트를 여러 개 사용</strong>해서 상위 계층의 프로그램과 각각 따로 통신하기 때문이다.</li>
</ul>
<h2 id="전송-계층-프로토콜">전송 계층 프로토콜</h2>
<h3 id="tcptransmission-control-protocol">TCP(Transmission Control Protocol)</h3>
<ul>
<li><strong>연결 지향형 프로토콜</strong></li>
<li>IP와 함께 통신을 하는 데 반드시 필요한 가장 기본적인 프로토콜</li>
</ul>
<h4 id="특징">특징</h4>
<ul>
<li><p>높은 신뢰성</p>
</li>
<li><p>가상 회선 연결 방식</p>
</li>
<li><p>연결의 설정과 해제</p>
<blockquote>
<p><strong>Three-Way Handshaking</strong></p>
<img src="https://velog.velcdn.com/images/dmori_2562/post/eee56780-4fca-4a02-9939-c04f51240d39/image.png" width="400px"></blockquote>
</li>
<li><p><em>연결 해제*</em></p>
<blockquote>
<img src="https://velog.velcdn.com/images/dmori_2562/post/073694b2-e616-4136-93af-eb7e50725ba8/image.png" width="400px">
</blockquote>
</li>
<li><p>데이터 체크섬</p>
</li>
<li><p>시간 초과와 재전송</p>
</li>
<li><p>데이터 흐름 제어</p>
</li>
</ul>
<br>

<h3 id="udpuser-datagram-protocol">UDP(User Datagram Protocol)</h3>
<ul>
<li><strong>비연결 지향형 프로토콜</strong></li>
<li>상대방이 보낸 응답을 확인하지 않아 네트워크에 부하를 주지 않음.</li>
<li>데이터 자체의 신뢰성이 없어 수신한 데이터의 무결성을 보장받지 못함.</li>
</ul>
<h4 id="특징-1">특징</h4>
<ul>
<li><p>비연결 지향형</p>
</li>
<li><p>네트워크 부하 감소</p>
</li>
<li><p>비신뢰성 </p>
</li>
<li><p>전송된 데이터의 일부가 손실됨.</p>
</li>
</ul>
<hr>
<h1 id="5계층-세션-계층session-layer">5계층: 세션 계층(Session Layer)</h1>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/d5458fa6-f253-4138-8563-da5bb47e2319/image.png" alt=""></p>
<ul>
<li><p>응용 프로그램 계층 간의 통신을 제어하는 구조를 제공하려고 <strong>응용 프로그램 계층 사이의 접속을 설정, 유지, 종료시켜주는 역할</strong>을 함</p>
</li>
<li><p>세션 계층은 OSI 참조 모델의 상위 계층인 다섯 번째 계층으로, 통신장치 간의 설정을 유지하고 동기화하는 역할을 함</p>
</li>
</ul>
<hr>
<h1 id="6계층-표현-계층presentation-layer">6계층: 표현 계층(Presentation Layer)</h1>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/59ac47b9-8e08-4196-aa31-dcfd38e0e45f/image.png" alt=""></p>
<ul>
<li><p>데이터 표현 차이를 해결하려고 서로 다른 형식으로 변환하거나 공통 형식을 제공하는 계층</p>
</li>
<li><p>송신 측에서는 수신 측에 맞는 형태로 변환하고, 수신 측에서는 응용 계층에 맞는 형태로 변환함</p>
</li>
<li><p>또한 그래픽 정보는 JPEG 형태로, 동영상은 MPEG 형태로 변환하여 송수신하는 기능과 데이터 압축 및 암호화 기능 등을 제공함</p>
</li>
<li><p>표현 계층은 OSI 참조 모델의 상위 계층인 여섯 번째 계층으로, 송신 측과 수신 측 사이에서 표준화된 데이터 형식을 규정함</p>
</li>
</ul>
<hr>
<h1 id="7계층-응용-계층application-layer">7계층: 응용 계층(Application Layer)</h1>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/a3930819-040b-4ab9-a89a-e6da79832385/image.png" alt=""></p>
<ul>
<li><p>관련 응용 프로그램이 별도로 존재하며, <strong>여러 가지 프로토콜에 대하여 사용자 인터페이스를 제공</strong></p>
</li>
<li><p>파일 전송, 데이터베이스, 원격 접속, 이메일 전송 등 응용 서비스를 네트워크에 접속시키는 역할을 하며, 여러 가지 서비스를 제공함</p>
</li>
<li><p>사용자에게 정보를 입력받아 하위 계층으로 전달하고, 하위 계층에서 전송한 데이터를 사용자에게 전달함</p>
</li>
<li><p>응용 계층은 OSI 참조 모델의 최상위 계층인 일곱 번째 계층으로, 실제로 통신의 최종 목적에 해당하는 가장 중요한 계층임</p>
</li>
</ul>
<h2 id="응용-계층application-layer-프로토콜">응용 계층(Application Layer) 프로토콜</h2>
<h3 id="ftpfile-transfer-protocol-20-21">FTP(File Transfer Protocol, 20, 21)</h3>
<ul>
<li><p>파일 전송을 위한 가장 기본적인 프로토콜</p>
</li>
<li><p>1972년, 텔넷과 함께 표준으로 제정</p>
</li>
<li><p>클라이언트와 서버가 대화형으로 통신 가능</p>
</li>
</ul>
<br>

<h3 id="telnet텔넷-23">Telnet(텔넷, 23)</h3>
<ul>
<li><p>사용자가 원격에 있는 서버에 로그인하도록 TCP 연결을 설정</p>
</li>
<li><p>단말기가 원격 컴퓨터 바로 옆에 있는 것처럼 직접 조작할 수 있게 해줌.</p>
</li>
</ul>
<br>

<h3 id="pop3--imap110-143">POP3 &amp; IMAP(110, 143)</h3>
<ul>
<li><p>POP3(110): 메일 서버로 전송된 메일을 확인할 때 사용하는 프로토콜</p>
</li>
<li><p>IAMP(143): POP3와 기본적으로 같으나, 메일을 읽은 후 메일이 서버에 남음.</p>
</li>
</ul>
<br>

<h3 id="smtpsimple-mail-transfer-protocol-25">SMTP(Simple Mail Transfer Protocol, 25)</h3>
<ul>
<li>메일 서비스</li>
</ul>
<br>

<h3 id="dnsdomain-name-system-53">DNS(Domain Name System, 53)</h3>
<ul>
<li>도메인 이름 주소를 통해 IP 주소를 확인할 수 있는 프로토콜</li>
</ul>
<br>

<h3 id="tftptrivial-file-transfer-protocol-69">TFTP(Trivial File Transfer Protocol, 69)</h3>
<ul>
<li><p>파일을 전송하는 프로토콜</p>
</li>
<li><p>UDP 패킷을 사용하고, 인증 기능을 제공하지 않음.</p>
</li>
</ul>
<br>

<h3 id="httphypertext-transfer-protocol-80">HTTP(HyperText Transfer Protocol, 80)</h3>
<ul>
<li>인터넷을 위해 사용하는 가장 기본적인 프로토콜</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로토콜(Protocol)이란?]]></title>
            <link>https://velog.io/@dmori_2562/0.Overview-0.2-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C</link>
            <guid>https://velog.io/@dmori_2562/0.Overview-0.2-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C</guid>
            <pubDate>Wed, 19 Oct 2022 12:59:53 GMT</pubDate>
            <description><![CDATA[<h2 id="데이터통신과네트워크">데이터통신과네트워크</h2>
<h3 id="프로토콜에-대한-이해">프로토콜에 대한 이해</h3>
<ul>
<li>본래 의미는 외교에서 의례 또는 의정서<blockquote>
<p>톰 마릴이 &#39;컴퓨터와 컴퓨터 사이에서 메시지를 전달하는 과정&#39;이라 정의</p>
</blockquote>
</li>
</ul>
<h3 id="프로토콜의-3요소">프로토콜의 3요소</h3>
<ul>
<li><p><strong>구문(Syntax)</strong>: 데이터의 구조나 포맷</p>
</li>
<li><p><strong>의미(Semantics)</strong>: 전송되는 데이터의 각 부분이 무엇을 뜻하는 지를 알 수 있게 미리 정해둔 규칙 (데이터 자체뿐만 아니라 오류 제어, 동기 제어, 흐름 제어를 포함)</p>
</li>
<li><p><strong>순서(Timing)</strong>: 어떤 데이터를 보낼 것인지와 얼마나 빠르게 보낼 것인지 를 정의</p>
</li>
</ul>
<br>

<hr>
<h3 id="프로토콜의-기능">프로토콜의 기능</h3>
<ul>
<li><p>주소 설정(Addressing): <strong>서로 다른 시스템</strong>의 두 개체가 통신을 하는 경우 필요</p>
</li>
<li><p>순서 제어(Sequence Control): 프로토콜 데이터 단위를 전송할 때 보내는 <strong>순서를 명시하는 기능</strong>(연결 지향형 (Connection-Oriented)에만 사용)</p>
</li>
<li><p>데이터 대열의 단편화 및 재조합(Fragmentation &amp; Reassembly): 대용량 파일을 전송할 때 <strong>전송 효율이 높은 작은 단위로 나누어 전송</strong>한 뒤 전송받은 시스템에서 이를 <strong>재조합</strong> 해야 함.</p>
</li>
<li><p>캡슐화(Encapsulation): 데이터에 제어 정보를 추가</p>
</li>
<li><p>연결 제어(Connection Control): <strong>연결 설정, 데이터 전송, 연결 해제에 대한 통제</strong> 수행</p>
</li>
<li><p>흐름 제어(Flow Control): 송신측 개체로부터 오는 <strong>데이터의 양이나 속도를 조절</strong>하는 기능. 송신측과 수신측의 속도 차이 등으로 인한 정보 유실을 방지.</p>
</li>
<li><p>오류 제어(Error Control): 두 개체에서 데이터를 교환할 때 <strong>오류가 발생할 경우, 이를 제어</strong>하는 기법. 순서를 검사하거나 특정 시간 안에 받지 못하면 재전송을 요구하는 방식으로 이루어짐.</p>
</li>
<li><p>동기화(Synchroniztion): 두 개체 간에 데이터를 전송할 때 각 개체는 특정 타이머 값이나 윈도우 크기 등을 통해 <strong>동시에 정의된 인자 값을 공유</strong>하는 것.</p>
</li>
<li><p>다중화(Multiplexing): 통신 선로 하나에서 <strong>여러 시스템을 동시에 통신</strong>할 수 있는 기법</p>
</li>
<li><p>전송 서비스: <strong>우선순위 결정, 서비스 등급과 보안 요구 등을 제어</strong>하는 서비스</p>
</li>
</ul>
<blockquote>
<p>뒤에서 각 계층의 프로토콜을 공부한 뒤, 다시 보는 것이 좋다.</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[공격 아래에 있는 네트워크: 보안]]></title>
            <link>https://velog.io/@dmori_2562/1.-%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%99%80-%EC%9D%B8%ED%84%B0%EB%84%B7-1.6-%EA%B3%B5%EA%B2%A9-%EC%95%84%EB%9E%98%EC%97%90-%EC%9E%88%EB%8A%94-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%B3%B4%EC%95%88</link>
            <guid>https://velog.io/@dmori_2562/1.-%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%99%80-%EC%9D%B8%ED%84%B0%EB%84%B7-1.6-%EA%B3%B5%EA%B2%A9-%EC%95%84%EB%9E%98%EC%97%90-%EC%9E%88%EB%8A%94-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%B3%B4%EC%95%88</guid>
            <pubDate>Mon, 17 Oct 2022 04:47:34 GMT</pubDate>
            <description><![CDATA[<h1 id="네트워크-보안">네트워크 보안</h1>
<h2 id="네트워크-보안의-영역">네트워크 보안의 영역</h2>
<ul>
<li>어떻게 나쁜 사람들이 컴퓨터 네트워크를 공격하는가</li>
<li>어떻게 우리가 공격에 맞서 네트워크를 막을 수 있는가</li>
<li>어떻게 공격에 면역이 되도록 구조를 디자인할 수 있는가</li>
</ul>
<br>

<h2 id="네트워크-보안의-필요성">네트워크 보안의 필요성</h2>
<p>인터넷은 원래 보안 요소가 설계되지 않았었다.</p>
<blockquote>
<p>하지만 나쁜 마음을 먹은 사름들이 생기면서 보안 고려사항은 모든 계층에 적용되었다!</p>
</blockquote>
<hr>
<h2 id="호스트를-통한-공격">호스트를 통한 공격</h2>
<h3 id="malware가-침입하는-방법">malware가 침입하는 방법</h3>
<ul>
<li>바이러스(virus): 수신/수신 대상(예: 전자 메일 첨부)에 의한 자가 감염</li>
<li>웜(worm): 스스로 실행되는 개체를 수동적으로 수신하여 자가 감염</li>
</ul>
<h3 id="spyware-malware">spyware malware</h3>
<p>스파이웨어 악성 프로그램은 키 입력, 방문한 웹 사이트, 업로드 등을 수집 사이트에 저장할 수 있다.</p>
<h3 id="botnet">botnet</h3>
<p>호스트를 감염시켜 botnet으로 등록시킬 수 있다.</p>
<blockquote>
<p>이 방법은 스팸 전송이나 디도스(DDos) 공격에 사용된다.</p>
</blockquote>
<br>

<h2 id="서버와-네트워크-인프라에-대한-공격">서버와 네트워크 인프라에 대한 공격</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/bdbd9530-bf59-4d42-9acd-4743307cb9dd/image.png" alt=""></p>
<p>도스(Denial of Service): 공격자는 가짜 트래픽으로 리소스를 압도하여 합법적인 트래픽에 리소스(서버, 대역폭)를 사용할 수 없게 만든다.</p>
<h2 id="스니핑sniffing">스니핑(Sniffing)</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/238c19b5-562b-489d-98d8-c702c610591b/image.png" alt=""></p>
<ul>
<li>브로드캐스트 방법에서 사용된다.</li>
<li>공격자가 모든 패킷을 읽고, 기록할 수 있다.</li>
</ul>
<h2 id="ip-스푸핑ip-spoofing">IP 스푸핑(IP spoofing)</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/9d7005e7-436b-4d9e-9014-805835e8927c/image.png" alt=""></p>
<p>공격자가 송신지 주소를 속여 패킷을 전송한다.</p>
<h2 id="보안-계층">보안 계층</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/d6e13647-9206-4eb3-b795-7354aa2bb94b/image.png" alt=""></p>
<blockquote>
<p>보안 계층은 이처럼 인터넷 계층 전부에 적용되어 있다!</p>
</blockquote>
<hr>
<h2 id="참고자료-wireshark">참고자료: Wireshark</h2>
<p>오픈소스 기반 네트워크 패킷 모니터링 툴이다. 패킷의 송수신을 확인할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로토콜 계층, 서비스 모델에 대해서]]></title>
            <link>https://velog.io/@dmori_2562/1.-%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%99%80-%EC%9D%B8%ED%84%B0%EB%84%B7-1.5-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EA%B3%84%EC%B8%B5-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%AA%A8%EB%8D%B8</link>
            <guid>https://velog.io/@dmori_2562/1.-%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%99%80-%EC%9D%B8%ED%84%B0%EB%84%B7-1.5-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EA%B3%84%EC%B8%B5-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%AA%A8%EB%8D%B8</guid>
            <pubDate>Mon, 17 Oct 2022 04:30:23 GMT</pubDate>
            <description><![CDATA[<h1 id="프로토콜-계층-서비스-모델">프로토콜 계층, 서비스 모델</h1>
<hr>
<h2 id="프로토콜-계층">프로토콜 &quot;계층&quot;</h2>
<p>네트워크는 복잡하고, 많은 구성요소들로 이루어져 있다.</p>
<ul>
<li>호스트</li>
<li>라우터</li>
<li>다양한 매체의 링크</li>
<li>어플</li>
<li>프로토콜</li>
<li>하드웨어 및 소프트웨어</li>
</ul>
<h2 id="왜-계층화-하는가">왜 계층화 하는가?</h2>
<blockquote>
<p>복잡한 시스템을 다루기 위해서!</p>
</blockquote>
<ul>
<li>명시적 구조는 복잡한 시스템 조각의 식별과 관계를 가능하게 한다.</li>
<li>모듈화를 통해 시스템 유지 보수 및 업데이트 용이해진다.</li>
</ul>
<h2 id="인터넷-프로토콜-구조">인터넷 프로토콜 구조</h2>
<ul>
<li>Application: 네트워크 응용 프로그램 지원<blockquote>
<p>Ex) FTP, SMTP, HTTP</p>
</blockquote>
</li>
<li>Transport: 프로세스와 프로세스 간 데이터 전송<blockquote>
<p>Ex) TCP, UDP</p>
</blockquote>
</li>
<li>Network: 원본에서 대상으로 datagram 라우팅<blockquote>
<p>Ex) IP, 라우팅 프로토콜</p>
</blockquote>
</li>
<li>Link: 인접 네트워크 요소 간의 데이터 전송<blockquote>
<p>Ex) 이더넷, WiFi</p>
</blockquote>
</li>
<li>Physical: &quot;전선상의&quot; 비트</li>
</ul>
<h2 id="osi와-실제-인터넷-프로토콜의-차이점">OSI와 실제 인터넷 프로토콜의 차이점</h2>
<img src="https://velog.velcdn.com/images/dmori_2562/post/1fac9b26-3f68-46e0-b6a0-0cae16c2e698/image.png" width="400px">

<p>OSI는 7계층으로 표현 계층과 세션 계층이 추가되어 있다!!</p>
<blockquote>
<p>하지만, 실제 인터넷에서는 이 두가지를 Application 계층에서 해결한다!</p>
</blockquote>
<h2 id="캡슐화-과정">캡슐화 과정</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/046b75c0-a702-468b-98b1-407973cf55f0/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[네트워크의 지연, 손실, 처리량에 대해서]]></title>
            <link>https://velog.io/@dmori_2562/1.-%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%99%80-%EC%9D%B8%ED%84%B0%EB%84%B7-1.4-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%9D%98-%EC%A7%80%EC%97%B0-%EC%86%90%EC%8B%A4-%EC%B2%98%EB%A6%AC%EB%9F%89</link>
            <guid>https://velog.io/@dmori_2562/1.-%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%99%80-%EC%9D%B8%ED%84%B0%EB%84%B7-1.4-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%9D%98-%EC%A7%80%EC%97%B0-%EC%86%90%EC%8B%A4-%EC%B2%98%EB%A6%AC%EB%9F%89</guid>
            <pubDate>Mon, 17 Oct 2022 04:01:09 GMT</pubDate>
            <description><![CDATA[<h1 id="네트워크의-지연-손실-처리량">네트워크의 지연, 손실, 처리량</h1>
<hr>
<h2 id="어떻게-지연과-손실이-발생하는가">어떻게 지연과 손실이 발생하는가?</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/02bac014-05ed-4407-92d3-e6f3a80d031d/image.png" alt=""></p>
<p>라우터 버퍼 안에 패킷 대기열을 생각해보자.</p>
<blockquote>
<ul>
<li>패킷들이 링크에 도착하는 속도가 출력 링크 용량보다 클 경우 지연이 발생한다.</li>
</ul>
</blockquote>
<ul>
<li>대기열에 있는 패킷들은 자신의 순서를 기다린다.</li>
</ul>
<br>

<h2 id="패킷-지연의-요소---4가지">패킷 지연의 요소 - 4가지</h2>
<p>전체 노드 지연은</p>
<blockquote>
<p>1) 노드 처리 지연(nodal processing delay)
2) 큐 지연(queueing delay)
3) 전송 지연(transmission delay)
4) 전파 지연(propagation delay)</p>
</blockquote>
<p>이 네 요소의 합으로 이루어진다. </p>
<h3 id="노드-처리-지연nodal-processing-delay">노드 처리 지연(nodal processing delay)</h3>
<ul>
<li>비트 에러를 체크</li>
<li>출력 링크를 결정</li>
<li>일반적으로 매우 짧다.</li>
</ul>
<br>

<h3 id="큐-지연queueing-delay">큐 지연(queueing delay)</h3>
<ul>
<li>출력 링크에서 전송을 위해서 기다리는 시간</li>
<li>라우터의 성능에 따라 달라진다.</li>
</ul>
<br>

<h3 id="전송-지연transmission-delay">전송 지연(transmission delay)</h3>
<ul>
<li>L: packet length (bits)</li>
<li>R: link bandwidth (bps)</li>
<li>전송 지연 = L/R</li>
</ul>
<br>

<h3 id="전파-지연propagation-delay">전파 지연(propagation delay)</h3>
<ul>
<li>d: 물리적 링크의 길이</li>
<li>s: 전파 속도 (통신 매체에 따라 다름)</li>
<li>전파 지연 = d/s</li>
</ul>
<br>

<h3 id="전송transmission-지연-vs-전파propagation-지연">전송(transmission) 지연 vs 전파(propagation) 지연</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/d9c18e6a-1e9c-4700-a864-51e9ac8d7a59/image.png" alt=""></p>
<h2 id="큐-지연">큐 지연</h2>
<ul>
<li><p>R: 링크 대역폭 (bits/sec)</p>
</li>
<li><p>L: 패킷 길이 (bits)</p>
</li>
<li><p>a: 평균 패킷 도착 속도 (packets/sec)</p>
</li>
<li><p>La/R: <strong>traffic intensity</strong>(큐가 무한하다고 가정할 때)</p>
</li>
</ul>
<blockquote>
<ul>
<li>La/R이 0에 가까울 경우, 큐 지연이 작다.</li>
</ul>
</blockquote>
<ul>
<li>La/R이 1에 가까울 경우, 큐 지연이 크다.</li>
<li>La/R &gt; 1, 평균 지연이 무한대이다.</li>
</ul>
<hr>
<h2 id="패킷-손실">패킷 손실</h2>
<p>실제로 링크 앞에 있는 대기열은 <strong>용량이 유한</strong>하다.</p>
<blockquote>
<p>그래서 패킷 딜레이는 무한대까지 도달하지 않는다.
대신 <strong>패킷 손실</strong>이 발생한다!</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/b7d0d26c-14ee-40d6-8fb3-d5cc019cc908/image.png" alt=""></p>
<p>큐가 꽉차있는 곳에 패킷이 도착할 경우, 라우터는 패킷을 버린다.
이때, 패킷이 손실되는 것이다.</p>
<ul>
<li>손실된 패킷은 이전 노드, 소스 엔드 시스템에 의해 재전송되거나 전혀 전송되지 않을 수 있다.</li>
</ul>
<hr>
<h2 id="처리량">처리량</h2>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/72e5bc24-75e1-4dd8-adf1-48fc5a480162/image.png" alt=""></p>
<p>정의: 송신자/수신자 간에 비트가 전송된 속도(bits/time unit)</p>
<h3 id="처리량과-관련된-문제">처리량과 관련된 문제</h3>
<p>네트워크의 각 link의 capacity가 다를 수 있다! 이런 상황에서 자기가 가지고 있는 capacity를 낭비하거나 패킷이 버려지게 된다.</p>
<p>*<em>그렇다면 어떻게 해결해야 할까? *</em></p>
<blockquote>
<p>가장 좁은 길을 파악해서 그 좁은 길의 용량만큼 보내야 한다. 가장 좁은 길(가장 성능 낮은 link)을 <strong>bottleneck</strong>이라고 한다. 
결국 이 bottleneck link가 전체 성능을 좌지우지한다.</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/959aec0b-0542-4a87-ad0b-833dedf022d2/image.png" alt=""></p>
<p> 위 그림에서는 각각 순서대로 Rs link와 Rc link가 bottleneck이다.</p>
<h3 id="인터넷-시나리오">인터넷 시나리오</h3>
<p> <img src="https://velog.velcdn.com/images/dmori_2562/post/98671a21-d767-4a08-ab5d-cd0d56436967/image.png" alt=""></p>
<p>보통 R이 Rc와 Rs보다 큰 경우가 많기 때문에, Rc나 Rs가 주로 bottleneck이 된다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[네트워크 코어(Network Core)란?]]></title>
            <link>https://velog.io/@dmori_2562/1.-%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%99%80-%EC%9D%B8%ED%84%B0%EB%84%B7-1.3-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%BD%94%EC%96%B4Network-Core</link>
            <guid>https://velog.io/@dmori_2562/1.-%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%99%80-%EC%9D%B8%ED%84%B0%EB%84%B7-1.3-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%BD%94%EC%96%B4Network-Core</guid>
            <pubDate>Sun, 16 Oct 2022 13:27:27 GMT</pubDate>
            <description><![CDATA[<h1 id="네트워크-코어">네트워크 코어</h1>
<p>라우터들의 연결들로 구성되어 있다.</p>
<blockquote>
<p>네트워크에서 데이터가 움직이는 것은 <strong>패킷 교환</strong>과 <strong>회로 교환</strong> 두 가지 방법이 존재한다!</p>
</blockquote>
<hr>
<h2 id="패킷-교환">패킷 교환</h2>
<h3 id="패킷이란">패킷이란?</h3>
<p>네트워크 어플에서 종단 시스템은 서로 메시지를 교환한다.</p>
<ul>
<li>호스트는 긴 메시지를 패킷이라 불리는 작은 데이터의 모임들로 나눈다.</li>
</ul>
<p>각 패킷은 통신 연결과 패킷 스위치 사이를 떠돌아다닌다.</p>
<blockquote>
<p><strong>패킷</strong>: 데이터 통신의 단위!</p>
</blockquote>
<br>

<h3 id="패킷-교환-저장-전달">패킷 교환: 저장-전달</h3>
<p>대부분의 패킷 스위치는 저장-전달 기법을 전송에 사용한다.
<img src="https://velog.velcdn.com/images/dmori_2562/post/c95de8bb-937e-4513-b097-f485de3d16b0/image.png" alt=""></p>
<blockquote>
<p><strong>저장 전달 기법</strong></p>
</blockquote>
<ul>
<li>패킷 스위치는 패킷의 처음 비트를 보내기 전에 무조건 전체 패킷을 수신해야 한다.</li>
</ul>
<p><strong>End to End Delay</strong> = 2 * (L/R)</p>
<p>3개의 패킷이 전송되는 데 걸리는 시간</p>
<ul>
<li>L/R일 때, 라우터는 첫 번째 패킷을 보내기 시작한다.</li>
<li>2L/R일 때, 목적지에서 첫 번째 패킷을 받고, 라우터는 두 번째 패킷을 받는다.</li>
<li>3L/R일 때, 목적지에서 두 번째 패킷을 받고, 라우터는 세 번째 패킷을 받는다.</li>
<li>4L/R일 때, 목적지에서 세 개의 모든 패킷을 받았다.</li>
</ul>
<br>

<h3 id="패킷-교환-대기열-지연-및-패킷-손실">패킷 교환: 대기열 지연 및 패킷 손실</h3>
<p>각각의 패킷 스위치는 여러 개의 링크가 연결되어 있다.</p>
<blockquote>
<p>각각의 링크에 대해 패킷 스위치는 출력 버퍼(출력 대기열)를 가지고 있다.</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/fcccd354-3450-4729-90c9-394d5159286c/image.png" alt=""></p>
<p><strong>대기열과 지연</strong></p>
<ul>
<li>패킷의 도착 속도 &gt; 패킷의 전송 속도: 패킷은 대기열에 머무르게 되고, 전송되기를 기다린다.</li>
<li>버퍼가 가득 찼을 때, 패킷은 손실될 수 있다.</li>
</ul>
<br>

<h3 id="패킷-교환-전달-및-라우팅">패킷 교환: 전달 및 라우팅</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/8f4615d2-8b9c-40cb-8bdf-bb62fc96b5a4/image.png" alt=""></p>
<ul>
<li><p>전달: 라우터의 입력에서 적절한 라우터 출력으로 패킷이 이동한다.</p>
</li>
<li><p>라우팅: 라우팅 알고리즘을 통해 소스-대상 경로를 결정한다.</p>
</li>
</ul>
<hr>
<h2 id="회로-교환">회로 교환</h2>
<p>회로 교환에서는 통신 기간 동안 리소스(리소스, 링크 전송 속도)가 예약되어있다.</p>
<ul>
<li>Ex) 전화 네트워크<blockquote>
<p>패킷 교환에서는 리소스들이 예약되어 있지 않다!</p>
</blockquote>
</li>
</ul>
<br>

<h3 id="회로-교환의-종류-fdm-tdm">회로 교환의 종류: FDM, TDM</h3>
<p>링크의 회로는 주파수 분할 다중화(FDM) 또는 시분할 다중화(TDM)로 구현된다.</p>
<h4 id="fdm">FDM</h4>
<img src="https://velog.velcdn.com/images/dmori_2562/post/1af542b4-69aa-4b00-92c0-b7a6f278a921/image.png" width="400px">
한 전송로의 대역폭을 여러 개의 작은 채널로 분할하여 여러 단말기가 동시에 이용하는 방식이다.

<br>

<h4 id="tdm">TDM</h4>
<img src="https://velog.velcdn.com/images/dmori_2562/post/d3f715da-d564-4442-af1c-fde2a325e5de/image.png" width="400px">
링크의 높은 대역폭을 여러 연결이 공유할 수 있도록 하는 디지털 과정이다. 

<p>TDM은 하나의 전송로 대역폭을 시간 슬롯(Time Slot)으로 나누어 채널에 할당함으로써 몇 개의 채널들이 한 전송로의 시간을 분할하여 사용한다.</p>
<hr>
<h2 id="패킷-교환-vs-회로-교환">패킷 교환 vs 회로 교환</h2>
<p>패킷 교환은 회로 교환보다 더 많은 사용자를 유치할 수 있다.</p>
<blockquote>
<p>각 사용자가 활동할 확률이 있고, 활동을 할 때만 네트워크를 사용하기 때문이다!</p>
</blockquote>
<h4 id="패킷-교환에서의-주의사항">패킷 교환에서의 주의사항</h4>
<p>하지만 패킷 교환에서는 과도한 혼잡(패킷 딜레이 및 손실)이 가능하다</p>
<blockquote>
<p>안정적인 데이터 전송, 혼잡 제어를 위해 프로토콜이 필요된다!!</p>
</blockquote>
<hr>
<h2 id="네트워크들의-네트워크">네트워크들의 네트워크</h2>
<p>종단 시스템은 접속 ISP를 통해 인터넷으로 연결된다.</p>
<blockquote>
<p>어느 호스트끼리든 송수신을 할 수 있도록 접속 ISP들은 모두 다 서로 연결되어 있어야 한다!</p>
</blockquote>
<h3 id="접속-isp들끼리-연결">접속 ISP들끼리 연결</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/8c2ef5c0-24eb-4b0f-803a-f7f647d190ae/image.png" alt=""></p>
<h3 id="하나의-글로벌-전송-isp에-연결">하나의 글로벌 전송 ISP에 연결</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/c2360d13-6b40-44a1-a0fc-0739b80b7c5b/image.png" alt=""></p>
<h3 id="여러-개의-글로벌-전송-isp에-연결ixp의-필요">여러 개의 글로벌 전송 ISP에 연결(IXP의 필요)</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/a8da1449-32d8-4b8b-9a3a-cc417fce6a2d/image.png" alt="">
글로벌 전송 ISP는 비즈니스적으로 사업이 되기에 여러 기업들이 경쟁자로 존재할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/bc166b6d-2fdc-4eb0-bac7-dff9d6ca75f6/image.png" alt="">
그리고 글로벌 전송 ISP들끼리도 연결되어야 하기에 IXP(Internet eXchange Point)가 존재한다.</p>
<h3 id="지역-네트워크에서-글로벌-전송-isp로-연결">지역 네트워크에서 글로벌 전송 ISP로 연결</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/aa386bcc-04dd-4115-a6ec-e6006dc456fb/image.png" alt="">
ISP에 접속망을 연결하기 위해 지역 네트워크가 발생할 수 있다.</p>
<h3 id="콘텐츠-제공자-네트워크">콘텐츠 제공자 네트워크</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/9bf54e84-531d-4ae6-afca-9e8915648f3d/image.png" alt="">
구글과 같은 콘텐츠 제공자가 종단 사용자들과 가깝게 서비스와 콘텐츠를 제공하기 위해서 네트워크를 독자적으로 가동할 수도 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[종단 시스템(Network Edge)에 대해서]]></title>
            <link>https://velog.io/@dmori_2562/1.-%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%99%80-%EC%9D%B8%ED%84%B0%EB%84%B7-1.2-%EC%A2%85%EB%8B%A8-%EC%8B%9C%EC%8A%A4%ED%85%9CNetwork-Edge</link>
            <guid>https://velog.io/@dmori_2562/1.-%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%99%80-%EC%9D%B8%ED%84%B0%EB%84%B7-1.2-%EC%A2%85%EB%8B%A8-%EC%8B%9C%EC%8A%A4%ED%85%9CNetwork-Edge</guid>
            <pubDate>Sun, 16 Oct 2022 13:27:19 GMT</pubDate>
            <description><![CDATA[<h1 id="종단-시스템">종단 시스템</h1>
<hr>
<h2 id="네트워크-구조를-자세하게-살펴보자">네트워크 구조를 자세하게 살펴보자</h2>
<img src="https://velog.velcdn.com/images/dmori_2562/post/a786ca99-8532-4cb1-b2c0-588904c360b8/image.png" width="300px">
위의 그림과 같이 종단 시스템(network edge), 접속 네트워크(access network), 물리적 매체(physical media) 총 3가지로 구성된다.

<h4 id="1-종단-시스템network-edge">1) 종단 시스템(Network edge)</h4>
<p>호스트: 클라이언트와 서버</p>
<h4 id="2-접속-네트워크access-networks">2) 접속 네트워크(Access networks)</h4>
<p>집, 기업, 모바일 등</p>
<h4 id="3-물리적-매체physical-media">3) 물리적 매체(Physical media)</h4>
<p>선으로 연결되있거나, 무선으로 되어있는 것들</p>
<hr>
<h2 id="접속-네트워크와-물리적-매체">접속 네트워크와 물리적 매체</h2>
<p>종단 시스템과 라우터들이 어떻게 연결될 수 있을까?</p>
<blockquote>
<ul>
<li>집 접속 네트워크</li>
</ul>
</blockquote>
<ul>
<li>기관 접속 네트워크</li>
<li>모바일 접속 네트워크 </li>
</ul>
<p>유의해야 될 사항</p>
<blockquote>
<ul>
<li>접속 네트워크의 대역폭</li>
</ul>
</blockquote>
<ul>
<li>공유(shared)되는가? 아니면 전담 마크(dedicated)되는가?</li>
</ul>
<h3 id="집-접속-dsl">집 접속: DSL</h3>
<h4 id="digital-subscriber-line-dsl">Digital Subscriber Line (DSL)</h4>
<p>중앙 사무실 DSLAM에 기존 전화선을 사용하는 방법
<img src="https://velog.velcdn.com/images/dmori_2562/post/17b05aef-e3e6-40ba-b6ff-c3b1b56672bc/image.png" alt=""></p>
<blockquote>
<ul>
<li>데이터는 DSL 라인을 따라 인터넷으로 가고,</li>
</ul>
</blockquote>
<ul>
<li><p>음성은 DSL 라인을 따라 전화 네트워크로 간다.</p>
</li>
<li><p>전송 속도 &lt; 2.5 Mbps (대체적으로 1 Mbps 이하)</p>
</li>
<li><p>다운 속도 &lt; 24 Mbps (대체적으로 10 Mbps 이하)</p>
</li>
</ul>
<h3 id="집-접속-cable-internet-access">집 접속: Cable Internet Access</h3>
<h4 id="hfchybrid-fiber-coax-동축-및-광섬유-케이블의-혼용">HFC(Hybrid Fiber Coax): 동축 및 광섬유 케이블의 혼용</h4>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/be0c9b27-1526-4002-acd4-f85a2234e3c5/image.png" alt=""></p>
<blockquote>
<ul>
<li>집들은 cable head end에 대한 접속 네트워크를 공유한다.</li>
</ul>
</blockquote>
<ul>
<li><p>DSL과 달리, 중앙 사무실에 전용 접근 권한을 가진다.</p>
</li>
<li><p>전송 속도: 2 Mbps</p>
</li>
<li><p>다운 속도: 30 Mbps</p>
</li>
</ul>
<h3 id="집-접속-ftth">집 접속: FTTH</h3>
<h4 id="ftthfiber-to-the-home">FTTH(Fiber to the home)</h4>
<ul>
<li>광섬유 연결을 중앙 사무실에서 집까지 보장한다.</li>
</ul>
<blockquote>
<p>인터넷 접속 속도를 Gbps로 제공한다.</p>
</blockquote>
<hr>
<h3 id="기업-접속-ethernet">기업 접속: Ethernet</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/07678cbf-cf0e-4ac3-a310-1eb3b41bbb0d/image.png" alt=""></p>
<ul>
<li>주로 회사, 대학 등에서 사용한다</li>
<li>전송 속도: 10 Mbps, 100Mbps, 1Gbps, 10Gbps<blockquote>
<p>오늘날, 종단 시스템은 대체적으로 이더넷 스위치에 연결되어 있다.</p>
</blockquote>
</li>
</ul>
<hr>
<h3 id="물리적-매체">물리적 매체</h3>
<p>비트는 물리적 매체에 전자파 또는 광학 펄스를 전파하여 전송된다.</p>
<blockquote>
<p>전파는 송수신자가 같은 타입의 전송 방법일 필요는 없다!</p>
</blockquote>
<h4 id="물리적-매체의-종류">물리적 매체의 종류</h4>
<ul>
<li><p>유도 매체(guided media): 신호가 견고한 매체를 통해 전달된다.
Ex) 구리, 동축 케이블, 광섬유 등</p>
</li>
<li><p>비유도 매체(unguided media): 신호가 자유롭게 전달된다.
Ex) 라디오</p>
</li>
</ul>
<h3 id="물리적-매체-두-쌍의-꼬인-구리-선">물리적 매체: 두 쌍의 꼬인 구리 선</h3>
<img src="https://velog.velcdn.com/images/dmori_2562/post/a6c109f1-de53-4c2a-a3b2-c138e5a85682/image.png" width="200px">

<h4 id="twisted-pair-copper-wire">Twisted-Pair Copper Wire</h4>
<p>두 개의 절연 구리선</p>
<h4 id="utpunshielded-twisted-pair">UTP(Unshielded twisted pair)</h4>
<p>UTP는 컴퓨터 네트워크에 주로 쓰인다. 대표적인 것이 LAN이다.</p>
<blockquote>
<p><strong>데이터 속도의 영향 요소</strong></p>
</blockquote>
<ul>
<li>와이어의 굵기</li>
<li>송수신자간의 거리</li>
</ul>
<blockquote>
<ul>
<li>Category 5: 100Mbps, 1Gbps Ethernet</li>
</ul>
</blockquote>
<ul>
<li>Category 6: 10Gbps</li>
</ul>
<p><code>STP Cable은 쉴드로 덮여있는 케이블이다</code></p>
<h3 id="물리적-매체-동축-케이블">물리적 매체: 동축 케이블</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/c4ad2416-c5ae-48aa-a7c1-069960cbbe50/image.png" alt=""></p>
<p>트위스트 페어처럼 동축 케이블은 두 개의 구리 도체로 구성된다.
하지만 두 도체는 평행하기보다는 동심원형이다.</p>
<blockquote>
<p>케이블 TV에서 주로 보인다</p>
</blockquote>
<h3 id="물리적-매체-광섬유">물리적 매체: 광섬유</h3>
<p><img src="https://velog.velcdn.com/images/dmori_2562/post/c74df8f6-2cd2-42f9-b089-d6d2c48beb14/image.png" alt=""></p>
<ul>
<li>광섬유는 빛의 펄스를 전도하는 얇고 유연한 매체로, 각각의 펄스는 비트를 나타낸다.<blockquote>
<p>광섬유는 전자기 간섭에 면역이 되어 있어 장거리 연결에 사용된다</p>
</blockquote>
</li>
</ul>
<h3 id="물리적-매체-라디오">물리적 매체: 라디오</h3>
<ul>
<li>신호가 전자기 스펙트럼을 통해 전달된다.</li>
<li>물리적인 선이 없다.</li>
</ul>
<p>Ex) LAN (Wifi), Celluar, Satellite</p>
<p><strong>전송에 영향을 주는 환경 요소</strong></p>
<blockquote>
<ul>
<li>반사</li>
</ul>
</blockquote>
<ul>
<li>장해물</li>
<li>간섭요소</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[컴퓨터 네트워크란?]]></title>
            <link>https://velog.io/@dmori_2562/%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EB%9E%80</link>
            <guid>https://velog.io/@dmori_2562/%EC%BB%B4%ED%93%A8%ED%84%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EB%9E%80</guid>
            <pubDate>Sun, 16 Oct 2022 12:34:17 GMT</pubDate>
            <description><![CDATA[<h1 id="컴퓨터-네트워크와-인터넷">컴퓨터 네트워크와 인터넷</h1>
<hr>
<h2 id="구성요소">구성요소</h2>
<img src="https://velog.velcdn.com/images/dmori_2562/post/18343b96-8154-41b1-86a4-35745b042a88/image.png" width="400px">

<h4 id="1-수많은-연결된-컴퓨터-기계">1) 수많은 연결된 컴퓨터 기계</h4>
<ul>
<li>hosts = end systems</li>
<li>작동하는 네트워크 앱들</li>
</ul>
<h4 id="2-통신-연결">2) 통신 연결</h4>
<ul>
<li>섬유, 구리, 라디오, 위성</li>
<li>전송 속도: 대역폭</li>
</ul>
<h4 id="3-패킷-스위치">3) 패킷, 스위치</h4>
<ul>
<li>라우터와 스위치</li>
</ul>
<h4 id="4-인터넷-네트워크들의-네트워크">4) 인터넷: 네트워크들의 네트워크</h4>
<ul>
<li>연결된 ISP들</li>
</ul>
<h4 id="5-메시지들의-송수신을-컨트롤하는-프로토콜">5) 메시지들의 송수신을 컨트롤하는 프로토콜</h4>
<ul>
<li>Ex)TCP, IP, HTTP, ...<blockquote>
<h4 id="프로토콜이란">프로토콜이란?</h4>
<p>프로토콜은 메시지 송수신간에 수행된 작업, 네트워크 개체들간의 메시지들이 오고 가는 것의 순서, 형식들을 규정한다</p>
</blockquote>
</li>
</ul>
<h4 id="6-인터넷-기준">6) 인터넷 기준</h4>
<ul>
<li>Internet Engineering Task Force(IETF)에서 Request for comment(RFC)라는 표준 문서들을 개발함</li>
</ul>
<hr>
<h2 id="서비스의-종류">서비스의 종류</h2>
<h4 id="1-앱들에게-서비스를-제공하는-인프라">1) 앱들에게 서비스를 제공하는 인프라</h4>
<ul>
<li>Ex) Web, VoIP, email, games, e-commerce, social nets, ...</li>
</ul>
<h4 id="2-소켓-인터페이스">2) 소켓 인터페이스</h4>
<ul>
<li>인터넷에 연결할 수 있도록 앱들에게 송수신을 허락한다</li>
<li>우편 서비스와 유사한 서비스 옵션을 제공한다</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>