본문 바로가기

CS 과목(CS科目)/네트워크(ネットワーク)

[OSI 7Layer]와 [TCP/IP Stack Layer]의 탄생

네트워킹에 필요한 통신 기능들

네트워크 프로토콜(Protocol) : 네트워크 통신을 하기 위해서 통신에 참여하는 주체들이 따라야 하는 형식, 절차, 규약

그런데 위 모든 기능을 단 하나의 프로토콜로 구현할 수가 있을까??

이건 마치, 백엔드의 모든 기능을 하나의 클래스로 구현한다는 소리와 같다. 

하나의 클래스는 하나의 기능을 담당한는 것이 객체지향의 원칙이다.

네트워크의 통신 기능들도 [계층별]로 [모듈화]를 시켜야 한다.  

그래서 탄생한 것이 바로, OSI 7 Layer이다. 

대표적인 네트워크 Layer 2가 있다.

1. OSI 7 Layer

2. TCP/IP stack (4 layer)

-> TCP/IP stack은 [인터넷]에 특화된 네트워크 구조

 

Apllication Layer

HTTP Protocol : 만약 해당 애플리케이션이 다른 호스트에 [웹 페이지]를 보내고 싶다면 HTTP Protocol 선택

DNS  Protocol  : 만약 해당 애플리케이션이 youtube의 도메인 주소를 다른 호스트에 보내어 IP 주소로 변환하고 싶다면

DNS Procotocl을 선택.

Presentatino Layer

만약 해당 애플리케이션의 메시지 포맷이 UTF-8이면, 다른 호스트에서 UTF-8에 맞게 디코딩을 통해 메시지를 복원해줘야

하고,

만약 해당 애플리케이션의 메시지가 SHA-8 알고리즘으로 암호화되어 있다면 다른 호스트에서도 암호화된 메시지를 복호

화 해줘야 한다. 

만약 해당 애플리케이션의 메시지가 압축된 형태로 다른 호스트에 전달이 된다면 다른 호스트에서는 그 압축을 풀어야 한

다.

Session Layer

 

 

RPC(Romote Procedure call) : session Layer의 Protocol 중 하나!

-> 위 Appplication, Presentation, Session Layer이 3개의 Layer를 하나로 묶어서 Applicatino Layer 라고도 부른다. 

그리고 이 Layer들은 호스트와 호스트 사이로 데이터를 [어떻게] 보내야 할지, 예를 들어 어떤 라우터 경로로 목적지까지 

보내고 할지에 대한 것을 일절 고민하지 않는다. (transport layer도 고민하지 않음)

그것은 하위의  network, data link layer에서 결정한다.

transport Layer

 

 

 

network layer

대표적인 IP Protocol을 사용하여, 목적지 호스트로 [어떤 경로]로 데이터를 전송할 것인지 결정

( 일반적으로, 최적의 경로를 어딘가에 저장을 해 놓아서 최적화를 한다. 일일이 최적의 경로를 탐색하는 것은 비용이 너무 많이 든다)

data link layer

network layer도 네트워크의 [경로]를 결정하는 것이고,

Node와 Node 사이, 즉 라우터에서 다른 라우터로 [어떻게] 데이터를 보낼 지에 대한 것에는 관심이 없다. 

 이 부분을 해결하는 것이 data link layer이다.

network layer에서 노드의 경로가 정해지면 , 해당 경로 중 엣지에서 시작해서 순차적으로 경로를 따라서 최종적으로 목적

지 호스트에 데이터가 도착을 한다. 

만약 출발지 호스트에서 출발하여 가장 처음 도착하는 라우터가 있다고 가정을 하자.

그 라우터에 패킷이 도착을 했을 때, network header 파일에 있는 IP 주소(동적인 주소)의 MAC(장치 고유 번호)으로의 변

환값이 필요하다.(데이터가 올바른 경로로 도착했나에 대한 확인용?) 

그 역할을 DATA link layer에서 한다. 

--> DATA LINK LAYER까지는 데이터의 실제 이동이 이뤄지지 않고, 모두 이동시키기 위한 준비 작업들을 위한 LAYER였다.

 

physical layer

이제야 데이터를 장치에 실제로 전송!!!

- 하나의 HTTP 메시지가 출발지에서 목적지까지 이동하는 대략적인 과정 -

 

 

1] Encapsulation : 라우터로 데이터를 보내기 위해서 각 Layer에서 준비 작업을 한 후, 최종적으로 출발지의 Physical

Layer에서 라우터의 Physica Layer로 데이터가 이동.

2] Decapsulation : 최종적으로 라우터의 network layer까지 올라간다. 

-> data link layer에서는 Header파일의 MAC 주소를 보고 데이터가 이곳으로 온 게 정상적인 것인지 확인을 한다. 

그리고, network layer로 올라가서 최종 목적지 IP 주소를 확인을 하여 다시 최적의 경로를 구하여 그 경로를 NetWork

Layer에서 수정을 해준다. 

3] Encapsulatino : nerwork layer는 목적지까지의 최적의 네트워크 경로를 결정을 하는 것이다. 

라우터에서 새롭게 최적의 경로를 결정하고, data link layer에서 IP 주소를 목적지 호스트의 MAC 주소로 변환한 뒤

Physica Layer를 통해 데이터가 나가고, 목적지 호스트의 Physical Layer를 통해서 데이터가 최종 도착을 한다.

4] Decapsulation : 최종적으로 Application Layer에 도달하여, 출발지에서 보냈던 http 메시지가 전달됐다.