본문 바로가기

STUDY LOG

💻 IT 프로그래밍 개발을 위한 얕고 넓은 배경지식 (3)

728x90
반응형

IT 프로그래밍 개발을 위한 얕고 넓은 배경지식 (3)

 

 

이번 포스팅에서는 네트워크에 대해 작성해보겠습니다.

네트워크는 각 요소가 상호적으로 밀접하게 연결되어 있는 경우가 많아, 포스팅 내용이 상당히 길어졌지만

목차 순서대로 내용이 연결되며 깊어 지게끔 되어 있으므로 차근차근 읽어보시면 쉬운 내용입니다!

 

 

네트워크

네트워크란,

"어떤 방식으로(어떤 프로토콜), 어느 컴퓨터(IP 주소)에, 어떤 프로그램을 연결(PORT)할 것인지" 를 의미합니다.

네트워크를 통해 정보를 송신, 수신하기 위해서 사용하는 수단에는 LAN, 와이파이 공유기 등이 있습니다. 

 

이미지 출처: https://www.grabbing.me/70567b8743594adda5b62ebb929a6e03

 

 

프로토콜

- 컴퓨터들 간의 원활한 통신을 위해 지키기로 약속한 규약, 신호 처리법, 오류처리, 암호, 인증, 주소 등을 포함합니다.

- 인터넷이 전 세계에 연결되어 자유롭게 사용할 수 있는 것도 모두 프로토콜 덕분입니다.

- 인터넷은 TCP/IP 기반 하에 동작하게 되는데, 이 자체가 프로토콜입니다.

- 프로토콜에 대한 자세한 내용은 아래 OSI 7계층에서 다룹니다.

- 가장 가깝고 쉬운 예시는 HTTP 입니다. (Hyper Text Transfer Protocol)

- 우리 생활과 밀접한 웹사이트에서도 쉽게 찾아볼 수 있는 프로토콜, 어디서 어떻게 정해진 것일까요?

 

 

 

 

 

국제 표준 프로토콜 모델, OSI 7계층

정보처리기사, 4과목 응용 SW 기초 기술 활용에서 배우게 되는 OSI 참조모델

 

컴퓨터는 각기 OS도 다르고, 모든 프로그램도 각자 구현 언어가 모두 다르기 때문에

네트워크에서 이들이 서로 통신할 수 있도록 하려면 공통된 통신 규약이 필요합니다.

 

과거에는 하드웨어 제조사마다 각기 다른 프로토콜을 사용하고 있었기 때문에, 

하드웨어 사이의 통신은 힘들거나 아예 불가능했습니다.

 

이 때문에 하드웨어의 OS가 네트워크 신호를 특정 프로그램으로 전달해주기 위한 다양한 과정을

국제적으로 표준화하기 위한 ISO 위원회가 발족되었고, 여기서 표준화된 프로토콜 모델이 바로 OSI 7계층입니다.

컴퓨터 네트워크 프로토콜 디자인과 통신을 7단계의 계층으로 나누어 놓은 모델입니다.

 

이 모델을 이용하면 특정 네트워킹 시스템에서 일어나는 일을 계층을 활용해 시각적으로 설명할 수 있습니다.

하위 계층으로 갈 수록 물리적인 네트워크 시스템, 상위 계층으로 갈 수록 응용 프로그램에 관련된

네트워크 시스템에서 일어나는 일들을 다루게 됩니다.

 


OSI 7계층은 IT 기업에서 고객에게 제품을 설명할 때,
해당 제품이 어떤 계층에서 작동하는지 혹은 계층 전체에 걸쳐 작동하게 되는지 설명할 수 있게 하는 참조 모델이 됩니다.

 

OSI 7계층- 응용 계층(Application)

"최종 사용자에게 가장 가까운" 계층으로, 사용자와 직접적으로 상호작용합니다.

