Search
Duplicate
🌐

Network에 대한 정리(1)

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
네트워크
Scrap
태그
9 more properties
안녕하세요. Netpractice 들어가면서 네트워크에 대해 공부해야겠다하면서 봤던 블로그 속 내용들을 정리한 글들을 올리려고 합니다.
네트워크에 대한 개념들을 잘 설명해주어서 정독하긴 했지만 정작 NetPractice 과제와는 거리가 멀어서 과제용으로 보는 것은 비추천합니다.
우선 제가 보고 공부했던 블로그는 아래와 같습니다.
저는 위의 링크 속 글들을 다시 정리한 것 뿐이라는 점 참고하세요!

Network

컴퓨터를 연결하여 정보를 주고받는 시스템.

1. 컴퓨터 통신과 네트워크의 3가지 구성요소

1.
두 대 이상의 컴퓨터
2.
데이터가 이동하는 통로인 전송매체
3.
데이터의 이동을 돕는 네트워크 장비

컴퓨터

데이터를 전송매체로 보내거나, 전송 매체로부터 데이터를 받음.
하드웨어랑 소프트웨어로 구성
소프트웨어는 다시 시스템 소프트웨어와 응용 소프트웨어로 구분.
시스템 소프트웨어 : 대표적으로 윈도우나 맥OS 같이 하드웨어를 관리하고 제어하는 운영체제
응용 소프트웨어(애플리케이션) : 운영체제의 도움을 받아 사용자가 원하는 작업을 할 수 있도록 만든 소프트웨어(하드웨어를 건드릴 권한X)

전송매체

데이터가 이동하는 물리적인 통로

유선 전송 매체

일반적으로 전기 신호로 데이터를 전송하는 케이블을 말함.(ex. LAN Cable)
포트(Port) : 하나의 장비와 다른 장비를 연결하기 위한 통로(물리적인 장비들을 서로 연결하는 외부 인터페이스)
컴퓨터나 네트워크 장비의 랜포트(LAN port)에 랜케이블을 꽂아 서로 연결한 것이 유선 네트워크
이더넷 프로토콜(Ethernet Protocol) : 랜케이블과 랜포트를 연결하여 네트워크를 만들 수 있도록 표준화된 규격을 정한 것.(랜포트 = 이더넷 포트, 랜 케이블 = 이더넷 케이블, 유선 네트워크 = 이더넷 네트워크 or 이더넷)

무선 전송 매체

전선 없이 공간을 이동하는 전파
무선 랜 인터페이스를 갖춘 컴퓨터와 연결.(와이파이로 인터넷에 접속할 수 있는 기기들은 무선 랜 인터페이스가 내장되어 있음.)

네트워크 장비

데이터를 송신하는 컴퓨터에서부터 데이터를 수신하는 컴퓨터까지 데이터가 성공적으로 전송될 수 있도록 중간에서 돕는 중계 장치

스위치

여러 대의 컴퓨터를 연결하여 하나의 네트워크를 만들고, 그 네트워크 안에서 데이터를 전송하는 장비
세 대 이상의 컴퓨터를 연결하기 위해서는 여러대의 랜포트를 갖고있는 장비인 스위치가 필요.
스위치에 랜 케이블로 연결되어 있는 컴퓨터는 동일 랜 케이블에 연결되어 있는 것과 같은 취급.
랜포트를 전환하면서 데이터의 이동을 컨트롤하여 스위치에 연결된 컴퓨터중 정확한 수신지 컴퓨터에 데이터 전송.
멀티탭 같은 역할(네트워크 라인을 분배)

라우터

네트워크와 네트워크를 연결하여 서로 다른 네트워크 간에 데이터를 전송하는 역할
스위치로 연결된 네트워크는 그 네트워크 안에서만 데이터를 전송할 수 있고, 다른 네트워크에 속한 컴퓨터로 데이터를 전송하기 위해서는 네트워크를 연결하는 장비인 라우터가 필요.
수신한 데이터를 어느 네트워크로 전달할 지 판단하는 경로 선택 기능이 있음.
기술적인 의미에서 하나의 네트워크는 라우터에 의해 구분되는 범위.(하나의 네트워크 사이에서는 라우터가 없어도 데이터 전송이 가능)
네비게이션과 같은 역할.

