컴퓨터는 프로그래머가 만든 프로그램이 논리적이고 산술적인 동작을 하는 소프트웨어가 실행되는 하드웨어이다.
(소프트웨어 + 하드웨어)
즉, 컴퓨터가 아닌 것은 프로그램을 실행시킬 수 없는 것들을 의미한다.
따라서 두 개 이상의 컴퓨터들(프로그램을 짜서 삽입할 수 있는 하드웨어)이 0과 1을 주고 받는 것을 컴퓨터 네트워크라고 한다.
네트워크의 규모에 따라 명칭에 따라 LAN(Local Area Networks), MAN(Metropolitan Area Network), Wide Area Network(WAN)으로 구분한다.
p2p(Peer to Peer)는 같은 LAN에 있을 때만 동작하고, HTTP는 LAN을 넘어서 MAN, WAN 개념에 해당하는 서비스를 한다.
HTTP 1.1대비 2, 3이 나오는 이유는 LAN, WAN(특히 WAN일 때)에서의 성능을 높이기 위해서이다.
LAN (Local Area Network)
소유권자(운영권자)가 동일한 방 단위, 건물 혹은 캠퍼스 단위의 기기들이 연결된 네트워크를 의미한다.
(한 개의 방, 방으로 이루어진 층, 층으로 이루어진 건물, 건물들로 이루어진 캠퍼스 등이 모두 LAN이 될 수 있다.)
MAN(Metropolitan Area Network)
다양한 LAN들이 지역 안에 밀집되어 서로 연결되어 있는 네트워크를 의미한다. LAN들을 포함하고 있는 큰 규모의(도시 레벨의) 네트워크이다. (예: 서울, 부산 등)
WAN(Wide Area Network)
LAN과 LAN, 또는 MAN과 MAN을 연결한 네트워크를 의미하며, 줄 개념으로 비유되기도 한다.
WAN에서는 지연을 줄이는 것이 가장 중요하다.(둘 사이를 연결하는 줄이 길기 때문)
WAN은 하나의 줄이 아니라, 여러 라인을 타고 다른 곳으로 이동할 수 있음을 이해하는 것이 중요하다.
(예: 서울 지사 - 국내 네트워크 라인 - 인터넷 - 해외 네트워크 라인 - 해외 지사)
OSI 7 계층은 네트워크의 표준으로 컴퓨터 네트워크의 가장 중요한 원칙이다.
OSI = Open System Inner-connection : 시스템의 운영체제가 다르더라도 서로 통신할 수 있도록 해주는 개방형 컴퓨터 통신의 표준
Peer-Communication
예) A와 B가 편지를 주고 받는다면
A B
Layer 3: 편지를 쓴다 ———— 편지를 읽는다
Layer 2: 편지를 암호화한다 ———— 편지를 비암호화한다
Layer 1: 편지 봉투에 담아 보낸다 ———- 편지 봉투를 받아 연다
Layer architecture는 위 -> 아래, 아래 -> 위의 순차적인 단계를 가지고(순차 개념), 같은 계층의 상대방과만 통신을 하는(Peer-Communication) 구조로 이루어진다.
OSI 7 계층은 아래에서부터 쌓아 올리는 방식이다.
(계층이 높을수록 사람(사용자)에 가깝고, 낮을수록 하드웨어에 가깝다)
1계층 : 물리 계층(Physical Layer)
예) 구리섬유, 무선 주파수(2.4 GHz, 5.0 GHz), 이동통신 주파수, 광케이블 등
두 컴퓨터가 0과 1을 주고 받을 수 있도록 유무선 기술을 제공한다. 유무선 기술에서 0과 1을 어떻게 표현할 지를 보여준다.(주파수 상에서 0과 1을 표현하는 방법 등)
2계층 : 데이터 링크 계층(Data Link Layer)
물리 계층에서 발생하는 에러를 검출하고 수정하거나, flow control(두 컴퓨터 사이의 속도 차이로 인해 트래픽 폭주 상황이 발생하지 않도록 제어)을 수행한다.
3계층 : 네트워크 계층(Network Layer)
목적지가 멀리 떨어져 있더라도 정확한 목적지까지 메시지를 전달할 수 있도록(라우팅) 하는 계층이다.
IP는 3계층 소프트웨어이다.
4계층 : 전송 계층 (Transport Layer)
멀리 떨어져 있는 컴퓨터 사이에서 발생한 에러를 복구하는 작업을 수행한다. (데이터 링크 계층은 눈에 보이는 줄 사이(가까운 컴퓨터)에서 발생한 에러를 복구하고, 전송 계층은 여러 줄을 타고 이동했을 때 소프트웨어적으로 발견한 에러를 복구한다)
TCP, UDP는 4계층 소프트웨어이다.
5계층 : 세션 계층 (Session Layer)
인증, 허가, 세션 저장을 담당하는 계층으로, 1~4계층이 연결한 다음 논리적인 연결을 담당한다.
3A (Authorization, Authentication, Account)
6계층 : 표현 계층 (Presentation Layer)
압축, 암호화를 담당하는 계층으로, 동영상, 이미지, 소리 등의 처리를 수행한다.
7계층 : 응용 계층 (Application Layer)
실질적인 서비스 어플리케이션들을 포함하는 계층이다.
1~4 계층은 운영체제 안에 포함되며 수정 또는 개선하기 위해서는 커널을 건들여야 한다.
5~7 계층은 응용 계층에서 주로 이루어지기 때문에 변경이 용이하다.
HTTP는 응용 계층에서 다뤄지기 때문에 개선하기 용이하다.
예) 웹 브라우저와 웹 서버(응용 계층)는 동영상, 이미지 등을 보여줄 수 있으며(표현 계층 기능 포함), 웹서버에 논리적으로 연결 요청, 해제하는 기능을 가지고 있다.(세션 계층 기능 포함) -> 5~7계층은 프로그램 실행의 끝과 끝에 존재함.
(참고: 라우터는 1~3계층으로, 스위치는 1~2계층으로 이루어져 있다)
메시지는 위->아래, 아래->위로 이동하지만, 실질적인 기능은 같은 계층 내 끝과 끝의 통신을 통해 이루어진다.
인터넷이 활성화되며 계층 분류가 유연해져서 바로 TCP 위에 어플리케이션을 올리는 것과 같다는 입장도 존재함. - 유연한 모델
(1~4계층은 커널에 존재하고, 웹 브라우저(응용 계층)이 5~7을 모두 포괄하여 4계층 위에 바로 올라갈 수 있다는 의미)
Layer N에서 전달하고자 하는 데이터(protocol data unit; PDU)를 Layer N-1로 전달하며, Layer N-1는 데이터(service data unit; SDU)를 전달받는다.
=> 위에서 아래로 데이터를 전달하는 것을 layering operation이라고 한다.