안녕하세요. Netpractice 들어가면서 네트워크에 대해 공부해야겠다하면서 봤던 블로그 속 내용들을 정리한 글들을 올리려고 합니다.
네트워크에 대한 개념들을 잘 설명해주어서 정독하긴 했지만 정작 NetPractice 과제와는 거리가 멀어서 과제용으로 보는 것은 비추천합니다.
우선 제가 보고 공부했던 블로그는 아래와 같습니다.
저는 위의 링크 속 글들을 다시 정리한 것 뿐이라는 점 참고하세요!
Network
•
컴퓨터를 연결하여 정보를 주고받는 시스템.
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 프로토콜을 적용해서 개발하면 됨.