01. 네트워크, 인터넷, 웹

  1. 네트워크
    • 네트워크(Network)의 사전적 의미는 "전선이나 혈관, 통로 등으로 이루어진 망형 조직"
    • 방송사 네트워크, 인맥을 의미하는 휴먼 네트워크 등
    • IT분야에서는 '컴퓨터와 컴퓨터를 연결해 주는 망'의 개념으로 컴퓨터 네트워크의 의미로 사용
    1. TCP/IP
      • TCP/IP(Transmission Control Protocol/Internet Protocol)는 컴퓨터 간에 통신할 수 있도록 만든 프로토콜.
      • 인터넷의 기반 네트워크 시스템으로 하드웨어, 운영체제, 접속 매체에 관계없이 동작할 수 있는 개방형 구조.
    1. IP 주소
      • IP 주소(IP Address)는 TCP/IP로 연결된 네트워크에서 각각의 컴퓨터를 구분하려고 사용하는 주소
      • 숫자로 구성되어 있고, 네개로 구분된 10진수를 사용
  1. 인터넷(Internet)
    • 인터넷은 전 세계가 하나로 연결된 네트워크를 의미하는 고유명사
    • internet은 내부 네트워크를 의미(Internet과 다름)
    • 인터넷은 네트워크 인프라이고 www,email 등은 인터넷 기반 서비스임
    • 인터넷은 웹과 다름
    • 대표적인 인터넷 기반 서비스            
    1. 프로토콜
      • 네트워크에 연결된 컴퓨터들 간의 통신 규약
      • 인터넷 서비스들은 TCP/IP 4계층 중 응용계층에 해당함
    2. 포트
      • 네트워크 서비스를 접속하기 위한 접점
      • 컴퓨터에서 여러 네트워크 서비스를 제공하는 경우 이를 구분하기 위한 용도로 사용
      • 은행의 구분된 업무 창구와 유사한 개념
    3. 도메인 네임 시스템
      • DNS(Domain Name System)
        • 인터넷에 연결된 컴퓨터 구분을 위해 사용하는 IP주소 대신 알기 쉬운 이름 형태로 컴퓨터를 구분하기 위한 인터넷 서비스/시스템 중 하나
        • 호스트(컴퓨터) 이름(www) + 도메인 이름(hanb.co.kr) 형태로 구성됨.
        • 예)www.naver.com, www.daum.net, www.hanb.co.kr 등
        • 도메인 관리 기관을 통해 일정 비용을 지불하고 사용 가능
      • DNS 처리 과정
        1. 도메인 네임 입력한다.
        2. 네트워크 서비스 제공 회사(KT, SK, U+등)의 DNS 서버에 도메인 이름을 요청한다.
        3. DNS 서버는 한빛미디어 DNS 서버인 ns.hanb.co.kr에 www라는 컴퓨터의 IP 주소를 요청한다.
        4. 한빛미디어 DNS 서버는 DNS zone file에서 www 컴퓨터의 IP 주소를 찾아서 알려준다.
        5. DNS 서버는 다시 요청한 클라이언트에 IP 주소를 알려준다.
    • 월드 와이드 웹(World Wide Web ,www)
    • 인터넷에서 운영되는 서비스 중 하나로 많은 사람들이 '웹=인터넷'이라고 생각할 정도로 대표적인 인터넷 서비스
    • 흩어져 있는 연구자들이 손쉬운 방법으로 정보를 공유하기 위해 HTML이라는 간단한 마크업 언어를 통해 콘텐츠를 제공하고 HTTP라는 프로토콜을 사용해 TCP/IP 네트워크에서 사용하기 시작함
    • 웹 브라우저 소프트웨어와 인터넷에 연결만 되어 있으면 PC, 스마트폰, 테플릿 등 운영체제와 하드웨어 상관 없이 동일한 서비스 제공이 가능
    1. 웹 서버와 HTTP
      1. 버(Server)
        • 네트워크에서 서비스를 제공하는 컴퓨터
        • 웹 서버, FTP 서버, 파일 서버, 프린트 서버
      2. 클라이언트(Client)
        • 서비스를 이용하는 컴퓨터
        • PC, 스마트폰, 테블릿 등
      3. HTTP(Hyper Text Transfer Protocol)
        • 웹 서비스에 사용되는 통신 규격
        • 간단한 명령어와 헤더 규격으로 되어 있음
    2. 웹 서비스의 동작 과
      1. 웹 서버 소프트웨어
        • 서버에서 웹 서비스를 제공하는 소프트웨어
        • 아파치(Apache), 마이크로소프트 IIS(Internet Information Server)가 대표적임
      2. 클라이언트 소프트웨어
        • 웹 서비스를 이용하기 위한 클라이언트 소프트웨어 -> 웹 브라우저(Web Browser)
        • 인터넷 익스플로러(Internet Explorer), 크롬(Chrome), 파이어폭스(FireFox), 애플 사파리(Safari) 등
      1. 웹 브라우저에서 http://www.xxx.com/index.html을 입력
      2. www.xxx.com 도메인의 IP주소를 DNS 서버로부터 받음
      3. IP 주소의 해당 서버 80번 포트로 접속을 시도
      4. 웹 서버는 요청 내용을 분석하고 요청된 index.html 파일을 디스크에서 읽음
      5. 웹 서버는 파일 내용을 텍스트 그대로 요청한 클라이언트에 전송
      6. 웹 브라우저는 웹 서버에서 보내는 텍스트 내용 중 HTML 태그를 분석해 적절히 변환하여 화면을 구성

