네트워크: OSI 7 계층

ysng_is_yosong·2024년 1월 18일

CS

목록 보기
4/6
post-thumbnail

네트워크란?

컴퓨터나 기타 기기들이 리소스를 공유하거나 데이터를 주고 받기 위해 유선 혹은 무선으로 연결된 통신 체계

네트워크는 아래와 같은 여러 기능을 수행한다.

  • 애플리케이션 목적에 맞는 통신 방법 제공
  • 신뢰할 수 있는 데이터 전송 방법 제공
  • 네트워크 간의 최적의 통신 경로 결정
  • 목적지로 데이터 전송
  • 노드 사이의 데이터 전송

위와 같은 네트워크의 통신기능이 제대로 동작하기 위해서는 참여자들 사이에 약속된 통신 방법이 있어야 한다.

네트워크 프로토콜이란?

네트워크 통신을 하기 위해서 통신에 참여하는 주체들이 따라야 하는 형식, 절차, 규약을 말한다.

하지만 단 하나의 프로토콜로 네트워크가 수행하는 여러 기능을 모두 구현 할 수는 없다!

마치 백엔드 애플리케이션을 개발하는데, 하나의 클래스로 모든 기능을 수행하도록 만들겠다는 것과 같다.

이렇게 구현한다면 유지보수도 힘들어지고 새로운 기능을 추가하는 것도 어려워진다.

따라서 이를 위해 프로토콜을 모듈화 하였다!

즉 네트워크가 수행하는 여러 기능 별로 프로토콜을 구현한다.

하지만 이런 기능을 어떻게(어떤 방식으로) 모듈화를 해야할까?

네트워크가 제공하는 기능을 살펴보니 각 기능이 계층별로 동작하는 것으로 나눌 수 있었다.

(애플리케이션 사이에서, 노드들 사이에서, 등등…)

따라서 네트워크 구조를 계층구조(layered architecture)로 모듈화 한다.

이를 통해 나온 것이 바로 OSI 모델(7 layer)이다.

OSI 7 Layer(7 계층)

  • 범용적인 네트워크 구조를 모델링

***TCP/IP stack(4 Layer)란?

  • 4개의 계층으로 구성
  • 인터넷에 특화된 네트워크 구조 모델링

하지만 일반적으로 백엔드 개발이나 문서에서는 OSI 모델 위주로 얘기를 한다.


OSI 모델은 위와 같은 7개의 계층을 가지고 있다.

각 레이어에 맞게 프로토콜이 세분화 되어서 구현된다.

각 레이어의 프로토콜은 하위 레이어의 프로토콜이 제공하는 기능을 사용하여 동작한다.

각 레이어는 그저 하위 레이어가 제공하는 기능을 사용하면 되는 것이다.

  • application layer - L7 : 애플리케이션 목적에 맞는 통신 방법 제공
    • HTTP, DNS, SMTP, FTP 등등
    • 실제로 데이터를 어떻게 주고 받을 것인가는 그 하위 레이어의 관심사
  • presentation layer - L6 : 애플리케이션 간의 통신에서 메시지 포맷 관리
    • 인코딩 ↔ 디코딩, 암호화 ↔ 복호화, 압축 ↔ 압축해제 등등 관리
  • session layer - L5 : 애플리케이션 간의 통신에서 세션을 관리
    • RPC(Remote Procedure Call) 등등
  • transport layer - L4 : 애플리케이션 간의 통신 담당, 실제 목적지 애플리케이션으로 데이터를 전송
    • TCP : 안정적이고 신뢰할 수 있는, 데이터 전송을 보장
    • UDP : 데이터 전송에 필수 기능만 제공
      • 다만, UDP는 데이터가 중간에 유실 될 수 있고, 데이터 순서를 보장하지 않는다.
    • 실제로 보내려는 데이터가 어떻게 목적지까지 찾아가는지 만드는 것은 L4의 관심 밖이다.
  • network layer - L3 : 호스트 간의 통신 담당, 목적지 호스트로 데이터 전송 → IP 프로토콜
    • 이때 목적지 주소의 IP 주소를 활용하여 데이터를 전송한다.
    • 이 기능을 수행하기 위해 데이터를 전송하는 라우터들이 기능을 구현하고 있어야 한다.
    • 네트워크 간의 최적 경로 설정
  • data link layer - L2 : 직접 연결된 노드 간의 통신 담당 → MAC 주소 기반 통신
    • ARP: IP주소를 MAC주소로 혹은 그 반대로 변환하는데 사용되는 프로토콜
  • physical layer - L1 : 실제로 물리적인 매개체(케이블, 신호)를 통해 bits 단위로 데이터를 전송

위의 계층에서 L7, L6, L5는 애플리케이션과 관련된 기능을 담당하기 때문에 포괄적으로 세 개의 계층을 묶어 application layer로 보는 경우도 있다.

OSI 7 Layer 정리


참고: 라우터는 컴퓨터와 컴퓨터 사이에서 통신을 할 수 있도록 만드는 장치이므로 아래와 같이 세 개의 계층으로 이루어진 프로토콜을 구성한다.


