<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>iris-starry.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Tue, 09 Jul 2024 02:35:37 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>iris-starry.log</title>
            <url>https://velog.velcdn.com/images/iris-starry/profile/99988f80-97e0-418d-8869-28fef5af48f1/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. iris-starry.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/iris-starry" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[이더넷의 규격]]></title>
            <link>https://velog.io/@iris-starry/%EC%9D%B4%EB%8D%94%EB%84%B7%EC%9D%98-%EA%B7%9C%EA%B2%A9</link>
            <guid>https://velog.io/@iris-starry/%EC%9D%B4%EB%8D%94%EB%84%B7%EC%9D%98-%EA%B7%9C%EA%B2%A9</guid>
            <pubDate>Tue, 09 Jul 2024 02:35:37 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>해당 포스트는 영진닷컴,『그림으로 배우는 네트워크 NetWork 원리』, Gene 저·김성훈 역을 참고하여 작성하였습니다.</p>
</blockquote>
<hr>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/1e7c2def-1bea-4561-9160-3fddd8d2c44e/image.png" alt=""></p>
<h1 id="이더넷에는-다양한-규격이-있다">이더넷에는 다양한 규격이 있다</h1>
<p>이더넷에는 10Mbps에서부터 100Gbps라는 매우 빠른 속도를 지원하는 다양한 규격이 있습니다. 규격은 <code>IEEE802 위원회</code>에서 결정됩니다. 이더넷의 다양한 규격은 주로 최대 전송 속도와 이용하는 매체(케이블)에 따라 나뉩니다.</p>
<p><img src="blob:https://velog.io/8b67cf60-f1d5-4257-8005-f3e30e6dd22f" alt="업로드중.."></p>
<h1 id="이더넷-규격의-명칭">이더넷 규격의 명칭</h1>
<p>이더넷 규격의 명칭에는 <code>IEEE802.3</code>으로 시작하는 이름과 <code>1000BASE-T</code>처럼 전송 속도와 전송 매체의 특징을 조합한 이름이 있습니다. &#39;1000BASE-T&#39;와 같은 전송 속도와 전송매체의 특징을 조합한 규격 명칭을 볼 기회가 많겠지요. 여기서는 이러한 규격 명칭이 붙는 규칙을 설명하겠습니다. 중요한 것은 전송 속도와 전송 매체입니다.</p>
<p>우선, <code>맨 앞의 숫자는 전송 속도를 나타냅니다.</code> 기본적으로 Mbps 단위입니다. &#39;1000&#39;이라고 하면 1000Mbps, 다시 말해 1Gbps 전송 속도의 이더넷 규격입니다. &#39;BASE&#39;는 베이스 밴드 방식이라는 의미입니다. 현재는 베이스 밴드 방식 이외는 이용하지 않습니다.</p>
<p>&#39;-&#39;뒤는 전송 매체나 물리 신호 변환의 특징을 나타냅니다. 여러 사항이 표기되는 부분인데, &#39;T&#39;가 있는 경우는 전송 매체로 UTP 케이블을 이용한다고 알아두면 됩니다. 
UTP 케이블은 흔히 말하는 LAN 케이블로 가장 자주 이용되는 전송 매체입니다.</p>
<p>덧붙여, 초기 이더넷 규격은 BASE 뒤에 숫자가 기재됩니다. 숫자가 오는 경우는 전송 매체로 동축 케이블을 이용하고,  100m 단위 케이블의 최대 길이를 의미합니다..</p>
<br/>

<h1 id="point">Point</h1>
<ul>
<li>이더넷에는 다양한 규격이 있다.</li>
<li>이더넷의 규격은 전송 속도와 전송 매체 특징을 나타내는 1000BASE-T와 같은 규격 이름이 정해져 있다.</li>
</ul>
<br/>
<br/>