02. 웹 프로그래밍 언어와 주요 기술

  1. 웹 프로그램의 개요
    1. 일반적인 프로그램
      • 컴퓨터에 설치 후 사용(스마트폰, 테블릿도 동일)
      • 기본적으로 해당 디바이스에서 프로그램이 실행되고 경우에 따라 필요한 데이터는 서버로부터 수신
    2. 웹 프로그
      • 별도의 설치 없이 서버에 접속하는 것만으로 필요한 기능/서비스를 이용할 수 있음
      • 프로그램은 서버에서 실행되고 실행 결과만 컴퓨터의 브라우저를 통해 보여짐
      • 데이터 입력, 메뉴선택, 버튼 클릭 등 사용자와의 상호작용 처리를 위해 클라이언트에서 처리해야 되는 프로그램적인 요소도 있음
      • 웹 프로그램은 서버와 클라이언트의 협력에 의해 구현
      • 웹 프로그램 개발을 위해서는 서버 프로그래밍 기술과 클라이언트 프로그래밍 기술을 모두 알아야함
    1. 클라이언트 기술
      • 기본적으로 브라우저에 의해 처리되는 요소
      • 화면 구성, 스타일, 동적 이벤트처리 등 사용자 상호작용 담당
      1. HTMlL(Hyper Text Markup Language)
        • 웹 서비스를 표현하기 위해 사용하는 언어
        • <HTML></HTML> 과 같은 마크업 구조
        • 최근 HTML5가 널리 사용되고 있음
      2. 자바스크립트(Javascript)
        • 자바와 유사한 문법구조를 제공하는 웹 클라이언트 개발언어, 실제 자바와는 무관
        • 웹 브라우저에서 해석, 웹 브라우저 성능 평가에서 매우 중요한 요소
        • jQuery와 같은 공개 라이브러리가 유명함
        • JSON(JavaScript Object Notation)은 클라이언트 서버간 정보 교환에 널리 사용
      3. CSS(Cascading Style Sheet)
        • HTML에서 레이아웃이나 디자인 요소를 분리
        • 최근 웹 클라이언트 개발은 HTML5+CSS3+JavaScript 임
    2. 서버 기술
      • HTML 파일은 파일 내용을 수정하기 전까지는 내용이 변하지 않는 정적인 구조
      • 사용자 요청에 따라 다른 정보를 제공하거나 데이터베이스를 통한 서비스를 위해서는 별도의 프로그램 기술이 필요
      1. ASP.NET
        • MS 윈도우 기반의 서버 프로그램 기술
        • .NET 기반의 컴포넌트 사용 가능
        • MS 윈도우 종속과 상용 라이센스 정책으로 대규모 공개 웹 서비스 개발에는 거의 사용되지 않음
      2. PHP(Professional Hypertext Preprocessor)
        • 처리속도가 빠르고 다양한 운영체제와 웹 서버 환경에서 실행 가능
        • APM = Apache + PHP + MySQL
        • 오픈소스 게시판, 위키 프로그램, 연구용으로 널리 사용
      3. JSP(Java Server Page)
        • 자바 서블릿 기반의 웹 프로그래밍 기술
        • 자바의 모든 기능을 사용할 수 있으며 안정성과 확장성이 뛰어나 가장 많이 사용되고 있는 웹 프로그래밍 기술