무선 AP

유선 네트워크에 랜 케이블 없이 무선으로 접속이 가능하게 만드는 네트워크 장비.
유선 네트워크와 무선 기능이 있는 컴퓨터 간에 데이터의 이동을 중계하는 역할.

인터넷 공유기

스위치, 라우터, 무선AP의 기능을 1대의 기기에 내장하여 소규모 네트워크를 구축

네트워크 인터페이스

랜카드(NIC, Network Interface Card)

컴퓨터와 전송 매체의 경계에서 둘을 물리적으로 연결하는 역할.
0과 1로 이루어진 디지털 데이터를 전기 신호로 변환하고, 전기 신호를 다시 디지털 데이터로 변환.(무선 랜카드는 전기 신호 대신 전파 신호)

네트워크 인터페이스

컴퓨터가 만든 디지털 데이터를 전송매체가 전달할 수 있는 전기신호나 전파로 변환하여 네트워크에서 데이터 통신이 가능한 환경을 제공하는 것.
스위치는 스위치에 연결되어 있는 컴퓨터를 동일 케이블에 연결되어 있는 것처럼 취급하기 때문에 네트워크 인터페이스 X

LAN(Local Area Network)

특정한 좁은 지역, 비교적 가까운 거리에 위치한 컴퓨터들을 연결한 네트워크

WAN(Wide Area Network)

둘 이상의 LAN을 연결하여 먼 거리에 위치한 컴퓨터들이 통신할 수 있는 네트워크
인터 네트워킹 : 복수의 네트워크를 연결. 개별 네트워크는 각각의 방침에 따라 관리할 수 있고, 한 네트워크에 장애가 발생하더라도 장애 발생 범위가 제한되어 다른 네트워크 간의 통신은 정상적으로 가능.
네트워크와 네트워크를 연결할 때는 대부분 IP프로토콜(Internet Protocol)을 사용

인터넷과 ISP

WAN의 일종. 전 세계의 LAN을 연결한 네트워크
ISP(Internet Service Provider) : 인터넷에 접속할 수 있는 서비스를 제공하는 통신회사
집이나 사무실의 LAN을 구축한 라우터나 인터넷 공유기를 ISP가 제공한 라우터와 연결함으로써 LAN과 ISP의 네트워크가 연결되어 집이나 사무실에서 인터넷 사용 가능.

컴퓨터의 발전

폰 노이만이 컴퓨터를 CPU, 메모리, 프로그램으로 구조화한 폰 노이만 구조를 제안한 이후, 이 폰 노이만 구조가 컴퓨터 기술의 기반이 됨.

네트워크의 발전

인터넷 기술의 기초 : 미국 국방성에서 최초로 개발한 아파넷(대학과 연구기관을 연결한 네트워크)
TCP/IP 프로토콜의 보급으로 인터넷 대중화

월드 와이드 웹의 등장

월드와이드웹 : 인터넷에서 정보를 쉽게 찾을 수 있게 하는 서비스. 인터넷에서 표준적으로 사용하는 문서 시스템.
최초의 하이퍼텍스트 문서인 HTML(HyperText Markup Language) 덕분에 한 번의 클릭으로 웹페이지 내에서의 이동과 웹페이지 간의 이동이 가능해짐.(링크를 클릭해서 새로운 정보가 있는 페이지로 이동하는 UX 탄생)

웹브라우저와 웹서버

웹 브라우저 : 웹페이지를 보기 위해 사용하는 애플리케이션
웹 서버 : 웹페이지를 저장하고 웹 브라우저에게 웹 페이지를 보내주는 애플리케이션 또는 그 애플리케이션을 실행하는 컴퓨터
서버 클라이언트 구조를 사용함으로써 하나의 웹서버가 저장하고 있는 웹페이지를 다수의 웹 브라우저가 볼 수 있는 형태의 서비스가 됨.

URL(Uniform Resource Locator)과 HTTP(HyperText Transfer Protocol)