<p>[참고자료1] <a href="https://bruders.tistory.com/121">https://bruders.tistory.com/121</a>
[(추천)참고자료2] <a href="https://brunch.co.kr/@swimjiy/49">https://brunch.co.kr/@swimjiy/49</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[BFF(BackEnd for FrontEnd) 패턴]]></title>
            <link>https://velog.io/@iris-starry/BFFBackEnd-for-FrontEnd-%ED%8C%A8%ED%84%B4</link>
            <guid>https://velog.io/@iris-starry/BFFBackEnd-for-FrontEnd-%ED%8C%A8%ED%84%B4</guid>
            <pubDate>Mon, 08 Jul 2024 14:13:33 GMT</pubDate>
            <description><![CDATA[<h3 id="bff-패턴-클라이언트-맞춤형-api-서버">BFF 패턴: 클라이언트 맞춤형 API 서버</h3>
<p>BFF(Back-end for Front-end) 패턴은 클라이언트(프론트엔드)에 맞춤형으로 데이터를 제공하는 중간 계층 서버를 의미합니다. 이 패턴은 특정 클라이언트 플랫폼(예: 웹, iOS, Android)에 최적화된 API를 제공하여 성능을 최적화하고 개발 생산성을 높이는 데 중점을 둡니다.</p>
<h3 id="bff-패턴의-장점">BFF 패턴의 장점</h3>
<ol>
<li><p><strong>클라이언트 맞춤형 API 제공</strong>:</p>
<ul>
<li>각 클라이언트 플랫폼에 필요한 데이터만을 요청하고 응답할 수 있어 네트워크 사용량을 줄이고 성능을 개선할 수 있습니다.</li>
</ul>
</li>
<li><p><strong>프론트엔드와 백엔드의 분리</strong>:</p>
<ul>
<li>BFF는 프론트엔드 개발자가 독립적으로 작업할 수 있도록 도와주며, 백엔드와의 인터페이스를 단순화합니다.</li>
</ul>
</li>
<li><p><strong>보안 및 인증 관리</strong>:</p>
<ul>
<li>클라이언트 인증 및 보안을 BFF에서 처리함으로써 보안적인 이점을 가져갈 수 있습니다.</li>
</ul>
</li>
<li><p><strong>성능 최적화</strong>:</p>
<ul>
<li>클라이언트가 필요로 하는 데이터만을 효율적으로 제공함으로써 응답 시간을 단축하고 서버 부하를 줄일 수 있습니다.</li>
</ul>
</li>
</ol>
<h3 id="bff-패턴의-구현-예시">BFF 패턴의 구현 예시</h3>
<h4 id="nodejs와-express를-사용한-bff-서버-구현">Node.js와 Express를 사용한 BFF 서버 구현</h4>
<pre><code class="language-javascript">const express = require(&#39;express&#39;);
const axios = require(&#39;axios&#39;);

const app = express();
const PORT = 3000;

const USER_SERVICE_URL = &#39;http://users-api.example.com&#39;;
const PRODUCT_SERVICE_URL = &#39;http://products-api.example.com&#39;;

// 사용자 정보와 상품 정보를 결합하여 클라이언트에게 제공하는 BFF 엔드포인트
app.get(&#39;/api/user/:userId&#39;, async (req, res) =&gt; {
  const userId = req.params.userId;
  try {
    const [userDataResponse, productsResponse] = await Promise.all([
      axios.get(`${USER_SERVICE_URL}/users/${userId}`),
      axios.get(`${PRODUCT_SERVICE_URL}/products`)
    ]);

    const userData = userDataResponse.data;
    const productsData = productsResponse.data;

    // 사용자와 관련된 필요한 데이터만을 클라이언트에게 반환
    const responseData = {
      userId: userData.id,
      userName: userData.name,
      userEmail: userData.email,
      favoriteProducts: productsData.filter(product =&gt; product.userId === userId)
    };

    res.json(responseData);
  } catch (error) {
    res.status(500).send(&#39;Error fetching data&#39;);
  }
});

app.listen(PORT, () =&gt; {
  console.log(`BFF server running on port ${PORT}`);
});</code></pre>
<p>위 예시에서는 Node.js와 Express를 사용하여 간단한 BFF 서버를 구현하였습니다. 클라이언트는 사용자의 ID를 기준으로 사용자 정보와 해당 사용자가 좋아하는 상품 정보를 필요로 할 때 한 번의 요청으로 필요한 데이터만을 받을 수 있습니다.</p>
<h3 id="bff-패턴의-사용-사례">BFF 패턴의 사용 사례</h3>
<ol>
<li><p><strong>Netflix</strong>:</p>
<ul>
<li>Netflix는 다양한 클라이언트 플랫폼에 맞춘 BFF 패턴을 사용하여 사용자 경험을 최적화합니다. 각 장치에서 필요한 영화 및 콘텐츠 정보를 효율적으로 제공합니다.</li>
</ul>
</li>
<li><p><strong>GitHub</strong>:</p>
<ul>
<li>GitHub의 API는 GraphQL을 사용하여 클라이언트가 필요한 데이터만을 요청하고 응답받을 수 있도록 구현되어 있습니다. 이를 통해 개발자들이 GitHub 데이터를 효율적으로 관리하고 사용할 수 있습니다.</li>
</ul>
</li>
<li><p><strong>Shopify</strong>:</p>
<ul>
<li>Shopify는 여러 쇼핑 플랫폼에 맞춘 BFF 패턴을 사용하여 상점 관리 및 주문 처리와 같은 다양한 기능을 클라이언트에게 제공합니다.</li>
</ul>
</li>
</ol>
<h3 id="결론">결론</h3>
<p>BFF 패턴은 클라이언트와 백엔드 서비스 사이에 중간 계층을 두어 API를 최적화하고, 각 클라이언트 플랫폼에 맞춘 데이터 제공을 가능하게 합니다. 이를 통해 개발 생산성을 높이고 성능을 개선할 수 있으며, 다양한 사례에서 활발히 사용되고 있습니다.</p>
<br/>
<br/>

<p>[참고자료1] <a href="https://fe-developers.kakaoent.com/2022/220310-kakaopage-bff/">https://fe-developers.kakaoent.com/2022/220310-kakaopage-bff/</a>
[참고자료2] <a href="https://velog.io/@seeh_h/BFF%EB%9E%80">https://velog.io/@seeh_h/BFF%EB%9E%80</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[데이터를 전송하는 이더넷]]></title>
            <link>https://velog.io/@iris-starry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%A0%84%EC%86%A1%ED%95%98%EB%8A%94-%EC%9D%B4%EB%8D%94%EB%84%B7</link>
            <guid>https://velog.io/@iris-starry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%A0%84%EC%86%A1%ED%95%98%EB%8A%94-%EC%9D%B4%EB%8D%94%EB%84%B7</guid>
            <pubDate>Thu, 04 Jul 2024 13:19:49 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>해당 포스트는 영진닷컴,『그림으로 배우는 네트워크 NetWork 원리』, Gene 저·김성훈 역을 참고하여 작성하였습니다.</p>
</blockquote>
<hr>
<h1 id="데이터를-전송하는-것이-이더넷">데이터를 전송하는 것이 이더넷</h1>
<p><code>이더넷</code>은 TCP/IP 계층에서 맨 아래인 네트워크 인터페이스층의 프로토콜입니다. 이더넷은 데이터를 전송하는 프로토콜인데, 중요한 것은 &#39;이더넷으로 어디에서 어디까지 데이터를 전송하는가&#39;입니다.</p>
<p>이더넷은 같은 네트워크 내의 어떤 이더넷 인터페이스에서부터 다른 인더넷 인터페이스까지 데이터를 전송합니다.</p>
<p>같은 레이어2 스위치에 연결된 PC는 같은 네트워크에 접속된 것입니다. 
(VLAN의 기능을 이용하면, 같은 레이어2 스위치에 접속되어 있어도 다른 네트워크처럼 다룰 수도 있습니다).</p>
<p>같은 네트워크에 있는 PC의 이더넷 인터페이스에서 다른 PC의 이더넷 인터페이스로 데이터를 전송하는 것이 이더넷의 역할입니다. 이때 레이어2 스위치의 이더넷 인터페이스를 특별히 의식할 일은 없습니다. 레이어2 스위치는 이더넷으로 전송하는 데이터에 전혀 변경을 가하지 않기 때문입니다.</p>
<h1 id="유선-네트워크를-만든다">유선 네트워크를 만든다</h1>
<p>이러한 이더넷을 이용해 이른바 유선 네트워크를 만듭니다. PC와 서버, 레이어2 스위치 등 <code>이더넷 인터페이스가 있는 기기끼리 연결해서, 이더넷 링크를 만들면 유선 네트워크가 됩니다.</code></p>
<br/>
<br/>

<h1 id="point">Point</h1>
<ul>
<li>이더넷은 TCP/IP의 네트워크 인터페이스층에 있는 프로토콜</li>
<li>이더넷은 같은 네트워크 내의 이더넷 인터페이스 사이에서 데이터를 전송하기 위한 프로토콜</li>
</ul>
<br/>
<br/>

<p>[참고자료] <a href="https://blog.naver.com/hai0416/221614804171">https://blog.naver.com/hai0416/221614804171</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[병합 정렬]]></title>
            <link>https://velog.io/@iris-starry/%EB%B3%91%ED%95%A9-%EC%A0%95%EB%A0%AC-pwx9nfw4</link>
            <guid>https://velog.io/@iris-starry/%EB%B3%91%ED%95%A9-%EC%A0%95%EB%A0%AC-pwx9nfw4</guid>
            <pubDate>Wed, 03 Jul 2024 10:07:47 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>해당 포스트는 이지스퍼블리싱, 『알고리즘 코딩테스트 자바 편』, Gene 김종관 을 참고하여 작성하였습니다.</p>
</blockquote>
<br/>

<p>병합 정렬(merge sort)은 분할 정복(divide and conquer)방식을 사용해 데이터를 분할하고 분할한 집합을 정렬하며 합치는 알고리즘입니다. 병합 정렬의 시간 복잡도 평균은 O(nlogn)입니다.</p>
<h1 id="병합-정렬의-핵심-이론">병합 정렬의 핵심 이론</h1>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/ec027bc0-098f-42e1-8758-f116127eb186/image.png" alt=""></p>
<ul>
<li>가장 작은 데이터 집합으로 분할</li>
<li>병합하면서 정렬</li>
</ul>
<h2 id="병합-정렬-수행-방식">병합 정렬 수행 방식</h2>
<p>| 42 | 32 | 24 | 60 | 15 | 5 | 90 | 45 |</p>
<p>예를 들어 최초에는 8개의 그룹으로 나눕니다. 이 상태에서 2개씩 그룹을 합치며 오름차순 정렬합니다. 그 결과 (32, 42),  (24,60), (5, 15), (45, 90)이 됩니다. 이어서 2개씩 그룹을 합치며 다시 오름차순 정렬합니다. 그 결과 (24, 32, 42, 60), (5, 15, 45, 90)이 됩니다. 이런 방식으로 병합 정렬 과정을 거치면 (5, 15, 24, 32, 42, 45, 60, 90)이 되어 전체를 오름차순으로 정렬할 수 있습니다.</p>
<p>병합 정렬은 코딩 테스트의 정렬 관련 문제에서 자주 등장합니다. 특히 2개의 그룹을 병합하는 원리는 꼭 숙지해야 합니다!</p>
<h2 id="2개의-그룹을-병합하는-과정">2개의 그룹을 병합하는 과정</h2>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/aa8b2fe9-3d20-44fe-a89a-d9e8f2f6a7a4/image.png" alt=""></p>
<p>투 포인터 개념을 사용하여 왼쪽, 오른쪽 그룹을 병합합니다. 왼쪽 포인터와 오른쪽 포인터의 값을 비교하여 작은 값을 결과 배열에 추가하고 포인터를 오른쪽으로 1칸 이동시킵니다. 이 방식은 여러 문제에서 응용하므로 반드시 숙지하는 것이 좋습니다!</p>
<br/>
<br/>

<p>[참고자료] <a href="https://yujuwon.tistory.com/entry/%EB%B3%91%ED%95%A9%EC%A0%95%EB%A0%ACMerge-Sort">https://yujuwon.tistory.com/entry/%EB%B3%91%ED%95%A9%EC%A0%95%EB%A0%ACMerge-Sort</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[같은 네트워크 내에서의 전송을 반복한다]]></title>
            <link>https://velog.io/@iris-starry/%EA%B0%99%EC%9D%80-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%82%B4%EC%97%90%EC%84%9C%EC%9D%98-%EC%A0%84%EC%86%A1%EC%9D%84-%EB%B0%98%EB%B3%B5%ED%95%9C%EB%8B%A4</link>
            <guid>https://velog.io/@iris-starry/%EA%B0%99%EC%9D%80-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%82%B4%EC%97%90%EC%84%9C%EC%9D%98-%EC%A0%84%EC%86%A1%EC%9D%84-%EB%B0%98%EB%B3%B5%ED%95%9C%EB%8B%A4</guid>
            <pubDate>Sun, 23 Jun 2024 13:14:03 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>해당 포스트는 영진닷컴,『그림으로 배우는 네트워크 NetWork 원리』, Gene 저·김성훈 역을 참고하여 작성하였습니다.</p>
</blockquote>
<hr>
<h1 id="서버는-멀리-떨어져-있지만">서버는 멀리 떨어져 있지만..</h1>
<p>주위에 있는 PC나 스마트폰 등은 서버의 애플리케이션과 서로 데이터를 주고 받습니다. 서버는 대개 PC나 스마트폰과는 멀리 떨어진 다른 네트워크에 접속되어 있습니다. 기술적인 관점에서 생각하면, &#39;네트워크&#39;는 라우터 또는 레이어3 스위치로 구획되는 범위입니다. 네트워크의 기본적인 구 성은 레이어2 스위치로 하나의 네트워크를 구성하고, 라우터 또는 레이어3 스위치로 각 네트워크를 서로 연결하는 것입니다.</p>
<h1 id="같은-네트워크-내의-전송을-반복해-간다">같은 네트워크 내의 전송을 반복해 간다</h1>
<p>다른 네트워크에 젒혹된 서버까지의 데이터 전송은 같은 네트워크 내의 전송을 반복해감으로써 실현합니다.
*<em>PC에서 서버로 가는 데이터는 우선 pc와 가틍 네트워크 상에 있는 라우터로 전송합니다.  *</em> 그리고, 라우터는 다시 같은 네트워크 상의 다음 라우 터로 전송합니다. 그렇게 해서 데이터가 목적지 네트워크 상의 라우터까지 도달하면, 그 라우터가 서버로 데이터를 전송합니다. </p>
<h1 id="자주-이용하는-것은-이더넷과-무선-lanwi-fi">자주 이용하는 것은 이더넷과 무선 LAN(Wi-Fi)</h1>
<p>이처럼 **같은 네트워크 내에서 전송하는 프로토콜로 자주 이용하는 것이 이더넷과 무선 LAN(Wi-Fi)입니다. TCP/IP의 계층 구조에서 맨 아래인 네트워크 인터페이스  층에 있는 프로토콜입니다.</p>
<p>네트워크 인터페이스층의 프로토콜에는 여러 종류가 있지만, 이 장에서는 자주 이용하는 이더넷과 무선 LAN에 관해 설명합니다.</p>
<p><br/><br/></p>
<h1 id="point">point</h1>
<ul>
<li>다른 네트워크로의 통신은 같은 네트 워크 내에서의 데이터 전송을 반복해 간다.</li>
<li>같은 네트워크 내의 전송을 위해 자주 이용하는 프로토콜<ul>
<li>이더넷</li>
<li>무선 LAN(Wi-Fi)</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[서브넷 마스크]]></title>
            <link>https://velog.io/@iris-starry/%EC%84%9C%EB%B8%8C%EB%84%B7-%EB%A7%88%EC%8A%A4%ED%81%AC</link>
            <guid>https://velog.io/@iris-starry/%EC%84%9C%EB%B8%8C%EB%84%B7-%EB%A7%88%EC%8A%A4%ED%81%AC</guid>
            <pubDate>Tue, 04 Jun 2024 02:13:52 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>학습 목표</p>
</blockquote>
<ul>
<li>서브넷 마스크의 개념을 설명할 수 있다.</li>
<li>서브넷 마스크의 구조의 특징을 설명할 수 있다.</li>
<li>IP 주소 각 클래스의 기본 서브넷 마스크를 설명할 수 있다.</li>
</ul>
<h1 id="서브넷-마스크의-개념과-구조">서브넷 마스크의 개념과 구조</h1>
<p>B 클래스 한 네트워크에 약 65,000여 개의 호스트를 같은 네트워크로 구성하면 브로드캐스트 영역이 너무 넓어 네트워크가 원활하게 유지되기 어렵다. 이런 문제를 해결하기 위해 하나의 큰 네트워크를 여러 개의 작은 네트워크 단위로 나누는 방법이 사용된다.</p>
<h2 id="서브넷-마스크의-개념">서브넷 마스크의 개념</h2>
<ul>
<li>IP 주소에서 네트워크 ID와 호스트 ID를 구분하는 역할을 한다.</li>
<li>같은 네트워크인지 다른 네트워크인지에 대한 판단을 위해 서브넷 마스크를 이용한다.</li>
</ul>
<h2 id="서브넷-마스크의-구조">서브넷 마스크의 구조</h2>
<ul>
<li>서브넷 마스크는 32bit의 숫자로 IP 주소와 같이 8비트씩 묶어 (.)으로 구분한다.</li>
<li>IP 주소의 네트워크 ID에 해당하는 모든 비트는 2진수 1로 설정하고, IP주소의 호스트 ID에 해당하는 모든 비트는 2진수 0으로 설정한다.</li>
<li>IP 주소와 서브넷 마스크 간 비트 단위로 논리적 AND 연산을 수행한다.</li>
</ul>
<h2 id="기본-서브넷-마스크">기본 서브넷 마스크</h2>
<p>네트워크를 나누지 않고 클래스 네트워크 그대로 사용하는 경우, 이때의 서브넷 마스크를 기본 서브넷 마스크라 한다. </p>
<h3 id="a-클래스의-기본-서브넷-마스크">A 클래스의 기본 서브넷 마스크</h3>
<ul>
<li>한 개의 옥텟이 네트워크 ID이고 나머지 세 개의 옥텟은 호스트 ID이다.</li>
<li>네트어크 ID 부분을 모두 1로, 호스트 ID부분을 모두 0으로 설정한다.</li>
</ul>
<h3 id="b-클래스의-기본-서브넷-마스크">B 클래스의 기본 서브넷 마스크</h3>
<ul>
<li>두 개의 옥텟이 네트워크 ID이고 나머지 두 개의 옥텟은 호스트 ID이다.</li>
<li>네트워크 ID 부분을 모두 1로, 호스트 ID 부분을 모두 0으로 설정한다.</li>
</ul>
<h3 id="c-클래스의-기본-서브넷-마스크">C 클래스의 기본 서브넷 마스크</h3>
<ul>
<li>세 개의 옥텟이 네트워크 ID이고 나머지 한 개의 옥텟은 호스트 ID이다.</li>
<li>네트워크 ID 부분을 모두 1로, 호스트 ID 부분을 모두 0으로 설정한다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[IPv4 주소 체계]]></title>
            <link>https://velog.io/@iris-starry/IPv4-%EC%A3%BC%EC%86%8C-%EC%B2%B4%EA%B3%84</link>
            <guid>https://velog.io/@iris-starry/IPv4-%EC%A3%BC%EC%86%8C-%EC%B2%B4%EA%B3%84</guid>
            <pubDate>Tue, 04 Jun 2024 02:04:34 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>학습 목표</p>
</blockquote>
<ul>
<li>IP 주소의 개념과 구조를 설명할 수 있다.</li>
<li>IP 주소의 클래스를 이해하고, 각 클래스의 특징을 설명할 수 있다. </li>
<li>각 클래스의 IP 주소 범위를 설명할 수 있다.</li>
</ul>
<h1 id="ip-주소의-개념과-구조">IP 주소의 개념과 구조</h1>
<p>인터넷 세계에서도 인터넷 상의 여러 기기들을 구분할 수 있는 규칙이 필요한데 이를 IP ㅈ소라고 한다.</p>
<h2 id="ip-주소의-개념">IP 주소의 개념</h2>
<h3 id="internet과-internet">&#39;internet&#39;과 &#39;Internet&#39;</h3>
<ul>
<li>인터네트워크들 중 TCP/IP 프로토콜을 사용하는 인터네트워크를 인터넷(Internet)이라고 한다.</li>
<li>IP 주소는 인터넷 기반 프로토콜인 TCP/IP에서 정의하고 잇는 주소 체계이다.</li>
</ul>
<h3 id="ip-주소의-필요성">IP 주소의 필요성</h3>
<ul>
<li>LAN에서는 네트워크 장비들을 식별하기 위해 MAC 주소를 사용한다.</li>
<li>응용 프로세서를 식별하기 위해 포트번호를 사용한다.</li>
<li>인터넷 통신에서도 데이터의 발신지 IP 주소와 목적지 IP 주소를 붙여 보내면 중간에 여러 장비의 주소인 MAC 주소를 이용하여 목적지에 이른다.</li>
</ul>
<h3 id="ip-주소-관리">IP 주소 관리</h3>
<ul>
<li>ICANN : 전 세계 인터넷 주소 자원의 총괄 관리 기관</li>
<li>RIR : 대륙별 인터넷 주소 자원 관리 기관</li>
<li>APNIC : 아시아 태평양 지역 인터넷 주소 자원 관리 기관</li>
<li>KISA : 국내 인터넷 주소 자원 관리 기관</li>
</ul>
<h3 id="내-컴퓨터-ip-주소-확인하기">내 컴퓨터 IP 주소 확인하기</h3>
<ul>
<li>C:&gt;IPconfig</li>
</ul>
<BR/>

<h2 id="ip-주소-구조">IP 주소 구조</h2>
<p>현재 사용 중인 IP 주소의 버전은 IPv4와 IPv6이다. 보통 IP 주소라 하면 IPv4를 말한다.</p>
<h3 id="ip-주소의-표현">IP 주소의 표현</h3>
<ul>
<li>IP 주소는 2진수 32bit로 구성되어 잇어 이론상 가능한 IP 개수는 약 43억개이다.</li>
<li>IP ㅈ소는 8bit씩 묶어 점(.)으로 구분하여 10진수로 나타낸다.</li>
<li>8bit씩 묶은 각 마디를 옥텟이라 한다.</li>
</ul>
<h3 id="네트워크-주소와-호스트-주소">네트워크 주소와 호스트 주소</h3>
<ul>
<li>IP 주소는 인터넷 주소 관리 기관에서 부여한 네트워크 주소와 네트워크에 연결된 개별 호스트를 식별하기 위해 네트워크 관리자가 부여한 호스트 주소로 구성된다.</li>
<li>같은 네트워크에 연결된 기기들은 모드 같은 네트워크 주소를 가진다.</li>
<li>같은 네트워크에 연결된 기기들은 모두 다른 호스트 주소를 가진다.</li>
</ul>
<br/>

<h1 id="ip-주소의-클래스">IP 주소의 클래스</h1>
<h2 id="ip-주소-클래스의-특징">IP 주소 클래스의 특징</h2>
<h3 id="ip-주소-클래스의-용도">IP 주소 클래스의 용도</h3>
<ul>
<li>IP 주소 클래스는 A클래스, B클래스, C클래스, D클래스, E클래스 인 5개의 클래스로 구분된다.</li>
<li>A, B, C클래스는 일반 사용자에게 부여하는 네트어크 구성용, D 클래스는 멀티캐스트용, E 클래스는 향후 사용을 위하여 예약된 주소이다.</li>
<li>A 클래스는 대규모, B클래스는 중규모, C 클래스는 소규모 네트워크에 할당할 수 있다.</li>
</ul>
<h3 id="특수한-용도의-ip주소-호스트에-할당할-수-없는-주소">특수한 용도의 IP주소 (호스트에 할당할 수 없는 주소)</h3>
<h4 id="네트워크-주소">네트워크 주소</h4>
<ul>
<li>네트워크 내의 기기들이 연결된 네트워크 자체를 나타내는 ㅔㄴ트워크 대표 주소를 의미한다.</li>
<li>서로 다른 네트워크 간 통신 시 네트워크를 지칭할 때 사용한다.</li>
<li>네트워크 주소는 IP 주소의 호스트 ID를 모두 2진수 0으로 설정한 것이다.</li>
</ul>
<h4 id="브로드캐스트-주소">브로드캐스트 주소</h4>
<ul>
<li>브로드캐스팅이란 네트워크 내의 한 장비에서 다른 모든 장비들에 데이터를 전송하는 것을 말한다.</li>
<li>네트워크 내의 모든 호스트들을 목적지로 하는 브로드캐스팅용으로 사용되는 주소를 브로드캐스트 주소라고 한다.</li>
<li>브로드캐스트 주소는 IP 주소의 호스트 ID를 모두 2진수 1으로 설정한 것이다.</li>
</ul>
<BR/>

<h2 id="ip-주소-클래스의-구분">IP 주소 클래스의 구분</h2>
<p>IP 주소의 첫 번째 옥텟이 있는 정보로 클래스를 나누고 IP 주소의 네트워크 ID와 호스트 ID를 구분할 수 있다.</p>
<h3 id="각-클래스의-ip-주소">각 클래스의 IP 주소</h3>
<ul>
<li>A~E 클래스는 IP 주소의 시작 비트(첫 번째 부터 네 번째 비트)를 이용하여 식별할 수 있다.
<img src="https://velog.velcdn.com/images/iris-starry/post/6cdef856-6c3d-471b-90eb-34c5ab1d4273/image.png" alt=""></li>
</ul>
<blockquote>
<h2 id="각-클래스의-네트워크">각 클래스의 네트워크</h2>
</blockquote>
<h3 id="a-클래스-네트워크">A 클래스 네트워크</h3>
<ul>
<li>시작 비트가 &#39;0&#39;으로 고정되어 있고 0.0.0.0은 Default Route 용도로 사용하며 127은 네트워크는 루프백 주소로 사용하므로, A 클래스에 해당하는 네트워크 수는 2의 7제곱 -2이다.</li>
</ul>
<h3 id="b-클래스-네트워크">B 클래스 네트워크</h3>
<ul>
<li>시작 비트가 &#39;10&#39;으로 고정되어 있으므로, B 클래스에 해당하는 네트워크 수는 2의 14제곱개 이다.</li>
<li>B 클래스는 두 개의 옥텟이 호스트 ID이므로 B 클래스는 한 네트워크는 2의 16제곱 개의 IP 주소를 생성할 수 있다.</li>
<li>네트워크(대표) 주소와 브로드캐스트 주소를 제외하면 한 네트워크에 할당할 수 잇는 호스트 IP 수는 2의 16제곱 -2개이다.</li>
</ul>
<h3 id="c-클래스-네트워크">C 클래스 네트워크</h3>
<ul>
<li>시작 비트가 &#39;110&#39;으로 고정되어 있으므로, C 클래스에 해당하는 네트워크 수는 2의 21제곱개 이다.</li>
<li>C 클래스는 한 개의 옥텟이 호스트 ID이므로 C 클래스의 한 네트워크는 2의 8제곱개의 IP 주소를 생성할 수 있다.</li>
<li>네트워크(대표) 주소는 브로드캐스트 주소를 제외하면 한 네트워크에 할당할 수 있는 호스트 IP 수는 2의 8제곱 -2개이다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[LAN 기술과 종류]]></title>
            <link>https://velog.io/@iris-starry/LAN-%EA%B8%B0%EC%88%A0%EA%B3%BC-%EC%A2%85%EB%A5%98</link>
            <guid>https://velog.io/@iris-starry/LAN-%EA%B8%B0%EC%88%A0%EA%B3%BC-%EC%A2%85%EB%A5%98</guid>
            <pubDate>Wed, 29 May 2024 02:11:52 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>학습 목표</p>
</blockquote>
<ul>
<li>LAN의 매체 접근 방법을 알 수 있다.</li>
<li>LAN을 매체 접근 방법에 따라 분류하고 특징을 설명할 수 있다.</li>
</ul>
<h1 id="매체-접근-제어의-이해">매체 접근 제어의 이해</h1>
<ul>
<li>LAN과 같은 근거리 네트워크는 데이터 신호가 흐르는 전송 매체에 연결된 모든 장비가 공유하는 형태로 구성되어 있다.</li>
<li>데이터 전송 시 어느 장비가 언제 전송 매체를 사용할 것인지 결정하는 것이 중요하다.</li>
</ul>
<h2 id="매체-접근-제어의-이해-1">매체 접근 제어의 이해</h2>
<ul>
<li>LNA과 같은 근거리 네트워크는 하나의 장비가 데이터를 전송하면 나머지 다른 장비는 대기 상태에 있어야 한다.</li>
<li>동시에 두 개 이상의 장비가 데이터를 전송하면 전송 매체에서 데이터 신호의 충돌이 발생한다.</li>
<li>데이터 전송 시 충돌을 피하고 네트워크에 연결된 모든 장비가 전송 매체를 할당 받아 데이터를 네트워크 상에 올려놓는 방법을 매체 접근 제어라고 한다.</li>
</ul>
<h2 id="lan-계층-모델과-매체-접근-제어">LAN 계층 모델과 매체 접근 제어</h2>
<ul>
<li>OSI 7계층 모델의 데이터 링크 계층에 해당하는 곳을 2개의 부 계층으로 나눌 수가 있다.</li>
<li>매체에 접근하는 MAC부 계층과 논리적으로 데이터 전송을 제어하는 LLC부 계층</li>
<li>MAC부 계층에는 CSMA/CD, CSMA/CA, 토큰 링, 토큰 버스 방식 등이 있다.</li>
</ul>
<br/>

<h1 id="매체-접근-제어의-분류">매체 접근 제어의 분류</h1>
<ul>
<li>버스형 토폴로지에는 CSMA/CD, 링형 토폴로지에는 토큰 링 방식이 사용되는 것 처럼 LAN 토폴로지에 따라 적합한 접근 제어 방식이 사용된다.</li>
</ul>
<h2 id="csmacd-방식">CSMA/CD 방식</h2>
<ul>
<li>CSMA/CD 방식은 제록스사에서 발표한 이더넷 방식을 참고하여 개발된 것으로 현재 가장 많이 사용되고 있는 매체 접근 방식이다.</li>
<li>버스형 구조의 네트워크에서 가장 많이 사용되며 CSMA 방식의 데이터 전송 중 발생하는 데이터 충돌 현상으로 전송 효율 감소를 방지하기 위해 사용한다.</li>
</ul>
<h2 id="csmacd의-동작-원리">CSMA/CD의 동작 원리</h2>
<p>데이터 흐름이 없으면 데이터 전송을 시작하고 만약 충돌이 발생하면 일정 시간 대기 후 재전송하는 방식</p>
<ul>
<li>데이터를 전송하려는 노드는 전송하기 전에 먼저 전송 매체가 사용 중인지를 검사한다.(반송파 검출)</li>
<li>네트워크에 연결된 다수의 노드가 전송 매체를 공유하는 것을 다중 접속이라 하며, 데이터를 전송하는 중에도 계속 전송 매체를 감시하여 충돌이 발생하는지를 감시하낟.</li>
<li>전송 매체가 비어 있는 경우 두 개 이상의 노드가 동시에 데이터를 전송하면 데이터 충돌이 발생하는데 이 때 충돌 신호를 각 노드에 전달한다.(충돌 검출) 충돌 신호를 재밍 신호라하며 재밍 신호가 감지되면 전송을 즉시 중단한다.</li>
<li>충돌 신호가 감지되면 충돌된 데이터는 무효로 하고 각 노드는 일정 시간 대기 후 재전송 한다. 재전송 시도는 최대 16회까지만 반복되며 재전송을 할 때마다 대기 시간은 2배씩 늘어난다. (백오프 알고리즘)</li>
</ul>
<h2 id="csmacd-방식의-특징">CSMA/CD 방식의 특징</h2>
<ul>
<li>CSMA/CD 방식은 LAN에서 가장 많이 사용하고 매체 접근 제어 방식으로 간단하면서도 효율적으로 작동하는 방식이다. 또한 구현이 복잡하지 않고 장애가 발생했을 때 처리가 간단한다.(장점)</li>
<li>중요한 데이터의 우선 순위를 부여할 수가 없고 전송 시 지연 시간을 보장할 수 없으므로 실시간 전송 시스템에는 부적합하다. 데이터를 전송하려는 노드 수가 많을 수록 충돌이 발생할 확률이 커진다.</li>
</ul>
<h2 id="csmaca-방식">CSMA/CA 방식</h2>
<ul>
<li>CSMA/CD는 전송 매체에 데이터 전송이 없는 경우 바로 전송을 CSMA/CA는 데이터를 전송하겠다는 예비 신호를 먼저 보내 전송 중 데이터 충돌을 피하고, 전송 후에는 데이터 충돌을 검출하지 않는다. 애플사의 애플토크에서 주로 사용하고 있는 방식이다.</li>
</ul>
<h3 id="csmaca-방식의-동작-원리">CSMA/CA 방식의 동작 원리</h3>
<ul>
<li>데이터를 전송하려는 노드는 전송 매체가 사용 중인지를 점검한다.(반송파 검출)</li>
<li>전송 매체가 사용 중이 아니라면 데이터를 보내기 위해 예비 신호를 보내 데이터 충돌을 방지한다.</li>
<li>응답 신호를 받은 즉시 데이터 전송을 시작한다. 이후 충돌 검출을 하지 않는다.</li>
</ul>
<h2 id="토큰-패싱-방식">토큰 패싱 방식</h2>
<ul>
<li>토큰이라는 특별한 데이터 전송 권리를 네트워크에 연결된 각 노드에 순환시키는 것이다.</li>
<li>링형 토폴로지를 이용하면 토큰 링 방식이라 하고 버스형 토폴로지를 이용하면 토큰 버스라고 한다.</li>
</ul>
<h2 id="토큰-버스-방식의-동작-원리">토큰 버스 방식의 동작 원리</h2>
<ul>
<li>버스형 LAN에 사용되는데 네트워크에 연결되는 모든 노드는 논리적인 링을 구성하게 된다.</li>
<li>토큰은 노리적인 링 위에서 순환하며, 각각의 노드에게 데이터를 전송할 권리를 준다.</li>
</ul>
<h3 id="토큰-버스-방식의-특징">토큰 버스 방식의 특징</h3>
<ul>
<li>CSMA/CD 방식은 경쟁에 의해 접근하지만 토큰 버스는 토큰 사용을 통해 순차적으로 전송 매체에 접근한다.</li>
<li>토큰 링과 같이 토큰에 의해 순차적으로 전송 매체에 접근하지만 링을 관리하는 과정이 다르다.</li>
<li>전송 매체로는 주로 동축 케이블을 사용한다.</li>
</ul>
<h3 id="토큰-링-방식의-동작-원리">토큰 링 방식의 동작 원리</h3>
<ul>
<li>토큰 링 방식은 링형의 LAN에서 사용되는 매체 접근 제어 방식으로 IBM사에서 개발한 링 형이지만 형재 유럽에서 많이 사용하고 있다.</li>
<li>토큰 링의 표준 IEEE 802.5로 전송 매체로는 트위스트 페어 케이블을 사용한다.</li>
<li>토큰 링 네트워크에서 토큰을 전달하는 순서는 네트워크에 연결되어 있는 물리적인 순서에 따라 결정된다.</li>
<li>먼저 토큰을 만들어 물리적인 형태의 링을 순환하도록 한다.(자유토큰)</li>
<li>데이터를 전송하려는 노드는 자유 토큰을 점유하고 토큰 상태를 사용 상태로 표시하는 사용 토큰으로 바꾼다. 토큰 바로 뒤에 목적지 주소와 데이터를 삽입하고 링으로 데이터를 전송한다.</li>
<li>데이터의 목적지가 아닌 노드는 토큰을 패싱하고 목적지 노드는 데이터를 복사한 다음 다시 링으로 데이터를 전송한다.</li>
<li>전송한 데이터가 링을 순화한 후 데이터를 송신한 노드에 도착하면 데이터를 제거하고 사용 토큰을 자유 토큰 상태로 표시하여 다음 노드로 토큰을 전송한다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[데이터베이스 제10강]]></title>
            <link>https://velog.io/@iris-starry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%A0%9C10%EA%B0%95</link>
            <guid>https://velog.io/@iris-starry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%A0%9C10%EA%B0%95</guid>
            <pubDate>Thu, 23 May 2024 00:31:03 GMT</pubDate>
            <description><![CDATA[<h1 id="관계-대수-기본연산primitive-or-fundamental-ops">관계 대수: 기본연산(primitive or fundamental ops)</h1>
<h2 id="카티전-곱x-cartesian-product">카티전 곱(X, cartesian product)</h2>
<ul>
<li>입력 테이블 2개, 결과 테이블 1개</li>
<li>보통 자연 조인을 위한 중간 과정으로 아주 많이 씀
(보기) 학생 X 수강</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/e2ce3d1e-8251-4c06-98b5-1d70e86f6011/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/0f526f11-ed44-4486-8110-602cf6b60340/image.png" alt=""></p>
<ul>
<li><p>속성 수의 합 : 2 + 2 = 4</p>
</li>
<li><p>투플 수의 곱 : 3 * 5 = 15</p>
</li>
<li><p>유용한 정보(중복 속성 제거)</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/bc60e78c-16ea-44fe-9fdc-e49c9a000e3d/image.png" alt=""></p>
<ul>
<li><p>유용하지 않은 정보
<img src="https://velog.velcdn.com/images/iris-starry/post/a62d69da-7af3-4a58-b5b7-1e32f5d7594e/image.png" alt=""></p>
</li>
<li><p>카티션 곱을 따로 쓰는 경우는 거의 없다. </p>
</li>
<li><p>자연 조인을 하기 위한 중간 과정으로 많이 쓰인다.</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/6c3e78c6-bc50-4ae2-a541-86f210fdaead/image.png" alt=""></p>
<br/>

<h1 id="관계-대수-그-밖의-연산additional-operations">관계 대수: 그 밖의 연산(additional operations)</h1>
<ul>
<li>다섯개의 연산으로, 관계 대수가 할 수 있는 어떤 질의도 할 수 있다.</li>
<li>기본 연산으로는 나타낼 수 없던 질의를, 추가적인 연산을 씀으로써 나타낼 수 있는 질의는 전혀 없다.</li>
<li>추가적인 연산: 질의를 짤막하게 나타낼 수 있게 해 줄 뿐임
(1) 교집합(∩, set intersection)
(2) 자연 조인(⋈, natural join)</li>
</ul>
<h2 id="교집합-∩-set-intersection">교집합( ∩, set intersection)</h2>
<ul>
<li><p>입력 테이블 2개, 결과 테이블 1개
<img src="https://velog.velcdn.com/images/iris-starry/post/bb23e1e0-c15d-4035-95c1-8e7650ec9eb9/image.png" alt=""></p>
</li>
<li><p>(R1 ∩ R2) = (R2 ∩ R1)</p>
</li>
<li><p>교집합에서도 입력 테이블 두 개는 호환성이 있어야 한다.</p>
</li>
<li><p>추가적인 연산은 모두 기본 연산으로 나타낼 수 있다.</p>
</li>
<li><p>교집합 연산은 차집합 연산을 두 번 써서 나타낼 수 있다.</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/8feaed97-1773-4b55-86ba-b2090b597dab/image.png" alt=""></p>
<h3 id="교집합은-언제-사용하면-좋을까">교집합은 언제 사용하면 좋을까?</h3>
<ul>
<li>아래 수강 테이블에서 CS200 과목과 CS300 과목을 모두 수강하는 학생의 학번을 구하시오.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/1c232cb3-ba11-4a14-817d-535bd411f3aa/image.png" alt=""></p>
<br/>

<h2 id="자연-조인⋈-natural-join">자연 조인(⋈, natural join)</h2>
<ul>
<li>관계형 데이터베이스에서 너무나도 자주 사용되는 연산</li>
<li>입력 테이블 2개, 결과 테이블 1개</li>
<li>스키마 정규화, 스키마 나누기 등과 아주 밀접하게 관련되어 있음</li>
</ul>
<p>(보기)
학생(학번, 이름)과 수강(학번, 과목번호) 테이블에서 홍길동 학생이 듣는 과목번호는?</p>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/ca2a48e8-7238-4aed-9d2d-26a4d0e7433c/image.png" alt=""></p>
<h2 id="자연-조인-과정">자연 조인 과정</h2>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/d2c2d8f9-599e-4862-9786-f500f4192558/image.png" alt=""></p>
<ul>
<li>학생과 수강 사이의 자연 조인</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/75e380a5-5979-41da-ad9a-5c78465de74c/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/abc5477a-93ee-4f1f-84e1-f610d68cb2d4/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/4587ed32-2838-4940-8d7a-e6d929e0ebc8/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/5721e194-e6da-456f-a8b8-f09036a6968d/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/6699039c-ad5c-4eec-a824-db7204eaad1d/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[데이터베이스 제9강]]></title>
            <link>https://velog.io/@iris-starry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%A0%9C9%EA%B0%95</link>
            <guid>https://velog.io/@iris-starry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%A0%9C9%EA%B0%95</guid>
            <pubDate>Thu, 23 May 2024 00:10:17 GMT</pubDate>
            <description><![CDATA[<h1 id="관계-대수-기본연산primitive-or-fundamental-ops">관계 대수: 기본연산(Primitive or fundamental ops)</h1>
<h2 id="선택연산과-속성-추출-연산을-연속-연산-하는-경우">선택연산과 속성 추출 연산을 연속 연산 하는 경우.</h2>
<ul>
<li>수강 테이블에서 CS200과목을 듣는 학생의 학번만 찍어내려면?</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/927806f2-6d14-47f9-bbf2-4eec0ecc49d4/image.png" alt=""></p>
<h2 id="합집합u-union">합집합(U, union)</h2>
<ul>
<li>입력 테이블 2개, 결과 테이블 1개</li>
<li>합집합은, 두 테이블 가운데 적어도 한 군데에만 있어도 모두 결과 테이블에 나온다.</li>
<li>R1과 R2의 합집합을 구하는 연산</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/d0e58fa4-2afe-40c1-8e71-4d9026a3aea1/image.png" alt=""></p>
<p><strong>R1과 R2의 속성이 같고, 도메인이 같아야 한다.</strong></p>
<ul>
<li>아래의 R3과 R4는 합집합 R3UR4는 정의되지 않는다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/ec91f63b-6a73-44b6-986e-0c757b6dd9fb/image.png" alt=""></p>
<ul>
<li>R5UR6도 정의 되지 않음.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/6f552f4f-229f-4818-abde-dfc325cd4b6c/image.png" alt=""></p>
<ul>
<li>위에서 (R3 U R4)와 (R5 U R6)는 정의되지 않았지만, 다음은 정의 됨.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/4faabe0b-7c01-4af9-b904-e1a8a2b38ef3/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/edb38e58-826d-4c3c-b583-829027d12129/image.png" alt=""></p>
<br/>

<h3 id="합집합은-언제-사용하면-좋을까">합집합은 언제 사용하면 좋을까?</h3>
<ul>
<li>아래 수강 테이블에서 CS100 과목을 수강하거나 또는 CS300과목을 수강하는 학생의 학번을 구하시오.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/8b6cfd34-4e6b-4ab5-9316-0d56ca45dc13/image.png" alt=""></p>
<h3 id="합집합을-하려면-입력-테이블-두-개가-호환성이-있어야함compatible">합집합을 하려면 입력 테이블 두 개가 호환성이 있어야함(compatible)</h3>
<ul>
<li>R1의 속성 수와 R2의 속성 수가 가탇.</li>
<li>R1.A1과 R2.A1의 도메인이 같고, R1.A2와 R2.A2의 도메인이 같고,...R1.An과 R2.An의 도메인이 같아야 한다.</li>
</ul>
<h3 id="일반적으로-합집합-연산의-입력-테이블-두-개의-순서를-바꾸어도-결과는-같다">일반적으로 합집합 연산의 입력 테이블 두 개의 순서를 바꾸어도 결과는 같다</h3>
<ul>
<li>(R1 U R2) 와 (R2 U R1)의 결과값은 같다.</li>
</ul>
<br/>

<h2 id="차집합-연산--set-difference-r1---r2">차집합 연산(-, set difference): R1 - R2</h2>
<ul>
<li>입력 테이블 2개, 결과 테이블 1개</li>
<li>첫째 테이블에 있는 투플 가운데, 둘째 테이블에도 있는 투플을 뺀 나머지 투플만 결과 테이블에 나온다.</li>
<li>둘째 테이블에만 있는 투플은 결과에 나오지 않음</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/8a56dc95-1b53-4267-98f5-4d4fc02b2e40/image.png" alt=""></p>
<p><strong>합집합과 마찬가지로 호환성이 있어야 한다.</strong></p>
<h3 id="차집합은-언제-사용하면-좋을까">차집합은 언제 사용하면 좋을까?</h3>
<ul>
<li>아래 수강 테이블에서 CS200 과목을 수강하는 학생중에서 CS300과목을 수강하지 않는 학생의 학번을 구하시오.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/38baf36f-5a1f-44e0-afe7-5a216c05d45d/image.png" alt=""></p>
<br/>

<h2 id="카티전-곱x-cartesian-product">카티전 곱(X, cartesian product)</h2>
<ul>
<li>입력 테이블 2개, 결과 테이블 1개</li>
<li>보통 자연 조인을 위한 중간 과정으로 아주 많이 씀
(보기) 학생 X 수강</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/e2ce3d1e-8251-4c06-98b5-1d70e86f6011/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/0f526f11-ed44-4486-8110-602cf6b60340/image.png" alt=""></p>
<ul>
<li>속성 수의 합 : 2 + 2 = 4</li>
<li>투플 수의 곱 : 3 * 5 = 15</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Yarn과 npm의 개념 및 차이점]]></title>
            <link>https://velog.io/@iris-starry/Yarn%EA%B3%BC-npm%EC%9D%98-%EA%B0%9C%EB%85%90-%EB%B0%8F-%EC%B0%A8%EC%9D%B4%EC%A0%90</link>
            <guid>https://velog.io/@iris-starry/Yarn%EA%B3%BC-npm%EC%9D%98-%EA%B0%9C%EB%85%90-%EB%B0%8F-%EC%B0%A8%EC%9D%B4%EC%A0%90</guid>
            <pubDate>Tue, 21 May 2024 23:11:37 GMT</pubDate>
            <description><![CDATA[<h2 id="개요">개요</h2>
<p><code>Yarn</code>과 <code>npm</code>은 모두 JavaScript 및 Node.js 패키지 매니저입니다. 이들은 패키지(라이브러리)들을 설치, 업데이트, 제거하고 프로젝트의 의존성을 관리하는 데 사용됩니다. 두 도구 모두 기본적인 기능은 비슷하지만, 성능, 보안, 명령어 등 여러 측면에서 차이가 있습니다.</p>
<h2 id="yarn">Yarn</h2>
<h3 id="개념">개념</h3>
<ul>
<li>Yarn은 Facebook, Google, Exponent, Tilde 등의 회사가 협력하여 만든 패키지 매니저입니다.</li>
<li>npm의 단점을 보완하고자 2016년에 출시되었습니다.</li>
</ul>
<h3 id="주요-특징">주요 특징</h3>
<ol>
<li><strong>속도</strong>: 병렬로 패키지를 설치하여 속도가 빠릅니다.</li>
<li><strong>신뢰성</strong>: 패키지 버전을 고정하고 <code>yarn.lock</code> 파일을 통해 동일한 의존성을 유지합니다.</li>
<li><strong>오프라인 모드</strong>: 한 번 설치한 패키지는 오프라인에서도 재설치가 가능합니다.</li>
<li><strong>명령어</strong>: npm과 유사하지만 일부 명령어가 다릅니다.</li>
</ol>
<h3 id="주요-명령어">주요 명령어</h3>
<ul>
<li><code>yarn install</code>: 모든 의존성을 설치합니다.</li>
<li><code>yarn add &lt;패키지명&gt;</code>: 새로운 패키지를 설치하고 <code>package.json</code>에 추가합니다.</li>
<li><code>yarn remove &lt;패키지명&gt;</code>: 패키지를 제거하고 <code>package.json</code>에서 삭제합니다.</li>
<li><code>yarn upgrade &lt;패키지명&gt;</code>: 패키지를 최신 버전으로 업데이트합니다.</li>
</ul>
<h2 id="npm">npm</h2>
<h3 id="개념-1">개념</h3>
<ul>
<li>npm(Node Package Manager)은 Node.js와 함께 기본으로 제공되는 패키지 매니저입니다.</li>
<li>JavaScript 커뮤니티에서 가장 널리 사용되는 패키지 매니저입니다.</li>
</ul>
<h3 id="주요-특징-1">주요 특징</h3>
<ol>
<li><strong>광범위한 생태계</strong>: 가장 많은 패키지를 보유하고 있습니다.</li>
<li><strong>npm 스크립트</strong>: 프로젝트 내에서 스크립트를 쉽게 실행할 수 있습니다.</li>
<li><strong>버전 관리</strong>: <code>package-lock.json</code> 파일을 통해 패키지 버전을 관리합니다.</li>
<li><strong>보안 기능 개선</strong>: 최근 보안 기능이 강화되었습니다.</li>
</ol>
<h3 id="주요-명령어-1">주요 명령어</h3>
<ul>
<li><code>npm install</code>: 모든 의존성을 설치합니다.</li>
<li><code>npm install &lt;패키지명&gt;</code>: 새로운 패키지를 설치하고 <code>package.json</code>에 추가합니다.</li>
<li><code>npm uninstall &lt;패키지명&gt;</code>: 패키지를 제거하고 <code>package.json</code>에서 삭제합니다.</li>
<li><code>npm update &lt;패키지명&gt;</code>: 패키지를 최신 버전으로 업데이트합니다.</li>
</ul>
<h2 id="주요-차이점">주요 차이점</h2>
<table>
<thead>
<tr>
<th>특징</th>
<th>Yarn</th>
<th>npm</th>
</tr>
</thead>
<tbody><tr>
<td><strong>속도</strong></td>
<td>빠름 (병렬 설치)</td>
<td>상대적으로 느림 (순차 설치)</td>
</tr>
<tr>
<td><strong>잠금 파일</strong></td>
<td><code>yarn.lock</code></td>
<td><code>package-lock.json</code></td>
</tr>
<tr>
<td><strong>오프라인 모드</strong></td>
<td>지원</td>
<td>지원 (npm v5 이상)</td>
</tr>
<tr>
<td><strong>명령어</strong></td>
<td><code>yarn add/remove/upgrade</code></td>
<td><code>npm install/uninstall/update</code></td>
</tr>
<tr>
<td><strong>워크스페이스</strong></td>
<td>기본 제공</td>
<td>npm v7 이상에서 지원</td>
</tr>
</tbody></table>
<h2 id="결론">결론</h2>
<p>Yarn과 npm은 각각 장단점이 있으며, 프로젝트의 필요와 팀의 선호도에 따라 선택할 수 있습니다. Yarn은 속도와 안정성을 중시하는 프로젝트에 유리하며, npm은 넓은 생태계와 풍부한 기능을 제공합니다. 두 패키지 매니저 모두 지속적으로 업데이트되며 개선되고 있으므로, 최신 정보를 확인하는 것이 중요합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[LAN 전송 매체]]></title>
            <link>https://velog.io/@iris-starry/LAN-%EC%A0%84%EC%86%A1-%EB%A7%A4%EC%B2%B4</link>
            <guid>https://velog.io/@iris-starry/LAN-%EC%A0%84%EC%86%A1-%EB%A7%A4%EC%B2%B4</guid>
            <pubDate>Tue, 07 May 2024 07:37:57 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>학습 목표</p>
</blockquote>
<ul>
<li>LAN을 전송 매체에 따라 분류하고 특징을 설명할 수 있다.</li>
<li>UTP 케이블을 제작할 수 있다.</li>
<li>다이렉트 케이블과 크로스오버 UTP 케이블이 어떤 장비 간 연결에 사용되는지 구분하여 설명할 수 있다.</li>
</ul>
<h1 id="lan-전송매체의-이해">LAN 전송매체의 이해</h1>
<h2 id="lan의-전송-매체-기능">LAN의 전송 매체 기능</h2>
<ul>
<li>데이터 전송은 컴퓨터에서 나오는 디지털 신호인 0과 1을 적당한 전기 신호 형태로 변환하거나 빛의 형태로 바꾸어 전송하는 방식이다.</li>
<li>전송 매체는 데이터 신호가 원하는 방향으로 전달될 수 있도록 안내하는 기능을 한다. 또한 전송 중에 데이터 신호의 왜곡을 방지하여 정확하게 전달될 수 있도록 데이터를 보호하는 역할을 하게 된다.</li>
</ul>
<h2 id="lan의-전송-매체-분류">LAN의 전송 매체 분류</h2>
<ul>
<li>유선 전송 매체(하드와이어)<ul>
<li>송신자와 수신자 사이의 데이터 흐름을 전기 신호로 변환하여 물리적인 경로를 따라 전달한다.</li>
</ul>
</li>
<li>무선 전송 매체(소프트와이어)<ul>
<li>송신자와 수신자 사이의 데이터 흐름이 물리적인 경로 없이 구성된다.</li>
</ul>
</li>
</ul>
<BR/>

<h1 id="유선-전송-매체">유선 전송 매체</h1>
<h2 id="꼬임선">꼬임선</h2>
<ul>
<li>꼬임선은 음성 신호 전송에 적합하며 케이블에 노드 부착이 쉽고 가격이 저렴하지만 잡음에 약하고 전송 거리에 제약을 받는다.</li>
<li>UTP 케이블과 STP 케이블 두 종류가 있다.</li>
</ul>
<h2 id="utp-케이블">UTP 케이블</h2>
<ul>
<li>8가닥의 선이 꼬인 상태로 들어 있어 상호 복합적으로 전기적인 특성을 서로 보완해 준다.</li>
<li>굵기가 가늘어 설치와 사용이 매우 쉽고 케이블 자체의 가격도 저렴하여 노드 연결용부터 백본 연결용까지 다양하게 사용되고 있다.</li>
<li>이더넷, ATM, 토큰링 등 다양한 네트워크에 활용되고 있다.</li>
<li>쉴딩이 없어 전기적 노이즈와 전자기장에 약하고 100M 거리의 제한이 있다.</li>
<li>전송속도와 용량에 따라 여러개의 카테고리로 나눌 수 있다.</li>
</ul>
<h2 id="stp-케이블">STP 케이블</h2>
<ul>
<li>STP 케이블은 전자기적 간섭 현상을 줄이기 위해서 UTP 케이블에 쉴딩을 추가한 것이다.</li>
<li>쉴딩 재료는 보통 구리를 사용하여 직물 형태로 짜서 사용한다.</li>
<li>회선들 사이의 누화나 간섭 현상을 감소시켜 발전소나 공장 등과 같이 전자기 장애에 민감한 곳에서 주로 사용된다.</li>
<li>거리가 멀어지면 신호의 세기가 작아지는 감쇠 현상이 나타나는 것은 UTP와 같다. 그러므로 100M 이상의 거리를 연결하는 목적에는 사용하기가 곤란하다.</li>
</ul>
<h2 id="동축-케이블">동축 케이블</h2>
<ul>
<li>동축 케이블은 트위스트 페어 케이블과 같이 두 개의 도체로 구성되어 있다.</li>
<li>각 전도체는 STP 케이블과 같이 쉴드로 분리되며 전도체 재료로는 구리가 사용된다.</li>
<li>내부 전도체의 굵기가 굵어 감쇠 현상이 적고 먼 거리를 연결할 수 있다.</li>
<li>이더넷 형태의 LAN의 연결과 장거리 전화망, 케이블 TV 등에서 사용하며, BNC라는 커넥터를 사용하여 연결한다.</li>
<li>가장 많이 사용하는 동축 케이블은 RG 타입으로 50Ω, 75Ω, 93Ω의 임피던스를 가진 케이블을 사용한다.</li>
<li>50Ω는 10Base-T 이더넷에, 75Ω는 CATV에 사용한다.</li>
</ul>
<h2 id="광섬유-케이블">광섬유 케이블</h2>
<p>유리나 합성수지로 만들어 빛을 전송하는데 사용하며 향후 가장 널리 사용될 것으로 예측되는 케이블이다. 전송 속다가 다른 전송 매체에 비해 빠르고 전송 용량이 크다.</p>
<h3 id="광섬유-구조">광섬유 구조</h3>
<ul>
<li>광섬유는 내부 물질인 코어와 외부 물질인 클래딩으로 구성되어 있다.</li>
<li>코어는 광섬유의 중앙에 위치하여 전기 신호인 데이터가 빛의 펄스 형태로 변환되어 전송되는 통로가 된다.</li>
<li>클래딩은 빛이 코어 내부로만 흐르도록 코어를 감싸고 있는 부분이다.</li>
</ul>
<h3 id="광섬유의-종류">광섬유의 종류</h3>
<ul>
<li>광섬유는 코어의 직경과 굴절률의 형태에 따라 단일 모드와 다중 모드로 구분된다.</li>
<li>단일 모드 광섬유는 광 코어의 직경을 수 ㎛ 단위 정도로 가늘게 하여 입사된 빛의 직진성을 좋게 하고 하나의 경로를 통해 빛이 전달되도록 하므로 초고속의 데이터 전송이 가능하다. 대용량, 장거리 전송망인 기간망에 주로 사용된다.</li>
<li>멀티 모드 광섬유는 광 코어의 직경을 수십 ㎛ 단위 정도로 단일 모드 광섬유에 비해 직진성이 낮고 속도가 떨어지지만 변환 장치 등 주변 기기의 접속이 용이하고 설치 비용이 적게 들어 단거리 전송망에 많이 사용된다.</li>
</ul>
<h3 id="광섬유의-특징">광섬유의 특징</h3>
<ul>
<li>광섬유는 수십 KM의 장거리 전송에 최대 2.5Gbps의 높은 전송속도를 가진다.</li>
<li>다른 전송 매체에 비해 외부의 전자파에 의한 간섭이나 신호의 감쇠가 적어 장거리 데이터 사용이 가능하다.</li>
<li>전송 도중의 데이터 손실이 적어 리피터나 허브와 같은 중계기의 설치 간격이 10km ~ 100km로 다른 매체에 비해 상당히 넓다</li>
<li>적은 공간에 많은 통신 회선을 수용할 수 있으나 설치 및 관리에 특수 장비와 고도의 기술이 필요하다.</li>
<li>GTS는 위성 통신을 이용하여 지구상의 위치를 찾아내는 무선 통신 시스템이다.</li>
<li>선이 없는 공간을 매개체로 데이터를 송신하고 수신하는 시스템을 무선 통신 시스템이라 한다.</li>
<li>무선 통신은 공간으로 전파되는 전자파를 전송 매체로 데이터를 전송한다.</li>
<li>전자파는 라디오파와 마이크로파로 분류할 수 있다.</li>
</ul>
<BR/>

<h1 id="무선-전송-매체">무선 전송 매체</h1>
<h2 id="라디오파">라디오파</h2>
<ul>
<li>라디오파는 일반적으로 1GHz보다 낮은 주파수로 공간의 매질을 잘 통과할 수 있어 데이터 전송에 유용하게 사용된다.</li>
<li>주파수가 낮은 저주파는 주변에 산과 같은 장애물이 있어도 잘 통과하여 정확한 데이터 전달이 가능하다.</li>
<li>라디오파는 전자기파이므로 전송 거리에 따라 신호의 세기가 감쇠하고 상호 간섭이 일어날 수 있어 필요한 신호를 송수신하기 위해 안테나가 필요하다.</li>
<li>라디오파는 AM/FM 라디오 방송, 텔레비전 방송, 아마추어 무선 통신에 사용.</li>
</ul>
<h2 id="마이크로파">마이크로파</h2>
<ul>
<li>마이크로파는 극초단파, 센티미터파, 밀리미터파를 포함하는 주파수가 높은 전자파를 말한다.</li>
<li>휴대 전화, 위성 통신, 무선 LAN 등의 데이터 전달에 사용하는 전자파이다.</li>
<li>마이크로파는 지상 마이크로파와 위성 마이크로파로 분류된다.</li>
</ul>
<h3 id="지상-마이크로파">지상 마이크로파</h3>
<ul>
<li>지상 마이크로파는 유선 전송 매체를 사용하기 어려운 강, 도로, 산 등의 장애물을 가로질러 장거리 통신 서비스를 제공하는데 사용된다.</li>
<li>수십 Mbps의 데이터 전송 속도를 제공하고 파라불라 안테나를 설치하여 데이터를 송수신한다.</li>
<li>지점 간 전송에는 적합하나 전파되는 도중에 감쇠가 크므로 중간에 중계기를 설치한다.</li>
</ul>
<h3 id="위성마이크로파">위성마이크로파</h3>
<ul>
<li>위성 마이크로파는 지상에는 약 35.000km의 정지퀘도에 쏘아 올린 정지 위성을 사용하여 지상의 위성국과 데이터 송수신을 한다.</li>
</ul>
<h1 id="utp-케이블-제작">UTP 케이블 제작</h1>
<ul>
<li>LAN에서 컴퓨터, 프린 같은 장비를 연결하는데 주로 사용</li>
<li>연결 방식에 따라 다이렉트 케이블과 크로스오버 케이블이 있다.<h2 id="다이렉트-케이블">다이렉트 케이블</h2>
</li>
<li>서로 다른 장비를 연결할 때 사용한다.</li>
<li>랜 카드와 허브를 직접 연결하거나, 스위치와 컴퓨터, 스위치와 라우터를 연결할 때 사용한다.</li>
</ul>
<h2 id="크로스오버-케이블">크로스오버 케이블</h2>
<ul>
<li>서로 같은 장비를 연결할 때 사용한다.</li>
<li>두 대의 컴퓨터를 직접 연결하거나, 허브와 허브, 스위치와 스위치, 라우터와 라우터를 연결할 때 사용한다.</li>
</ul>
<h2 id="utp-케이블-1">UTP 케이블</h2>
<ul>
<li>MDI 또는 MDIX 타입을 사용한다.</li>
<li>1,2번 핀(Tx)은 전송, 3,6번 핀(Rx)은 수신을 위해 사용된다.</li>
</ul>
<h3 id="제작-준비">제작 준비</h3>
<ul>
<li><p>UTP 케이블 제작에 필요한 공구, RJ-45 커넥터, UTP 케이블 및 보호 캡을 준비한다.</p>
<h3 id="작업-순서">작업 순서</h3>
</li>
<li><p>니퍼를 이용하여 먼저 UTP 케이블을 필요한 만큼 자른 후에 보호 캡을 끼운다.</p>
</li>
<li><p>RJ-45 툴의 피복 절단용 스트리퍼를 이용하여 피복 부분만 벗겨낸다.</p>
</li>
<li><p>꼬여 있는 케이블을 푼 뒤에 케이블의 종류에 따라 선의 색상에 맞추어 정렬한 후 가지런히 자른다.</p>
</li>
<li><p>UTP 컨넥터에 케이블을 삽입한다. 각각의 케이블이 색깔에 맞추어 제자리에 잘 들어갔는지 반드시 확인 한다.</p>
</li>
<li><p>UTP 컨넥터를 RJ-45 툴에 넣고 조심스럽게 집어준다. 반대쪽 끝도 같은 방법으로 제작한다.</p>
</li>
<li><p>LAN 테스터기로 UTP 케이블이 UTP 컨넥터에 잘 연결이 되었는지를 테스트 한다. 테스터기의 Master 측과 Slave 측의 녹색 램프가 차례대로 1번-2번-3번-4번 순으로 들어오는지 확인한다. 적색 램프에 불이 들어오면 반대로 연결되어 있는 것이고 점등되지 않는 것은 선이 중간에 단선이 되거나 연결이 잘못된 것이다.</p>
</li>
</ul>
<br/>
<br/>


]]></description>
        </item>
        <item>
            <title><![CDATA[LAN 장비]]></title>
            <link>https://velog.io/@iris-starry/LAN-%EC%9E%A5%EB%B9%84</link>
            <guid>https://velog.io/@iris-starry/LAN-%EC%9E%A5%EB%B9%84</guid>
            <pubDate>Tue, 07 May 2024 04:23:36 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>학습 목표</p>