우리가 잘 아는 구글 크롬, 사파리 등의 웹 브라우저와 스카이프, 오피스 등의 응용프로그램이 대표적입니다.

 

- 사용자와 가장 밀접한 계층이며 인터페이스(Interface) 역할

- 응용 프로세스 간의 정보 교환을 담당 / 전송 단위: Message

- 전자 메일, 인터넷, 동영상 플레이어 등의 Application

- 유저 인터페이스(User Interface)를 제공하는 계층입니다.

 

 

OSI 6계층- 표현 계층(Presentation)

"응용프로그램이나 네트워크를 위해" 데이터를 표현하는 계층입니다.

데이터를 안전하게 전송하기 위한 암호화, 복호화 작업이 바로 6계층에서 처리됩니다.

 

- 데이터 표현에 차이(ASCII, JPEG, PNG 등의 번역)가 있는 응용처리에서의 제어구조를 제공

- 전송하는 데이터의 인코딩, 디코딩, 암호화, 코드 변환 등을 수행 / 전송 단위: Message

- 데이터의 변환 작업을 진행하는 계층입니다.

 

 

OSI 5계층- 세션 계층(Session)

"2대의 기기, 컴퓨터 또는 서버간의 대화가 필요하면" 세션(Session)을 만들어야 하는데,

이러한 작업을 처리하는 계층입니다. 설정, 시스템의 응답 대기 시간,

세션 마지막의 응용프로그램 간 종료 등의 기능이 필요합니다. 

 

- 통신장치 간의 상호작용 및 동기화 제공

- 연결 세션에서 데이터 교환, 에러 발생 시 복구 관리(논리적 연결 담당) / 전송 단위: Message

- 응용 프로그램 간의 연결을 지원해주는 계층입니다.

 

 

OSI 4계층- 전송 계층(Transport)

보낼 데이터의 전송 방식, 용량과 속도, 목적지 등을 처리하는 계층입니다.

하위 3계층과 상위 3계층을 연결해주는 역할을 하는 계층이라고도 합니다.

 

이중에서 가장 잘 알려진 프로토콜이 바로 TCP(전송 제어 프로토콜) 입니다.

TCP는 인터넷 프로토콜(IP) 위에 구축되므로 흔히 TCP/IP 라고 알려져 있습니다.

우리가 사용하는 기기의 IP 주소가 여기서 작동됩니다.

 

 

- 종단 간(End-to-End)에 신뢰성 있고 정확한 데이터 전송을 담당 / 전송 단위: Segment

- 종단 간(End-to-End)의 에러 복구와 흐름 제어를 담당

- L4 스위치 장비를 사용합니다(3계층 트래픽 분석, 서비스 종류 구분)

- 서비스를 구분하고, 데이터의 전송 방식을 담당하는 계층입니다 (TCP/IP)

 

 

OSI 3계층- 네트워크 계층(Network)

네트워크 전문가 대부분이 좋아하는 라우터 기능 대부분이 이 계층에 자리잡습니다.

미국 보스턴에 있는 컴퓨터가 캘리포니아에 있는 서버에 연결하려고 할 때, 그 경로는 무수히 많습니다.

이 계층의 "라우터"가 최적의 경로를 찾아 배정하는 작업을 효율적으로 처리합니다.

 

 

- 중계 노드를 통하여 전송하는 경우, 어떻게 중계할 것인지를 규정 / 전송 단위: Packet

- 데이터를 목적지까지 가장 안전하고 빠르게 전달 => 라우팅

- 라우터, L3 스위치 장비를 사용합니다.

- 네트워크를 논리적으로 구분하고 연결해주는 계층입니다.

 

 

OSI 2계층- 데이터 링크 계층(Data Link)

물리적인 연결을 통하여 인접한 두 장치의 신뢰성 있는 정보 전송을 담당하는 계층입니다.

 

- 인접한 두 장치간 에 신뢰성 있고 정확한 데이터 전송을 담당 / 전송 단위: Frame