HTML로 웹페이지를 만들고 그 웹페이지를 웹서버 컴퓨터에 저장하면서 URL이라는 주소를 부여하여 찾기 쉽게 만듬.
HTTP프로토콜 : 월드와이드웹에서 데이터를 주고받는 웹 브라우저와 웹 서버 간의 통신 규칙.
전 세계의 웹브라우저와 웹서버가 인터넷에서 HTTP프로토콜에 따라 HTML파일을 전송할 수 있는 시스템 탄생.
서버 : 네트워크로 연결된 컴퓨터 중 서비스를 제공하는 쪽
클라이언트 : 서비스를 요청하고 받는 쪽
서버 클라이언트 구조 : 한 대의 서버에 다수의 클라이언트가 접속하여 서비스를 이용할 수 있는 방식
애플리케이션 : 운영체제 위에 설치되어 운영체제의 도움을 받아 실행되는 응용 소프트웨어.

애플리케이션과 플랫폼

하나의 서비스를 여러 플랫폼에서 이용할 수 있게 하려면 플랫폼마다 별도의 애플리케이션 필요.
서로 다른 플랫폼에서 실행가능한 크로스 플랫폼 애플리케이션을 만들 수 있는 도구들이 개발 중(일렉트론 프레임워크, 리액트 네이티브 라이브러리…)

웹서버

웹 서버에 각종 정보를 담은 웹 페이지를 저장 후 필요 시 클라이언트에게 제공.

웹 브라우저

웹 서버에게 필요한 웹페이지를 요청하면 웹서버가 이에 응답하여 웹페이지를 보내주고 웹 브라우저가 웹 페이지를 받아 사용자에게 보여줌.

인터넷과 웹 서비스화

인터넷의 대중화와 함께 개별적으로 제공되던 다양한 서비스들이 웹 서비스 형태로 이전되거나 통합.(이전에는 각 서버들이 자신만의 사용자 인터페이스를 갖고 있었음 → 전용 어플리케이션 필요)

웹 애플리케이션 서버(WAS, Wep Application Server) 개발

제공하고자 하는 서비스에 맞게 데이터를 가공하거나 다른 서버와 상호작용하여 즉석에서 웹페이지를 만듬. (다양한 서비스의 기능 구현)
웹 (서버) 애플리케이션 = 웹 서버 + 애플리케이션 서버 + 데이터베이스
인터넷을 통해 웹 브라우저로 다양한 기능을 이용할 수 있게 하는 애플리케이션
사용자의 데이터를 바탕으로 사용자마다 개인화된 웹페이지 구현(ex. 나의 장바구니)

웹 브라우저의 발전과 사용자 경험의 향상

웹 브라우저와 인터넷 기술의 발달로 멀리 떨어진 웹서버에서 제공되고 내 컴퓨터의 웹브라우저에서 실행되는 기능들이 내 컴퓨터에 설치된 프로그램을 사용하는 것처럼 매끄러워짐.
+ 여러 기능들이 더해지면서 사용자 경험(UX)의 향상

플랫폼으로서의 웹

웹브라우저가 어떤 컴퓨터 환경에서도 웹 애플리케이션을 실행시켜주는 플랫폼 역할(운영체제 고려할 필요 X)
웹 앱에서는 운영 체제마다 만들어져 있는 웹 브라우저를 이용하기 때문에 크로스 플랫폼에 대한 고민없이 모든 컴퓨터에서 이용 가능한 서비스를 만들 수 있음.(but, 크로스 브라우징 문제 발생 → 팀 버너스리를 중심으로 설립된 W3C에서 웹 표준을 만들고 있음.)

프로토콜

네트워크에서 데이터를 주고 받기 위해 네트워크를 구성하는 컴퓨터와 네트워크 장비들이 지켜야 할 규칙
데이터를 누구에게, 무엇을 , 언제, 어떻게 전송할 것인지, - 데이터 전송 상대방, 데이터의 형식, 데이터의 전송 순서와 절차, 데이터 전송 방법 등을 규정.
이러한 프로토콜이 규정한 전체적인 내용 = 사양
컴퓨터 간에 데이터를 전송할 때에는 다양한 프로토콜 중에서 서비스의 종류에 따라 프로토콜을 조합하여 사용. - 데이터를 성공적으로 전송하기 위해서는 컴퓨터와 네트워크 장비들이 같은 프로토콜 조합을 사용해야 함.