</blockquote>
<ul>
<li>리피터와 허브의 동작 원리를 이해하고 차이를 설명할 수 있다.</li>
<li>브리지와 스위치의 동작을 이해하고 차이를 설명할 수 있다.</li>
<li>라우터의 동작 원리를 설명할 수 있다.</li>
</ul>
<h1 id="랜-카드lan-card">랜 카드(LAN card)</h1>
<p>컴퓨터나 프린터 등을 LAN과 같은 네트워크에 연결해 주는 장비로 NIC라고도 한다.</p>
<h2 id="랜-카드의-동작-원리">랜 카드의 동작 원리</h2>
<p>LAN 카드는 제 1계층인 물리 계층과 LAN 디바이스 드라이버를 통하여 제 2계층인 데이터 링크 계층의 기능을 제공하는 장비이다.</p>
<h3 id="랜-카드의-기능">랜 카드의 기능</h3>
<ul>
<li>내부에서 처리된 병렬 데이터를 직렬 데이터로 바꾸어 전송한다.</li>
<li>데이터를 수신한다. 직렬 데이터를 병렬 데이터로 바꾼다.</li>
<li>데이터 신호를 전송 선로로 보내기 위해 전기 신호로 변환한다.</li>
<li>비트 데이터를 모아 패킷 형태로 변환한 후 한꺼번에 전송한다.</li>
</ul>
<h3 id="랜-카드의-종류">랜 카드의 종류</h3>
<ul>
<li>버스 구조에 따라 ISA 랜 카드(8bit, 16bit), PCI 랜 카드(32bit)로 구분</li>
<li>LAN의 종류 및 속도에 따라 이더넷(10Mbps), 토큰링 카드, 패스트 이더넷 카드(100Mbps), 기가비트 이더넷 카드(1Gbps), 무선 랜 카드로 구분</li>
</ul>
<h3 id="랜-카드의-구분">랜 카드의 구분</h3>
<ul>
<li>랜 카드를 구분하는 방법은 랜 카드의 ROM에 저장된 48비트 크기의 주소를 가지고 구분한다.</li>
<li>이 주소는 각각의 랜 카드 별로 고유한 값으로 중복되는 경우가 없다. 이 주소를 MAC 주소라고 한다.</li>
<li>MAC 주소의 상위 24비트는 제조사별로 할당된 코드, 하위 24비트는 제조사별로 관리하는 시리얼 번호가 된다.</li>
</ul>
<BR/>

