공통기초 프로그래밍 개념 잡기

2. 네트워크와 인터넷

이번 강좌에서는 컴퓨터 네트워크에 대한 기본적인 내용과 함께 인터넷이 무엇인지 살펴보게 됩니다. 프로그램 개발을 위해서는 기본적인 네트워크 용어에서 부터 인터넷의 동작원리와 대표적인 서비스인 월드와이드웹(www)에 대해서도 정확한 동작원리를 배워야 합니다.

이 강의를 통해 컴퓨터 네트워크의 기본적인 구조동작원리를 이해하고 인터넷의 개념과 월드와이드웹의 구성요소와 동작원리를 배울수 있습니다.


01: 컴퓨터 네트워크(Computer Network)

컴퓨터 네트워크는 컴퓨터와 컴퓨터가 연결되어 서로 정보를 주고 받을 수 있는 물리적인 인프라를 말합니다. 이러한 컴퓨터 네트워크는 하드웨어운영체제 그리고 응용 소프트웨어의 결합으로 동작 하며 표준화된 규격을 통해 정의되어 있습니다.

여기서는 주요 용어와 꼭 알아야 하는 개념을 위주로 학습하게 됩니다.

1) OSI 7 Layer

네트워크 구성요소계층형태로 정리한 규격 입니다. 전통적으로 네트워크의 가장 기본적인 구조로 하드웨어에서 소프트웨어 영역 까지를 계층으로 분리해 각각의 계층이 서로 독립적으로 운영될 수 있도록 설계된 모델 입니다.

독립된 계층구조로 인해 모든 계층에 대한 구현을 한곳에서 담당할 필요가 없으며 계층별 규격(프로토콜)에 따라 각 계층은 하위 계층의 기능을 이용하는 형태이고 상위 계층에는 기능을 제공하는 구조로 되어 있습니다.

일반적으로 하위계층들은 하드웨어이고 상위계층소프트웨어로 구현됩니다.

2) 프로토콜(Protocol)

프로토콜은 데이터 통신을 위해 만들어진 규격으로 설명 할 수 있습니다. 쉽게 생각하면 어떤일을 하기위한 일련의 절차로 이해할 수 있습니다.

고객센터에 전화를 걸었을 때 상담사는 먼저 고객의 이름을 묻고 확인한 다음 무엇을 도와드릴까요? 라는 질문에 고객이 문제를 이야기 하고 하는 일련의 과정을 프로토콜로 생각할 수 있습니다.

네트워크에서 프로토콜은 컴퓨터와 컴퓨터간에 데이터를 주고 받기 위한 일련의 규격을 말하는 것으로 대표적인 프로토콜은 다음과 같습니다.

단순히 어플리케이션 프로그램을 개발하는 경우 개발자들이 TCP/IP 의 프로토콜 구조나 메시지 헤더 정보와 같은 것을을 알필요는 없습니다. 다만 HTTP와 같은 응용계층 프로토콜의 경우 해당 프로토콜에 대한 세부 내용을 알아야 프로그램을 개발할 수 있습니다.

카카오톡과 같은 채팅프로그램의 경우에도 메시지를 주고받기 위한 프로토콜이 정의 되어 있으며 카카오톡과 연동되는 프로그램을 개발한다고 하면 당연히 프로토콜 규격을 알아야 개발이 가능합니다.

3) TCP/IP(Transmission Control Protocol/Internet Protocol)

엄밀하게 말하면 TCP/IP는 Internet Protocol Suite 의 일부로 데이터전송 계층의 TCP와 인터넷 계층의 IP를 함께 부르는 용어 입니다. OSI 7 Layer 와 유사한 구조로 총 5계층을 정의하고 있습니다.

tcpip
[그림 : TCP/IP 계층구조]

4) 랜(LAN)

랜은 Local Area Network 의 줄임말로 말 그대로 근거리의 컴퓨터들을 연결한 네트워크를 말합니다. 여러 방식의 랜이 사용 되었지만 지금은 TCP/IP 프로토콜을 사용하는 이더넷(Ethernet) 방식을 보통 랜이라고 합니다. 유선의 경우 UTP 케이블로 연결되며 무선의 경우 WIFI 통신 규격에 따라 네트워크에 연결됩니다.

랜 구성을 위해서는 허브, 스위치 등의 장비가 필요하며 원거리 네트워크 연결을 위해서는 라우터 장비가 추가적으로 필요합니다.

5) 허브(Hub), 스위치(Switch), 라우터(Router)

