네트워크란?
네트워크는 컴퓨터와 컴퓨터를 연결해주는 망 이라고 생각하면 된다.
네트워크를 구축하려면 컴퓨터 간의 연결 규격 즉, 프로토콜(Protocol)이라는 것이 필요하다. 여러 프로토콜 중 가장 대표적으로 널리 쓰이고 또한 인터넷에서도 사용되고 있는 TCP/IP에 대해 살펴보자.
TCP/IP
TCP/IP(Transmission Control Protocol/Internet Protocol)는 컴퓨터 간에 통신할 수 있도록 만든 프로토콜 중 하나이다. 이 프로토콜에 기반하고 있는 것이 인터넷인데, TCP/IP가 인터넷 기반 프로토콜로 자리 잡은 이유는 하드웨어, 운영체제, 접속 매체와 관계없이 동작할 수 있는 개방형 구조이기 때문이다. 원래 TCP/IP는 OSI(Open Systems Interconnection) 7계층에서 유래한 것으로, TCP/IP는 다음과 같은 네 개로 이루어져 있다.
응용 계층(Application) - WWW, FTP, Telnet, SMTP와 같은 네트워크 프로그램으로 구성
전송 계층(Transport) - 각 시스템을 연결하고 TCP 프로토콜을 이용하여 데이터를 전송
인터넷 계층(Internet) - IP 프로토콜을 이용하여 데이터를 정의하고 경로를 배정
물리 계층(Network Interface) - 실제 네트워크를 접근할 수 있도록 하는 물리적 부분
원래 OSI 7계층은 네트워킹을 위한 물리적 장비에서 실제 서비스를 제공하기 위한 애플리케이션에 이르는 단계를 계층화한 것을 말한다. 이러한 계층화를 통해, 상위 레벨에서는 하위 레벨에서 구현한 내용을 모르더라도 표준화된 인터페이스를 통해 네트워크 시스템을 개발하고 운영할 수 있다(추상화). TCP/IP는 OSI 7계층을 좀 더 단순화해서 4계층으로 정의한 것이다.
TCP - 데이터의 흐름 관리, 데이터의 정확성 확인 등의 역할을 수행
IP - 데이터(패킷)를 목적까지 전송하는 역할을 담당
TCP/IP는 개방형 구조로서, 특정 운영체제나 하드웨어에 영향을 받지 않고 근거리와 원거리 모두 데이터를 전송할 수 있다.
IP 주소
IP 주소는 TCP/IP로 연결된 네트워크에서 각각의 컴퓨터를 구분하려고 사용하는 주소이다. IP 주소는 숫자로 구성되어 있고 '123.123.123.123'과 같이 네 개로 구분된 10진수를 사용한다.
컴퓨터가 TCP/IP 네트워크에 연결되려면 IP 주소가 있어야 하고, 인터넷에 연결된다면 전 세계 모든 컴퓨터에 원격으로 접속할 수 있어야 한다. 하지만 수많은 컴퓨터에 각기 다른 고유한 IP 주소를 할당하기에는 한계가 있고, 모바일 인터넷의 급속한 확산과 함께 IP 주소 고갈 문제가 심각하게 대두되었다. 그러나 현재는 초기에 걱정했던 것보다 문제가 다소 완화되었다. 네트워크 및 라우터 기술의 발달로 사설 IP를 통해 대부분의 인터넷 서비스를 이용할 수 있게 되었기 때문이다. 따라서 모든 인터넷 클라이언트가 공인 IP를 사용할 필요가 없고 이를 해결하려고 생각했던 방안인 IPv6의 보급은 다소 늦춰질 전망이다.
사설 IP는 일반적으로 10.x.x.x, 192.x.x.x 등 몇 가지 IP 블록을 사용하지만, 실제로는 모든 인터넷 IP를 사용할 수 있다.
다만 네트워크 구성상 직접 인터넷에 연결되지 않고 라우터 장비 등에서 제공하는 NAT(Network Access Translator) 기능을 이용해서 접속해야 한다. NAT를 이용해서 공인 IP로 대응하면 인터넷에 접속할 수 있다. 쉽게 생각하면 집에서 사용하는 유무선 인터넷 공유기를 생각하면 된다. 공유기에 연결된 컴퓨터나 스마트폰은 DHCP(Dynamic Host Configuration Protocol)라고 하는 동적 IP 할당 프로토콜에 의해서 사설 IP를 배정받게 되고 공유기를 통해 인터넷 연결이 관리된다.
인터넷
internet은 내부 네트워크를, Internet은 전 세계가 하나로 연결된 네트워크를 의미한다.
즉, 인터넷 자체는 네트워크 인프라이고 우리가 알고 있는 WWW, Email 등은 인터넷 기반의 서비스인 셈이다.
인터넷 기반 서비스
인터넷 초창기에는 이메일, FTP, Telnet, News 등이 주된 서비스였지만 지금은 웹이 절대적이다. 최근의 이메일은 대부분 네이버, 구글과 같은 웹 기반의 메일 서비스를 이용하는 경우가 많다. 인터넷 기반 서비스에는 웹(WWW), 이메일(Email, 네이버 이메일 같은 웹 기반 이메일 서비스가 아님), FTP(파일 전송 서비스), Telnet(원격 로그인 서비스), DNS(도메인 이름 변환 서비스), News(인터넷 뉴스 서비스) 등이 있다.
도메인 네임 시스템
우리나라 국민이라면 다른 사람과 구별되는 고유 번호인 주민번호가 있다. 이처럼 컴퓨터도 네트워크에서 컴퓨터를 구분해주는 IP 주소가 있다. 우리가 사람을 부를 때 주민 번호로 부르지 않는 것처럼 인터넷도 IP 주소로 부르지 않는다.
도메인 이름은 전 세계적인 관리 체계가 있기 때문에 마음대로 붙일 수 있는 것은 아니며, 도메인을 관리하는 기관에 일정 비용을 지불하고 구매해야 한다.
우리가 일상적으로 사용하는 도메인 이름을 통한 웹 사이트 접속도 겉으로는 보이지 않지만 내부적으로 도메인 이름을 IP 주소로 변환하는 서비스를 이용하는 것이다. 이러한 서비스를 도메인 네임 시스템(DNS : Domain Name System)이라고 한다.
웹
WWW(World Wide Web) 또는 줄여서 웹은 인터넷에서 운영되는 서비스 중 하나로, 웹 자체가 인터넷을 말하는 것은 아니다. 대부분 웹 = 인터넷이라고 생각하는 경우가 많지만 그렇지 않다. 그만큼 웹이 인터넷의 대표적인 서비스라고 할 수 있지만 개발자라면 좀 더 정확한 내용을 알고 있어야 한다(그렇다고 한다..).
웹의 개발 목적은 흩어져 있는 연구자들이 손쉬운 방법으로 정보를 정리하고 공유하기 위한 차원이었다. 또한 HTML이라는 간단한 마크업 언어를 통해 콘텐츠를 제공하고 HTTP라는 프로토콜을 사용해서 TCP/IP상에서 처음 사용했다.
웹 서버와 HTTP
네트워크에서 서비스를 제공하는 컴퓨터를 서버(Server)라고 하고, 서비스를 이용하는 컴퓨터를 클라이언트(Client)라고 한다. 과거에는 서버와 클라이언트가 분명히 구분되었지만, 최근에는 컴퓨터 성능의 향상으로 개인 PC도 서버 역할을 수행할 수 있게 되었다. 따라서 이제는 서버와 클라이언트를 하드웨어적인 특징이 아니라 서비스를 제공하는 관점에서 구분한다.
웹 서비스를 제공하는 컴퓨터를 웹 서버, FTP 서비스를 제공하는 컴퓨터를 FTP 서버라고 한다. 드롭박스, N드라이브 같은 클라우드 기반 디스크 서비스 역시 인터넷 기반의 서비스를 제공하는 서버의 한 형태이다.
프로토콜은 이러한 서버들이 클라이언트와 통신하기 위한 규격으로 HTTP는 웹의 통신 프로토콜이다.
웹 서비스의 동작 과정
컴퓨터만 있으면 저절로 웹 서비스를 제공할 수 없다. 웹 서비스를 제공하려면 별도의 소프트웨어가 필요하다. 웹 서비스를 제공하는 소프트웨어를 웹 서버 소프트웨어라고 한다. 웹 서버 소프트웨어로는 아파치(Apache)가 가장 대표적이고, MS의 IIS 등이 있다.
클라이언트에서도 네트워크 서비스를 이용하려면 클라이언트 소프트웨어가 필요하고, 웹의 경우 웹 브라우저라고 하는 소프트웨어가 필요하다. IE, 크롬, 파이어폭스, 사파리 등이 여기에 해당한다. FTP나 이메일과 같이 다른 인터넷 서비스를 이용하려면 각각의 서비스를 이용하기 위한 해당 소프트웨어가 필요하다.
웹 프로그램의 개요
일반적으로 프로그램은 컴퓨터에 설치해서 사용해야 하지만, 웹의 경우에는 서버에 접속하는 것만으로도 필요한 프로그램(기능, 서비스)을 이용할 수 있다. 즉 프로그램은 서버에서 실행되고, 결과만 내 컴퓨터의 브라우저를 통해 보게 되는 것이다. 하지만 이때 브라우저의 화면이 단순히 보는 용도로만 끝나는 것이 아니다. 데이터 입력이나 메뉴 선택, 버튼 클릭 등 상호작용을 처리하는 동적인 부분은 서버가 처리하는 것이 아니라 클라이언트에서 처리해야 한다.
클라이언트 기술 - HTML, 자바 스크립트, CSS
서버 기술 - Servlet, JSP, ASP.Net, PHP
클라이언트/서버 공통 기술 - 자바, C, C#.Net
서버 기술
JSP
JSP는 서블릿이라고 하는 자바로 구현된 웹 프로그래밍 기술에 기반하고 있다. 따라서 JSP는 자바의 모든 기능을 사용할 수 있으며 자바로 구현된 컴포넌트의 연동이 용이한 구조로 되어 있다.
또한 PHP나 ASP처럼 HTML과 함께 스크립트를 사용할 수 있다는 장점도 있다. JSP는 기본적으로 서블릿으로 변경되어 실행되며, 메모리상에 적재된 서블릿을 스레드로 실행함으로써 시스템 자원을 절약하고 효율적인 공유를 할 수 있는 구조다.
JSP는 현재 가장 많이 사용되고 있는 웹 프로그래밍 기술로, 최근에는 스프링 프레임워크 등과 결합하여 많이 사용된다.
웹 프로그램의 현재와 미래
프레임워크
프레임워크는 무언가를 만들기 위한 틀을 의미한다. 소프트웨어적으로는 목적에 맞게 잘 설계된 구조와 미리 구현된 라이브러리가 포함된 소프트웨어 형태를 말한다. 프레임워크를 사용하면 정해진 규격에 따라 프로그램 구조를 만들어야 하며, 개발자가 신경쓰거나 처리해야 할 많은 일과 이벤트 관리는 프레임워크를 통해 처리하게 된다.
그러나 프레임워크를 잘 만드는 것은 쉬지 않으며, 프레임워크를 설계하려면 소프트웨어 디자인 패턴을 적절히 활용할 수 있는 능력과 경험이 필요하다. 일반적으로 직접 프레임워크를 만들기보다는 잘 만들어진 오픈소스 프레임워크를 사용하는데, 현재 가장 대표적인 것은 스프링 프레임워크다. 스프링은 웹 뿐만 아니라 일반적인 어플리케이션 개발에도 널리 쓰이며, 사용 목적에 따라 GUI 프레임워크, (웹)애플리케이션 프레임워크, O-R 매핑 프레임워크, 로깅 프레임워크 등으로 구분한다.
모바일 앱 개발과 웹 프로그래밍
하드웨어 아키텍쳐
스마트 기기 대부분은 ARM 계열 CPU를 사용한다. PC의 경우 x86이라는 인텔 게열의 CPU를 사용하는데 하드웨어 아키텍처 자체가 서로 다르다. 따라서 기존 PC의 프로그램은 스마트 기기에서 실행할 수 없고 애플리케이션은 운영체제의 영향을 받으므로 윈도우가 아닌 iOS와 안드로이드 운영체제에서 요구하는 규격에 따라 프로그램을 개발해야 한다.
'BE > JSP' 카테고리의 다른 글
이클립스와 MySQL 연동 (0) | 2022.02.10 |
---|---|
JDBC (0) | 2022.02.09 |
빈즈 (0) | 2022.02.09 |
서블릿 (0) | 2022.02.04 |
JSP 처리 과정과 MVC 패턴 (0) | 2022.01.30 |