<h1 id="리피터repeater">리피터(REPEATER)</h1>
<p>리피터는 전송 매체에 흐르는 데이터 신호를 증폭하고 재생하여 중계하는 간단한 장치로 물리 계층에서 동작한다.</p>
<h2 id="리피터의-동작-원리">리피터의 동작 원리</h2>
<p>케이블 길이가 길어져 크기가 작아지거나 왜곡된(감쇠 현상) 신호를 증폭하고 재생하여 중계하는 역할을 수행한다.</p>
<h2 id="리피터의-역할">리피터의 역할</h2>
<p>데이터 전송 시 거리가 멀어 데이터 전송이 원활하게 되지 않는 경우 데이터 신호의 증폭과 재생을 하여 중계를 하고, 또한 지역적 거리를 극복하고 확장할 목적으로 사용한다.</p>
<p>UTP 케이블의 경우 최대 거리가 100M라는 거리 제한이 있다.</p>
<BR/>

<h1 id="허브hub">허브(Hub)</h1>
<ul>
<li>허브는 네트워크에서 여러 대의 컴퓨터를 연결하는 접속 장치로 연결된 모든 컴퓨터에 정보를 전달하는 중계기 역할을 한다.</li>
<li>제 1계층인 물리 계층에서 동작한다.</li>
</ul>
<h2 id="허브의-동작-원리">허브의 동작 원리</h2>
<ul>
<li>성형 네트워크에서 PC와 PC를 연결하는 접속 장치가 바로 허브이다.</li>
<li>허브는 RJ-45 커넥터와 다수의 포트를 이용하여 손쉽게 PC나 프린터 등을 네트워크에 연결해 주는 장비이다.</li>
<li>허브는 네트워크 세그먼트를 구분하는 단위로 사용되기도 한다.</li>
</ul>
<h2 id="허브의-종류">허브의 종류</h2>
<ul>
<li>허브는 연결 포트 수에 따라 4포트, 8포트, 16포트, 24포트, 허브 등으로 분류된다.</li>
<li>기능에 따라 더미 허브, 스위칭 허브, 스택커블 허브 등으로 구분할 수 있다.</li>
</ul>
<h3 id="더미-허브">더미 허브</h3>
<p>전송 매체로 들어온 데이터를 포트에 연결된 모든 컴퓨터에 전달, 연결된 컴퓨터의 수가 많을 수록 충돌 발생 횟수가 많아져 속도가 떨어짐.</p>
<h2 id="스위칭-허브">스위칭 허브</h2>
<p>전송 매체로 들어온 데이터를 해당하는 목적지 포트에만 전달, 스위칭 허브의 전송 속도 100Mbs라면 각 포트의 전송 속도로 100Mbs를 그대로 유지할 수 있다.</p>
<h2 id="스택커블-허브">스택커블 허브</h2>
<p>여러 대의 허브를 연결하여 하나의 허브처럼 사용할 수 있도록 하는 허브, 포트의 수를 확장할 수 있다.</p>
<br/>