03. 스마트 시대의 웹 프로그래밍
  1. 웹 프로그램의 현재와 미래
    1. WOA(Web Oriented Architecture)
      • 기존 PC 중심의 사용자 환경에서 스마트폰, 태플릿, 스마트TV, 스마트카 등 새로운 기기들이 출현
      • 한 사람이 여러 기기를 통해 동일한 서비스와 정보로의 접근이 필요해짐
      • 즉 여러 기기 간의 끊어짐 없는(Seamless) 서비스가 요구되면서 One Source Multi Use를 위한 N-Screen 혹은 N-Device 서비스가 요구
      • 이러한 요구사항 해결을 위해 다음과 같은 기술들이 급성장 하고 있음
        • 하드웨어 인프라적인 측면 : 클라우드라고 불리는 대규모의 공용 컴퓨팅 서비스, 가상화 SW 포함
        • 소프트웨어적인 측면 : WOA
      • 기존 SOAP(Simple Object Access Protocol) 기반의 SOA(Service Oriented Architecture)에서 REST(Representational State Transfer) 기반의 경량 웹 서비스 모델 발전
      • Restful 웹 서비스는 JAX-RS(JSR-311)로 자바 규격에 공식적으로 포함됨
      • WOA는 웹을 중심으로 전체 시스템 아키텍처를 설계해 나가는 기술
    2. 프레임워크(Framework)
      • 일반적인 개발의 문제점
        • 프로그램의 규모 확대 -> 높은 생산성, 쉬운 유지 보수, 기능의 변경이 확장이 용이한 개발 기술 필요
        • 개발방법론, 소프트웨어 디자인 패턴, 리팩토링, 프레임워크 등 소프트웨어 공학적 기술 등장
      • 프레임워크(Framework)는 무언가를 만들기 위한 틀
      • 소프트웨어적으로는 목적에 맞게 잘 설계된 구조와 미리 구현된 라이브러리가 포함된 소프트웨어 형태
      • 프레임워크를 사용하면 정해진 규격에 따라 프로그램 구조를 만ㄷ르어야 하며, 개발자가 신경쓰거나 처리해야 할 많은 일과 이벤트 관리는 프레임워크를 통해 처리
      • 여러 유틸리티 라이브러리도 제공하기 때문에 개발자는 비교적 적은 노력으로도 고품질의 소프트웨어 개발이 간으해짐
      • 대표적인 프레임워크는 스프링프레임워크로 웹 개발을 포함해 대규모 시스템 개발에 적합한 기술 구조를 제공함
  2. 모바일 앱 개발과 웹 프로그래밍
    1. 모바일 기기의 특징
      1. 면크기
        • 스마트폰의 경우 3.5 ~ 6인치
        • 태플릿의 경우 7 ~ 12인치
      2. 하드웨어 아키텍처
        • PC의 x86과 다른 ARM 계열 CPI사용
        • 멀티코어, 고성능 GPU, 64bit 지원
      3. 운영체제
        • 애플의 iOS와 구글 안드로이드가 대표적
        • 그 외 구글 크롬, WebOS, MS 윈도우 8 등
      4. 무선통신
        • LTE, WIFI 등 고속 무선 인터넷 연결
        • 블루투스, NFC 등 근거리 통신 지원
      5. 입력장치
        • 터치 스크린, 터치 펜
        • 가속센서, 자이로센서 등
      6. 배터리
        • 대용량 배터리
        • 배터리 절약을 위한 각종 저전력 기술
    2. 모바일 앱 개발 유
      1. 네이티브 앱
        • 운영체제별 별도 개발환경과 실행 파일
        • 빠른 속도, 기기별 특화 기능 사용의 편리함
      2. 웹 앱
        • 여러기기와 운영체제 지원의 어려움으로 웹 기술을 사용한 모바일 웹 기술 주목
        • 모바일 웹 제약 사항
          • 항상 인터넷에 연결되어 있어야 함
          • 하드웨어나 운영체제 기능 접근 제한(GPS, 센서, 카메라, 주소록 등)
      3. 하이브리드 앱
        • 메인 프로그램은 네이티브로, 프로그램 구성요소는 웹 기반으로 구현
        • 장치 기능 접근을 위해 센차터치, 폰갭 등의 툴킷 사용           


Posted by OnewayK
,