https://www.youtube.com/watch?v=6l7xP7AnB64&list=PLcXyemr8ZeoSGlzhlw4gmpNGicIL4kMcX&index=2
영상에서 다룰 내용
프로토콜 개념
OSI 7 Layer
네트워크 기능
컴퓨터나 기타 기기들이 리소스를 공유하거나 데이터를 주고받기 위해 유선 혹은 무선으로 연결된 통신체계이다.
애플리케이션 목적에 맞는 통신방법 제공
신뢰할 수 있는 데이터 전송방법 제공
네트워크 간의 최적의 통신 경로 결정
목적지로 데이터 전송
노드 사이의 데이터 전송
네트워크프로토콜이란 ?
네트워크가 존재하는 이유는 통신하기 위함이다.
통신기능이 제대로 동작하기 위해서는 참여자들 사이에서 약속된 통신방법이 있어야한다.
사람과 사람 사이에서도 대화가 되려면 언어가 같아야한다.
"무엇을 도와드릴까요?" 라고 물어봤는데 "hello..""라고 한다면 대화가 안된다.
네트워크도 같다.
네트워크 통신을 하기 위해 통신에 참여하는 주체들이 따라야하는 형식, 절차, 규약이라고한다.
네트워크 프로토콜(Network Protocol)에 따라서 통신한다.
네트워크 기능의 모듈화 필요성
이 모든 기능은 단 하나의 프로토콜로 구현할 수 있을까? 구현할 수 없다.
마치 백엔드 애플리케이션을 구현하는데 하나의 클래스내에 모든 기능을 구현한다는것이다.
네트워크의 기능은
- 애플리케이션 목적에 맞는 통신방법 제공
- 신뢰할 수 있는 데이터 전송방법 제공
- 네트워크 간의 최적의 통신 경로 결정
- 목적지로 데이터 전송
- 노드 사이의 데이터 전송
...
...
한 클래스 내에 모두 구현할경우 유지보수가 너무 어렵고, 새로운 기능 추가도 쉽지 않다.
어떻게 해야할까? 모듈화를 해야한다. 기능별로 분리시켜 구현한다는 의미이다.
어떻게 모듈화할것인가?
이 네트워크의 기능을 살펴본다. 각 기능별로 나눠보자..
- 애플리케이션 목적에 맞는 통신방법 제공
- 애플리케이션 사이에서 필요한 기능이다.
- 신뢰할 수 있는 데이터 전송방법 제공
- 애플리케이션 사이에서 어떻게 안정적으로 데이터를 전송할지
- 네트워크 간의 최적의 통신 경로 결정
- 어플리케이션 사이의 호스트 사이에서 실제로 데이터를 전송할지
- 목적지로 데이터 전송
- 호스트 사이에서 어떻게 실제로 데이터를 목적지로 보낼지(Routing ISP)
- 노드 사이의 데이터 전송
- 여러 노드들을 거칠때 노드와 노드 사이의 데이터를 어떻게 전송할지
이 기능들을 살펴보니 각 기능이 계층별로 동작하는것과 같은 특성이 존재한다.
Layered Architecture(계층 구조)
OSI Model ( 7 Layer )
- 범용적인 네트워크 구조
TCP/IP stack( 4 Layer)
- 인터넷에 특화된 네트워크 구조
OSI 7 Layer
- application Layer ( L7 )
- Presentation Layer ( L6 )
- session Layer ( L5 )
- transport layer ( L4 )
- network layer ( L3 )
- data link layer ( L2 )
- physical layer ( L1 )
각 레이어에 맞게 프로토콜이 세분화돼서 구현된다.
각 레이어의 프로토콜은 하위레이어의 프로토콜이 제공하는 기능을 사용하여 동작한다.
Application Layer
- 애플리케이션 목적에 맞는 통신 방법을 제공한다.
- HTTP, DNS, SMTP, FTP.. 더 다양한 프로토콜이 존재한다.
- 만약 이 애플리케이션이 통신을 통해 웹페이지를 보여주고싶다면 HTTP 프로토콜을 통해 주고받으면 된다.
- File을 서버에 업로드하고 다운로드하는 FTP를 사용한다.
- 혹은 google.com 처럼 도메인을 IP주소로 바꾸고싶다면 DNS 프로토콜을 사용한다.
- 이메일을 사용한다면 SMTP 프로토콜을 사용한다.
- 각 애플리케이션 목적에 맞는 프로토콜을 사용한다.
- 실제로 어떻게 데이터가 오고가는지는 Application Layer의 관심사가 아니다. application Layer는 그 기능을 사용하면된다. 실제로 데이터가 오고가는것은 APplication Layer 의 하단 Layer들에서 구현되어있다.
Presentation Layer
- 애플리케이션 간의 통신에서 메세지 포맷을 관리한다.
- 인코딩 - 디코딩, 만약 A에서 B로 데이터 전송시 어떤 CharacterSet으로 인코딩하였는지에 따라 받는쪽에서 디코딩한다.
- 암호화 - 복호화, 만약 A에서 암호화했다면 B에서 복화하가 필요하다.
- 압축 - 압축 풀기, 만약A에서 압축해서 보냈다면 B에서 압축을 풀어야한다.
Session Layer
- 애플리케이션 간의 통신에서 세션을 관리한다
- 현업에서 개발시에는 RPC(Remote Procedure Call)이 세션 레이어에서 관리한다.
지금까지 Application, Presentation, Session Layer 들은 애플리케이션 Layer 기능을 담당하고있다.
TransPort Layer
- 애플리케이션 간의 통신담당
- A -> B로 데이터 전송시에 어떻게 데이터를 보낼것인가와 관련하여 중요한 프로토콜이 존재한다. TCP, UDP이다.
- 안정적이고 신뢰할 수 있는 데이터 전송보장(TCP)
- 필수 기능만 제공(UDP)
- 목적지 애플리케이션으로 데이터 전송하기 위해 어떤 식의 통신을 할것인지 정하는 레이어이다. 실제로 데이터가 어떻게 목적지까지 갈것이냐는 관심사가 아니다. transport Layer는 network layer를 통해서 실제로 데이터 전송하는것이다. netwrk layer가 제공하는 기능을 활용하는것이다.
Network Layer
- 호스트 간의 통신을 담당(IP)
- 목적지 호스트(IP주소)를 활용해 데이터를 전송하는 역할을 한다.
- \네트워크 간의 최적의 경로 결정
- 실제로 데이터를 목적지로 찾아갸아하기에 네트워크를 이루고있는 ISP의 Router 장치들도 network Layer가 구현되어있다.
- 그 프로토콜이 network Layer. 이떄 대표적인 프로토콜이 IP 프로토콜이다. IP 주소를 활용해 찾아가는 것이다.
- 평소에 최적의 경로를 찾아놓으면 그 경로를 바탕으로 목적지 호스트IP로 찾아가서 연결시킨다.
- 전체적인 경로를 담당하는것이지, 각각의 노드 사이에서 데이터를 어떻게 전송할것이냐는 data link layer가 담당한다.
- network layer도 data link layer를 사용해서 자신의 기능을 구현한다는 의미이다.
data link layer
- 직접 연결된 노드 간의 통신을 담당한다.
- 데이터가 쭉 전달되며 각 ISP의 라우터 간 통신을 담당한다는것이다.
- MAC 주소 기반
- network layer는 IP주소 기반으로 작동하였지만, data link layer에서 장치와 장치 간의 데이터 주고받을때는 MAC 주소 기반으로 통신(ARP)한다. IP주소를 MAc 주소로 변환시키는데 이때 사용하는것이 ARP 프로토콜이다.
- 하나의 노드에서 다른 노드로 데이터를 보낼 수 있게 된다.
Physical Layer
- bits 단위로 데이터 전송
- 물리적인 매개체(케이블, 무선) 을 통해 bites 단위로 전송한다.
- 실제로 A노드에서 B노드로, B노드에서 C노드로 이동하게 된다.
이렇게 OSI 7 Layer에서 각 레이어와 어떤 프로토콜이 존재하는지 알아보았다.
OSI 7 Layer에서 간단한 통신 모델 예제
컴퓨터 A와 컴퓨터 B가 통신하려고 한다.
각 A와 B, 모든 컴퓨터마다 통신할떄 각 레이어별로 프로토콜, OSI 7 Layer는 모두 구현되어있다.
A - > Router -> B
network layer
data link layer
physical layer
만약 A에서 B로 보낸다면,
- Application Layer -> Presentation Layer - > session Layer -> transport Layer -> network Layer -=> data link layer -> physical layer ->
- Router의 physical layer -> data link layer -> network layer -> (목적지 찾음) -> data link layer -> physical layer ->
- 컴퓨터의 physical Layer -> data link layer .... 로 계속 올라온다.
encapsulation & decapsulation
어플리케이션 A가 보낸 Message가 어떤 과정을 거쳤는지 OSI 모델 관점에서 보았다.
보낼려는 데이터를 포장시키고, Router에서 포장을 어느정도 뜯고, 다시 포장한뒤,
마지막으로 B에서 받는 MEssage의 포장을 풀면서 데이터를 받는 과정을 거친다.
이 모든 과정속에서 각각의 Layer마다 동작하는 프로토콜이 각자의 기능을 수행한다.
이러한 일련의 과정, MEssage를 포장하고 푸는 과정을 encapsulation & decapsulation이라한다.
TCP/IP Stack
지금까지 OSI 7 Layer를 알아보았는데 TCP/IP STACK이라는 인터넷 구조에 특화된 layered architecture.도 존재한다.
이 또한 Layer로 총 4개의 계층으로 구분되어있다.
TCP/IP stack에서는 application layer , presentation layer, session layer를 application Layer로 묶고, transport layer, internet layer,( data link layer, physical layer)를 묶은 link layer로 구현되어잇다.