<h1 id="브리지bridge">브리지(Bridge)</h1>
<ul>
<li>브리지는 LAN을 확장하는데 사용하는 장비이다.</li>
<li>브리지는 주소를 구분할 수 있는 기능이 있어 데이터 신호를 주소로 구분하여 해당하는 네트워크 세그먼트에만 전송하여 전송 효율을 높일 수 있다.</li>
<li>이 때 사용하는 주소가 랜 카드의 고유 주소인 MAC 주소를 사용하며, 제 2계층인 데이터 링크 계층에서 작동하는 장비이다.</li>
</ul>
<h2 id="브리지의-동작-원리">브리지의 동작 원리</h2>
<ul>
<li>MAC 주소를 보고 포트에 연결된 네트워크 세그먼트에 전송할 것인지 말것인지를 구분하는 기능을 가지고 있고 네트워크의 전송 효율을 높일 수 있다.</li>
<li>서로 독립적으로 존재하는 LAN을 상호 연결하여 연동하는 장비이다.</li>
<li>브리지는 자신의 포트로 입력되는 데이터 신호를 판독하여 해당 데이터의 발신지 컴퓨터의 MAC 주소를 알아내어 브리지 테이블을 구성한다.</li>
<li>브리지는 브리지 테이블을 참조하여 연결 포트를 알아내고 해당 포트에만 데이터를 전송하여 전송 효율을 높인다.</li>
</ul>
<h2 id="브리지의-활용">브리지의 활용</h2>
<ul>
<li><p>브리지를 활용하여 네트워크를 확장하면서 충돌 영역을 줄이고 네트워크 전송 속도를 높일 수 있다.</p>
</li>
<li><p>투명 브리지 : 같은 종류의 네트워크 세그먼트나 같은 종류의 전송 매체를 접속</p>
</li>
<li><p>변환 브리지 : 서로 다른 전송 매체로 구성되어 물리적인 특성이 다른 네트워크 간의 연결</p>
</li>
</ul>
<BR/>

