<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>chae_eun.log</title>
        <link>https://velog.io/</link>
        <description>짱멋진 개발자가 되고 싶은 개린이입니다.</description>
        <lastBuildDate>Sun, 19 Sep 2021 05:55:09 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>chae_eun.log</title>
            <url>https://images.velog.io/images/chae_eun/profile/ecfa87e3-dc5a-4752-9c1b-0837722b8e55/KakaoTalk_20210918_174021628.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. chae_eun.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/chae_eun" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[웹서버(Web Server)와 웹어플리케이션 서버(WAS)]]></title>
            <link>https://velog.io/@chae_eun/%EC%9B%B9%EC%84%9C%EB%B2%84%EC%99%80-%EC%9B%B9%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EC%84%9C%EB%B2%84WAS</link>
            <guid>https://velog.io/@chae_eun/%EC%9B%B9%EC%84%9C%EB%B2%84%EC%99%80-%EC%9B%B9%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EC%84%9C%EB%B2%84WAS</guid>
            <pubDate>Sun, 19 Sep 2021 05:55:09 GMT</pubDate>
            <description><![CDATA[<h3 id="was와-web-server를-알아보기-전">WAS와 Web Server를 알아보기 전!</h3>
<h4 id="span-stylecolor--green웹-web-span이란"><span style="color : green">웹 (WEB) </span>이란?</h4>
<p> _인터넷을 기반으로하여 정보를 공유, 검색할 수 있게 해주는 서비스 _</p>
<h4 id="span-stylecolor--green서버-server-span란"><span style="color : green">서버 (Server) </span>란?</h4>
<p><em>클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터시스템.</em></p>
<p>하나의 컴퓨터가 네트워크로 연결된 다른 하나 또는 그 이상의 컴퓨터들에게 어떠한 서비스를 제공해주면, 그 서비스를 제공하는 컴퓨터가 서버, 서비스를 받는 컴퓨터는 클라이언트가 된다. </p>
<p>서버인 컴퓨터는 클라이언트가 될 수도 있다.</p>
<p>예를들면 컴퓨터 A는 컴퓨터 B,C,D등에게 맛집들의 정보를 제공해주는 기능을한다. A는 여기서 <strong>서버</strong>의 역할을 한다.</p>
<p>A는 그 맛집들의 위치정보를 제공해주기위해서 컴퓨터 X에게 그 정보를 제공받는다. 그럼 이때 A는 <strong>클라이언트</strong>가 된다.</p>
<p>우리의 컴퓨터도 서버가 될수 있지만 컴퓨터의 부하, 통신의 질이 떨어진다.
따라서 보통의 회사나, 개인등은 IDC에 있는 컴퓨터를 사용하거나. 본인 회사에 서버컴퓨터를 구축하거나, AWS 클라우드 컴퓨팅 서비스를 이용한다.</p>
<h4 id="span-stylecolor--green웹-어플리케이션-web-application-span-이란"><span style="color : green">웹 어플리케이션 (Web Application) </span> 이란?</h4>
<p><em>웹에서 실행되는 응용프로그램</em></p>
<h4 id="span-stylecolor--green웹컨테이너-web-contaioner-span-란"><span style="color : green">웹컨테이너 (Web Contaioner) </span> 란?</h4>
<p><em>JSP나 서블릿을 구동할 수 있는 환경을 제공, 동적인 컨텐츠를 생성하는 역할</em></p>
<h2 id="was--web-server">WAS &amp; Web Server</h2>
<ul>
<li><p>** <span style="color : green">웹서버(Web Server) </span> ** 
클라이언트로부터 HTTP요청을 받아서 HTML, css, image와 같은 <strong>정적인 컨텐츠</strong>를 제공하는 프로그램</p>
<p><em>정적컨텐츠?</em> 
-&gt; 요청인자값에 상관없이 달라지지않는 컨텐츠. 어떤 사용자이건 동일한 응답을 제공 (HTML, css, image)</p>
<p><em>기능</em>
-&gt; 클라이언트로부터 HTTP요청을 전달받음
-&gt; 정적컨텐츠 요청일 경우 요청에 대한 데이터를 만들어서 응답
-&gt; 동적컨텐츠 요청일 경우 WAS에게 전달하고, WAS가 처리한 결과를 클라이언트에게 응답으로 제공</p>
<ul>
<li>** <span style="color : green">웹어플리케이션 서버 (WAS:Web Application Server) </span> ** 
DB조회나 다양한 비지니스로직처리를 요구하는 동적인 컨텐츠요청에 대해서, 이를 제공하기 위해 만들어진 프로그램</li>
</ul>
<p><em>동적컨텐츠?</em>
-&gt; 요청인자값에 따라 바뀔 수 있는 컨텐츠</p>
<p><em>기능</em>
-&gt; 클라이언트로부터 HTTP요청을 받을수 있고, 요청에 따른 정적컨텐츠 제공가능
-&gt; 정적인 페이지에서 처리할 수 없는 DB조회나 다양한 로직처리를 통한 동적컨텐츠 제공가능
-&gt; php, jsp와 같은 언어들을 사용해서 동적인 페이지 생성가능</p>
<p><img src="https://images.velog.io/images/chae_eun/post/06dc1865-9c69-4d5a-8602-941fd60f3257/was-1.JPG" alt=""></p>
<h4 id="따라서-was는-span-stylecolor--red-웹서버--웹컨테이너-web-container-span-라고-볼-수-있다--brbr">따라서 WAS는 &quot;<span style="color : red"> 웹서버 + 웹컨테이너 (Web Container) </span>&quot; 라고 볼 수 있다.  <br><br></h4>
</li>
</ul>
<p><strong>Web Server</strong> (정적) vs <strong>WAS</strong> (정적 + 동적)</p>
<p><strong>WAS와 Web Server의 차이는 한마디로,</strong> 
<em>&quot;사용자와, 상황의 변화에 따라서 서로다른 응답을 줄 수 있는가의 여부이다&quot;</em><br><br></p>
<h3 id="그렇다면-was가-정적인처리와-동적인처리-모두-가능한데-왜-web-server가-필요할까">그렇다면 WAS가 정적인처리와 동적인처리 모두 가능한데, 왜 Web Server가 필요할까?</h3>
<p> <img src="https://images.velog.io/images/chae_eun/post/9b86d695-78e8-4637-8563-c51235b61ad4/was-2.JPG" alt=""></p>
<ul>
<li><p><strong><span style="color : green">기능을 분리하여 서버의 부하를 방지한다.</span></strong>
클라이언트에게 요청이 오면 Web Server가 먼저 받아서 정적,동적처리인지 확인을 하고
정적인처리면 응답을 제공하고, 동적인 처리면 WAS에게 넘긴다</p>
</li>
<li><blockquote>
<p><em>WAS는 동적인처리에 집중할 수 있어서 서버의 부하가 덜하다.</em></p>
</blockquote>
</li>
<li><p><strong><span style="color : green">보안강화에 유리하다.</span></strong>
Web Server와 WAS를 물리적으로 분리하면, 공격이 왔을 때 Web Server가 앞단에 존재하므로 중요한정보다 담긴 DB나 비지니스로직가지 접근하지 못하게 한다.
(실제서버 외부에 노출하지 않음)</p>
</li>
<li><p><strong><span style="color : green">여러대의 WAS연결이 가능</span></strong>
대용량의 웹 어플리케이션 같은 경우 여러대의 WAS를 사용한다.
웹서버는 여러대의 WAS에 대한 로드밸런싱 기능을 할 수 있어서, WAS가 처리해야하는 요청을 여러대의 WAS가 나누어서 처리할수 있도록 설정할 수 있다.
여러대 WAS의 Health Check를 통해서 서버의 상태를 확인해서 정상적인 서버에만 요청을 할 수 있다.
여러대의 WAS가 존재하면 다른종류의 WAS로 서비스가 가능하다.
(한대는 jsp, 한대는 php 등...)
<br><br></p>
</li>
</ul>
<p>** + <span style="color : green">로드밸런싱이란?</span><strong><br>
&#39;부하분산&#39; 이라고도하며 컴퓨터 네트워크 기술의 일종으로, 서버의 부하를 방지하기 위해 서버를 분산하여 가햐지는 부하를 적절하게 분산하는 작업이다.
한마디로 두대이상의 컴퓨터에 작업을 나누는 것 이라고 볼 수 있고, 이 작업을 담당하는 장비를 **&#39;로드밸런서&#39;</strong>라고 한다.<br><br></p>
<p>** + <span style="color : green">Health Check란?</span><strong><br>
 서버에 주기적으로 HTTP요청을 보내서</strong> 서버의 상태를 확인<strong>하는 것 (200응답이 정상적으로 오는지)
** interval</strong> : Health Check를 통해서 서버 상태를 확인하는 주기
 <strong>fail</strong> : 요청의 n회이상 실패하면 서버가 비정상이라고 인지
** passes** : 서버가 다시 복구되어 n번 연속 성공하면 서버가 정상적인 상태라고 인지</p>
<p> -&gt; n값은 지정이 가능하다</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[OSI 7계층]]></title>
            <link>https://velog.io/@chae_eun/OSI-7%EA%B3%84%EC%B8%B5</link>
            <guid>https://velog.io/@chae_eun/OSI-7%EA%B3%84%EC%B8%B5</guid>
            <pubDate>Sat, 18 Sep 2021 14:48:09 GMT</pubDate>
            <description><![CDATA[<h3 id="osi-7계층이란-무엇이고-이것은-왜-필요할까">OSI 7계층이란 무엇이고, 이것은 왜 필요할까?</h3>
<p>OSI 7계층이란 국제표준기구 ISO에서 만든 <span style="color: red">네트워크통신의 7단계 과정</span>이다.
이것이 필요한 이유는 다음과 같다.</p>
<p><em>&quot;네트워크 통신이 이루어지는 과정을 단계별로 파악하여, 문제가 발생할 시에는 문제가 일어난 곳을 찾아서 빠르게 해결할 수 있도록 하기 위해&quot;</em></p>
<p><img src="https://images.velog.io/images/chae_eun/post/01016aec-b8d6-4bc3-b92d-228e27b22443/OSI-1.jpg" alt="OSI 7계층"></p>
<ol>
<li><p><span style="color: red"><strong>물리계층</strong></span> (Physical Layer) <strong>[비트단위의 신호를 전기신호로 변환해 전송해주는 계층]</strong></p>
<p>물리계층에서는 0과1이 나열된 신호를 아날로그 신호로 변환해서 전선을 통해 흘려보내고, 아날로그 신호가 들어오면 0과 1의 나열로 변환해주는 열할을 수행한다.</p>
<ol start="2">
<li><span style="color: orange"><strong>데이터 링크계층</strong></span> (Data Link Layer) <strong>[동일한 네트워크 내에서의 데이터 전송을 담당하는 계층]</strong></li>
</ol>
<p>오류제어, 흐름제어의 기능이 있다. 
데이터 전송시에 오류를 감지하고 오류가 발생할 경우 재전송을 한다.
만약 하나의 컴퓨터에 여러대의 컴퓨터에서 데이터를 전송할 경우, 그 데이터를 받는 컴퓨터에서는 데이터를 잘 끊어 읽는 것이 매우 중요하다. 
따라서 데이터 링크계층에서는 데이터의 앞 뒤에 특정한 비트열을 붙이는 Framing작업을 수행한다.
2계층의 장비로는 <strong>스위치</strong>가 있는데, <strong>스위치</strong>는 데이터의 목적지를 확인해서, 특정 목적지에만 그 데이터가 전달될 수 있도록 해주는 역할을 수행한다.</p>
</li>
<li><p><span style="color: green"><strong>네트워크계층</strong></span> (Network Layer) <strong>[서로다른 두 네트워크간의 데이터 전송을 담당하는 계층]</strong>
IP나 라우터가 속한 계층으로 호스트에 IP주소를 부여한 후, 데이터의 해당 도착지까지의 최적의 경로를 찾아(라우팅) 선택하고, 데이터를 전송한다.
3계층의 장비중 <strong>라우터(Router)</strong>는 서로다른 네트워크에 속한 컴퓨터끼리 서로 통신이 가능하게 해주는 장비다. (우리가 알고 있는 공유기)
라우터와 라우터는 또다른 라우터로 연결할 수 있고, 이렇게 전세계에 컴퓨터가 계층구조로 연결되어 있는 것을 인터넷이라고 한다.</p>
</li>
<li><p><span style="color: skyblue"><strong>전송계층</strong></span> (Transport Layer) <strong>[사용자들간 <em>&quot;신뢰성있는 데이터 전송&quot;</em> 을 담당하는 계층]</strong>
서로다른 두 네트워크간의 데이터 전송, 흐름제어, 오류제어를 담당하는 계층이다. 기능들은 다음과 같다.
흐름제어 : 데이터의 전송량을 낮추거나 높이기를 요구
오류제어 : 받은 데이터가 손실이 없는지 확인하고, 손실,오류가 있다면 재전송을 요구
<strong>세그먼테이션</strong> : 상위계층의 데이터를 받아서 세그먼트(Segment)라는 단위로 나눔</p>
<p>-&gt; <strong><em>왜 세그먼테이션이 필요할까?</em></strong>
만약에 1GB의 동영상을 본다고 생각해보면, 세그먼테이션 작업이 이루어지지 않는다면, 1GB가 모두 다운받아질 때까지 동영상을 시청하지 못한다.
하지만 세그먼트 단위로 나누게 되면 다운받아진 일부분을 먼저 시청할 수 있게된다. 또한 파일을 다운받는 도중 연결이 끊기게 되는경우. 세그먼트 단위로 나누어 저장하게 된다면, 끊긴 다음부터 다시 받을 수 있게 된다.</p>
<ol start="5">
<li><p><span style="color: blue"><strong>세션계층</strong></span> (Session  Layer) <strong>[네트워크의 연결을 관리하고 지속시켜주는 계층]</strong>
세션의 파괴/생성/유지/복구등을 지원하는 계층이다.
서로다른 네트워크간의 연결을 관리해주고, 연결이 지속될 수 있도록 해준다.</p>
</li>
<li><p><span style="color: purple"><strong>표현계층</strong></span> (Presentation Layer) <strong>[응용계층이 이해할 수 있게 데이터를 표현하는 계층]</strong>
각각의 통신기기들이 서로다른 인코딩과 디코딩을 사용하는 경우가 있을 수 있다. 
이러한 경우를 대비해서 표현계층에서 데이터의 변환을 수행한다.
표현계층은 응용계층으로부터 전달받거나, 전송하는 데이터의 인코딩과 디코딩을 수행한다. 
즉, 응용계층에서 데이터를 이해할 수 있도록 응용프로그램에 맞게 데이터를 변환하는 작업을 수행하는 계층이다.</p>
</li>
</ol>
</li>
</ol>
<ol start="7">
<li><p><span style="color: pink"><strong>응용계층</strong></span> (Application Layer) <strong>[사용자와 직접적인 상호작용을 하는 계층]</strong>
웹브라우저(Chorme,Safari,...), 응용프로그램(한글, Word, PPT, ...), 프로토콜(HTTP, SMTP, FTP) 등이 속한 계층이다.
사용자 또는 어플리케이션이 네트워크에 접속할 수 있도록 해준다.
우리가 사용하는 응용서비스나 프로세스가 바로 이 계층에서 동작한다고 볼 수 있다.</p>
<h3 id="데이터의-encapsulation--decapsulation-과정">데이터의 Encapsulation &amp; Decapsulation 과정</h3>
<p><img src="https://images.velog.io/images/chae_eun/post/870f0223-7c03-4ddb-be97-ffbcedd7e603/osi-3.JPG" alt=""></p>
<h4 id="encapsulation-캡슐화">Encapsulation (캡슐화)</h4>
<ul>
<li>응용계층에서 데이터를 캡슐화해서 내려보낸다.</li>
</ul>
</li>
</ol>
<ul>
<li><p>전송계층에서 TCP인지 UDP인지에 대한 정보 + 출발지 도착지에대한 포트번호를 헤더에 넣어서 캡슐화 (<strong>단위 : 세그먼트(Segment)</strong>)
네트워크 계층으로 내려보냄
<del><em>여기서 잠깐!</em></del>
TCP : 데이터를 전송한 후 데이터가 손실되었는지, 잘 전달되었는지 확인하고, 만약 데이터가 손실되었거나 오류가 있다면 재전송 -&gt; 신뢰성이 높음
UDP : 일단 데이터를 전송하면 그 뒤로 신경쓰지 않음(손실, 오류여부). -&gt; 신뢰성은 낮지만 속도는 빠름. 스트리밍 등에서 사용
포트번호 : 목적지 컴퓨터의 최종 도착지인 프로세스까지 데이터가 잘 도달할 수 있도록 포트번호를 사용</p>
<ul>
<li><p>네트워크 계층에서 출발지 &amp; 도착지의 IP주소를 마찬가지로 헤더에 넣어 캡술화(<strong>단위: 패킷(Packet)</strong>)
데이터링크계층으로 내려보냄  </p>
</li>
<li><p>데이터링크 계층에서 출발지의 MAC주소와, 가장가까운 라우터의 MAC주소를 헤더의 넣어서 캡슐화, 오류제어를 위한 Trallier도 넣음 (<strong>단위: 프레임(Frame)</strong>) 
물리계층으로 보내고 물리계층에서는 이를 아날로그 신호로 변환한 뒤에 데이터를 전송한다.</p>
</li>
</ul>
<h4 id="decapsulation-역캡슐화">Decapsulation (역캡슐화)</h4>
<p>수신자가 데이터를 받으면 물리계층부터 헤더의 정보를 확인, 떼어낸 후 상위 계층으로 전달. 이과정을 반복해서 응용계층에서 data형태가 됨</p>
<h3 id="tcpip-">TCP/IP ?</h3>
<p>실제로 우리가 인터넷 통신에 사용하는 것은 OSI가아니라 TCP/IP 4계층이다.
<img src="https://images.velog.io/images/chae_eun/post/dc456f6f-94a8-4cc1-a12a-e06d2a588ef8/OSI-2.jpg" alt=""></p>
<p><strong>&lt; <span style="color: red">TCP/IP 4계층</span> &gt;</strong><br>네트워크 통신에 실제로 사용되는 계층으로, 현대의 인터넷은 이 모델을 따르고 있다.
OSI 7계층의 표현계층과 세션계층이 응용계층으로 통합되고, 물리계층과 데이터링크 계층이 하나로 통합된 모델이다.</p>
</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>