- 정보의 오류와 흐름을 관리하고, 안정된 정보를 전달합니다.

- 브리지, 스위치 장비를 사용합니다.

- 물리적 매체에 패킷 데이터를 실어 보내고,-환경에 맞는 다양한 통신 프로토콜 지원하는 계층입니다.

 

 

OSI 1계층- 물리 계층(Physical)

네트워킹 문제가 발생하면, 많은 네트워크 전문가가 이 물리 계층으로 바로 가서

모든 케이블이 제대로 연결되어 있는지, 전원 플러그가 빠지지 않았는지 확인합니다.

 

시스템의 전기적, 물리적 표현을 나타내는 계층입니다.

케이블 종류, 무선 주파수 링크는 물론 핀 배치, 전압, 물리 요건 등이 포함됩니다.

 

 

- 전기적, 기계적 특성을 이용, 통신 케이블로 전기적 신호(에너지) 전송 / 전송 단위: bit

- 단지 데이터의 전달 역할만을 하고, 알고리즘, 오류 제어 기능은 없습니다.

- 리피터, 허브, 케이블 장비를 사용합니다.

- 신호를 변환하여 전송하는 계층입니다. 

 


우리가 사용하는 IP는 OSI 7계층 중 하위 3계층에 해당하는 "네트워크 계층"인터넷 프로토콜(IP)로,

인터넷 프로토콜(IP)를 통해 데이터를 연결하는 다른 네트워크를 통해 인터넷이 가능하도록 만듭니다.

즉, 인터넷 프로토콜(IP)이란 보내는 컴퓨터에서 받는 컴퓨터까지의 통신을 책임지는 프로토콜을 말합니다. 

 

인터넷 프로토콜(IP)을 대략적으로 살펴보면,

송신: 편지봉투에 데이터를 넣고, 보내는 주소와 받는 주소를 작성한 뒤 우표를 붙여서 우체통에 넣는 일 

수신: 우편함에 들어온 편지를 꺼내어 나에게 온 편지가 맞는지 확인하는 작업 이라고 할 수 있습니다.

 

IP를 통하지 않고 현 인터넷을 통해 통신한다는 건 불가능하기 때문에, 네트워크는 매우 중요한 계층입니다.


 

 

 

 

IP 주소

- IP 주소란, IP 통신에 필요한 주소를 말하며 인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유한 주소입니다

- 2010년 기준 IPv4와 IPv6 의 두 가지 체계가 있습니다.

 

- IPv4는 널리 사용되는 IP 주소로, 숫자로 8비트씩 4부분, 총 32비트로 구성된 주소의 형식을 갖추고 있습니다.

- (ex) 93.184.216.34 = 4개의 자리에 각각 0~255의 수가 할당되는, 우리가 일반적으로 아는 주소 형식입니다.

- 총 32비트의 정보를 가지므로 최대 2^32개, 약 43억개의 고유한 IP주소를 각 기기에 부여할 수 있습니다.

 

 

- IPv6는 IPv4 주소의 고갈을 앞두고 차기 주소 체계로서 고안되었으며, 조금씩 적용 사례가 늘고 있습니다.

- 128비트의 값을 가집니다. 이 주소값의 할당량은 2^128개로,

- 온 인류가 관측 가능한 범위의 우주에 있는 별의 총 개수*1000억개에 공인 IP를 하나씩 할당해도 고갈될 걱정이 없을 정도로 넘쳐나는 양이라고 합니다^^

2^128개는 대충 저만큼입니다.

- (ex) 2606:2800:0220:0001:0248:1893:25C8:1946

 

 

IP 주소- 주소가 모자라요!

앞서 IPv4 의 고갈 이슈를 조금 더 살펴보면,

인터넷 할당 번호 관리기관(IANA; Internet Assigned Numbers Authority)에서