<h1 id="스위치">스위치</h1>
<ul>
<li>스위치는 데이터 링크 계층에서 동작하며 네트워크 세그먼트를 각 포트별로 구분할 수 있어 특정 포트에만 데이터를 전송하여 충돌 영역을 줄여주는 역할을 하는 데이터 중계 장비이다.</li>
<li>2계층의 스위치는 L2 스위치라고도 불리며, 많은 포트와 빠른 성능을 갖도록 설계한 브리지의 한 종류라 할 수 있다.</li>
</ul>
<h2 id="스위치의-동작-원리">스위치의 동작 원리</h2>
<ul>
<li>컴퓨터가 송신한 데이터를 받으면 데이터 신호에 포함된 목적지 주소인 MAC 주소를 구분하고 목적지 MAC 주소를 가진 컴퓨터가 연결된 포트에만 선택적으로 데이터 신호를 전송한다.</li>
<li>데이터 프레임의 목적지 주소인 MAX 주소만을 보고 바로 전송하는 컷 스루포워드라는 방식을 이용하여 전송하므로 전송 속도가 뛰어나다.</li>
</ul>
<h2 id="스위치의-활용">스위치의 활용</h2>
<ul>
<li>더미 허브로 네트워크가 구성된 경우 한 그룹이 데이터 전송을 하면 나머지 다른 그룹은 데이터 전송이 불가능하다.</li>
<li>스위치 허브를 도입하면 포트별로 충돌 영역이 분할 되어 각각의 그룹별로 데이터 전송이 가능하다.</li>
</ul>
<h2 id="스위치의-분류">스위치의 분류</h2>
<ul>
<li>레이어 3 스위치는 네트워크 계층을 지원하는 이더넷 스위치이다.</li>
<li>레이어 3 스위치는 VLAN에 IP 주소를 부여하고 라우팅할 수가 있어 VLAN간의 통신이 가능하다.</li>
<li>레이어 4 스위치는 전송 계층을 기반으로 패킷을 분류하고 경로를 제어하는 스위치로 전송 계층에서 발생하는 세션을 관리하고 포트 번호로 세션을 관리하기 위한 패킷도 조작할 수 있다.</li>
<li>레이어 4 스위치의 로드 벨런서 기능은 서버에 대한 부하 분산과 서버의 동작 상태 확인 가능하다.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/ac319328-bf40-4792-bcc9-9196435e5901/image.png" alt=""></p>
<BR/>