네트워크 아키텍처

복잡한 네트워크 시스템을 프로토콜의 조합으로 단순화한 것.
눈에 보이지 않는 데이터의 이동 과정을 세부적인 단계로 모듈화하여 단계마다 필요한 기능을 프로토콜로 정의하고, 각 단계를 데이터의 이동 순서에 따라 계층화시킨 것.

추상화

복잡한 시스템을 쉽게 이해할 수 있도록 핵심적인 개념들을 뽑아 단순화시키는 방법
복잡한 네트워크 시스템이 데이터를 전송하는 과정을 논리적인 단계로 분할하여 각 단계마다 핵심적인 기능을 모듈화(Modularity), 분할된 모듈을 계층적 구조로 배열하는 계층화(Layering)를 통해 네트워크를 추상화한 것이 네트워크 아키텍처

모듈화

복잡한 시스템을 기능에 따라 모듈이라는 작은 단위로 분할하여 설계하는 것.
독립적으로 기능하는 모듈들이 인터페이스를 통해 유기적으로 연결되어 하나의 시스템으로서 동작.
모듈들을 연결할 수 있는 표준화된 인터페이스 필요

계층화

모듈을 연결할 때 모듈 간에 시간적 개념을 부여하여 모듈들을 일정한 순서로 배열한 것.
순서가 추가된 모듈인 계층을 사용함으로써 각 계층 간에 일정한 정보의 흐름이 있는 시스템 설계 가능.

프로토콜

네트워크 아키텍처에서 각 계층의 고유한 기능을 정의해 놓은 것.
각 계층은 기능마다 고유한 프로토콜이 존재하고, 프로토콜에 정의된 기능을 수행.
네트워크 아키텍처 = 프로토콜들의 집합.(네트워크 시스템에서 컴퓨터들이 데이터를 주고받는 과정을 프로토콜의 집합으로 표현한 설계도)
현실에서는 이 설계도에 따라 제작된 컴퓨터와 네트워크 장비의 하드웨어나 소프트웨어가 각 계층의 기능을 구현.

모듈화 된 계층 구조의 장점

각 계층마다 고유한 역할이 존재하고, 다른 계층과는 상관없이 독립된 형태로 각자 맡은 역할을 수행. 한 계층의 오류나 변경은 다른 계층에 영향을 주지 않음.(독립성) → 기술 발전 속도에 맞춰 각 계층을 자유롭고 편리하게 설계하고 변경할 수 있는 유연성과 개방성을 가짐.
계층을 연결하는 인터페이스 덕분에 다양한 네트워크 장비를 만드는 기술들 간의 상호 연결성 확보.(LTE같은 휴대전화망을 사용하든, Wi-Fi로 연결하든 똑같이 원하는 웹 사이트에 접속 가능.)…?
계층 구조 덕분에 물리적으로 어떤 기술을 사용해서 네트워크에 접속하든 문제없이 데이터를 주고받을 수 있음.(호환성)

OSI 모델과 TCP/IP 모델

네트워크 기술의 표준화를 시도한 네트워크 아키텍처

OSI 모델

데이터 전송 과정을 7개의 계층으로 분류.
구조가 복잡해 널리 보급되지 못했고, 네트워크 통신과정을 개념적으로 설명하는 용도로 활용.

TCP/IP 모델

