컴퓨터 간 네트워크 통신을 하기 위해서 통신에 참여하는 주체들 간의 규약이 필요하다.
그것이프로토콜
이다.
하지만 실제로 네트워크 통신이 해야 할 기능이 너무 많다
. 애플리케이션끼리의 통신 방법도 제공해야 하고 신뢰할 수 있는 데이터 통신 방법도 제공해야 한다. 목적지 네트워크까지의 최적의 경로를 결정하는 방법도 제공해야 하고 실제로 목적지까지 전달도 해야 한다.
이 모든 과정을 자세히 살펴보면, 단 한 개의 프로토콜로 이 모든 기능을 제공하는 것은 매우 어리석은 방법이라는 생각이 든다. 즉, 모듈화
를 해야 하는데 제공해야 하는 기능들을 보면 계층별로 나눌 수 있어 보인다
. 애플리케이션 간의 동작, 호스트 간의 동작, 실제로 전달되는 과정 등과 같이 나누면 프로토콜이 잘 완성될 것 같다.
그렇게 되어 만들어진 모델이 OSI 7 layer 모델
이다.
우선, 각 레이어 프로토콜은
하위 레이어 프로토콜이 제공하는 기능을 사용해서 동작한다
는 사실을 알고 있어야 한다.
Physical Layer
bits 단위로 데이터 전송
을 담당하는 레이어다.
케이블이 될 수도 있고, 무선 통신이 될 수도 있다.
Data Link Layer
노드 간의 직접 연결
을 담당하는 레이어다.
MAC 주소를 이용하여 다음은 어떤 노드로 가야 하는지를 결정한다.
여기서 MAC 과 IP 주소 변환해 쓰는 기술이 ARP
다.
Network Layer
출발지와 목적지 호스트 간의 통신
을 담당하는 레이어다.
IP 주소
를 통해 목적지 호스트에게 가려면 어떻게 해야 하는지 결정한다.
또, 네트워크에서의 최적 경로를 결정한다.
Transport Layer
출발지의 애플리케이션과 목적지의 애플리케이션 간의 통신
을 담당하는 레이어다.
안정적이고 신뢰할 수 있는 TCP
와, 이런 것들이 보장되지 않고 필수 기능만 제공하는 UDP
기술이 있다.
Session Layer
애플리케이션 간의 세션을 관리
하는 레이어다.
세션을 관리하는 기술에는 RPC
와 같은 기술이 있다.
Presentation Layer
애플리케이션 간의 메세지 포맷을 관리
하는 레이어다.
인코딩과 디코딩, 암호화와 복호화, 압축과 압축 풀기 등의 과정을 수행한다.
Application Layer
애플리케이션에 필요한 통신 방법을 제공
하는 레이어다.
통신의 목적이 웹으로 통신이라면 HTTP
, 파일을 주고받는 거라면 FTP
, 도메인 주소와 IP주소의 변환이라면 DNS
, 메일을 주고받는 거라면 SMTP
와 같은 기술이 있다.
출발지 컴퓨터에서 메세지를 목적지 컴퓨터로 보내는 과정
은 다음과 같다.
먼저 출발지 컴퓨터의 Application layer에서 메세지를 헤더 정보와 함께 싸서 하위 레이어로 보낸다.
Presentation layer에서도 마찬가지로 이 패킷을 받아와 해당 레이어에서의 정보와 처리를 한 뒤 헤더 정보를 붙여 하위 레이어로 보낸다.
이 과정을 physical layer까지 한 뒤에는 목적지 방향의 node로 이동이 된다.
그렇게 패킷을 받은 노드는 한 단계씩 헤더 정보를 풀어 network layer까지 올린 뒤, 목적지를 확인하고 다음은 어느 노드로 이동해야 하는지를 읽어낸 뒤 다시 포장하여 physical layer까지 내려보낸다.
이 과정을 또 목적지에 도착할 때까지 반복한다.
그렇게 목적지에 도착한 패킷은 physical layer에서 application layer까지 반대로 헤더 정보를 한 개씩 벗겨 정보를 확인한 뒤 마침내 목적지 컴퓨터의 해당 application 까지 메세지가 도착하게 된다.
헤더 정보와 함께 싸서 포장을 하는 과정을
Encapsulation
헤더 정보를 한 개씩 벗겨 정보를 확인하는 과정을Decapsulation
이라고 한다.
영상출처: 쉬운코드, 프로토콜과 OSI 7 layer 설명! 네트워크의 기능들이 어떻게 구조화 돼서 동작하는지를 설명합니다! 👍
https://www.youtube.com/watch?v=6l7xP7AnB64