허브, 스위치, 라우터는 모두 TCP/IP 네트워크를 구성하는 네트워크 장비 명칭 입니다.

허브

여러 컴퓨터를 LAN에 접속할 수 있도록 해주는 장치로 보통 컴퓨터에 연결된 랜선(UTP Cable)들이 1차적으로 모이는 곳이 허브 장비 입니다. 또한 전송거리도 길어지고 허브와 허브가 연결되어 더 큰 네트워크 구성이 가능해 집니다.

스위치

허브보다 고급 장비로 네트워크 성능향상과 보안향상이 가능합니다. 보통 2계층의 통신 프로토콜을 처리하므로 L2 스위치라고도 합니다. 네트워크 규모가 커지고 연결된 컴퓨터가 많을 경우 사용합니다.

라우터

서로 떨어진 네트워크들을 연결하기위해 주로 사용하는 장비로 예를들어 한 회사의 본사 건물의 LAN에 연결된 수십대의 컴퓨터들을 인터넷 망에 연결 하거나 혹은 다른 지역에 있는 지사와 연결하기 위해 필요한 장비 입니다.


02: 인터넷(Internet)

인터넷TCP/IP로 이루어진 네트워크들이 전세계적으로 연결된 네트워크 입니다. 초기에는 군사 및 연구 목적으로 네트워크들을 서로 연결하기 시작한 것이 배경이 되었으며 1990년대 들어 점차 일반인들에게도 개방되기 시작했고 지금은 인터넷이 없어서는 안되는 세상이 되었습니다.

가정집, 회사등의 컴퓨터들은 KT, LG U+와 같은 통신 사업자와 연결이 되고 국내의 네트워트는 해저 광케이블을 통해 미국과 연결되어 전세계로 확대되는 구조 입니다.

이러한 인터넷 이라는 네트워크 인프라를 이용한 다양한 서비스들이 존재하는데 예를들어 네이버, 구글과 같은 월드와이드웹(www) 서비스가 대표적입니다. 따라서 "나 인터넷 좀 할께"와 같은 표현은 적절하지 않습니다.

1) IP 주소(IP Address)

IP 주소는 인터넷에 연결된 컴퓨터에 부여되는 고유 주소 입니다. 총 12자리로 0~255 까지의 십진수로 각각 .으로 구분한 4영역으로 표현됩니다.

이론상 전세계에서 유일하게 할당된 공인IP 주소가 아닌 개인 네트워크의 사설IP는 정상적인 인터넷 서비스 이용이 불가능 합니다.

스마트폰을 비롯해 인터넷에 연결된 모든 컴퓨터들은 IP주소를 가지고 있습니다. 현재 여러분의 컴퓨터에 할당된 IP주소를 확인하려면 콘솔창에서 다음과 같이 입력하면 됩니다.

실행 결과는 대략 다음과 같으며 유선, 무선에 따라 ip 주소가 표현되는 장치명이 다를 수 있습니다.

# mac, linux
$ ifconfig

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	ether f4:0f:24:06:c2:db 
	inet6 fe80::825:85b8:18b0:2abd%en0 prefixlen 64 secured scopeid 0x5 
	inet 172.30.1.1 netmask 0xffffff00 broadcast 172.30.1.255
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active
# windows
C:\> ipconfig

이더넷 어댑터 이더넷:
   연결별 DNS 접미사. . . . :
   IPv4 주소 . . . . . . . . . : 10.0.1.20
   서브넷 마스크 . . . . . . . : 255.255.255.0
   기본 게이트웨이 . . . . . . : 10.0.1.1

할당된 IP주소가 다음 범위에 있다면 사설IP공유기통신사를 통해 할당된 주소로 이해하면 됩니다.

10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255

2) DNS(Domain Name Service)

DNSIP주소를 알기쉬운 이름으로 관리해주는 서비스 입니다. 예를들어 우리나라 국민의 경우 모두 고유번호라고 할 수 있는 주민번호가 있습니다. 개인을 가장 확실하게 구분할 수 있는 관리 체계인 셈이죠. 그러나 실제 생활에서는 사람을 부를때 주민번호로 부르기는 어렵습니다. 개인정보 유출 문제도 있고 무엇보다 길어서 외우기 어렵다는 문제도 있습니다. 이 경우 우리가 사용하는 것은 바로 이름 입니다.

이처럼 DNS 는 복잡한 IP주소 대신 이름을 통해 해당 컴퓨터를 찾아갈 수 있도록 만든 서비스 입니다.