데이터 전송 과정을 4개의 계층으로 단순화
급속히 발전하는 기술에 신속히 대응하여 현실에서 작동하는 프로토콜을 빠르게 만들고 개선하여 사실상의 표준으로 자리잡음.
데이터를 송신하는 컴퓨터는 제 4계층부터 순서대로 각 계층의 역할을 수행하고, 데이터를 수신하는 컴퓨터는 제 1계층부터 순서대로 각 계층의 역할을 수행.
네트워크에서 데이터를 전송하려면 물리적인 기기들의 1. 하드웨어적인 연결과 데이터를 전송하는 규칙인 2. 프로토콜 두 가지가 필요
기기의 하드웨어는 프로토콜이 정하는 표준 규격에 따라 제작, 소프트웨어는 프로토콜이 정한 데이터의 전송 순서와 절차, 데이터 전송 방법등을 구현할 수 있도록 프로그래밍.
TCP/IP 모델의 프로토콜에 따라 웹 애플리케이션을 프로그래밍해야 사용자들이 인터넷에서 웹 브라우저를 통해 웹 애플리케이션과 통신, 서비스 이용 가능.

TCP/IP 모델의 4계층과 주요 프로토콜

4개의 계층으로 분류
1.
응용 계층(Application layer)
2.
전송 계층(Transport layer)
3.
인터넷 계층(I nternet layer)
4.
네트워크 인터페이스 계층(Network interface layer)
TCP는 전송계층, IP는 인터넷 계층에 속한 프로토콜
컴퓨터가 데이터를 주고받는다 = 응용 계층의 프로토콜에 따라 프로그래밍된 애플리케이션, 전송계층과 인터넷계층의 프로토콜에 따라 프로그래밍된 운영체제에 내장된 TCP/IP 소프트웨어, 이더넷 프로토콜을 따라 만들어진 랜카드가 제기능을 하고 있다.
응용(애플리케이션) 계층이 서비스의 내용을 결정하는 유일한 계층.
응용계층은 인터넷 사용자에게 서비스 관점에서 편리한 서비스를 제공하기 위한 것이며, 하위 계층은 데이터 관점에서 안정적인 데이터 전송을 책임지는 것.
응용계층은 애플리케이션의 서비스마다 별도의 규칙이 존재하기 때문에 다양한 프로토콜이 존재.
하위계층은 사용하는 프로토콜이 대부분 정해져 있음.(전송계층에서는 TCP, 인터넷계층에서는 IP)
대부분의 컴퓨터의 운영체제에는 TCP/IP 프로토콜에 따라 프로그래밍된 TCP/IP 소프트웨어가 내장되어 있음.
네트워크 인터페이스 계층에서는 유선 LAN에서 사용되는 이더넷 프로토콜, 무선 LAN에서 사용되는 Wi-Fi 기술이 사실상의 표준.(내 컴퓨터에 설치된 랜 카드, 인터넷 공유기나 라우터 등이 이더넷 프로토콜과 Wi-Fi 기술에 따라 만들어짐)
모든 애플리케이션과 기기들이 TCP/IP를 공통으로 사용하고 프로토콜 조합의 중심이 되기 때문에 TCP/IP 모델 또는 TCP/IP라고 부름.
TCP/IP를 중심으로 어떤 서비스를 이용할 것인지에 따라 응용 계층의 프로토콜을 선택.
기존에 없던 새로운 형태의 애플리케이션을 개발할 경우 응용 계층에서 사용할 프로토콜을 새로 만들어야함.
ex. 카카오톡 서비스를 만든다고 하면, 카카오톡 서버를 제공할 서버 애플리케이션, 카카오톡 서버를 이용하기 위한 클라이언트 애플리케이션, 카카오톡 서버와 앱이 통신할 수 있는 프로토콜을 개발해야 함.
카카오톡 앱으로는 카카오톡 메시지만, 라인 앱으로는 라인 메시지만 이용가능한 이유는 프로토콜이 통일되지 않고, 저마다 다른 프로토콜을 사용하고 있기 때문.
반면에 웹 서비스는 HTTP라는 통일된 프로토콜을 사용
구글의 검색 서버가 제공하는 검색 서비스를 크롬 뿐만 아니라 다른 웹 브라우저에서도 이용 가능한 것은 모두 HTTP 프로토콜에 따라 프로그래밍 되었기 때문.
클라이언트 애플리케이션과 응용 계층의 프로토콜 개발 없이 웹 서버 애플리케이션만 HTTP 프로토콜을 적용해서 개발하면 됨.