<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>wch-os.log</title>
        <link>https://velog.io/</link>
        <description>World CHange</description>
        <lastBuildDate>Sat, 01 Oct 2022 04:29:53 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>wch-os.log</title>
            <url>https://images.velog.io/images/wch-os/profile/10f730e2-0d2b-4308-9237-95ebb4c94245/social.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. wch-os.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/wch-os" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[9. DNS[Domain Name System]]]></title>
            <link>https://velog.io/@wch-os/9.-DNSDomain-Name-System</link>
            <guid>https://velog.io/@wch-os/9.-DNSDomain-Name-System</guid>
            <pubDate>Sat, 01 Oct 2022 04:29:53 GMT</pubDate>
            <description><![CDATA[<h3 id="1-도메인명domain-name">1. 도메인명(Domain name)</h3>
<ul>
<li><p>인터넷의 실제 IP 주소와 연결된 기억하기 쉬운 이름 <strong>[사용자 편리성]</strong>
  ex. <a href="http://www.google.com">www.google.com</a></p>
  <br>

<ul>
<li><p>도메인 관리자가 상위 도메인 관리에게 등록한 후 사용 </p>
</li>
<li><p>비용을 지불하면 도메인명을 소유할 수 있음 <strong>[사용자 소속성]</strong></p>
</li>
</ul>
</li>
</ul>
<br>
<br>


<h3 id="2-dns-서비스-유형">2. DNS 서비스 유형</h3>
<ul>
<li><p>Hostname to IP Address(도메인명-IP 주소 변환)</p>
<ul>
<li>도메인명을 TCP/IP가 사용하는 32bit IP 주소로 변환<br></li>
</ul>
</li>
<li><p>Host aliasing(호스트 별칭)</p>
<ul>
<li>도메인명에 대한 별칭을 정규 도메인명으로 변환<br></li>
</ul>
</li>
<li><p>Mail server aliasing(메일서버 별칭)</p>
<ul>
<li>메일서버 별칭을 정규 메일서버 도메인명으로 변환<br></li>
</ul>
</li>
<li><p>Load distribution(부하 분산 서비스)</p>
<ul>
<li>동일 도메인명으로 서로 다른 IP 주소의 다중 복제 서버 배치</li>
<li>동일 도메인명에 대한 DNS 요청에 대해 다른 IP 주소가 돌아가며 응답</li>
</ul>
</li>
</ul>
<br>
<br>


<h3 id="3-dns-구조">3. DNS 구조</h3>
<ol>
<li><p>중앙집중형 구조</p>
<p> : 하나의 서버가 모든 DNS 질의(queries) 처리</p>
</li>
</ol>
<br>

<ul>
<li><p>문제점</p>
<ul>
<li>중앙 서버 고장 시 전체 네트워크 고장</li>
<li>중앙 서버 부하 집중</li>
<li>원거리 중앙 서버 응답 지연시간 증가</li>
<li>중앙 서버 유지 보수 어려움</li>
</ul>
</li>
</ul>
<br>

<ol start="2">
<li>분산 계층 구조</li>
</ol>
<ul>
<li><p>Root Server</p>
<ul>
<li>일반적으로 TLD 서버에 대한 IP 주소 제공</li>
<li>지역 DNS 서버에 의해 처음 접속</li>
<li>수백개의 복제 서버 존재</li>
</ul>
</li>
</ul>
<br>

<ul>
<li><p>TLD Server</p>
<ul>
<li>Tob Level Domain에 대한 DNS 서비스 담당</li>
<li>일반적으로 책임 DNS 서버의 IP 주소 제공</li>
<li>.KR 도메인 관리 주체 → 한국인터넷정보센터</li>
</ul>
</li>
</ul>
<br>

<ul>
<li>DNS 서비스 제공 방식</li>
</ul>
<p><img src="https://velog.velcdn.com/images/wch-os/post/100d0682-e780-4067-af49-e367e50c9310/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wch-os/post/7c93545b-a9cf-404e-bdaf-8db75baf9de1/image.png" alt=""></p>
<br>
<br>

<h3 id="4-dns-caching">4. DNS caching</h3>
<ul>
<li><p>DNS caching</p>
<ul>
<li>특정 서버가 다른 서버에게 질의를 하고 응답을 받으면 해당 정보를 클라이언트에게 전달하기 전, 자신의 캐쉬 메모리에 저장</li>
</ul>
</li>
</ul>
<br>

<ul>
<li><p>문제 해결방법</p>
<ul>
<li>캐싱 정보는 일정 시간(TTL-Time To Live)이 지나면 자동 삭제</li>
</ul>
</li>
</ul>
<br>
<br>

<h3 id="5-dns-자원-레코드">5. DNS 자원 레코드</h3>
<ul>
<li><p>자원 레코드</p>
<ul>
<li>DNS 서버에 저장되고 서비스되는 단위</li>
</ul>
</li>
</ul>
<ul>
<li><p>유형</p>
<table>
<thead>
<tr>
<th align="center">Type</th>
<th align="center">name</th>
<th align="center">value</th>
</tr>
</thead>
<tbody><tr>
<td align="center">A</td>
<td align="center">도메인명</td>
<td align="center">IP 주소</td>
</tr>
<tr>
<td align="center">NS</td>
<td align="center">도메인명</td>
<td align="center">책임 DNS 서버 도메인명</td>
</tr>
<tr>
<td align="center">CNAME</td>
<td align="center">별칭 도메인명</td>
<td align="center">정규 도메인명</td>
</tr>
<tr>
<td align="center">MX</td>
<td align="center">별칭 메일서벼명</td>
<td align="center">정규 메일서버 도메인명</td>
</tr>
</tbody></table>
</li>
</ul>
<p><em>*도메인 주소를 사용하는 게 IP 주소를 확보하는 게 아닌,
IP 주소를 확보해서 실제로 필요한 인터넷 통신을 하는 것</em></p>
<br>
<br>

<h3 id="6-dns-정보-등록-절차">6. DNS 정보 등록 절차</h3>
<ul>
<li><p>등록자(도메인 관리자)</p>
<ul>
<li>도메인명과 해당 도메인의 책임 DNS 서버(1차, 2차)의 IP 주소를 등록기관에 제출</li>
<li>책임 DNS 서버에 웹 서버명, IP 주소의 A 유형 저장</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[8. 이메일과 SMTP]]></title>
            <link>https://velog.io/@wch-os/8.-%EC%9D%B4%EB%A9%94%EC%9D%BC%EA%B3%BC-SMTP</link>
            <guid>https://velog.io/@wch-os/8.-%EC%9D%B4%EB%A9%94%EC%9D%BC%EA%B3%BC-SMTP</guid>
            <pubDate>Thu, 22 Sep 2022 01:30:45 GMT</pubDate>
            <description><![CDATA[<h3 id="1-smtp">1. SMTP</h3>
<ul>
<li><p>클라이언트-서버 프로토콜</p>
<ul>
<li>메일 서버 간의 통신 smtp 이용,
smtp가 클라이언트-서버 구조로 동작한다.</li>
</ul>
</li>
<li><p>TCP 프로토콜</p>
</li>
<li><p>ASCII 텍스트 프로토콜</p>
<ul>
<li><p>명령어, 메시지 : ASCII 그래픽문자·제어문자</p>
</li>
<li><p>메시지 header 와 body 를 구분하는 것은 빈라인(&lt;&#39;cr&#39;&gt;&lt;&#39;lf&#39;&gt;)</p>
</li>
<li><p>메일의 마지막은 . 으로 끝나는 메시지를 보냄</p>
</li>
</ul>
</li>
</ul>
<br>


<h4 id="11-mime">1.1 MIME</h4>
<ul>
<li><p>ASCII data가 아닌 Multimedia data를 base64 Encoder을 통해 ASCII data로 바꾼다.</p>
<p>ex&gt; Multi-data : 24(8+8+8) → Encoder : e24(6+6+6+6) → ASCII : 32(8+8+8+8)</p>
</li>
</ul>
<br>

<h4 id="12-http와-smtp-비교">1.2 HTTP와 SMTP 비교</h4>
<ul>
<li><p>HTTP</p>
<ul>
<li>Pull Protocol</li>
<li>Multimedia data 전송</li>
<li>1 응답 메시지 : 1 웹 객체</li>
</ul>
</li>
</ul>
<ul>
<li><p>SMTP</p>
<ul>
<li>Push Protocol</li>
<li>Text-only 메시지 전송</li>
<li>1 전송 메시지 : 멀티-파트 메시지</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[7. HTTP 메시지, 쿠키, 캐시]]></title>
            <link>https://velog.io/@wch-os/7.-HTTP-%EB%A9%94%EC%8B%9C%EC%A7%80-%EC%BF%A0%ED%82%A4-%EC%BA%90%EC%8B%9C</link>
            <guid>https://velog.io/@wch-os/7.-HTTP-%EB%A9%94%EC%8B%9C%EC%A7%80-%EC%BF%A0%ED%82%A4-%EC%BA%90%EC%8B%9C</guid>
            <pubDate>Sat, 17 Sep 2022 06:12:57 GMT</pubDate>
            <description><![CDATA[<h3 id="1-http-request-message-format">1. HTTP Request message format</h3>
<p><img src="https://velog.velcdn.com/images/wch-os/post/00ccb295-e6a4-4b64-813f-d75ad04e4dfa/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wch-os/post/90ab53d7-9081-4ddf-b01c-983441580a52/image.png" alt=""></p>
<ul>
<li><p>methods</p>
<ul>
<li><p>GET : body 정보 없이 객체 요청 (필요시 URL에 포함시켜 입력 정보 전달)</p>
</li>
<li><p>POST : body 입력 정보와 함께 객체 요청</p>
</li>
<li><p>HEAD : 헤더∙속성 정보 요청
(</p>
</li>
<li><p>PUT : 파일 업로드</p>
</li>
<li><p>DELETE : 파일 삭제</p>
</li>
</ul>
</li>
</ul>
<br>

<ul>
<li><p>header line</p>
<ul>
<li>웹 객체에 대한 속성을 설명하는 정보
→ 웹 브라우저 버전, language, encoding, TCP connection</li>
</ul>
</li>
</ul>
<br>

<ul>
<li><p>entity body</p>
<ul>
<li><p>프로그램이 실행할 때 필요한 input 정보</p>
</li>
<li><p>서버에 upload 하는 정보</p>
</li>
</ul>
</li>
</ul>
<br>

<p><em>*GET + Host = URL</em>
<em>*Connection : Keep-Alive → 지속 연결</em></p>
<br>
<br>


<h3 id="2-http-response-message-format">2. HTTP Response message format</h3>
<p><img src="https://velog.velcdn.com/images/wch-os/post/5e33c9ff-9030-4d1a-a55b-4d9db2e63607/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wch-os/post/d9a2fb42-1f08-470c-b4e6-236b303d4b28/image.png" alt=""></p>
<ul>
<li><p>status code + phrase</p>
<ul>
<li><p>200 OK</p>
</li>
<li><p>301 Moved Permanetly</p>
</li>
<li><p>400 Bad Request</p>
</li>
<li><p>401 Not Found</p>
</li>
<li><p>505 HTTP Version Not Supported</p>
</li>
</ul>
</li>
</ul>
<br>

<ul>
<li><p>header line</p>
<ul>
<li>웹 객체에 대한 속성을 설명하는 정보
→ Response time, 서버 종류∙버전, Object length∙type, TCP connection</li>
</ul>
</li>
</ul>
<br>
<br>


<h3 id="3-web-cookies">3. Web Cookies</h3>
<ul>
<li>사용 시나리오</li>
</ul>
<p><img src="https://velog.velcdn.com/images/wch-os/post/a6f2d1af-f628-4cde-848b-f75316504e7d/image.png" alt=""></p>
<ul>
<li><p>웹 쿠키 필요성</p>
<ul>
<li>비상태형 HTTP 에 상태형 서비스 구현</li>
</ul>
</li>
</ul>
<br>

<ul>
<li><p>웹 쿠키 응용</p>
<ul>
<li><p>쇼핑몰 최근 본 상품</p>
</li>
<li><p>상품 추천 서비스</p>
</li>
<li><p>브라우저 인증 서비스</p>
</li>
</ul>
</li>
</ul>
<br>
<br>

<h3 id="3-web-cache---proxy-server">3. Web Cache - Proxy server</h3>
<ul>
<li><p>웹 캐시</p>
<ul>
<li><p>기존 웹 서버를 대신하여 HTTP request 를 처리하는 중간 서버(proxy server)</p>
</li>
<li><p>웹 캐시(proxy)에 request된 객체가 없으면 기존 웹 서버에 request 를 보내 response 수신</p>
</li>
<li><p>response 객체를 proxy server에 저장하고 웹 브라우저로 전송</p>
</li>
</ul>
</li>
</ul>
<br>

<ul>
<li><p>장점</p>
<ul>
<li><p>응답 지연시간 단축</p>
</li>
<li><p>네트워크 트래픽 감축</p>
</li>
<li><p>보안 → 트래픽 모니터링</p>
</li>
</ul>
</li>
</ul>
<br>

<ul>
<li><p>조건부 GET</p>
<ul>
<li>request header 에 지정된 시간 이후에 수정(갱신)된 객체만 다운로드
→ If-modified-since: &lt; date &gt;</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[6. HTTP 동작원리, 비지속-지속 연결]]></title>
            <link>https://velog.io/@wch-os/6.-HTTP-%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC-%EB%B9%84%EC%A7%80%EC%86%8D-%EC%A7%80%EC%86%8D-%EC%97%B0%EA%B2%B0</link>
            <guid>https://velog.io/@wch-os/6.-HTTP-%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC-%EB%B9%84%EC%A7%80%EC%86%8D-%EC%A7%80%EC%86%8D-%EC%97%B0%EA%B2%B0</guid>
            <pubDate>Sat, 17 Sep 2022 03:55:02 GMT</pubDate>
            <description><![CDATA[<h3 id="1-웹-서비스-모델">1. 웹 서비스 모델</h3>
<ul>
<li><p>웹 서버
: 웹 페이지들의 저장소와 요청 처리 소프트웨어</p>
</li>
<li><p>웹 페이지
: 기본 객체(HTML file)와 참조 객체(HTML, image, audio, video ..)들로 구성</p>
</li>
<li><p>웹 브라우저
: 웹 서비스 사용자 인터페이스</p>
</li>
</ul>
<br>

<ul>
<li><p>HTTP
: 웹 브라우저와 웹 서버 간의 request 와 response 교환 규칙</p>
</li>
<li><p>TCP
: 웹 request 와 response 의 신뢰(패킷 손실 없이) 전송 통로</p>
</li>
</ul>
<br>
<br>

<h3 id="2-http-원리">2. HTTP 원리</h3>
<p><strong>2-1. 원리</strong></p>
<ul>
<li><p>HTTP Request</p>
<ul>
<li><p>웹 사용자의 요청(URL 입력, hyperlink 클릭)으로 웹 브라우저에 의해 생성되는 메시지</p>
</li>
<li><p>웹 서버의 웹 객체 URL과 웹 객체 처리 방식 정보 제공</p>
</li>
<li><p>하위(transport) 계층의 TCP 연결을 통해 웹 서버에게 전송</p>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>HTTP Response</p>
<ul>
<li><p>웹 브라우저의 요청으로 웹 서버에 의해 생성되는 메시지</p>
</li>
<li><p>수신한 URL에 해당되는 웹 객체와 웹 객체 속성 정보 제공</p>
</li>
<li><p>하위(transport) 계층의 TCP 연결을 통해 웹 서버에게 전송</p>
</li>
</ul>
</li>
</ul>
<br>


<p><strong>2-2. 비상태형 프로토콜(stateless protocol)</strong></p>
<ul>
<li><p>HTTP 는 비상태형 프로토콜</p>
<ul>
<li><p>HTTP request 메시지와 HTTP response 메시지 간의 관계 정보가
웹 서버에 저장 x</p>
</li>
<li><p>웹 브라우저 - 웹 서버간의 통신 상태 정보를 유지하지 않음
→ 서버는 수신되는 HTTP request 메시지 간의 관계 추론 불가</p>
</li>
</ul>
</li>
</ul>
  <br>

<p><strong>2-3. 비지속 연결 HTTP</strong></p>
<ul>
<li><p>특징</p>
<ul>
<li><p>웹 객체를 위한 HTTP request∙response 메시지 쌍마다 별도의 TCP 연결 설정</p>
</li>
<li><p>다중 연결 설정으로 병렬 전송 가능</p>
</li>
<li><p>서버 자원 관리 차원에서 클라이언트별 병렬 연결 수 제한</p>
</li>
</ul>
<br>
</li>
<li><p>객체별 지연시간</p>
<ul>
<li>2RTT + 객체 파일 전송시간</li>
</ul>
</li>
</ul>
  <br>

<p><em>*RTT : Round Trip Time, 왕복시간. 상대 호스트까지 패킷이 왕복하는데 걸리는 시간</em></p>
<br>

<p><strong>2-4. 지속 연결 HTTP</strong></p>
<ul>
<li><p>특징</p>
<ul>
<li><p>동일 서버의 다수 웹 객체가 하나의 TCP 연결을 통해 클라이언트에게 전송하도록 TCP 연결 유지</p>
</li>
<li><p>일정 시간동안 사용하지 않으면 TCP 연결 해제</p>
</li>
<li><p>TCP 연결 지연시간 절약, but 사용하지 않는 시간 동안 자원(소켓) 낭비</p>
</li>
<li><p>파이프라이닝(pipelining)으로 다수 객체를 한꺼번에 요청-응답 가능</p>
</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[5. 응용 ∙ 계층 원리 [Principles of Application Layer]]]></title>
            <link>https://velog.io/@wch-os/6.-%EC%9D%91%EC%9A%A9-%EA%B3%84%EC%B8%B5-%EC%9B%90%EB%A6%AC-Principles-of-Application-Layer</link>
            <guid>https://velog.io/@wch-os/6.-%EC%9D%91%EC%9A%A9-%EA%B3%84%EC%B8%B5-%EC%9B%90%EB%A6%AC-Principles-of-Application-Layer</guid>
            <pubDate>Fri, 16 Sep 2022 17:31:11 GMT</pubDate>
            <description><![CDATA[<h3 id="1-네트워크-응용-서비스">1. 네트워크 응용 서비스</h3>
<ul>
<li><p>네트워크 통신 서비스를 사용∙응용해 최종 사용자에게 제공되는 서비스</p>
</li>
<li><p>네트워크에 연결된 2개 이상의 <strong>호스트에서</strong> 동작하는 프로그램으로 구현</p>
</li>
</ul>
<br>

<p><strong>네트워크 응용 구조 유형</strong></p>
<ol>
<li><p>클라이언트-서버 구조</p>
</li>
<li><p>P2P 구조</p>
</li>
</ol>
<br>
<br>

<h3 id="2-클라이언트-서버-구조">2. 클라이언트-서버 구조</h3>
<ul>
<li>클라이언트<ul>
<li>서버에게 응용 서비스 요청 (클라인트 간 x)</li>
<li>필요할 때만 작동</li>
<li>동적 IP 주소 사용 가능</li>
</ul>
</li>
</ul>
<br>

<ul>
<li>서버<ul>
<li>다수의 클라이언트에 응답</li>
<li>항상 작동</li>
<li>고정 IP 주소 사용</li>
</ul>
</li>
</ul>
<br>
<br>

<h3 id="3-p2p-구조">3. P2P 구조</h3>
<ul>
<li>동작 방식<ul>
<li>호스트 간에 직접 통신함</li>
<li>각 호스트는 클라이언트와 서버 역할을 동시 수행</li>
<li>호스트 간의 관계는 대등</li>
</ul>
</li>
</ul>
<br>

<ul>
<li>장점<ul>
<li>서버 의존성 x</li>
<li>구축 및 관리 비용이 낮음</li>
<li>자가 확장성</li>
</ul>
</li>
</ul>
<br>

<ul>
<li>단점<ul>
<li>보안 취약성</li>
<li>낮은 신뢰성</li>
<li>낮은 성능</li>
</ul>
</li>
</ul>
<br>
<br>

<h3 id="4-네트워크-응용-프로세스--응용-프로토콜">4. 네트워크 응용 프로세스 &amp; 응용 프로토콜</h3>
<ul>
<li>네트워크 응용 프로세스
: 호스트에서 네트워크를 통해 응용 메시지를 교환하며 작동하는 프로그램</li>
</ul>
<ul>
<li>응용 프로토콜
: 프로세스의 일부 / 네트워크 응용 프로그램 간의 응용 메시지 교환</li>
</ul>
<br>
<br>

<h3 id="5-소켓-socket">5. 소켓 (Socket)</h3>
<h4 id="5-1-소켓">5-1. 소켓</h4>
<ul>
<li><p>transport 계층이 application 계층에 대해서 정보를 송수신할 수 있도록 통로 역할을 하는 자료구조</p>
</li>
<li><p>트랜스 포트 계층 상에서 구현</p>
</li>
</ul>
<br>

<h4 id="5-2-소켓-주소">5-2. 소켓 주소</h4>
<ul>
<li>IP 주소 + Port 번호</li>
</ul>
<br>

<p>IP 주소는 인터넷에 연결되어 있는 host(네트워크 장치)를 지정하는 주소이다.
host에 어플리케이션 프로세스(프로그램)이 하나만 작동하는 것이 아니다.
→ 내 pc에 있는 ip주소는 하나지만, 작동하고 있는 어플리케이션 프로세스는 여러 개이다.</p>
<p><strong>그러므로, 호스트를 지정하는 ip 주소만 가지고 어플리케이션 프로세스를 유니크하게 지정할 수 없다.</strong></p>
<p><strong>따라서.
<span style="color: red">어플리케이션 프로세스 내의 소켓을 구분하기 위한 Port 번호가 필요하다.</strong></span></p>
<p>소켓 주소(IP 주소 +  Port 번호)로 어플리케이션 프로세스를 지정하게끔 한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[4. 네트워크 사이버 공격 [Network Attack]]]></title>
            <link>https://velog.io/@wch-os/4</link>
            <guid>https://velog.io/@wch-os/4</guid>
            <pubDate>Thu, 15 Sep 2022 13:55:20 GMT</pubDate>
            <description><![CDATA[<h3 id="1-악성-소프트웨어-공격-malware-attack">1. 악성 소프트웨어 공격 (Malware Attack)</h3>
<p>전파 방식에 따른 분류</p>
<ul>
<li>바이러스 : 사용자가 감염된 실체를 실행시킬 때 실행<pre><code> ex&gt; 메일 첨부파일</code></pre></li>
</ul>
<ul>
<li>웜    : 독립적 프로그램으로 존재, 전파 능력 가짐, 사용자 개입 없이 스스로 실행</li>
</ul>
<ul>
<li>트로이목마 : 사용자로 하여금 다운로드 하게 함으로써 다른 시스템으로 침투<pre><code> ex&gt; 보안 SW, P2P 공유파일</code></pre></li>
</ul>
<br>
<br>

<h3 id="2-서비스-거부-공격-denial-of-service-attack">2. 서비스 거부 공격 (Denial of service Attack)</h3>
<ul>
<li>DDoS 공격 : 추적을 어렵게 하기 위해 분산된 다수의 컴퓨터를 동원하여 수행하는 DoS 공격</li>
</ul>
<br>
<br>

<h3 id="3-스니핑-공격-sniffing-attack">3. 스니핑 공격 (Sniffing Attack)</h3>
<ul>
<li><p>스니핑 공격 : 데이터 트래픽을 분석∙기록하여 민감한 정보(IP 주소, 패스워드 등을 가로채는 공격</p>
<ul>
<li>데이터 암호화 필요 </li>
</ul>
</li>
</ul>
<br>
<br>

<h3 id="4-가장-공격-masquerading-attack">4. 가장 공격 (Masquerading Attack)</h3>
<ul>
<li><p>IP Spoofing, 중간자 공격 : 신뢰할 수 있는 통신 주체를 가장하여 상대방과 통신하며 민감한 정보를 가로채는 공격</p>
<ul>
<li>인증 과정 필요 </li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[1. Edge Network]]></title>
            <link>https://velog.io/@wch-os/1.-Edge-Network</link>
            <guid>https://velog.io/@wch-os/1.-Edge-Network</guid>
            <pubDate>Thu, 15 Sep 2022 11:49:13 GMT</pubDate>
            <description><![CDATA[<h3 id="1-edge-network"><strong>1. Edge Network</strong></h3>
<ul>
<li>인터넷에서 호스트 or 종단 장치가 연결되는 접속 네트워크<br>

</li>
</ul>
<p><em>*Home Access Network : DSL, Cable, FTTH, Ethernet/Wifi</em></p>
<p><em>*Enterprise Access Network : Ethernet/Wifi</em></p>
<p><em>*Mobile Access Network : 3G, 4G, 5G</em></p>
<br>

<h3 id="2-1-dsl-access-network"><strong>2-1. DSL [Access Network]</strong></h3>
<ul>
<li>하나의 전화선을 사용해서 음성 신호와 데이터 신호를 동시에 전달하는 네트워크</li>
</ul>
<pre><code>- 음성을 전달하기 위한 용도

- 전용 속도

- 전화선이 길면 저항이 강해져 전송 속도가 떨어짐</code></pre><br>

<h3 id="2-2-cable-access-network"><strong>2-2. Cable [Access Network]</strong></h3>
<ul>
<li>TV Channel이 사용하지 않는 주파수 신호를 이용해서 비디오(TV) 신호와 데이터 신호를 동시에 전달하는 네트워크</li>
</ul>
<pre><code>- 비디오를 전달하기 위한 용도

- 공유 속도 (여러 가정과 공유)</code></pre><br>

<h3 id="2-3-ftth-access-network"><strong>2-3. FTTH [Access Network]</strong></h3>
<ul>
<li>광케이블을 이용한 고속 데이터 통신이 가능한 네트워크</li>
</ul>
<br>

<h3 id="3-물리-매체"><strong>3. 물리 매체</strong></h3>
<ul>
<li><p>정보를 표현하는 신호를 전달하는 매개체</p>
</li>
<li><p>통신 장치의 물리적 연결 매개체</p>
</li>
</ul>
<br>

<p><em>*유도 매체 : 구리선, 동축 케이블, 광케이블</em></p>
<p><em>*비유도 매체 : Wifi, 위성</em></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[3. TCP/IP 프로토콜 계층 구조]]></title>
            <link>https://velog.io/@wch-os/2.-TCPIP-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0</link>
            <guid>https://velog.io/@wch-os/2.-TCPIP-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0</guid>
            <pubDate>Tue, 13 Sep 2022 08:31:06 GMT</pubDate>
            <description><![CDATA[<h3 id="1-tcpip-계층-구조">1. TCP/IP 계층 구조</h3>
<p>인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신규약(프로토콜)의 모음</p>
<br>

<p>** 1-1. 계층 구조의 장단점**</p>
<p>장점</p>
<ul>
<li><p>새로운 프로토콜 정의 용이</p>
</li>
<li><p>특정 프로토콜 수정 용이</p>
</li>
<li><p>전체 시스템 이해 용이</p>
</li>
</ul>
<p>단점</p>
<ul>
<li>최적 시스템 구현 어려움(하위 계층 사용, 계층 간 서비스 인터페이스 구현)</li>
</ul>
<br>

<p><strong>1-2. 계층 구조</strong></p>
<p><img src="https://velog.velcdn.com/images/wch-os/post/c6777f2a-5f64-43ff-91ef-02031d109838/image.png" alt=""></p>
<h4 id="계층-5-application">계층 5. application</h4>
<ul>
<li><p>최종 사용자 서비스를 이용한 정보(<strong>message</strong>) 교환 규칙</p>
</li>
<li><p>HTTP, SMTP, FTP, DNS</p>
</li>
</ul>
<br>

<h4 id="계층-4-transport">계층 4. transport</h4>
<ul>
<li><p>최종 통신 목적지(응용 프로토콜, 컴퓨터가 아닌 해당 컴퓨터에서 실행되고 있는 프로세스)를 지정하고, 오류(패킷 손실) 없이 데이터(message를 <strong>segment</strong>로 변환)를 전송</p>
</li>
<li><p>해당 프로세스를 지정하는 일종의 주소, 포트번호를 사용</p>
</li>
<li><p>TCP, UDP</p>
</li>
</ul>
<br>

<h4 id="계층-3-network">계층 3. network</h4>
<ul>
<li><p>transport 계층이 내려보낸 데이터를 종단 시스템까지 전달</p>
</li>
<li><p>네트워크 상에서 최적 전송 경로를 찾고,
segment를 <strong>datagram</strong>으로 변환하여 종단 시스템으로 교환 및 전달</p>
</li>
<li><p>네트워크 액세스와 마찬가지로 주소를 지정하는 방법이 필요    </p>
<ul>
<li>물리 주소를 사용하지 않고 소프트웨어적으로 정의된 논리 주소, IP를 사용<ul>
<li>실제 데이터를 전송하기 위한 전송 경로를 알아야 함</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li><p>IP : Datagram 전달 프로토콜</p>
<ul>
<li>물리 주소를 사용하지 않고 소프트웨어적으로 정의된 논리 주소</li>
</ul>
</li>
<li><p>Routing : 최적 전송 경로 찾기 프로토콜</p>
<ul>
<li>실제 데이터를 전송하기 위한 전송 경로를 알아내기 위함<br>

</li>
</ul>
</li>
</ul>
<h4 id="계층-2-link">계층 2. link</h4>
<ul>
<li><p>물리적 네트워크를 통한 실제적인 데이터 전송 담당</p>
</li>
<li><p>datagram을 <strong>frame</strong>으로 변환하여 링크 끝으로 전송</p>
</li>
<li><p>Ethernet, Wifi</p>
<br>

</li>
</ul>
<h4 id="계층-1-physical">계층 1. physical</h4>
<ul>
<li>디지털 비트와 물리적인 신호의 변환과 물리 매체 접속 규격 정의<br>
<br>


</li>
</ul>
<h3 id="2-캡슐화">2. 캡슐화</h3>
<h4 id="2-1-프로토콜-교환-정보"><strong>2-1. 프로토콜 교환 정보</strong></h4>
<ol>
<li><p>Data information
: 사용자가 상대방 통신 사용자에게 전송을 의뢰한 정보</p>
</li>
<li><p>Control intformation
: 프로토콜의 규칙을 수행하기 위해 제공하는 정보
ex&gt; PN(Port Number), SN(Sequence Number)
<br>⊕ 웹브라우저와 웹서버 사이에 주고받는 데이터 정보가 아닌,
그 데이터 정보를 안전하게 교환하기 위해서 필요한 제어정보</p>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/wch-os/post/59ecc660-e3e0-49cf-a365-a9a627638a27/image.png" alt=""></p>
<p><em>*로컬 주소 : link, MAC 주소</em></p>
<p><em>*글로벌 주소 : network, IP 주소</em></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2. Core Network]]></title>
            <link>https://velog.io/@wch-os/1.-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%BD%94%EC%96%B4</link>
            <guid>https://velog.io/@wch-os/1.-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%BD%94%EC%96%B4</guid>
            <pubDate>Tue, 13 Sep 2022 07:16:30 GMT</pubDate>
            <description><![CDATA[<h3 id="1-core-network"><strong>1. Core Network</strong></h3>
<ul>
<li><p>고속의 링크들이 패킷 스위치인 라우터들로 그물망처럼 연결된 네트워크</p>
<ul>
<li><p>링크를 통해서 라우터 네트워크들을 연결하는 기능과 링크들간의 패킷을 교환하는 역할 </p>
<ul>
<li>End-to-end 경로</li>
</ul>
</li>
</ul>
</li>
</ul>
<br>
<br>

<h3 id="2-패킷-스위칭packet-switching"><strong>2. 패킷 스위칭(Packet Switching)</strong></h3>
<ul>
<li><p>입력 링크와 출력 링크 간의 패킷 단위 교환</p>
<ul>
<li><p>작은 블록의 패킷으로 각 패킷에 포함된 대상 주소를 기반으로 데이터를 전송하며 데이터를 전송하는 동안만 네트워크 자원을 사용하도록 하는 방법</p>
</li>
<li><p>빠르고 효율적인 전송을 위해 데이터를 적절한 크기로 분할하는 디지털 네트워크 전송 프로세스</p>
</li>
<li><p>컴퓨터 네트워크 통신 방식 중 하나로 현재 가장 많이 쓰이고 있음</p>
</li>
</ul>
</li>
</ul>
<br>

<p><em>패킷(packet) : 네트워크 전송의 정보 단위</em></p>
<pre><code>=&gt; 공유 링크의 공정한 전송을 위해 긴 메시지를 작은 패킷 단위로 나누어 전송</code></pre><br>
<br>


<h3 id="3-전송지연시간"><strong>3. 전송지연시간</strong></h3>
<br>

<p><strong>링크 전송속도</strong></p>
<pre><code>- 링크가 1초당 전송 가능한 비트 수 (bps, bit per second)</code></pre><br>

<p><strong>1&gt; 패킷 전송지연시간</strong>
전송 장치가 패킷을 링크로 전송하는데 걸리는 시간</p>
<blockquote>
<p>패킷 크기 : L 비트
링크 전송속도 : R bps
패킷 전송지연시간 : L/R seconds
_
L = 7.5 Mbits, R = 1.5 Mbps → 패킷 전송지연시간 = 5 sec</p>
</blockquote>
<br>

<p><strong>2&gt; 종단간 패킷 전송지연시간[D end-to-end]</strong>
라우터가 패킷을 수신하고 다시 전송하는데 걸리는 시간</p>
<blockquote>
<p>패킷 크기 : L 비트
링크 전송속도 : R bps
링크 개수 : N
종단간 패킷 전송지연시간 : N * L/R seconds</p>
</blockquote>
<p><strong>2-1&gt; 라우터 저장-전달(Store-and-Forward) 전송</strong></p>
<ul>
<li><p>수신 패킷을 버퍼 메모리에 저장</p>
</li>
<li><p>패킷을 완전히 수신 후 패킷 전송 시작</p>
<p>→ 출발지와 각 라우터 간의 전송지연시간 발생</p>
</li>
</ul>
<p><em>*버퍼 : 데이터를 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리 영역</em>
<em>→ 장치들간의 작동하는 데 있어 생기는 전송되는 속도·시간 차이로 인해 발생되는 데이터의 손실을 방지</em></p>
<br>

<p><strong>3&gt; 큐잉 지연시간</strong>
패킷이 라우터 출력 링크의 큐 버퍼 메모리 전송 전에 대기하는 시간</p>
<p><em>출력 링크의 전송속도보다 많은 량의 패킷이 해당 링크로 교환될 때 발생</em></p>
<br>

<p><strong>3-1&gt; 패킷 손실</strong></p>
<ul>
<li><p>버퍼 메모리에서 패킷이 저장되지 못하고 없어지는 현상</p>
</li>
<li><p>유한한 크기의 버퍼 메모리에 초과량의 패킷이 해당 링크로 교환될 때 발생</p>
</li>
</ul>
<br>
<br>

<h3 id="4-회선-스위칭circuit-switching"><strong>4. 회선 스위칭(Circuit Switching)</strong></h3>
<ul>
<li>입력 포트에 연결된 링크를 출력 포트에 연결된 동일 전송 속도의 링크로 교환</li>
</ul>
<br>

<p><strong>4-1. 회선 스위칭의 특징</strong></p>
<ul>
<li><p>일정한 전송 속도 보장 (링크 공유x)</p>
</li>
<li><p>짧고 일정한 지연시간 보장 (패킷 전달 방식이 아니며, 초기 지연시간만 발생)</p>
</li>
<li><p>전화와 같이 실시간을 필요로 하는 응용에 적합</p>
</li>
</ul>
<br>

<p><strong>4-2. 회선 스위칭의 문제점</strong></p>
<ul>
<li>데이터가 발생되지 않는 구간에서 회선이 낭비됨</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[0. 인터넷과 프로토콜]]></title>
            <link>https://velog.io/@wch-os/%EC%9D%B8%ED%84%B0%EB%84%B7%EA%B3%BC-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C</link>
            <guid>https://velog.io/@wch-os/%EC%9D%B8%ED%84%B0%EB%84%B7%EA%B3%BC-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C</guid>
            <pubDate>Sat, 03 Sep 2022 03:16:10 GMT</pubDate>
            <description><![CDATA[<h3 id="1-인터넷"><strong>1. 인터넷</strong></h3>
<p>Inter-Network, &#39;모든 컴퓨터를 하나의 통신망으로 연결한다.&#39; 의 어원을 가지고 있으며</p>
<p>TCP/IP 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크이다.</p>
<br>

<h3 id="2-호스트host">2. 호스트(Host)</h3>
<p>네트워크에 연결되어 있는 장치로 IP를 이용한 다른 호스트와 쌍방향 통신이 가능하다.</p>
<ul>
<li><p>서버 : 클라이언트에 정보∙서비스를 제공하는 호스트</p>
</li>
<li><p>클라이언트 : 네트워크 상에서 서버에 정보를 요청하여 받는 호스트 </p>
</li>
</ul>
<p>ex. 컴퓨터, 스마트폰, iot ...</p>
<br>

<h3 id="3-access-network">3. Access network</h3>
<p>여러 host 들이 네트워크에 연결되기 위해 제공되는 네트워크</p>
<p>Access network들을 연결하는 network</p>
<ul>
<li><p>첫번째 라우터(edge router) 에 연결시킴</p>
</li>
<li><p>네트워크 연결을 위한 스마트폰의 wifi, 컴퓨터의 랜선 =&gt; Access network에 접속</p>
<br>


</li>
</ul>
<p><em>access network가 사용되는 환경에 따라, host를 인터넷에 연결시키는 방식이 나뉘어짐</em></p>
<p>_*Home network(가정) : DSL, cable network, FTTH _</p>
<p><em>*Enterprise network(기업) : Ethernet(랜선), Wifi, Cellular</em></p>
<br>

<h3 id="4-core-network">4. Core network</h3>
<p>네트워크 시스템의 중앙에 위치하여 데이터를 전송하는 역할</p>
<ul>
<li>수많은 라우터들의 집합체</li>
</ul>
<br>

<h3 id="5-ispinternet-service-provider">5. ISP(Internet Service Provider)</h3>
<p>개인이나 기업체에게 인터넷 접속 서비스를 제공하는 회사</p>
<br>
<br>
<br>

<p><em>*링크 : 정보 전달 단위인 패킷을 전달하는 유무선 매체</em></p>
<p><em>ex. 동축케이블, 광케이블, wifi 채널</em></p>
<p><em>*스위치 : 입력 링크(디바이스)에서 수신한  패킷을 출력 링크(다른 디바이스)_로 전송하는 장치
_    - 다수의 통신 장치를 통신 링크(ex.-)로 연결하는 장치</em></p>
<p>_*AP(Access point) : 유선랜과 무선랜을 연결시켜주는 장치 _</p>
<p><em>*라우터 : 패킷의 위치를 추출, 지정한 최적 경로를 따라 패킷을 전송하는 장치</em></p>
<p><em>- 각각의 네트워크를 연결하여 더 큰 네트워크를 구축함</em></p>
<br>


<hr>
<br>


<h3 id="1-프로토콜"><strong>1. 프로토콜</strong></h3>
<p>호스트들 간의 정보 교환(통신)을 정의하는 규칙</p>
<ul>
<li>Syntax : 통신 장치들간에 교환될 메시지의 형식 정의</li>
<li>Timing : 메시지 교환 순서 정의</li>
<li>Semantics : 메시지를 교환할 때 수행해야 할 행위 정의</li>
</ul>
<br>

<h3 id="2-tcptransmission-control-protocol">2. TCP(Transmission Control Protocol)</h3>
<p>두 개의 호스트를 연결하고 데이터를 교환하게 해주는 네트워크 프로토콜</p>
<ul>
<li><p>데이터와 패킷이 보내진 순서대로 전달하는 것을 보장</p>
</li>
<li><p>에러가 없이 패킷이 정확히 전달 되었는지 보장</p>
</li>
</ul>
<br>

<h3 id="3-ipinternet-protocol">3. IP(Internet Protocol)</h3>
<ul>
<li><p>호스트의 주소 지정과 패킷 분할 및 전달</p>
</li>
<li><p>지정한 IP 주소에 데이터 전달</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[거래대금을 기준으로 한 데이터 비교]]></title>
            <link>https://velog.io/@wch-os/%EA%B1%B0%EB%9E%98%EB%8C%80%EA%B8%88%EC%9D%84-%EA%B8%B0%EC%A4%80%EC%9C%BC%EB%A1%9C-%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B9%84%EA%B5%90</link>
            <guid>https://velog.io/@wch-os/%EA%B1%B0%EB%9E%98%EB%8C%80%EA%B8%88%EC%9D%84-%EA%B8%B0%EC%A4%80%EC%9C%BC%EB%A1%9C-%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B9%84%EA%B5%90</guid>
            <pubDate>Wed, 13 Jul 2022 04:50:06 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><strong>Project :</strong>
Maven Project 로 진행하시오.
​
<strong>Dependency :</strong></p>
</blockquote>
<ol>
<li>groupId : org.json, artifactId : json, version : 20211205</li>
<li>groupId : com.squareup.okhttp3, artifactId : okhttp, version : 4.9.0
​</li>
</ol>
<p><strong>Task :</strong></p>
<ol>
<li>첨부 파일의 Main.java 를 소스 폴더에 복사하고 실행하시오.</li>
<li>sorted_coins 객체를 이용하여 변수 format, key, mid 에 차례로 출력 형식, 거래 대금이 중간값인 코인의 이름, 거래 대금을 대입하시오.</li>
<li>대입한 mid 값과 최소 거래대금, 최대 거래대금의 차이를 출력하시오.</li>
</ol>
<ul>
<li>거래 대금의 key 는 &quot;acc_trade_value_24H&quot; 이다.</li>
<li>출력 형식은 &quot;코인 이름 -&gt; 거래 대금&quot; 이며, 거래대금은 쉼표를 포함하여 소수 두 자리까지 출력하시오.</li>
<li>거래대금의 차이는 최소, 최대 거래 대금의 코인 이름과 거래 대금을 포함하여 출력하시오.
​</li>
<li><em>Report :*</em></li>
</ul>
<ol>
<li>실행 결과 스크린샷</li>
</ol>
<pre><code class="language-java">import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONObject;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class Main {

    public static void main(String[] args) throws IOException {

        // 설명은 생략한다.
        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
                .url(&quot;https://api.bithumb.com/public/ticker/ALL_KRW&quot;)
                .get()
                .addHeader(&quot;Accept&quot;, &quot;application/json&quot;)
                .build();

        Response response = client.newCall(request).execute();
        JSONObject result = new JSONObject(response.body().string());

        // 코인 데이터를 조회한다. 
        JSONObject coins = result.getJSONObject(&quot;data&quot;);

        // data에 존재하는 date는 코인 정보가 아니므로 제외한다.
        coins.remove(&quot;date&quot;);

        // JSONArray의 정보를 삽입할 리스트를 선언한다.
        List&lt;JSONObject&gt; coinList = new ArrayList&lt;JSONObject&gt;();

        // 정렬을 위해 JSONArray에 담긴 정보를 모두 리스트에 담는다.
        for(String key : coins.keySet())

            // 리스트에 담으면 key가 사라지므로, put(&quot;key&quot;, key)로 코인 이름을 넣어준다.
            coinList.add(coins.getJSONObject(key).put(&quot;key&quot;, key));

        // 윗 줄을 주석 처리, 아랫 줄을 주석 해제하면 코인 이름이 없어진다.
        // coinList.add(coins.getJSONObject(key);

        // 거래대금 순으로 정렬한다.
        // Collections.sort(데이터가 담긴 리스트, new Comparator&lt;리스트에 담긴 데이터의 형식&gt;())
        Collections.sort(coinList, new Comparator&lt;JSONObject&gt;() {

            // acc_trade_value_24H는 최근 24시간 동안의 거래대금이다.
            String key = &quot;acc_trade_value_24H&quot;;

            // Collections 클래스가 보유한 함수이므로 오버라이드 어노테이션을 붙여준다.
            @Override
            public int compare(JSONObject o1, JSONObject o2) {

                // * JSONObject는 getString 뿐만 아니라 getDouble 같이 형식을 지정하여 값을 받을 수 있다. *
                return Double.compare(o1.getDouble(key), o2.getDouble(key));
            }
        });

        JSONArray sorted_coins = new JSONArray();

        for(JSONObject coin : coinList)

            sorted_coins.put(coin);

        // 출력한다.
        System.out.println(sorted_coins.toString(4));

        String money = &quot;acc_trade_value_24H&quot;;

        String [] format = {&quot;lower&quot;, &quot;mid&quot;, &quot;high&quot;};
        String key = sorted_coins.getJSONObject(0).getString(&quot;key&quot;).toString();
        String mid_key = sorted_coins.getJSONObject(coins.keySet().size()/2).getString(&quot;key&quot;).toString();
        String high_key = sorted_coins.getJSONObject(coins.keySet().size()-1).getString(&quot;key&quot;).toString();

        double first = sorted_coins.getJSONObject(0).getDouble(money);
        double mid = sorted_coins.getJSONObject(coins.keySet().size()/2).getDouble(money);
        double high = sorted_coins.getJSONObject(coins.keySet().size()-1).getDouble(money);

        System.out.println(String.format(&quot;%-5s : %s | %,-20.2f, %,.2f&quot;, format[0],key,first,mid-first));
        System.out.println(String.format(&quot;%-5s : %s | %,-20.2f&quot;, format[1],mid_key,mid));
        System.out.println(String.format(&quot;%-5s : %s | %,-20.2f, %,.2f&quot;, format[2],high_key,high,high-mid));


    }

}</code></pre>
<p><img src="https://velog.velcdn.com/images/wch-os/post/716e9893-0f13-41e7-b5f1-044f393c881d/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Bithumb Api를 이용한 BTC closing_price]]></title>
            <link>https://velog.io/@wch-os/%EC%9E%90%EB%B0%94-Task01</link>
            <guid>https://velog.io/@wch-os/%EC%9E%90%EB%B0%94-Task01</guid>
            <pubDate>Tue, 28 Jun 2022 13:50:19 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p><strong>Project : **
프로젝트 이름 : Practice
groupId : Practice
artifactId : Practice
version : 0.0.1-SNAPSHOT
​
**Dependency :</strong></p>
</blockquote>
<ol>
<li>groupId : org.json, artifactId : json, version : 20211205</li>
<li>groupId : com.squareup.okhttp3, artifactId : okhttp, version : 4.9.0
​</li>
</ol>
<p><strong>Task :</strong></p>
<ol>
<li>첨부 파일의 Main.java 를 소스 폴더에 복사하고 실행하시오.</li>
<li>result 객체를 이용하여 BTC의 closing_price를 쉼표를 구분하여 소수 두 자리까지 출력하시오.</li>
</ol>
<ul>
<li>출력 형식은 String.format(&quot;%,.2f&quot;, BTC의 closing_price)을 이용하면 된다.
​</li>
<li><em>Report :*</em></li>
</ul>
<ol>
<li>실행결과 스크린샷</li>
</ol>
<pre><code class="language-java">import java.io.IOException;

import org.json.JSONObject;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class Main {

    public static void main(String[] args) throws IOException {

        OkHttpClient client = new OkHttpClient();

        // 아래 url은 가상화폐 거래소 빗썸의 전체 코인 현재가 정보를 담고있다.
        Request request = new Request.Builder().url(&quot;https://api.bithumb.com/public/ticker/ALL_KRW&quot;).get()
                .addHeader(&quot;Accept&quot;, &quot;application/json&quot;).build();

        // Request 객체의 url의 정보를 불러온다.
        Response response = client.newCall(request).execute();

        // response.body().string()으로 데이터를 조회한다.
        JSONObject result = new JSONObject(response.body().string());

        // Status를 출력한다.
        System.out.printf(&quot;status:%s\n&quot;, result.getString(&quot;status&quot;));

        // Data를 JSON 형식으로 출력한다.
        System.out.println(result.getJSONObject(&quot;data&quot;).toString(4));

        // Set을 출력한다.
        System.out.println(result.getJSONObject(&quot;data&quot;).keySet());

        // 파싱
        // result에서의 getJSONObject를 사용해 data 객체를 얻어온다.
        JSONObject data = result.getJSONObject(&quot;data&quot;);

        // data에서의 BTC 객체를 얻어온다.
        JSONObject BTC = data.getJSONObject(&quot;BTC&quot;);

        // getString을 사용해 BTC에서의 key : closing_price의 value 값을 얻어온다.
        // 객체가 아니다.
        String str = BTC.getString(&quot;closing_price&quot;);

        // 문자열을 실수형으로 변환
        // Task2. 출력
        float f_Val = new Float(str);
        System.out.println(String.format(&quot;closing_price:%,.2f\n&quot;, f_Val));


         //BTC와 ETH를 비교하는 기능을 만들고자 함
         //BTC 안의 key 값들 출력
         /*
         System.out.println(BTC.keySet());
         JSONObject ETH = data.getJSONObject(&quot;ETH&quot;);
         for(int i = 0; i&lt;BTC.keySet().size(); i++)
         {
         }
         */

        //실수로 바꾸지 않고 문자열 그대로 출력
        //System.out.printf(&quot;closing_price:%s\n&quot;, BTC.getString(&quot;closing_price&quot;));
    }
}
</code></pre>
<p><img src="https://velog.velcdn.com/images/wch-os/post/cb21f2e6-8f26-48c0-9489-2d9d18c0f41b/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[M1]]></title>
            <link>https://velog.io/@wch-os/M1-viv07xjx</link>
            <guid>https://velog.io/@wch-os/M1-viv07xjx</guid>
            <pubDate>Mon, 14 Feb 2022 12:08:24 GMT</pubDate>
            <description><![CDATA[<h3> M1 </h3>



<ul>
<li><p>ARM 아키텍쳐</p>
<ul>
<li>저전력을 사용하도록 설계</li>
<li>RISC 프로세서<ul>
<li>RISC(축소 명령어 집합 컴퓨터) / CISC(복잡 명령어 집합 컴퓨터)<ul>
<li>CPU 명령어 수를 줄여 실행속도를 빠르게 한 방식</li>
</ul>
</li>
<li>임베디드 기기, 모바일 기기</li>
</ul>
</li>
</ul>
</li>
<li><p>SoC(System on a chip)</p>
<ul>
<li>ios/android 스마트폰들은 soc로 구동</li>
<li>하나의 칩에 CPU, GPU, I/O 등 여러가지 기능을 동작할 수 있는 칩셋으로 구성 <br/></li>
</ul>
</li>
</ul>
<ul>
<li><p>5nm 최초 개인용 컴퓨터 칩</p>
</li>
<li><p>CPU &amp; GPU &amp; Neural engine</p>
<ul>
<li>neural engine : 머신러닝 ai 테스크 최적화</li>
</ul>
</li>
</ul>
<hr>
<h4>+ M1 Pro 및 M1 Max </h4>

<p>media engine : 4k,8k 영상 처리 속도 최적화
secure enclave : 인증, 암호화 부문 최적화</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[API]]></title>
            <link>https://velog.io/@wch-os/API</link>
            <guid>https://velog.io/@wch-os/API</guid>
            <pubDate>Mon, 07 Feb 2022 12:44:55 GMT</pubDate>
            <description><![CDATA[<p>API(Application Programming Interface)</p>
<ul>
<li>컴퓨터와 소프트웨어를 서로 연결하게 해주는 인터페이스</li>
<li>어떤 방식으로 데이터를 요청하고 받는 방법을 제공</li>
<li>운영체제에서 동작하는 소프트웨어를 만들기 위해서는 운영체제에서 제공하는 API를 이용해서 만들 수 있음</li>
<li>내부의 동작하는 방식에 대한 구현사항을 숨기고 사용자에게 필요한 것만 노출</li>
<li>API를 사용하면 구현 방식을 알지 못하는 제품 또는 서비스와도 통신 가능
(ex. google/kakao 간편로그인, 라이브코로나)</li>
</ul>
<br/>

<p>Open API</p>
<ul>
<li>개발자라면 누구나 사용할 수 있도록 공개된 API</li>
</ul>
<p><a href="https://www.data.go.kr/">공공데이터포털</a>
<a href="https://github.com/public-apis/public-apis">Public APIs01</a>
<a href="https://public-apis.xyz/page/1">Public APIs02</a></p>
<p><br/><br/></p>
<p>HAL(Hardware abstraction layer)</p>
<ul>
<li>컴퓨터의 하드웨어와 소프트웨어 사이의 추상화 계층이다.</li>
<li>하드웨어가 변경되더라도 소프트웨어가 작동할 수 있게 하기 위하여 만들어졌다.</li>
</ul>
<p>abtraction → 추상화</p>
<ul>
<li>주어진 자료, 모듈, 시스템 등으로부터 핵심적인 기능만을 분리하여 간결하게 만드는 과정</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>