DNS의 구성은 호스트명.도메인이름.구분자 로 이루어 집니다.

호스트명

해당 도메인에서 관리하는 컴퓨터의 이름입니다. blog.naver.com, cafe.naver.com 의 blog 와 cafe 가 호스트 이름 입니다.

도메인이름

기관별로 할당된 고유의 이름 입니다. naver.com , kakao.com, google.com 에서 naver, kakao, google 에 해당 합니다.

구분자

도메인의 성격에 따라 기업은 .com, 대학은 .ac.kr 혹은 edu, 통신사는 .net 등과 같이 해당 기관의 성격을 구분하는 것으로 국가 및 정부기관등의 구분자에 대해서는 일반인 사용에 제약이 있습니다.


03: WWW(World Wide Web)

월드와이드웹은 인터넷을 대표하는 서비스중 하나로 인터넷 = WWW 로 인식될 정도입니다.

1989년 유럽물리입자연구소(CERN)의 팀 버너스-리에 의해 개발되어 보편적인 인터넷 서비스로 확대되었습니다. 본래 웹의 개발 목적은 많은 사람들이 정보를 쉬운 방법으로 공유하고 접근할 수 있도록 하는 것이었습니다.

html1

정보의 연결을 가능하게 하는 하이퍼텍스트를 통해 연관된 정보가 계속 이어지는 구조로 마치 거미줄(Web) 같다고 해서 붙여진 이름입니다.

1) 주요 용어

하이퍼텍스트(Hyper Text)

하이퍼 텍스트는 정보의 연결을 가능하게 하는 텍스트 입니다. 웹에서 특정 단어를 선택하거나 기사 제목등을 클릭하면 해당정보를 제공하는 다른 페이지 혹은 사이트로 이동하는 것이 하이퍼텍스트로 구현된 것입니다.

HTML(Hyper Text Markup Language)

HTML 은 용어 그대로 하이퍼텍스트를 구현하기 위한 마크업 언어 입니다. 마크업은 태그라는 표기법을 이용해 정보의 표현을 정의하는 방식입니다.

<h2>Hello World</h2>
<a href="http://www.naver.com">네이버로 이동</a>

웹브라우저(Web Brower)

웹 서비스를 이용하기 위한 클라이언트 소프트웨어 입니다. 인터넷익스플로러, 엣지, 크롬, 사파리 등이 웹브라우저 입니다. HTTP 프로토콜에 따라 서버에 정보를 요청하고 HTML로 구성된 콘텐츠를 해석해 화면에 보여주는 역할을 합니다.

HTTP(Hyper Text Trasfer Protocol)

월드와이드웹 서비스를 제공하기 위해 정의된 프로토콜 입니다. 응용계층의 프로토콜로 클라이언트와 서버 프로그램간의 정보 교환에 사용 됩니다. 웹브라우저에서 tcp/ip 네트워크 연결을 서버와 만든 다음 GET /index.html 과 같이 정보를 주고받는 규격이 정의되어 있습니다.

홈페이지(Home Page)

특정 월드와이드웹 서비스의 시작 화면을 의미 합니다. 예를 들어 네이버에 접속하면 나오는 화면이 바로 홈페이지 입니다.

URL(Uniform Resource Locator)

인터넷상에 존재하는 콘텐츠의 위치를 지정하기 위해 만든 규격 입니다. 예를들어 특정페이지나 특정사진, 혹은 특정기능을 수행하는 프로그램호출등에 URL이 사용될 수 있습니다.

프로토콜://도메인:포트/경로/파일명

http://www.naver.com:80/news/2019101101.html
http://cdn.com:8080/img/hello.jpg
http://search.server.com/search?keyword=iphone
ftp://ftp.fileserver.com:8080/img/world.jpg

2) WWW 시스템 구조

월드와이드웹 서비스를 제공하기 위해서는 서버 컴퓨터와 서버에서 동작하는 일련의 프로그램들이 필요 합니다. 서버에서 동작하는 프로그램 영역을 백엔드(Backend) 라고 합니다.

서비스를 이용하는 쪽은 클라이언트 라고 하며 클라이언트는 스마트폰, 데스크탑 이 대표적입니다. 최근에는 냉장고나 TV에도 인터넷 접속을 위한 모니터가 탑재되어 있는 경우도 있습니다.

클라이언트에서 월드와이드웹 서비스를 이용하려면 웹브라우저 라고 하는 소프트웨어가 필요하며 클라이언트에서 동작하는 프로그램 영역을 프론트엔드(Frontend) 라고 합니다.

html2