2011년 2월 4일이후, IPv4의 할당 중지를 선언했습니다. (더이상 여분의 IPv4가 남아있지 않기 때문)

 

2015년,

북미 기관인 미국 인터넷 번호 등록부(ARIN;American Registry for Internet Numbers)에서는

북미의 IPv4 주소는 이제 고갈되었음을 밝혔습니다.

 

따라서 북미의 경우 IP를 할당받고 싶다면 누군가 기관에 IPv4를 반납한 경우

할당받을 수 있는 대기 목록에 올라가거나, 이미 IP를 보유한 국가나 기관에서 임대/구매해야 합니다.

 

한국이 소속된

아-태 지역 네트워크 정보센터(APNIC; Asia Pacific Network Information Center)의 경우,

2020년 5월 기준으로 매우 제한적이긴 하지만 여분의 IP를 가지고 있는 상태입니다.

 

이처럼 IPv4는 주소 고갈에 대한 이슈가 현재도 진행중입니다.

기존에 할당된 IPv4는 계속 유지 및 관리되지만,

IPv6로 완전히 전환되고 나면 IPv4 서비스도 중단된다고 합니다.

 

대한민국의 경우, 인구 수의 두 배 이상인 1억여개의 IPv4가 할당되어있고,

그나마도 대부분 인터넷 공유기의 폭발적 보급으로 쪼개어 사용하기 때문에 다른 국가들 보다는 상황이 훨씬 났습니다.

 

2020년 이후부터 가정용 KT 인터넷에 IPv6 할당을 시작할 계획이라고 합니다.

그러나 2021년 3월 기준 아직 IPv6의 보급율은 지지부진한 편으로, 빠른 시일 내에 IPv6가 대체되긴 어려워보입니다.

 

 

 

PORT

- '포트' 자체는 컴퓨터가 각종 신호를 받아들이고 내보낼 수 있는 연결 단자를 의미합니다.

- 네트워크에서의 포트란, 각 프로토콜의 데이터가 통하는 논리적 통로를 의미합니다.

- 컴퓨터의 물리적 포트(랜선)에서 데이터가 통해오는 것 처럼,

- 각 컴퓨터 내 프로토콜의 데이터가 내부 논리적 포트에 따라 흐릅니다.

- 잘 알려진 네트워크의 포트는 다음과 같습니다.

 

각 프로토콜 뒤에 붙어있는 숫자는 포트의 번호입니다.

IP 주소가 컴퓨터끼리 연결을 위한 네트워크 주소라면, 포트는 컴퓨터 내에서 프로세스가 가진 주소입니다.

 

예를 들어, 우리가 브라우저에서 네이버 웹사이트의 정보를 가져오기 위해서는

IP 주소와 함께 포트 번호도 입력해야 합니다.

 

그러면 네트워크 통신 후에 네이버의 웹서버에서는

입력된 포트번호를 이용해 웹을 전달해주는 프로세스로 연결해줍니다.

 

123.123.123.5:   80
[IP주소]------------[포트번호]

 

예를 들어 위 사진에서 HTTP는 Hyper Text Transfer Protocol의 약자로, 문서를 전송하기 위한 프로토콜입니다.

 

80번 포트를 사용하며, 구조는 요청(Request)과 응답(Response)로 구성되어 있습니다.

 

'클라이언트가 웹 페이지에서 링크가 걸려있는 텍스트를 클릭(Request)하면 새로운 페이지로 넘어간다(Response)'

와 같은 구성입니다. 따라서, 우리가 사용하는 웹 브라우저에서 인터넷 주소 맨 앞에 들어가는 http:// 또는 https://

바로 이 프로토콜을 사용해서 정보를 교환하겠다는 표시인 것입니다.

 

 

그래서 사실 웹 브라우저로 접속하는 모든 웹사이트의 주소 형식은 xxx.xxx.xxx.x:포트번호 이지만

