<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>organic_mint.log</title>
        <link>https://velog.io/</link>
        <description>SSAFY 9기, 네이버 부스트캠프 AI Tech 7기</description>
        <lastBuildDate>Sun, 23 Mar 2025 14:46:28 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>organic_mint.log</title>
            <url>https://velog.velcdn.com/images/organic_mint/profile/3e722ff2-47a0-47be-ac4b-146bae4b74ed/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. organic_mint.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/organic_mint" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[면접을 위한 CS 전공지식 노트] 2.2 TCP/IP 4계층 모델 정리]]></title>
            <link>https://velog.io/@organic_mint/%EB%A9%B4%EC%A0%91%EC%9D%84-%EC%9C%84%ED%95%9C-CS-%EC%A0%84%EA%B3%B5%EC%A7%80%EC%8B%9D-%EB%85%B8%ED%8A%B8-2.2-TCPIP-4%EA%B3%84%EC%B8%B5-%EB%AA%A8%EB%8D%B8-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@organic_mint/%EB%A9%B4%EC%A0%91%EC%9D%84-%EC%9C%84%ED%95%9C-CS-%EC%A0%84%EA%B3%B5%EC%A7%80%EC%8B%9D-%EB%85%B8%ED%8A%B8-2.2-TCPIP-4%EA%B3%84%EC%B8%B5-%EB%AA%A8%EB%8D%B8-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Sun, 23 Mar 2025 14:46:28 GMT</pubDate>
            <description><![CDATA[<p><strong>인터넷 프로토콜 스위트(internet protocol suite)란?</strong></p>
<ul>
<li>인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합</li>
<li>이를 TCP/IP 4계층 또는 OSI 7계층 모델로 설명하기도 함</li>
</ul>
<h2 id="221-계층-구조">2.2.1 계층 구조</h2>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/c3e13df9-da8a-43c0-85e8-477cb076817d/image.png" alt=""></p>
<ul>
<li><p>OSI 계층은 애플리케이션 계층을 세 개로 쪼개고 링크 계층을 데이터 링크 계층, 물리 계층으로 나눠서 표현하는 것이 다르며, 인터넷 계층을 네트워크 계층으로 부른다는 점이 차이</p>
</li>
<li><p>특정 계층이 변경되었을 때 다른 계층이 영향받지 않도록 설계 (ex. 전송 계층에서 TCP를 UDP로 변경했다고 해서 인터넷 웹 브라우저를 다시 설치해야 하는 것은 X. 유연하게 설계)</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/5f7f85ff-6414-40a7-b197-ffa5f0b2b1b1/image.png" alt=""></p>
<h3 id="1-애플리케이션-계층">1. 애플리케이션 계층</h3>
<ul>
<li>FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층. 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층</li>
</ul>
<p><strong>**FTP</strong></p>
<ul>
<li>장치와 장치 간의 파일을 전송하는데 사용되는 표준 통신 프로토콜</li>
</ul>
<p><strong>**SSH</strong></p>
<ul>
<li>보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜</li>
</ul>
<p><strong>**HTTP</strong></p>
<ul>
<li>World Wide Web을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는 데 쓰는 프로토콜</li>
</ul>
<p><strong>**SMTP</strong></p>
<ul>
<li>전자 메일 전송을 위한 인터넷 표준 통신 프토로콜</li>
</ul>
<p><strong>**DNS</strong></p>
<ul>
<li>도메인 이름과 IP 주소를 매핑해주는 서버</li>
<li>예를 들어, <a href="http://www.naver.com%EC%97%90">www.naver.com에</a> DNS 쿼리가 오면 [Root DNS] -&gt; [.com DNS] -&gt; [.naver DNS] -&gt; [.www DNS] 과정을 거쳐 완벽한 주소를 찾아 IP 주소를 매핑</li>
<li>이를 통해 IP 주소가 바뀌어도 사용자들에게 똑같은 도메인 주소로 서비스 가능</li>
</ul>
<h3 id="2-전송-계층">2. 전송 계층</h3>
<ul>
<li>전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공</li>
<li>애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때의 중계 역할</li>
<li>TCP, UDP</li>
<li>TCP는 패킷 사이의 순서를 보장하고 연결지향 프로토콜을 사용해서 연결을 하여 신뢰성을 구축해서 수신 여부를 확인하며 &#39;가상회신 패킷 교환 방식&#39; 사용</li>
<li>UDP는 순서를 보장하지 않고 수신 여부를 확인하지 않으며 단순히 데이터만 주는 &#39;데이터그램 패킷 교환 방식&#39; 사용</li>
</ul>
<p><strong>**가상회선 패킷 교환 방식</strong></p>
<ul>
<li>각 패킷에는 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 &#39;순서대로&#39; 도착하는 방식</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/2521dd5f-d8b6-47b1-89ab-b95b97aab6e3/image.png" alt=""></p>
<p><strong>**데이터그램 패킷 교환 방식</strong></p>
<ul>
<li>패킷이 독립적으로 이동하며 최적의 경로를 선택해 가는데, 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있으며 도착한 &#39;순서가 다를 수&#39; 있는 방식</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/b79f0875-b14f-481f-8b36-8647db426d34/image.png" alt=""></p>
<p><strong>**TCP 연결 성립 과정</strong>
신뢰성 확보할 때, &#39;3-웨이 핸드셰이크(3-way handshake)&#39; 진행</p>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/572451e1-f58d-412f-b22f-2306e90c6dac/image.png" alt=""></p>
<p>클라이언트가 서버와 통신할 때 세 단계의 과정을 거침</p>
<ol>
<li>SYN 단계</li>
</ol>
<ul>
<li>클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보냄</li>
<li>ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호. 장치마다 다를 수 O</li>
</ul>
<ol start="2">
<li>SYN + ACK 단계</li>
</ol>
<ul>
<li>서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN+1을 보냄</li>
</ul>
<ol start="3">
<li>ACK 단계</li>
</ol>
<ul>
<li>클라이언트는 서버의 ISN+1한 값인 승인번호를 담아 ACK를 서버에 보냄</li>
</ul>
<p><strong>**SYN</strong></p>
<ul>
<li>SYNchronization의 약자. 연결 요청 플래그</li>
</ul>
<p><strong>**ACK</strong></p>
<ul>
<li>ACKnowledgement의 약자. 응답 플래그</li>
</ul>
<p><strong>**ISN</strong></p>
<ul>
<li>Initial Sequence Numbers의 약자. 초기 네트워크 연결을 할 때 할당된 32비트 고유 시퀀스 번호</li>
</ul>
<p><strong>**TCP 연결 해제 과정</strong>
&#39;4-웨이 핸드셰이크(4-way handshake)&#39; 진행
<img src="https://velog.velcdn.com/images/organic_mint/post/d43273ab-1e64-4d62-9a53-5e98038e801a/image.png" alt=""></p>
<ol>
<li>1번</li>
</ol>
<ul>
<li>먼저 클라이언트가 연결을 닫으려고 할 때, FIN으로 설정된 세그먼트 보냄. 클라이언트는 FIN_WAIT_1상태로 들어가고 서버의 응답을 기다림</li>
</ul>
<ol start="2">
<li>2번</li>
</ol>
<ul>
<li>서버는 클라이언트로 ACK라는 승인 세그먼트를 보내고 CLOSE_WAIT 상태에 들어감</li>
<li>클라이언트가 세그먼트를 받으면 FIN_WAIT_2상태에 들어감</li>
</ul>
<ol start="3">
<li>3번</li>
</ol>
<ul>
<li>서버는 ACK를 보내고 일정 시간 이후 클라이언트에 FIN 세그먼트 보냄</li>
</ul>
<ol start="4">
<li>4번</li>
</ol>
<ul>
<li>클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 됨.</li>
<li>이후 클라이언트는 어느 정도 시간을 대기한 후 연결이 닫히고 클라이언트와 서버의 모든 자원의 연결이 해제</li>
</ul>
<p><strong>왜 굳이 일정 시간 뒤에 연결을 닫을까? (TIME_WAIT)</strong></p>
<ul>
<li><ol>
<li>지연 패킷이 발생할 경우 대비하기 위함. 패킷이 뒤늦게 도달하고 이를 처리하지 못하면 데이터 무결성 문제 발생</li>
</ol>
</li>
<li><ol start="2">
<li>두 장치가 연결이 닫혔는지 확인하기 위함. 만약 LAST_ACK 상태에서 닫히게 되면, 다시 새로운 연결을 하려 할 때 장치는 줄곧 LAST_ACK로 되어 있어 접속 오류가 나타날 것</li>
</ol>
</li>
</ul>
<p><strong>**TIME_WAIT</strong></p>
<ul>
<li>소켓이 바로 소멸되지 않고 일정 시간 유지되는 상태. 지연 패킷 등의 문제점을 해결할 때 쓰임.</li>
<li>CentOS6, 우분투는 60초. 윈도우는 4분</li>
<li>OS마다 조금씩 다를 수 O</li>
</ul>
<p><strong>**데이터 무결성(data integrity)</strong></p>
<ul>
<li>데이터의 정확성과 일관성을 유지하고 보증하는 것</li>
</ul>
<h3 id="3-인터넷-계층">3. 인터넷 계층</h3>
<ul>
<li>장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층</li>
<li>IP, ARP, ICMP 등이 있고, 패킷을 수신해야 할 상대의 주소를 지정하여 데이터를 전달</li>
<li>상대방이 제대로 받았는지에 대해 보장하지 않는 비연결적인 특징</li>
</ul>
<h3 id="4-링크-계층">4. 링크 계층</h3>
<ul>
<li>전선, 광섬유, 무선 등으로 실질적으로 데이터 전달</li>
<li>장치 간에 신호를 주고받는 &#39;규칙&#39;을 정하는 계층</li>
<li>네트워크 접근 계층이라고도 함</li>
<li>이를 물리 계층과 데이터 링크 계층으로 나누기도 하는데, 물리 계층은 무선 LAN과 유선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층을 말함</li>
<li>데이터 링크 계층은 &#39;이더넷 프레임&#39;을 통해 에러 확인, 흐름 제어, 접근 제어를 담당하는 계층</li>
</ul>
<p><strong>**이더넷 프레임</strong></p>
<ul>
<li>데이터 링크 계층에서 사용되는 전송 기본 단위.</li>
<li>프레임은 데이터를 담는 컨테이너라고 보면 됨</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/89fb2261-af91-40c3-b2ad-c4feb739611b/image.png" alt=""></p>
<p><strong>**유선 LAN(IEEE802.3)</strong></p>
<ul>
<li>유선 LAN을 이루는 이더넷은 IEEE802.3이라는 프로토콜을 따르며 전이중화 통신을 사용</li>
</ul>
<p><strong>**전이중화(full duplex) 통신</strong></p>
<ul>
<li>양쪽 장치가 동시에 송수신할 수 있는 방식. 송신로와 수신로로 나눠서 데이터를 주고받으며 현대의 고속 이더넷은 이 방식을 기반으로 통신함</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/eb482230-d757-4c2f-a23f-ff1f133ee579/image.png" alt=""></p>
<p><strong>**CSMA/CD</strong></p>
<ul>
<li>이전에는 유선 LAN에 &#39;반이중화 통신&#39;중 하나인 CSMA/CD(Carrier Sense Multiple Access with Collision Detection) 방식 사용.</li>
<li>데이터를 &#39;보낸 이후&#39; 충돌이 발생한다면 일정 시간 이후 재전송하는 방식</li>
<li>수신로와 송신로를 각각 둔 것이 아니고 한 경로를 기반으로 데이터를 보내기 때문에, 데이터를 보낼 때 충돌에 대비해야 함</li>
</ul>
<p><strong>**유선 LAN을 이루는 케이블</strong></p>
<ul>
<li>TP 케이블이라 불리는 트위스트 페어 케이블과 광섬유 케이블이 대표적</li>
</ul>
<ol>
<li>트위스트 페어 케이블</li>
</ol>
<ul>
<li><p>여덟 개의 구리선을 두 개씩 꼬아 묶은 케이블
<img src="https://velog.velcdn.com/images/organic_mint/post/581d0ec8-c2ca-4f40-b621-3b30e4b8c8ec/image.png" alt=""></p>
</li>
<li><p>케이블은 구리선을 실드 처리하지 않고 덮은 UTP 케이블과 실드 처리하고 덮은 STP로 나눠짐.</p>
</li>
<li><p>우리가 많이 볼 수 있는 케이블은 UTP 케이블로 흔히 LAN 케이블이라고 함</p>
</li>
<li><p>랜선을 꽂을 수 있는 커넥터를 RJ-45 커넥터라고 함</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/6c892680-5d36-4ef2-9871-09785e1225d8/image.png" alt=""></p>
<ol start="2">
<li>광섬유 케이블</li>
</ol>
<ul>
<li>광섬유로 만든 케이블</li>
<li>레이저를 이용하여 통신하기 때문에 구리선과 비교할 수 없을 만큼 장거리 및 고속 통신 가능</li>
<li>보통 100Gbps 데이터 전송</li>
<li>광섬유 내부와 외부를 다른 밀도를 가지는 유리나 플라스틱 섬유로 제작해서 한 번 들어간 빛이 내부에서 계속적으로 반사하며 전진하여 반대편 끝까지 가는 원리 이용</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/41262c50-74dd-49bf-a82d-2ba70b580635/image.png" alt=""></p>
<ul>
<li>빛의 굴절률이 높은 부분을 코어, 낮은 부분을 클래딩</li>
</ul>
<p>****무선 LAN(IEEE802.11)</p>
<ul>
<li>수신과 송신에 같은 채널을 사용하기 때문에 반이중화 통신 사용</li>
</ul>
<p><strong>**반이중화 통신(half duplex)</strong></p>
<ul>
<li>양쪽 장치는 서로 통신할 수 있지만, 동시에는 통신할 수 없으며 한 번에 한 방향만 통신할 수 있는 방식</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/643b1a99-5c84-453b-bc23-78eef50d9e2f/image.png" alt=""></p>
<ul>
<li>일반적으로 장치가 신호를 수신하기 시작하면 응답하기 전에 전송이 완료될 때까지 기다려야함</li>
<li>둘 이상의 장치가 동시에 전송하면 충돌이 발생하여 메시지가 손실되거나 왜골될 수 있어서 충돌 방지 시스템 필요</li>
</ul>
<p><strong>**CSMA/CA</strong></p>
<ul>
<li>반이중화 통신 중 하나로 장치에서 데이터를 보내기 전에 캐리어 감지 등으로 사전에 가능한 한 충돌을 방지하는 방식을 사용</li>
</ul>
<p>과정</p>
<ol>
<li>데이터를 손싱하기 전에 무선 매체를 살핌</li>
<li>캐리어 감지 : 회선이 비어 있는지 판단</li>
<li>IFS(Inter FrameSpace) : 랜덤 값을 기반으로 정해진 시간만큼 기다리며, 만약 무선 매체가 사용 중이면 점차 그 간격을 늘려가며 기다림</li>
<li>이후에 데이터 송신</li>
</ol>
<ul>
<li>이와 반대되는 전이중화 통신은 양방향 통신이 가능하므로 충돌 가능성이 없기 때문에 충돌을 감지하거나 방지하는 메커니즘 필요 x</li>
</ul>
<p><strong>**무선 LAN을 이루는 주파수</strong></p>
<ul>
<li>무선 LAN (WLAN, Wireless Local Area Network)은 무선 신호 전달 방식을 이용하여 2대 이상의 장치를 연결하는 기술</li>
<li>비유도 매체인 공기에 주파수를 쏘아 무선 통신망 구축.</li>
<li>주파수 대역은 2.4GHz 대역 또는 5GHz 대역 중 하나를 써서 구축</li>
<li>2.4GHz는 장애물에 강하지만 전자레인지나 무선 등 전파 간섭이 일어나는 경우가 많음</li>
<li>5GHz는 사용할 수 있는 채널 수도 많고 동시에 사용할 수 있어서 상대적으로 깨끗한 전파 환경을 구축할 수 O</li>
</ul>
<p><strong>**와이파이(wifi)</strong></p>
<ul>
<li>전자기기들이 무선랜 신호에 연결할 수 있게 하는 기술</li>
<li>흔히 공유기라고 하는 무선 접속 장치(AP, Access Point) 필요</li>
<li>이를 통해 유선랜에 흐르는 신호를 무선랜 신호로 바꿔주어 신호가 닿는 범위 내에서 무선 인터넷 사용 가능</li>
<li>무선랜은 와이파이뿐만 아니라 지그비, 블루투스 등 더 있음</li>
</ul>
<p><strong>**BSS(Basic Service Set)</strong></p>
<ul>
<li>기본 서비스 집합. 단순 공유기를 통해 네트워크에 접속하는 게 아닌 동일 BSS 내에 있는 AP들과 장치들이 서로 통신이 가능한 구조</li>
<li>근거리 무선 통신 제공, 하나의 AP만을 기반으로 구축이 되어 있어 사용자가 한 곳에서 다른 곳으로 자유롭게 이동하여 접속하는 것은 불가</li>
</ul>
<p><strong>**ESS(Extended Service Set)</strong></p>
<ul>
<li>하나 이상의 연결된 BSS 그룹</li>
<li>장거리 무선 통신을 제공. BSS보다 더 많은 가용성과 이동성 지원.</li>
<li>사용자는 한 장소에서 다른 장소로 이동하며 중단없이 네트워크에 계속 연결할 수 O</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/e986bfd9-5a39-4bd1-bb04-f2460694c565/image.png" alt=""></p>
<p><strong>**MAC 주소</strong></p>
<ul>
<li>컴퓨터나 노트북 등 각 장치에는 네트워크에 연결하기 위한 장치(LAN 카드)가 있는데, 이를 구별하기 위한 식별번호. 6바이트(48비트)</li>
</ul>
<h3 id="계층간-데이터-송수신-과정">계층간 데이터 송수신 과정</h3>
<ul>
<li><p>HTTP를 통해 웹 서버에 있는 데이터를 요청한다면?
<img src="https://velog.velcdn.com/images/organic_mint/post/e467a41f-e8e0-4827-94d0-c5d3edb46293/image.png" alt=""></p>
</li>
<li><p>애플리케이션 계층에서 전송 계층으로 보내는 요청 값들이 캡슐화 과정을 거쳐 전달되고, 다시 링크 계층을 통해 해당 서버와 통신을 하고, 해당 서버의 링크 계층으로 부터 애플리케이션까지 비캡슐화 과정을 거쳐 데이터가 전송</p>
</li>
</ul>
<p><strong>**캡슐화 과정</strong></p>
<ul>
<li>상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/259e185c-255b-40ce-8c88-13a2d2097c34/image.png" alt=""></p>
<ul>
<li>애플리케이션 계층의 데이터가 전송 계층으로 전달되며 &#39;세그먼트&#39; / &#39;데이터그램&#39;화 되며 TCP(L4) 헤더가 붙여짐.</li>
<li>인터넷 계층으로 가며 IP(L3) 헤더가 붙여지게 되며 &#39;패킷&#39;화</li>
<li>이후 링크 계층으로 전달되며 프레임 헤더와 프레임 트레일러가 붙어 &#39;프레임&#39;화</li>
</ul>
<p><strong>**비캡슐화 과정</strong></p>
<ul>
<li>하위 계층에서 상위 계층으로 가며 각 계층의 헤더 부분을 제거하는 과정</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/b5038aff-1071-4604-9225-119484c0ef79/image.png" alt=""></p>
<ul>
<li>캡슐화된 데이터를 받게 되면 링크 계층에서부터 타고 올라오며 프레임화된 데이터는 다시 패킷화를 거쳐 세그먼트, 데이터그램화를 거쳐 메시지화가 되는 비캡슐화 과정이 일어남</li>
<li>최종적으로, 사용자에게 애플리케이션의 PDU인 메시지로 전달됨</li>
</ul>
<h2 id="222-pdu-protocol-data-unit">2.2.2 PDU (Protocol Data Unit)</h2>
<ul>
<li><p>네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위</p>
</li>
<li><p>제어 관련 정보들이 포함된 &#39;헤더&#39;, 데이터를 의미하는 &#39;페이로드&#39;로 구성</p>
</li>
<li><p>계층마다 부르는 명칭이 다름</p>
</li>
<li><p>애플리케이션 계층 : 메시지</p>
</li>
<li><p>전송 계층 : 세그먼트(TCP), 데이터그램(UDP)</p>
</li>
<li><p>인터넷 계층 : 패킷</p>
</li>
<li><p>링크 계층 : 프레임(데이터 링크 계층), 비트(물리 계층)</p>
</li>
<li><p>ex. 애플리케이션 계층은 &#39;메시지&#39;를 기반으로 데이터를 전달하는데, HTTP의 헤더가 문자열인 것</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/79f844c3-7971-4fc3-ba1c-c9cd3877a87b/image.png" alt="">
<img src="https://velog.velcdn.com/images/organic_mint/post/408a5351-441a-4995-aec3-79fcaf73423d/image.png" alt=""></p>
<ul>
<li>PDU 중 아래 계층인 비트로 송수신하는 것이 모든 PDU 중 가장 빠르고 효율성이 높음</li>
<li>하지만, 애플리케이션 계층에서는 문자열을 기반으로 송수신을 하는데, 그 이유는 헤더에 authorization 값 등 다른 값들을 넣는 확장이 쉽기 때문</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[면접을 위한 CS 전공지식노트] 2.1 네트워크 기초 정리]]></title>
            <link>https://velog.io/@organic_mint/%EB%A9%B4%EC%A0%91%EC%9D%84-%EC%9C%84%ED%95%9C-CS-%EC%A0%84%EA%B3%B5%EC%A7%80%EC%8B%9D%EB%85%B8%ED%8A%B8-2.1-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B8%B0%EC%B4%88-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@organic_mint/%EB%A9%B4%EC%A0%91%EC%9D%84-%EC%9C%84%ED%95%9C-CS-%EC%A0%84%EA%B3%B5%EC%A7%80%EC%8B%9D%EB%85%B8%ED%8A%B8-2.1-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B8%B0%EC%B4%88-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Wed, 19 Mar 2025 07:05:26 GMT</pubDate>
            <description><![CDATA[<p><strong>네트워크란?</strong></p>
<ul>
<li>노드(서버, 라우터, 스위치 등 네트워크 장치)와 링크(유선 / 무선)가 서로 연결되어 있거나 연결되어 있지 않은 집합체</li>
</ul>
<p>** <strong>라우터</strong>
-&gt; 논리적 / 물리적으로 분리된 망 사이를 지나는 패킷의 위치에 따라 최적화된 경로를 지정하는 기능을 수행하는 장비</p>
<p>** <strong>스위치</strong>
-&gt; 네트워크 회선과 서버 컴퓨터를 연결하는 네트워크 장비.</p>
<ul>
<li>허브는 단순히 한 포트로 신호가 들어오면 그 신호를 다른 모든 포트로 전달하는 것에 비해, 스위치는 필요로 하는 포트로만 신호를 전달</li>
<li><blockquote>
<p>스위치에서는 허브에 비해 불필요한 트래픽이 감소</p>
</blockquote>
</li>
</ul>
<h2 id="211-처리량과-지연시간">2.1.1 처리량과 지연시간</h2>
<p>좋은 네트워크
-&gt; 많은 처리량을 처리할 수 있으며 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크</p>
<p>** <strong>처리량(throughput)</strong>
-&gt; 링크를 통해 전달되는 단위 시간당 데이터양</p>
<ul>
<li>단위는 bps(bits per second)</li>
<li>사용자들이 많이 접속할 때마다 커지는 트래픽, 네트워크 장치간의 대역폭, 네트워크 중간에 발생하는 에러, 장치의 하드웨어 스펙에 영향을 받음</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/764c412e-e5f2-47e5-be47-b967a2d619dc/image.png" alt=""></p>
<p>** <strong>대역폭</strong>
-&gt; 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수</p>
<p>** <strong>지연시간(latency)</strong>
-&gt; 요청이 처리되는 시간. 어떤 메시지가 두 장치사이를 왕복하는 데 걸린 시간</p>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/69c6b0da-2cc6-48c4-a37b-161002ef6a3f/image.png" alt=""></p>
<ul>
<li>매체 타입(무선 / 유선), 패킷 크기, 라우터의 패킷 처리 시간에 영향을 받음</li>
</ul>
<p>** <strong>패킷</strong>
-&gt; 네트워크에서 데이터를 주고받을 때 사용되는 데이터 조각</p>
<ul>
<li>소포, 통이라는 정의를 가지고 있음</li>
</ul>
<hr>
<h2 id="212-네트워크-토폴로지와-병목현상">2.1.2 네트워크 토폴로지와 병목현상</h2>
<p>** <strong>네트워크 토폴로지(network topology)</strong>
-&gt; 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태</p>
<ol>
<li><strong>트리 토폴로지</strong></li>
</ol>
<ul>
<li>계층형 토폴로지. 트리 형태로 배치한 네트워크 구성</li>
<li>장점 : 노드의 추가, 삭제가 쉬움</li>
<li>단점 : 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 o</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/30bc4b2b-8b54-4512-a26a-dc38e77f27da/image.png" alt=""></p>
<ol start="2">
<li><strong>버스 토폴로지</strong></li>
</ol>
<ul>
<li>중앙 통신 회선 하나에서 여러 개의 노드가 연결되어 공유하는 네트워크 구성</li>
<li>근거리 통신망(LAN)에서 사용</li>
<li>장점 : 설치 비용이 적음(케이블 사용량이 적음). 신뢰성이 우수. 중앙 통신 회선에 노드를 추가하거나 삭제하기 쉬움</li>
<li>단점 : 스푸핑이 가능</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/0a70d883-cb4c-4b36-87de-278b2fd2c3cd/image.png" alt=""></p>
<p>** <strong>스푸핑</strong>
-&gt; LAN상에서 송신부의 패킷을 송신과 관련 없는 다른 호스트에 가지 않도록 하는 스위칭 기능을 마비시키거나 속여서 특정 노드에 해당 패킷이 오도록 처리하는 것</p>
<ul>
<li>스푸핑을 적용하면, 올바르게 수신부로 가야할 패킷이 악의적인 노드에 전달되게 됨</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/5c49a2b4-c647-4614-a606-c423308cd4a6/image.png" alt=""></p>
<ol start="3">
<li><strong>스타 토폴로지</strong></li>
</ol>
<ul>
<li>중앙에 있는 노드에 모두 연결된 네트워크 구성</li>
<li>장점 : 노드 추가 쉬움. 에러 탐지 쉬움. 패킷의 충돌 발생 가능성이 낮음. 장애 노드가 중앙 노드가 아닌 경우 다른 노드에 영향이 적음</li>
<li>단점 : 장애 노드가 중앙 노드인 경우, 전체 네트워크 사용 불가. 설치 비용이 높음</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/3e9cd03e-94a5-4f54-a8c6-72548da50a91/image.png" alt=""></p>
<ol start="4">
<li><strong>링형 토폴로지</strong></li>
</ol>
<ul>
<li>각각의 노드가 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 하나의 연속된 길을 통해 통신을 하는 망 구성 방식</li>
<li>장점 : 노드 수가 증가되어도 네트워크 상의 손실이 거의 없음. 충돌이 발생되는 가능성이 적음. 노드의 고장을 쉽게 찾을 수 있음</li>
<li>단점 : 네트워크 구성 변경이 어려움. 회선에 장애가 발생하면 전체 네트워크에 영향을 크게 끼침</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/12457db1-f880-48e4-8495-a96996dd09dd/image.png" alt=""></p>
<ol start="5">
<li><strong>메시 토폴로지</strong></li>
</ol>
<ul>
<li>망형 토폴로지라고도 함. 그물망처럼 연결되어 있는 구조
장점 : 한 단말 장치에 장애가 발생해도 여러 경로가 존재하여 네트워크를 계속 사용 할 수 있음. 분산 처리도 가능.
단점 : 노드의 추가가 어렵고 구축 비용과 운용 비용이 고가</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/5908231a-7326-4e85-a211-25c759db8290/image.png" alt=""></p>
<p>** <strong>병목(bottleneck) 현상</strong>
-&gt; 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한 받는 현상. (ex. 병의 몸통보다 목 부분 내부 지름이 좁아서 물이 상대적으로 천천히 쏟아지는 것과 비슷)</p>
<ul>
<li>서비스나 이벤트를 열었을 때 트래픽이 많이 생기고 그 트래픽을 잘 관리하지 못하면 병목 현상이 생겨 사용자는 웹 사이트로 들어가지 못함</li>
</ul>
<p>EX)
<img src="https://velog.velcdn.com/images/organic_mint/post/0fe42df1-ee09-487d-9718-38b653629fba/image.png" alt="">
만약, 병목 현상이 일어나서 사용자가 서비스를 이용할 때 지연 시간이 길게 발생하는 경우</p>
<ul>
<li>관리자들이 지연 시간을 짧게 만들기 위해 대역폭을 크게 설정했음에도 성능 개선 X</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/7ee36ba3-84c5-4a13-9818-e8da1913901a/image.png" alt=""></p>
<ul>
<li>관리자가 네트워크 구조 확인 후, 서버와 서버 간 그리고 게이트웨이로 이어지는 회선을 추가하여 병목 현상 해결.</li>
<li><blockquote>
<p>네트워크가 어떤 토폴로지를 갖고 어떤 경로로 이루어져있는지 알아야 병목 현상에 올바르게 대처 가능</p>
</blockquote>
</li>
</ul>
<hr>
<h3 id="213-네트워크-분류">2.1.3 네트워크 분류</h3>
<ul>
<li>분류 기준은 규모</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/7b38e54f-6819-4cf4-853e-c9346f3bc930/image.png" alt=""></p>
<ol>
<li><strong>LAN (Local Area Network)</strong></li>
</ol>
<ul>
<li>근거리 통신망. 사무실과 개인적으로 소유 가능한 규모</li>
<li>같은 건물이나 캠퍼스 같은 좁은 공간에서 운영</li>
<li>전송 속도가 빠르고 혼잡 x</li>
</ul>
<ol start="2">
<li><strong>MAN (Metropolitan Area Network)</strong></li>
</ol>
<ul>
<li>서울시 등 시 정도의 규모</li>
<li>도시 같은 넓은 지역에서 운영</li>
<li>전송 속도는 평균, LAN보다는 더 혼잡</li>
</ul>
<ol start="3">
<li><strong>WAN (Wide Area Network)</strong></li>
</ol>
<ul>
<li>광역 네트워크. 세계 규모</li>
<li>국가 또는 대륙 같은 넓은 지역에서 운영</li>
<li>전송 속도는 낮음, MAN보다 더 혼잡</li>
</ul>
<hr>
<h2 id="214-네트워크-성능-분석-명령어">2.1.4 네트워크 성능 분석 명령어</h2>
<ul>
<li>애플리케이션 코드 상에서는 문제가 없는데, 사용자가 서비스로부터 데이터를 가져오지 못하는 상황이 발생하기도 함.</li>
<li>네트워크 병목 현상일 가능성이 있다.</li>
</ul>
<p>** <strong>네트워크 병목 현상의 주된 원인?</strong></p>
<ul>
<li>네트워크 대역폭</li>
<li>네트워크 토폴로지</li>
<li>서버 CPU, 메모리 사용량</li>
<li>비효율적인 네트워크 구성</li>
</ul>
<p>-&gt; 네트워크 관련 테스트와 네트워크와 무관한 테스트를 통해 &#39;네트워크로부터 발생한 문제점&#39;임을 확인하고 네트워크 성능 분석을 해봐야 함
이때 아래와 같은 명령어들이 사용된다.</p>
<ol>
<li><strong>ping(Packet INternet Groper)</strong>
네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어.</li>
</ol>
<ul>
<li><p>해당 노드의 패킷 수신 상태와 도달하기 까지의 시간 등을 알 수 있고, 해당 노드까지 네트워크가 잘 연결 되어 있는지 알 수 o</p>
</li>
<li><p>TCP/IP 프로토콜 중 ICMP 프로토콜로 동작</p>
</li>
<li><blockquote>
<p>해당 프로토콜을 지원하지 않는 기기를 대상으로는 시행할 수 없거나 네트워크 정책상 ICMP나 traceroute를 차단하는 대상의 경우 ping 테스팅은 불가</p>
</blockquote>
</li>
<li><p>ping [IP 주소 / 도메인 주소] 로 실행 가능</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/e7d6f436-909b-491c-a846-2d657ad71ab9/image.png" alt=""></p>
<ul>
<li>n=12 옵션을 넣어 12번 패킷 보내고 받는 모습</li>
</ul>
<ol start="2">
<li><strong>nestat</strong>
접속되어 있는 서비스들의 네트워크 상태를 표시하는 데 사용.</li>
</ol>
<ul>
<li>네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 리스트를 보여줌</li>
<li>주로 서비스의 포트가 열려 있는지 확인할 때 사용</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/f20740f9-b4b9-420d-87b0-fd3789692de1/image.png" alt=""></p>
<ol start="3">
<li><strong>nslookup</strong>
DNS에 관련된 내용을 확인하기 위해 사용</li>
</ol>
<ul>
<li>특정 도메인에 매핑된 IP 확인 가능</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/90baf2ec-9486-4a8b-85ae-962c1d254d6c/image.png" alt=""></p>
<ul>
<li>google.com의 DNS를 확인하는 모습</li>
</ul>
<ol start="4">
<li><strong>tracert</strong>
윈도우에서는 tracert, 리눅스에서는 traceroute</li>
</ol>
<ul>
<li>목적지 노드까지 네트워크 경로를 확인할 때 사용하는 명령어</li>
<li>목적지 노드까지 구간들 중 어느 구간에서 응답 시간이 느려지는지 등을 확인 가능</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/03e7cc26-77aa-4874-905e-40ee26801550/image.png" alt=""></p>
<p>이외에도 ftp(대형 파일 전송 테스팅), tcpdump(노드로 오고 가는 패킷을 캡처) 등 명령어 존재
네트워크 분석 프로그램으로는 wireshark, netmon 이 있음</p>
<hr>
<h2 id="215-네트워크-프로토콜-표준화">2.1.5 네트워크 프로토콜 표준화</h2>
<p>** <strong>네트워크 프로토콜</strong>
-&gt; 다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스,
기업이나 개인이 발표해서 정하는 것이 아니라 IEEE / IETF라는 표준화 단체가 정함</p>
<p>EX) 웹접속시 쓰이는 HTTP</p>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/700135b9-63b4-4813-9297-11b6c9e7b963/image.png" alt=""></p>
<ul>
<li>IEEE 802.3은 유선 LAN 프로토콜</li>
</ul>
<p>-&gt; 만든 기업이 다른 장치여도 서로 데이터를 수신할 수 O</p>
<p>** <strong>IEEE</strong>
-&gt; 전기전자공학자협회</p>
<p>** <strong>IETF</strong>
-&gt; 국제 인터넷 표준화 기구</p>
<hr>
<p><strong>참고</strong>
면접을 위한 CS 전공지식노트
토스페이먼츠 개발자센터</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[프로젝트를 위한 리액트 환경세팅]]></title>
            <link>https://velog.io/@organic_mint/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%A5%BC-%EC%9C%84%ED%95%9C-%EB%A6%AC%EC%95%A1%ED%8A%B8-%ED%99%98%EA%B2%BD%EC%84%B8%ED%8C%85</link>
            <guid>https://velog.io/@organic_mint/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%A5%BC-%EC%9C%84%ED%95%9C-%EB%A6%AC%EC%95%A1%ED%8A%B8-%ED%99%98%EA%B2%BD%EC%84%B8%ED%8C%85</guid>
            <pubDate>Fri, 24 Jan 2025 16:08:45 GMT</pubDate>
            <description><![CDATA[<h3 id="리액트-환경세팅">리액트 환경세팅</h3>
<ul>
<li>안정화된 버전이라고 하여... 저 버전들을 채택</li>
</ul>
<p>Node.js란?</p>
<ul>
<li>브라우저 밖에서도 (서버를 구축하는 등의) 자바스크립트를 실행할 수 있게 해주는 런타임 환경</li>
</ul>
<p>NPM (Node Package Manager)</p>
<ul>
<li>자바스크립트를 위한 패키지 관리자</li>
<li>node.js설치시 같이 설치됨 </li>
</ul>
<p>Node.js는 구글에 치면 운영체제에 맞게 다운로드가 가능함</p>
<ul>
<li>다운로드 탭 클릭 -&gt; 맞는 버전과 운영체제 선택, 다운로드 후 설치</li>
<li>다운로드 후 해당 명령어로 버전 확인 가능</li>
</ul>
<pre><code class="language-jsx">node --version</code></pre>
<ul>
<li><strong>Node.js</strong>: 20.18.2 (LTS)</li>
<li><strong>React</strong>: 18.2.0 (안정화된 버전이라고 함)</li>
<li><strong>TypeScript</strong>: 5.1.6</li>
<li><strong>Next.js</strong>: 14.0.0</li>
</ul>
<p>프로젝트 생성을 원하는 폴더까지 들어간 후 </p>
<p><strong>CRA 이용하여 프로젝트 생성</strong></p>
<pre><code class="language-jsx">npx create-react-app front</code></pre>
<ul>
<li>여기서 계속 오류가 나서 ... yarn이라는 걸 사용해서 프로젝트를 생성함</li>
</ul>
<p><strong>yarn 설치</strong></p>
<pre><code class="language-jsx">npm install -g yarn</code></pre>
<ul>
<li>만약 이걸로 했을 때 권한 문제로 설치가 안된다면, sudo로 설치</li>
</ul>
<pre><code class="language-jsx">sudo npm install -g yarn</code></pre>
<p><strong>yarn 으로 리액트 프로젝트 생성</strong></p>
<pre><code class="language-jsx">yarn create react-app front</code></pre>
<p><strong>프론트 폴더로 이동</strong></p>
<pre><code class="language-jsx">cd front</code></pre>
<p><strong>생성한 프로젝트 실행</strong></p>
<pre><code class="language-jsx">npm run start</code></pre>
<p>(localhost:3000)</p>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/ec0df8da-d3ab-412f-b426-8eece384e7e9/image.png" alt=""></p>
<ul>
<li>이 화면이 뜨면 리액트 실행이 되는 것</li>
<li>코드 편집은 파이썬과 동일하게 vscode로 진행</li>
</ul>
<p><strong>실행종료</strong></p>
<pre><code class="language-jsx">ctrl + c</code></pre>
<p>프론트 폴더로 이동후 이걸 써보면 리액트 버전을 알 수 있음</p>
<pre><code class="language-jsx">npm list react react-dom
</code></pre>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/fbad8418-382c-4308-8c09-03be844d51d6/image.png" alt=""></p>
<p>만약 리액트가 18.2.0으로 설치되지 않았다면, 삭제후 재설치로 다운그레이드 작업하고 넘어가기</p>
<pre><code class="language-jsx">npm uninstall react react-dom
npm install react@18 react-dom@18.2.0
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[밑바닥부터 시작하는 딥러닝 챕터 5 오차역전파법 정리]]></title>
            <link>https://velog.io/@organic_mint/%EB%B0%91%EB%B0%94%EB%8B%A5%EB%B6%80%ED%84%B0-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%B1%95%ED%84%B0-5-%EC%98%A4%EC%B0%A8%EC%97%AD%EC%A0%84%ED%8C%8C%EB%B2%95-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@organic_mint/%EB%B0%91%EB%B0%94%EB%8B%A5%EB%B6%80%ED%84%B0-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%B1%95%ED%84%B0-5-%EC%98%A4%EC%B0%A8%EC%97%AD%EC%A0%84%ED%8C%8C%EB%B2%95-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Thu, 23 Jan 2025 10:38:09 GMT</pubDate>
            <description><![CDATA[<p><strong>오차역전파법(역전파, backward propagation of errors)을 사용하는 이유</strong></p>
<ul>
<li>신경망의 가중치 매개변수의 기울기를 수치미분으로 구하는 것보다 훨씬 빠르다. (해석적인 방법)</li>
<li>노드와 엣지로 구정된 계산 그래프를 가지고 시각적으로 이해할 수 있다.<ul>
<li>연쇄법칙을 이용하여 계산</li>
</ul>
</li>
</ul>
<p><strong>역전파 계산 방법</strong></p>
<ol>
<li>덧셈 노드</li>
</ol>
<ul>
<li>상류의 값를 다음 노드로 그대로 출력 (미분이 1)<img src="https://velog.velcdn.com/images/organic_mint/post/2ed86896-2d29-46d6-88ea-dc5152a1bfcb/image.png" alt=""></li>
</ul>
<ol start="2">
<li>곱셈 노드</li>
</ol>
<ul>
<li>상류의 값에서 입력 신호들의 값을 서로 바꾸어 곱하여 출력 (미분이 반대 입력 신호)<img src="https://velog.velcdn.com/images/organic_mint/post/f88fe203-77d0-4948-a067-0f46e51459a4/image.png" alt=""></li>
</ul>
<ol start="3">
<li>ReLU 계층</li>
</ol>
<ul>
<li>순전파때 입력신호가 0보다 크면 상류의 값을 그대로 보냄</li>
<li>순전파때 입력신호가 0보다 작으면 값을 보내지 않음<img src="https://velog.velcdn.com/images/organic_mint/post/8d41a1c1-fb4c-43d6-8c4e-6ceacb1be37a/image.png" alt=""></li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/e3cf9d1c-6c1f-4eed-8de9-01fe71be790f/image.png" alt=""></p>
<ol start="4">
<li>Sigmoid 계층</li>
</ol>
<ul>
<li>순전파의 출력을 y라고 하면, 상류의 값에 y(1-y)를 곱한 값을 보냄
<img src="https://velog.velcdn.com/images/organic_mint/post/95dd1138-ed81-44ad-95e8-9c228823a782/image.png" alt=""></li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/6fdababf-41d7-4fab-bac3-9a873f2f4faf/image.png" alt=""></p>
<ol start="5">
<li>Affine 계층</li>
</ol>
<ul>
<li>Affine 변환이란?<ul>
<li>순전파때 수행하는 행렬의 곱</li>
</ul>
</li>
<li>4번까지는 노드 사이에 스칼라값이 흘렀지만, 이젠 행렬이 흐름</li>
<li>상류의 값에 입력신호의 전치행렬이 서로 바뀌어 곱해져서 흐름 (순서 주의. 행렬곱을 해야해서 차원이 맞아야함)</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/833d7b89-cadc-45d2-a518-9193792ad39c/image.png" alt="">
![]
(<a href="https://velog.velcdn.com/images/organic_mint/post/2022b8cd-3111-4d8f-bfb2-eced616dab98/image.png">https://velog.velcdn.com/images/organic_mint/post/2022b8cd-3111-4d8f-bfb2-eced616dab98/image.png</a>)
<img src="https://velog.velcdn.com/images/organic_mint/post/6d4df6e7-15bc-41ed-9d79-9c8b27992e39/image.png" alt=""></p>
<p>6.Softmax-with-Loss 계층</p>
<ul>
<li>신경망 학습시 출력 결과를 정규화하기 위해 Softmax계층이 필요</li>
<li>역전파의 값은 softmax계층의 출력값 (y)에서 정답 레이블 (t)의 차분</li>
<li>깔끔하게 나오도록 교차 엔트로피 함수가 설계됨</li>
</ul>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/2a7d47ae-23b4-424b-8d6b-83ecb4c6d4de/image.png" alt="">
<img src="https://velog.velcdn.com/images/organic_mint/post/da4fe511-b364-4a4c-911d-a7ea76af5b9a/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/d5a6a712-355a-4cfd-9886-7efdd91e2f25/image.png" alt=""></p>
<ul>
<li>위의 그림을 간소화한 버전</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[밑바닥부터 시작하는 딥러닝 챕터 4 신경망 학습 정리]]></title>
            <link>https://velog.io/@organic_mint/%EB%B0%91%EB%B0%94%EB%8B%A5%EB%B6%80%ED%84%B0-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%B1%95%ED%84%B0-4-%EC%8B%A0%EA%B2%BD%EB%A7%9D-%ED%95%99%EC%8A%B5-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@organic_mint/%EB%B0%91%EB%B0%94%EB%8B%A5%EB%B6%80%ED%84%B0-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%B1%95%ED%84%B0-4-%EC%8B%A0%EA%B2%BD%EB%A7%9D-%ED%95%99%EC%8A%B5-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Thu, 16 Jan 2025 04:21:18 GMT</pubDate>
            <description><![CDATA[<p><strong>학습</strong></p>
<ul>
<li>훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것</li>
<li>손실함수가 최소화되는 쪽으로 학습</li>
</ul>
</br>

<ul>
<li>선형 분리 가능 문제는 유한 번의 학습을 통해 풀 수있다는 사실이 <strong>퍼셉트론 수렴 정리</strong>로 증명됨</li>
</ul>
</br>


<h3 id="손실함수">손실함수</h3>
<ol>
<li>오차제곱합 (sum of squares for error, SSE)</li>
</ol>
<p><img src="https://velog.velcdn.com/images/organic_mint/post/9a1ef986-e714-4b84-8be6-7ca3780fb1c5/image.png" alt=""></p>
<ul>
<li>yk는 신경망이 추정한 값</li>
<li>tk는 정답 레이블</li>
<li>k는 데이터의 차원 수</li>
</ul>
<ol start="2">
<li>교차 엔트로피 오차 (cross entropy error, CEE)
<img src="https://velog.velcdn.com/images/organic_mint/post/a2fe96b1-8d0e-4cf8-a234-2ee7f252b2a8/image.png" alt=""></li>
</ol>
<ul>
<li>로그의 밑은 e</li>
<li>구현시, 마이너스 무한대가 되지 않도록 yk에 아주 작은 값인 delta를 추가로 더해줌</li>
</ul>
</br>


<p><strong>미니 배치 학습</strong></p>
<ul>
<li>훈련 데이터가 너무 많을 때, 일부만 무작위로 골라 학습에 사용하는 방법</li>
</ul>
</br>

<p>** 경사 하강법 (gradient descent method) **
<img src="https://velog.velcdn.com/images/organic_mint/post/bdd698f9-ce47-465a-895e-cc84c8c242b2/image.png" alt=""></p>
<ul>
<li><p>에타는 학습률 (갱신되는 양)</p>
</li>
<li><p>학습률이 너무 크면 큰 값으로 발산해버리고, 너무 작으면 거의 갱신되지 않은 채 끝나버림 </p>
</li>
<li><p>학습률은 하이퍼파라미터 ( 시험을 통해 최적의 값을 사람이 직접 설정해야 함)</p>
</li>
<li><p>매개변수의 값을 갱신하는 방법. 신경망 학습에서 사용</p>
</li>
<li><p>현위치에서 기울어진 방향으로 일정 거리만큼 이동</p>
</li>
<li><p>함수의 극소값을 찾기 위해 정해진 만큼 수행. (잘하면 최소값도 가능)</p>
</li>
<li><p>f는 최적화하려는 함수 (손실함수)</p>
<ul>
<li>손실함수가 최소값이 되는 매개변수를 찾아야함</li>
</ul>
</li>
</ul>
</br>

<p>** 확률적 경사 하강법 (stochastic gradient descent, SGD)**</p>
<ul>
<li>데이터를 미니 배치로 가져와서 경사하강법을 시행하는 것</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[밑바닥부터 시작하는 딥러닝 챕터 3 퍼셉트론 정리]]></title>
            <link>https://velog.io/@organic_mint/%EB%B0%91%EB%B0%94%EB%8B%A5%EB%B6%80%ED%84%B0-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%B1%95%ED%84%B0-3-%ED%8D%BC%EC%85%89%ED%8A%B8%EB%A1%A0-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@organic_mint/%EB%B0%91%EB%B0%94%EB%8B%A5%EB%B6%80%ED%84%B0-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%B1%95%ED%84%B0-3-%ED%8D%BC%EC%85%89%ED%8A%B8%EB%A1%A0-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Wed, 15 Jan 2025 16:19:56 GMT</pubDate>
            <description><![CDATA[<p><strong>단층 퍼셉트론</strong></p>
<ul>
<li>단층 네트워크에서 계단함수를 활성화 함수로 사용한 모델</li>
</ul>
<p><strong>다층 퍼셉트론</strong></p>
<ul>
<li>신경망(여러 층으로 구성되고 시그모이드 함수 등의 매끈한 활성화 함수를 사용하는 네트워크)</li>
</ul>
</br>

<p>** 시그모이드 vs 계단함수**</p>
<ul>
<li>공통점<ul>
<li>입력값에 관계없이 출력은 0 ~ 1 사이</li>
<li>비선형 함수</li>
</ul>
</li>
<li>차이점<ul>
<li>매끈함..</li>
</ul>
</li>
</ul>
</br>

<p><strong>활성화 함수를 비선형 함수를 사용하는 이유</strong></p>
<ul>
<li>선형 함수를 사용한다면 층을 깊게 하는 의미가 없어진다. 선형 함수만으로 층을 깊게 쌓아도, 어차피 선형 함수이다.</li>
</ul>
</br>

<p>** 출력층에서 사용하는 활성화 함수 선택 기준 **</p>
<ul>
<li>일반적으로 회귀에는 항등 함수</li>
<li>분류에는 소프트맥수 함수</li>
</ul>
</br>

<p>** 소프트맥스 함수 **</p>
<ul>
<li>소프트맥스 구현시 오버플로우에 주의 (익스퍼넨셜 )</li>
<li><blockquote>
<p>분자에 올라가는 익스퍼넨셜 지수에서 입력의 최댓값을 빼줘서 구현</p>
</blockquote>
</li>
<li>출력 총합이 1 이어서 확률로 해석이 가능</li>
</ul>
</br>

<p>** 백색화 **</p>
<ul>
<li>전체 데이터를 균일하게 분포시키는 것</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[밑바닥부터 시작하는 딥러닝 챕터 2 퍼셉트론 정리]]></title>
            <link>https://velog.io/@organic_mint/%EB%B0%91%EB%B0%94%EB%8B%A5%EB%B6%80%ED%84%B0-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%B1%95%ED%84%B0-2-%ED%8D%BC%EC%85%89%ED%8A%B8%EB%A1%A0-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@organic_mint/%EB%B0%91%EB%B0%94%EB%8B%A5%EB%B6%80%ED%84%B0-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%B1%95%ED%84%B0-2-%ED%8D%BC%EC%85%89%ED%8A%B8%EB%A1%A0-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Thu, 09 Jan 2025 03:54:08 GMT</pubDate>
            <description><![CDATA[<p>밑바닥부터 시작하는 딥러닝 챕터 2를 읽으며, 헷갈렸거나 몰랐던 사실들을 정리했다.</p>
<ul>
<li><p>퍼셉트론(뉴런..노드..)은 가중치와 편향을 매개변수로 가지고 출력값을 낸다.</p>
</li>
<li><p>학습이란 적절한 매개변수 값을 정하는 작업이다.</p>
</li>
<li><p>AND, OR, NAND 게이트는 단층 퍼셉트론으로 표현이 되는 반면, XOR 게이트(한쪽이 1일 때만 1)는 표현이 되지 않는다.</p>
</li>
<li><p>단층 퍼셉트론을 쌓은(연산을 더하여) 다층 퍼셉트론으로 비선형 영역을 표현할 수 있다.</p>
</li>
<li><p>입력값에 대해 NAND, OR 게이트를 통과하고, 이 출력들을 AND 게이트에 입력하면 XOR 게이트를 구현할 수 있다.</p>
</li>
<li><p>다층 퍼셉트론으로는 이론상 컴퓨터를 표현할 수 있다.</p>
<ul>
<li>NAND 게이트의 조합만으로 테트리스가 작동하는 컴퓨터는 만들 수 있다고 한다..</li>
<li>the elements of computing systems: building a modern computer from first principles</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[파이썬 내장함수 대신 넘파이를 사용하는 이유]]></title>
            <link>https://velog.io/@organic_mint/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%82%B4%EC%9E%A5%ED%95%A8%EC%88%98-%EB%8C%80%EC%8B%A0-%EB%84%98%ED%8C%8C%EC%9D%B4%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0</link>
            <guid>https://velog.io/@organic_mint/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%82%B4%EC%9E%A5%ED%95%A8%EC%88%98-%EB%8C%80%EC%8B%A0-%EB%84%98%ED%8C%8C%EC%9D%B4%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0</guid>
            <pubDate>Tue, 07 Jan 2025 04:08:13 GMT</pubDate>
            <description><![CDATA[<p>밑시딥 챕터 1로 스터디 자료를 만들 게 없어서 제목과 같은 주제를 선정하여 작성했다.</p>
<p>파이썬 내장 함수를 사용해도 수학 계산을 할 수 있지만, numpy를 사용하면 더 편리한 수학 계산 함수를 지원하여 짧은 코딩으로 구현이 가능하고 계산이 더 빠르다.</p>
<ol>
<li>더 편리한 수학 계산 함수 지원</li>
</ol>
<ul>
<li>ex) list 요소들 곱셈시 반복문+ * / np.dot</li>
</ul>
<ol start="2">
<li>더 빠른 계산 속도</li>
</ol>
<ul>
<li>계산해야하는 수가 많을 수록, 파이썬 내장함수와의 계산 시간 차이가 크다.</li>
<li>백만까지는 10배 차이가 나지만, 천만부터는 100배이상 차이가나기 시작한다.</li>
</ul>
<h3 id="넘파이가-파이썬보다-빠른-이유">넘파이가 파이썬보다 빠른 이유</h3>
<ol>
<li><p>파이썬의 순서형 데이터 객체들은 컴퓨터 메모리에 연속되지 않은 곳에 저장이 되지만, np.array는 컴퓨터 메모리에 연속되어 저장되기 때문에 메모리 접근 속도에서 차이가 있다.</p>
</li>
<li><p>넘파이는 계산시 해야할 계산들을 복수개의 프로세스로 나눠서 병렬처리로 계산한다.</p>
</li>
<li><p>넘파이 함수는 C/C++로 제작이 되어 파이썬 내장함수에 비해 실행되는 명령어가 적다.</p>
</li>
</ol>
]]></description>
        </item>
    </channel>
</rss>