<h1 id="스위치와-브리지-차이">스위치와 브리지 차이</h1>
<ul>
<li>기능은 거의 똑같고 데이터를 처리하는 성능에 차이가 있다.</li>
<li>브리지는 소프트웨어 기반이고 스위치는 하드웨어 기반이다.</li>
<li>스위치는 주문형 반도체(ASIC)를 기반으로 만들어져 데이터 처리 속도가 브리지 보다 빠르고 브리지에 없는 가상 랜(VLAN) 기능을 가지고 있다.</li>
</ul>
<BR/>

<h1 id="스위치와-허브의-차이">스위치와 허브의 차이</h1>
<ul>
<li>스위치는 특정 포트를 지정하여 데이터 신호를 보낼 수 잇어 포트별 데이터 속도를 일정하게 유지할 수 있다.</li>
<li>더미 허브는 모든 포트에 데이터를 전송하여 동시에 데이터 전송이 불가능 하고 전송 속도 또한 연결된 컴퓨터 수에 반비례하여 속도가 낮아진다.</li>
</ul>
<BR/>

<h1 id="라우터router">라우터(Router)</h1>
<ul>
<li>라우터는 서로 다른 종류의 LAN 네트워크를 연결하기 위해 네트워크의 초입에 설치하며 OSI 모델 3계층인 네트워크 계층에서 동작하는 장비이다.</li>
</ul>
<h2 id="라우터의-동작-원리">라우터의 동작 원리</h2>
<p>네트워크 계층 주소인 IP 주소를 사용하여 데이터 전송 목적지까지의 경로를 검사하고 어떤 경로로 가는 길이 가장 적절한지를 판단하는 경로를 결정한다.</p>
<ul>
<li><p>라우팅 : 데이터 전송 시 데이터 전달의 최적 경로 탐색</p>
</li>
<li><p>라우팅 테이블 : 연결되어 있는 모든 경로에 대한 테이블 형태의 정보</p>
</li>
</ul>
<h2 id="라우터-테이블의-종류">라우터 테이블의 종류</h2>
<ul>
<li>정적 라우팅 : 라우팅 테이블을 직접 관리자가 작성해 주는 방식</li>
<li>동적 라우팅 : 라우터가 연결된 네트워크의 다른 라우터를 통하여 자동으로 경로 정보를 얻어와 라우팅 테이블을 작성하는 방식</li>
</ul>
<h2 id="라우터의-기능">라우터의 기능</h2>
<ul>
<li>라우터는 서로 다른 LAN을 연결하여 데이터 송수신이 가능하게 해주는 장비이다.</li>
<li>서로 다른 네트워크 상에 여러 개의 데이터 전달 경로가 존재할 때 그 중 최적의 정달 경로를 선택하여 데이터를 전달하고 필요한 경우 큰 데이터를 작은 데이터로 나누어 전송하는 기능도 수행한다.</li>
<li>라우터는 브리지와 다르게 네트워크의 데이터 집중 현상을 초래하지 않는다. 브로드캐스트 메시지나 손상된 데이터 패킷은 폐기하고 재 전송하지 않은 기능이 있기 때문이다.</li>
</ul>
<BR/>

<h1 id="게이트웨이">게이트웨이</h1>
<p>게이트웨이는 전 계층(1~7계층)의 프로토콜 구조가 다른 네트워크의 연결을 수행한다.</p>
<ul>
<li>세션 계층, 표현 계층, 응용 계층 간을 연결하여 데이터 형식 변환, 주소 변환, 프로토콜 변환 등을 수행한다.</li>
<li>LAN에서 다른 네트워크에 데이터를 보내거나 다른 네트워크로부터 데이터를 받아들이는 출입구 역할을 한다.</li>
</ul>
<BR/>
<BR/>]]></description>
        </item>
        <item>
            <title><![CDATA[웹사이트를 보는 흐름]]></title>
            <link>https://velog.io/@iris-starry/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A5%BC-%EB%B3%B4%EB%8A%94-%ED%9D%90%EB%A6%84-qcjtc84o</link>
            <guid>https://velog.io/@iris-starry/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A5%BC-%EB%B3%B4%EB%8A%94-%ED%9D%90%EB%A6%84-qcjtc84o</guid>
            <pubDate>Mon, 06 May 2024 14:41:02 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>해당 포스트는 영진닷컴,『그림으로 배우는 네트워크 NetWork 원리』, Gene 저·김성훈 역을 참고하여 작성하였습니다.</p>
</blockquote>
<hr>
<h1 id="웹사이트를-볼-때의-동작">웹사이트를 볼 때의 동작</h1>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/67b3f833-a08f-43f6-a434-5b74826537ad/image.png" alt=""></p>
<p>웹사이트를 보기 위해서 <code>HTTP 리퀘스트</code>와 <code>HTTP 리스폰스</code>를 주고받지만, 그 전에 <code>DNS의 이름해석</code>과 <code>ARP의 주소해석</code> 기능도 동작합니다. 그리고, TCP로 커넥션도 맺습니다. 간단한 네트워크 구성을 예로 DNS와 ARP, TCP도 포함해 웹사이트를 볼 때의 흐름을 생각해 봅시다.</p>
<p>웹사이트를 볼 때는 웹브라우저에서 URL을 입력합니다. 또는 웹페이지의 링크를 클릭합니다.</p>
<p>TCP/IP는 반드시 IP 주소를 지정해야만 합니다. URL에 포함된 웹서버의 호스트명을 DNS 서버에 질의해 웹서버의 IP 주소를 해석합니다.</p>
<p>DNS 서버에 질의할 때는 이더넷의 MAX 주소를 구하기 위해 ARP도 실행됩니다.</p>
<p>네트워크 구성 예에서는 라우터가 DNS 서버 기능을 가진다고 가정했습니다. 라우터 자체에는 목적지가 되는 웹서버의 IP 주소가 없으므로, 라우터에서 다시 DNS로 질의합니다.</p>
<p>웹서버의 IP 주소를 알면, 그 IP 주소를 지정하여 웹브라우저와 웹서버 애플리케이션 간에 TCP 커넥션을 맺습니다.</p>
<p>웹브라우저와 웹서버 애플리케이션 간의 TCP 커넥션을 확립하고 나서부터, HTTP 리퀘스트와 HTTP 리스폰스를 주고받습니다. 웹브라우저에서 지정한 URL을 포함한 HTTP 리퀘스트(GET 메소드)가 웹서버 애플리케이션에 전송됩니다.</p>
<p>HTTP 리퀘스트를 받은 웹서버 애플리케이션은 요청된 웹페이지의 파일을 HTTP 리스폰스로 반환합니다. <code>TCP에서 복수로 분할된 웹페이지의 파일을 조립하여 웹브라우저에 그 내용을 표시하면, 사용자는 웹사이트를 볼 수 있게 됩니다.</code></p>
<BR/>

<h1 id="point">Point</h1>
<ul>
<li>웹사이트를 볼 때는 DNS의 이름해석과 ARP의 주소해석 기능이 동작한다.</li>
<li>웹사이트를 보는 때의 흐름</li>
</ul>
<ol>
<li>웹브라우저에서 URL을 입력</li>
<li>웹서버의 IP 주소를 해석</li>
<li>TCP 커넥션 확립</li>
<li>HTTP 리퀘스트 전송과 HTTP 리스폰스 전송</li>
</ol>
<br/>
<br/>

<p>[참고 자료] <a href="https://velog.io/@wonhee010/%EC%9B%B9%EC%9D%98-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC">https://velog.io/@wonhee010/%EC%9B%B9%EC%9D%98-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[퀵 정렬]]></title>
            <link>https://velog.io/@iris-starry/%ED%80%B5-%EC%A0%95%EB%A0%AC</link>
            <guid>https://velog.io/@iris-starry/%ED%80%B5-%EC%A0%95%EB%A0%AC</guid>
            <pubDate>Thu, 02 May 2024 04:30:04 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>해당 포스트는 이지스퍼블리싱, 『알고리즘 코딩테스트 자바 편』, Gene 김종관 을 참고하여 작성하였습니다.</p>
</blockquote>
<br/>

<p>퀵 정렬(quick sort)은 기준값(pivot)을 선정해 해당 값보다 작은 데이터와 큰 데이터로 분류하는 것을 반복해 정렬하는 알고리즘입니다. 기준값이 어떻게 선정되는지가 시간 복잡도에 많은 영향을 미치고, 평균적인 시간 복잡도는 O(nlogn)입니다.</p>
<h1 id="퀵-정렬의-핵심-이론">퀵 정렬의 핵심 이론</h1>
<p>pivot을 중심으로 계속 데이터를 2개의 집합으로 나누면서 정렬하는 것이 퀵 정렬의 핵심입니다. </p>
<ul>
<li><p>퀵 정렬은 찰스 앤터니 리처드 호어가 개발한 정렬 알고리즘이다.</p>
</li>
<li><p>퀵 정렬은 분할 정복(divide and conquer) 방법을 통해 리스트를 정렬한다.</p>
</li>
<li><p>다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬에 속한다.</p>
</li>
<li><p>퀵 정렬은 n개의 데이터를 정렬할 때, 최악의 경우에는 O(n^2)번의 비교를 수행하고, 평균적으로 O(n log n)번의 비교를 수행한다.</p>
</li>
<li><p>퀵 정렬의 내부 루프는 대부분의 컴퓨터 아키텍처에서 효율적으로 작동하도록 설계되어 있고(그 이유는 메모리 참조가 지역화되어 있기 때문에 CPU 캐시의 히트율이 높아지기 때문이다), 대부분의 실질적인 데이터를 정렬할 때 제곱 시간이 걸릴 확률이 거의 없도록 알고리즘을 설계하는 것이 가능하다. 또한 매 단계에서 적어도 1개의 원소가 자기 자리를 찾게 되므로 이후 정렬할 개수가 줄어든다. 그렇기에 일반적인 경우 퀵 정렬은 다른 O(n log n) 알고리즘에 비해 훨씬 빠르게 동작한다.</p>
</li>
</ul>
<p>다음 그림을 봅시다.</p>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/77f911ea-d10c-4749-a854-aefc388f2b0d/image.png" alt=""></p>
<h2 id="퀵-정렬-과정">퀵 정렬 과정</h2>
<ol>
<li><p>배열의 첫 번째 값(5)를 피벗(pivot)으로 설정한다. </p>
</li>
<li><p>low 는 left + 1 자리부터 피벗(5)와 비교하면서 한칸씩 증가한다.</p>
</li>
<li><p>high 는 right 자리에서부터 피벗(5)와 비교하면서 한칸씩 감소한다.</p>
</li>
<li><p>위의 절차를 반복한다. low와 high가 엇갈리면 정지한다.</p>
</li>
<li><p>피벗값과 high 값을 SWAP한다.</p>
</li>
<li><p>피벗을 기준으로 왼쪽, 오른쪽 두개의 배열을 1~5번을 반복한다.</p>
</li>
<li><p>더 이상 나눠질 수 없을 때까지 재귀적으로 반복한다.</p>
</li>
<li><p>정렬이 완료된다.</p>
</li>
</ol>
<p>퀵 정렬의 시간 복잡도는 비교적 준수하므로 코딩 테스트에서도 종종 응용합니다. 재귀 함수의 형태로 직접 구현해 볼 것을 추천합니다.</p>
<br/>
<br/>

<p>[참고 자료] <a href="https://akdl911215.tistory.com/386">https://akdl911215.tistory.com/386</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[삽입 정렬]]></title>
            <link>https://velog.io/@iris-starry/%EC%82%BD%EC%9E%85-%EC%A0%95%EB%A0%AC</link>
            <guid>https://velog.io/@iris-starry/%EC%82%BD%EC%9E%85-%EC%A0%95%EB%A0%AC</guid>
            <pubDate>Thu, 02 May 2024 04:19:56 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>해당 포스트는 이지스퍼블리싱, 『알고리즘 코딩테스트 자바 편』, Gene 김종관 을 참고하여 작성하였습니다.</p>
</blockquote>
<br/>