결과적으로 위와 같이 통신을 하게 된다. 통신을 하기 위해 각각의 상위 레이어(L7)에서 하위 레이어(L1)로 내려오면서 레이어별로 기능을 수행하기 위해 여러가지 처리가 된다.

L1까지 데이터가 처리되었다면 라우터로 데이터가 이동하고 다시 라우터의 L1에서부터 처리된 것을 풀면서 L3까지 올린다.

L3의 역할은 목적지 주소로 가려면 어디로 가야하는지 알려 최종 목적지까지 도달하도록 하는 역할을 하는 것이기 때문에, L3에서 목적지의 IP주소를 확인한다.

그 후 라우터의 L3에서 다시 L1으로 내려가면서 데이터를 포장(여러가지 처리)하고 목적지 주소로 데이터를 전송한다. 최종 목적지 전까지 이러한 과정을 반복한다.

마침내 최종 목적지에 도착하면 L1에서부터 L7까지 포장된 데이터를 풀고 최종 데이터를 받는 것이다.


실제 예시

: 유튜브에 댓글을 달았을 때, 댓글이 유튜브 서버에 저장되는 과정


데이터 전송을 시작하는 컴퓨터


1. L7에서 댓글 데이터를 보내기 위해 여러가지 처리를 한다. 오른쪽과 같이 헤더(H)에 여러가지 처리를 한 데이터를 담는다. 그리고 L6로 내린다.

2. L6에서도 마찬가지로 필요한 데이터를 헤더에 처리한 후, L5로 내린다.

3. L5에서도 마찬가지로 필요한 데이터를 헤더에 처리한 후, L4로 내린다.

4. L4는 실제로 애플리케이션 간의 데이터 통신을 담당하기 때문에 목적지 애플리케이션까지 데이터를 보내기 위해서 필요한 여러 정보들을 헤더에 담는다. 그리고 L3로 내린다.

5. L3는 애플리케이션을 실행하고 있는 호스트(컴퓨터) 사이의 통신을 담당하기 때문에 실제로 호스트 사이에서 데이터를 어떻게 보낼 것인지 해결해야 하므로 목적지의 IP주소를 확인하고 IP주소를 바탕으로 현재 위치를 기준으로 어디로 데이터를 보내야하는지 결정한다. 따라서 가장 가까운 라우터로 데이터를 보낸다. 이와 관련된 정보들을 모아 헤더에 저장하여 L2로 내린다.

6. L2는 위에 담긴 정보를 가지고 실제로 보내기 위한 준비를 한다. 그에 관한 헤더와 트레일러(trailer)에 담는다. 여기서 트레일러는 전송 후에 에러가 없는지 확인하는 용도로 사용된다. 그 후 L1으로 내린다.
7. L1은 포장된 데이터를 Bit 단위로 가장 가까운 라우터에 전송하게 된다.


중간 라우터


1. L1에서 포장된 실제 데이터를 받는다.

2. L2에서 트레일러로 오류가 없는지 확인하고 헤더와 트레일러를 푼다.

3. L3에서 포장된 헤더를 풀어준다.

4. 다음 라우터로 데이터를 전송하기 위해 목적지의 IP주소를 확인하고 가장 가까운 라우터 혹은 목적지가 가깝다면 목적지로 데이터를 보내기 위해 관련 정보들을 모아 헤더에 저장하고 L2로 내린다.
5. L2는 위에 담긴 정보를 가지고 실제로 보내기 위한 준비를 하고 헤더와 트레일러를 포장한다. 그 후 L1으로 내린다.
6. L1에서 Bit단위로 실제로 데이터를 전송한다.


목적지 컴퓨터


1. L7에서 전달 받은 Bit단위의 데이터를 모두 받아서 모은 후 L6로 올린다.

2. L6에서 오류가 없는지 확인하고 헤더의 정보를 확인한 후 L5로 올린다.

3. L5에서는 본인의 IP주소인 것을 확인하고 헤더를 떼어 내어 L4로 올린다.

4. L4에서는 애플리케이션 간의 데이터를 전달하기 때문에, 헤더 정보를 참고하여 ‘어떤 애플리케이션에 데이터를 전달해야하는지’를 확인 → 유튜브 서버 애플리케이션으로 데이터를 전송해야 한다는 것을 확인

  1. L3~L1까지 모두 비슷한 과정을 거치고 최종 데이터를 애플리케이션에서 확인하게 된다.

데이터가 전달되는 과정을 정리하면 아래와 같은 구조가 된다.


위와 같이 데이터가 전달되는 과정에서 각 레이어마다 프로토콜이 역할을 하였다고 이해하면 된다.
이렇게 데이터를 포장하고 포장을 푸는 과정을 ‘Encapsulation & Decapsulation’라고 부른다.

TCP/IP Stack은 아래와 같이 계층화가 된다.


application layer, presentation layer, session layer가
application layer 하나로 묶어 구성 되고
data link layer와 physical layer가 link layer 하나로 묶어 구성된다.

profile
Get hands on dirty!🤺

0개의 댓글