외우기도 어렵고, 입력하기도 복잡하기 때문에 사람이 쉽게 인식할 수 있는 도메인 네임을 사용하게 됩니다.

 

도메인 네임(Domain Name)은 사람이 쉽게 인식할 수 있는 네트워크 영문 주소입니다.

 

 

이미지 출처: https://www.grabbing.me/8d9e92b19e084c5a8cb173a695aa81af#a37b1cde941f4f54b9e45b813d4558b3

 

 

 

위처럼 웹 브라우저에서 https://naver.com 을 입력하면,  

자동으로 HTTPS 프로토콜을 적용하여 네트워크 통신을 합니다.

 

 

 

이미지 출처: https://www.grabbing.me/8d9e92b19e084c5a8cb173a695aa81af#a37b1cde941f4f54b9e45b813d4558b3

 

우리가 브라우저에서 사용하는 도메인- 네트워크 영문주소(https://naver.com 등)

전부 도메인 네임 서버(DNS;Domain Name Server)에 등록된 주소입니다.

 

우리가 웹 사이트를 만들 때, 호스팅 서비스에서 돈 주고 도메인을 사지요? DNS에 등록하는 과정입니다.

DNS를 거쳐 IP를 반환받는 작업을 통해 해당 사이트에 접속할 수 있게 되는 것입니다.

 

 

 

네트워크란,
"어떤 방식으로(프로토콜), 어느 컴퓨터에(IP주소), 어떤 프로그램을 연결(PORT) 할 것인지" 를 말하는 것이다.

 

 

클라이언트와 서버

네트워크에서 정보를 요구하고, 받는 쪽(수신 측)을 클라이언트(Client)라고 합니다.

정보를 제공하고, 보내주는 쪽(송신 측)을 서버(Server)라고 합니다.

 

우리가 사용하는 모든 IT 서비스는 클라이언트와 서버를 구분하여 개발합니다.

 

 

 

클라이언트

서버라는 개념이 나온 순간부터 서버와 통신하는 모든 프로그램은 클라이언트입니다.

특정 네트워크에 접속하는 모든 프로그램 전부를 클라이언트라고 할 수 있습니다.

 

일반적으로 클라이언트는 서버가 제공하는 서비스를 사용자 환경에서 구현할 수 있도록 하는 프로그램과,

프로그램의 실행에 필요한 확장 파일 및 서비스에 필요한 암호화된 데이터 등으로 구성됩니다.

 

우리가 잘 아는 대표적인 클라이언트는 웹, 앱이라고 할 수 있습니다.

 

 

서버

이미지 출처: http://xn--zf4b17fy1bld13ax2f790ai7e.net/tipntech_view.php?page=7&wr_id=34

웹, 앱 상에서 클라이언트가 특정한 데이터를 요청했을 때 응답해주는 서버(Server)가 필요합니다.

서버는 클라이언트에게 네트워크를 통해 서비스하는 컴퓨터를 의미합니다.

 

서버가 클라이언트에게 정보를 제공해준다는 것은, 정보를 제공해주는 프로그램이 실행되고 있음을 뜻합니다.

예를 들어, 어떠한 서버가 '이미지 서버'라면, 이미지 제공 프로그램을 컴퓨터에서 실행하고 있는 것이 됩니다.

 

그래서 서버 컴퓨터는 목적에 맞는 정보를 제공해주기 위한 프로그램이 24시간, 365일 실행되고 있습니다.

과거에 비해 하드웨어 성능이 좋아지면서 하나의 서버 컴퓨터에 여러 종류의 서버 프로그램을 사용할 수 있습니다.

 

그러나 서버는 단독으로 움직이는 것이 아니며,

불특정 다수의 컴퓨터에 대해 일방적으로 서비스를 제공하는 것도 아닙니다. 

클라이언트의 요청(Request)이 있어야 비로소 처리를 시작하여 서비스를 제공하는 것입니다.

 

 

 

클라이언트-서버 시스템

 

대략적인 클라이언트-서버의 처리 흐름은 다음과 같습니다.

 

(1) 클라이언트가 서버에 특정한 서비스(정보제공)를 요청(Request) 합니다

(2) 서버는 요청(Request)에 응답하여 처리를 수행합니다

(3) 서버는 처리 결과를 클라이언트에게 반환합니다.

(4) 클라이언트가 요청(Request)에 대한 처리 결과를 받습니다.

 

 

위 내용을 웹서비스에 적용하면 훨씬 이해가 쉽습니다.

웹서비스에서 클라이언트는 유저가 사용하는 크롬, 사파리와 같은 웹 브라우저가 됩니다.

반대로 서버는 이러한 웹사이트가 저장되어 있는 컴퓨터를 뜻합니다.

 

 

(1) 웹 브라우저(크롬, 사파리 등)가 웹 서버에게 'A 사이트의 데이터를 달라'고 요청(Request) 합니다

(2) 웹서버는 요청(Request) 받은 'A 사이트'의 '파일'을 찾습니다

(3) 웹서버는 처리 결과('A사이트의 파일')를 웹 브라우저(크롬, 사파리 등)에 반환합니다

(4) 웹 브라우저(크롬, 사파리 등)는 'A사이트의 파일'을 다운받아 화면에 표시합니다.

 

 

위와 같이 클라이언트-서버로 구성되어 있는 시스템을 <클라이언트-서버 시스템> 이라고 합니다.

 

 

 

서버-  데이터센터

 

서비스의 규모가 커질수록 서버의 규모도 커지기 때문에, 구글이나 페이스북 같은 글로벌 서비스의 경우,

자체적으로 데이터 센터를 운영하는 경우가 있습니다.

 

예술작품이 된 구글 데이터 센터

 

네이버의 데이터 센터 각 서버실 모습

데이터 센터란, 인터넷과 연결된 데이터를 모아두는 시설입니다. 서버 호텔(Server Hotel)이라고도 부릅니다. 

서버를 안정적으로 운용하며, 인터넷과의 연결을 고속화하고 지리적으로 중앙집중화 시킬 필요가 있을 때 설립됩니다. 한정된 공간에 많이 몰아놔야 이득이기 때문에 위와 같은 랙마운트 형으로 서버실을 구축합니다.

 

데이터 센터의 재미있는 사실은, 위 사진에서 보이는 것과 같은 무시무시한 규모에 비해 사람의 노동력을 거의 필요로 하지 않기 때문에 인터넷만 연결될 수 있다면 어디에든 짓기만 하면 됩니다. 별다른 인프라가 없는 외딴 시골에 지어도 되는 것이 데이터 센터입니다.

 

일례로 2018년도 인천 송도지역에서는 구글 데이터 센터를 유치하기 위해 인근 주민들이 현수막을 걸고, 산업단지를 조성하는 등의 적극적인 활동을 펼치기도 했다고 합니다^^ 그러나 2020년도 뉴스에 의하면, 구글 클라우드 플랫폼(GCP)의 8번째 리전은 서울이 되었다고 합니다. (한국경제 2020.02.19 뉴스 | 구글도 서울에 데이터센터…'클라우드 삼국지' 시작됐다)

 

 

 

 

제가 보려고 작성중인 기반지식 포스팅인데 정보의 홍수를 압축하려니 쉽지가 않군요 (눈물)

다음 포스팅에서 또 여러가지 기반 지식을 가져오겠습니다!

 


 

👀 유명 개발자의 "인생 기계식 키보드, 키크론!(무선&유선)"

 

키크론 K6 무선 기계식키보드 WHITE LED 적축, 혼합색상

 

 

 

"파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있습니다"

 

 


 

 

reference : 

한국경제

나무위키

위키피디아

랩의 블로그

는세

안산홈페이지제작

728x90