<p>삽입 정렬(insertion sort)은 이미 정렬된 데이터 범위에 정렬되지 않은 데이터를 적절한 위치에 삽입시켜 정렬하는 방식입니다. 평균 시간 복잡도는 O(n²)으로 느린 편이지만 구현하기가 쉽습니다.</p>
<h1 id="삽입-정렬의-핵심-이론">삽입 정렬의 핵심 이론</h1>
<p>선택 데이터를 현재 정렬된 데이터 범위 내에서 적절한 위치에 삽입하는 것이 삽입 정렬의 핵심입니다.</p>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/4f93c284-f787-40e9-9b10-30de485e030e/image.png" alt=""></p>
<h2 id="삽입-정렬-과정">삽입 정렬 과정</h2>
<ol>
<li>현재 index에 있는 데이터 값을 선택한다.</li>
<li>현재 선택한 데이터가 정렬된 데이터 범위에 삽입될 위치를 탐색한다.</li>
<li>삽입 위치부터 index에 있는 위치까지 shift 연산을 수행한다.</li>
<li>삽입 위치에 현재 선택한 데이터를 삽입하고 index++ 연산을 수행한다.</li>
<li>전체 데이터의 크기만큼 index가 커질 때까지, 즉 선택한 데이터가 없을 때까지 반복한다.</li>
</ol>
<p>적절한 삽입 위치를 탐색하는 부분에서 이진 탐색(binary serch)등과 같은 탐색 알고리즘을 사용하면 시간 복잡도를 줄일 수 있습니다.</p>
<br/>
<br/>

<p>[참고 자료] <a href="https://hanhyx.tistory.com/38">https://hanhyx.tistory.com/38</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[선택 정렬]]></title>
            <link>https://velog.io/@iris-starry/%EC%84%A0%ED%83%9D-%EC%A0%95%EB%A0%AC</link>
            <guid>https://velog.io/@iris-starry/%EC%84%A0%ED%83%9D-%EC%A0%95%EB%A0%AC</guid>
            <pubDate>Thu, 02 May 2024 04:13:06 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>해당 포스트는 이지스퍼블리싱, 『알고리즘 코딩테스트 자바 편』, Gene 김종관 을 참고하여 작성하였습니다.</p>
</blockquote>
<br/>

<p>선택 정렬(selection sort)은 대상 데이터에서 최대나 최소 데이터를 데이터가 나열된 순으로 찾아가며 선택하는 방법입니다. 선택 정렬은 구현 방법이 복잡하고, 시간 복잡도도 O(n²)으로 효쥴적이지 않아 코딩 테스트에서는 많이 사용하지 않습니다. 선택 정렬 원리만 간단히 알아보고 넘어가겠습니다.</p>
<h1 id="선택-정렬의-핵심-이론">선택 정렬의 핵심 이론</h1>
<p>최솟값 또는 최댓값을 찾고, 남은 정렬 부분의 가장 앞에 있는 데이터와 swap하는 것이 선택 정렬의 핵심입니다.</p>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/d779a72f-2d9e-496a-a048-e89a077ddebb/image.png" alt=""></p>
<p>선택 정렬의 자세한 과정은 다음과 같습니다.</p>
<h2 id="선택-정렬-과정">선택 정렬 과정</h2>
<ol>
<li>남은 정렬 부분에서 최솟값 또는 최댓값을 찾는다.</li>
<li>남은 정렬 부분에서 가장 앞에 있는 데이터와 선택된 데이터를 swap한다.</li>
<li>가장 앞에 있는 데이터의 위치를 변경해(index++) 남은 정렬 부분의 범위를 축소한다.</li>
<li>전체 데이터 크기만큼 index가 커질 때까지, 즉 남은 정렬 부분이 없을 때까지 반복한다.</li>
</ol>
<p>선택 정렬 자체를 묻는 코딩 테스트 문제는 잘 나오지 않지만, 이 원리를 응용하는 문제는 나올 수 있으므로 선택 정렬이 어떤 원리로 작동하는지 알아 두세요.</p>
<br/>
<br/>



<p>[참고 자료] <a href="https://velog.io/@ajm0718/%EC%84%A0%ED%83%9D-%EC%A0%95%EB%A0%ACSelection-Sort">https://velog.io/@ajm0718/%EC%84%A0%ED%83%9D-%EC%A0%95%EB%A0%ACSelection-Sort</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[버블 정렬]]></title>
            <link>https://velog.io/@iris-starry/%EB%B2%84%EB%B8%94-%EC%A0%95%EB%A0%AC</link>
            <guid>https://velog.io/@iris-starry/%EB%B2%84%EB%B8%94-%EC%A0%95%EB%A0%AC</guid>
            <pubDate>Thu, 02 May 2024 04:06:29 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>해당 포스트는 이지스퍼블리싱, 『알고리즘 코딩테스트 자바 편』, Gene 김종관 을 참고하여 작성하였습니다.</p>
</blockquote>
<br/>

<blockquote>
<p>정렬 알고리즘</p>
</blockquote>
<ul>
<li>버블(bubble) : 데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식</li>
<li>선택(selection) : 대상에서 가장 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식</li>
<li>삽입(insertion) : 대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식</li>
<li>퀵(quick) : pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식</li>
<li>병합(merge) : 이미 정렬된 부분 집합들을 효율적으로 병합해 전체를 정렬하는 방식</li>
<li>기수(radix) : 데이터의 자릿수를 바탕으로 비교해 데이터를 정렬하는 방식</li>
</ul>
<h1 id="버블-정렬의-핵심-이론">버블 정렬의 핵심 이론</h1>
<p>버블 정렬(bubble sort)은 두 인접한 데이터의 크기를 비교해 정렬하는 방법입니다. 간단하게 구현할 순 있지만, 시간 복잡도는 O(n²)으로 다른 정렬 알고리즘보다 속도가 느린 편입니다. 다음 그림과 같이 루프(loop)를 돌면서 인접한 데이터 간의 swap 연산으로 정렬합니다.</p>
<p><img src="https://velog.velcdn.com/images/iris-starry/post/968db83f-40ea-4640-af41-930939f5fd97/image.png" alt=""></p>
<p>정렬 과정은 다음과 같습니다.</p>
<h2 id="버블-정렬-과정">버블 정렬 과정</h2>
<ol>
<li>비교 연산이 필요한 루프 범위를 설정한다.</li>
<li>인접한 데이터 값을 비교한다.</li>
<li>swap 조건에 부합하면 swap 연산을 수행한다.</li>
<li>루프 범위가 끝날 때까지 2~3을 반복한다.</li>
<li>정렬 영역을 설정한다. 다음 루프를 실행할 때는 이 영역을 제외한다.</li>
<li>비교 대상이 없을 때까지 1~5를 반복한다.</li>
</ol>
<p>만약 특정한 루프의 전체 영역에서 swap이 한 번도 발생하지 않았다면 그 영역 뒤에 있는 데이터가 모두 정렬됐다는 뜻이므로 프로세스를 종료해도 됩니다.</p>
<br/>



<p>[참고 자료] <a href="https://hoons-dev.tistory.com/5">https://hoons-dev.tistory.com/5</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[웹사이트를 보는 흐름]]></title>
            <link>https://velog.io/@iris-starry/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A5%BC-%EB%B3%B4%EB%8A%94-%ED%9D%90%EB%A6%84</link>
            <guid>https://velog.io/@iris-starry/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A5%BC-%EB%B3%B4%EB%8A%94-%ED%9D%90%EB%A6%84</guid>
            <pubDate>Wed, 01 May 2024 00:52:03 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>해당 포스트는 영진닷컴,『그림으로 배우는 네트워크 NetWork 원리』, Gene 저·김성훈 역을 참고하여 작성하였습니다.</p>
</blockquote>
<hr>
<h1 id="웹사이트를-볼-때의-동작">웹사이트를 볼 때의 동작</h1>
<p>웹사이트를 보기 위해서 <code>HTTP 리퀘스트와</code> <code>HTTP 리스폰스</code>를 주고받지만, 그 전에 <code>DNS의 이름해석</code>과 <code>ARP의 주소해석</code> 기능도 동작합니다. 그리고, TCP로 커넥션도 맺습니다. 간단한 네트워크 구성을 예로 DNS와 ARP, TCP도 포함해 웹사이트를 볼 때의 흐름을 생각해 봅시다.</p>
<p>웹사이트를 볼 때는 웹브라우저에서 URL을 입력합니다. 또는 웹페이지의 링크를 클릭합니다.</p>
<p>TCP/IP는 반드시 IP 주소를 지정해야만 합니다. URL에 포함된 웹서버의 호스트명을 DNS 서버에 질의해 웹서버의 IP 주소를 해석합니다.</p>
<p>DNS 서버에 질의할 때는 이더넷의 MAC 주소를 구하기 위해 ARP도 실행됩니다.</p>
<p>네트워크 구성 예에서는 라우터가 DNS 서버 기능을 가진다고 가정했습니다. 라우터 자체에는 목적지가 되는 웹서버의 IP 주소가 없으므로, 라우터에서 다시 DNS로 질의합니다.</p>
<p>웹서버의 IP 주소를 알면, 그 IP 주소를 지정하여 웹브라우저와 웹서버 애플리케이션 간에 TCP 커넥션을 맺습니다.</p>
<p>웹브라우저와 웹서버 애플리케이션 간의 TCP 커넥션을 확립하고 나서부터, HTTP 리퀘스트와 HTTP 리스폰스를 주고 받습니다. 웹브라우저에서 지정한 URL을 포함한 HTTP 리퀘스트(GET 메소드)가 웹서버 애플리케이션에 전송됩니다.</p>
<p>HTTP 리퀘스트를 받은 웹서버 애플리케이션은 요청된 웹페이지의 파일을 HTTP 리스폰스로 반환합니다. <code>TCP에서 복수로 분할된 웹페이지의 파일을 조립하여 웹브라우저에 그 내용을 표시하면, 사용자는 웹사이트를 볼 수 있게 됩니다.</code></p>
<BR/>

<h1 id="point">Point</h1>
<ul>
<li>웹사이트를 볼 때는 DNS의 이름해석과 ARP의 주소해석 기능이 동작한다.</li>
<li>웹사이트를 보는 때의 흐름</li>
</ul>
<ol>
<li>웹브라우저에서 URL을 입력</li>
<li>웹서버의 IP 주소를 해석</li>
<li>TCP 커넥션 확립</li>
<li>HTTP 리퀘스트 전송과 HTTP 리스폰스 전송</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[웹사이트를 볼 때의 준비]]></title>
            <link>https://velog.io/@iris-starry/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A5%BC-%EB%B3%BC-%EB%95%8C%EC%9D%98-%EC%A4%80%EB%B9%84</link>
            <guid>https://velog.io/@iris-starry/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A5%BC-%EB%B3%BC-%EB%95%8C%EC%9D%98-%EC%A4%80%EB%B9%84</guid>
            <pubDate>Mon, 29 Apr 2024 04:10:13 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>해당 포스트는 영진닷컴,『그림으로 배우는 네트워크 NetWork 원리』, Gene 저·김성훈 역을 참고하여 작성하였습니다.</p>
</blockquote>
<hr>
<h1 id="이용하는-애플리케이션">이용하는 애플리케이션</h1>
<p>웹사이트에 접속하기 위해 이용하는 애플리케이션은 <code>웹브라우저</code>입니다. 널리 이용되는 웹브라우저에 &#39;Google Chrome&#39;, &#39;Microsoft Edge/Internet Explorer&#39; &#39;Mozila Firefox&#39;, &#39;Apple Safari&#39;가 있습니다.</p>
<p>웹브라우저는 대개 특별한 설정을 할 필요가 없습니다. 단, <code>프록시 서버를 이용할 때는 프록시 서버의 IP 주소와 포트 번호를 설정합니다.</code></p>
<p>또한, 웹서버는 <code>웹서버 애플리케이션</code>이 필요합니다. 주요 웹서버 애플리케이션으로는 &#39;Apache&#39;나 &#39;Microsoft IIS&#39;가 있습니다.</p>
<p>웹서버 애플리케이션에는 공개할 웹사이트의 파일을 저장한 장소(디렉터리) 등을 설정할 필요가 있습니다.</p>
<h1 id="이용하는-프로토콜">이용하는 프로토콜</h1>
<p>웹 접속에 이용하는 프로토콜은 HTTP입니다. 또한, 트랜스포트층에는 TCP를, 인터넷층에는 IP를 이용합니다. HTTP의 웰노운 포트는 80입니다.
네트워크 인터페이스층은 대부분 이더넷을 이용합니다.</p>
<p>웹사이트에 접속할 때는 웹사이트 주소인 URL을 이용합니다. 그 URL로부터 웹서의 IP 주소를 구하는 이름해석을 하기 위해서 DNS가 필요합니다. <code>DNS와 ARP는 자동으로 실행되므로 사용자가 그다지 의식할 일은 없지만, 매우 중요한 프로토콜입니다.</code></p>
<br/>

<h1 id="point">Point</h1>
<ul>
<li>웹 접속의 대전제는 TCP/IP 설정이 바르게 되어 잇는 것이다.</li>
<li>이용하는 애플리케이션은 웹브라우저와 웹서버 애플리케이션이다.</li>
<li>이용하는 프로토콜은 HTTP/TCP/IP의 조합이다. 그밖에도 DNS와 ARP도 필요하다.</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>