1-2. 네트워크 시스템 개요: OSI 참조 모델, 캡슐화

독수리박박·2024년 3월 5일
0

이 글은 go언어를 활용한 네트워크 프로그래밍을 기반으로 작성되었습니다


💻Network System💻

컴퓨터 네트워크 시스템이란?

두 개 이상의 장치 또는 노드간의 연결을 말하며, 각 노드가 데이트를 공유할 수 있도록하는 하나의 망이다.
네트워크는 본질적으로 신뢰할 수 없거나  안전하지 않지만 Go 언어의 표준 라이브러리와 풍부한 생태계를 
활용하면 안전하고 신뢰할 수 있는 네트워크 애플리케이션을 작성할 수 있다.

OSI 참조 모델

1970년대 들어 컴퓨터 네트워크 구조가 복잡해지면서 표준 네트워크 구조가 필요해 졌고 이런 필요에 의해
개방형 상오 연결(Open System Interconnection, OSI) 참조 모델이 개발되었다.
OSI 참조 모델은 개발과 통신을 위한 프레임워크 역할을 한다.
프로토콜은 네트워크를 통해 전송되는 데이터의 포맷과 순서를 결정하는 규칙 혹은 절차를 의미한다.

오늘날의 OSI 참조 모델은 예전만큼 사용되진 않지만, 하드웨어의 관점에서 로우 레벨의 네트워킹, 라우팅과 같은 일반적인 개념을 이해할수 있기 때문에 여전히 중요하다.

OSI 참조 모델의 계층 구조 레이어

OSI 참조 모델은 네트워크 내의 모든 활동을 7개의 계층으로 구성된 엄격한 계층 구조로 구분한다. 각각의 레이어를 스택으로 배열하며, 7계층은 맨위에 1계층은 맨 아래에 존재한다.

  • 7계층 - 애플리케이션 계층: 네트워크 애플리케이션과 라이브러리는 대부분 애플리케이션 계층과 상호 작용한다. 호스트를 식별하고 리소스를 검색하는 역할을 담당. 예시로는 웹 브라우저, 비트토렌트 클라이언트 등이 존재한다.

  • 6계층 - 프레즌테이션 계층: 데이터가 아래 계층으로 이동할 때 네트워크 계층에 대한 데이터를 준비하고, 데이터가 상위 계층으로 이동한다면 애플리케이션 계층에 대한 데이터를 제공한다. 예시로는 암호화, 복호화 및 데이터 인코딩등이 존재한다.

  • 5계층 - 세션 계층: 네트워크 노드 간의 연결 수명 주기를 관리한다. 연결 수립, 연결 시간 초과 관리, 작동 모드 조정, 연결 종료 등의 기능을 담당한다. 일부 7계층의 프로토콜은 이 5계층에 의존한다.

  • 4계층 - 전송 계층: 전송의 안정성을 유지하면서 서로 다른 노드 간 데이터의 존성을 제어하고 조정한다. 데이터 전송의 신뢰성 유지를 위해 에러 수정, 데어터 전송 송도 제어, 데이터 청킹, 누락된 데이터 재전송, 수신 데이터 확인등의 과정을 거친다.

  • 3계층 - 네트워크 계층: 노드 간의 데이터 전송을 담당한다. 원격 노드에 직접 점대점으로 연결하지 않고도 네트워크 주소를 이용해서 데이터를 전송할 수 있다. OSI의 네트워크 계층에서는 전송의 신뢰성이나 에러 등을 전송자에게 알려주기 위한 프로토콜이 따로 필요 없다. 라우팅, 주소 지정 멀티캐스팅 및 트래픽 제어와 관련된 네트워크 관리를 위한 프로토콜이 주된 구성 요소이다.

  • 2계층 - 데이터 링크 계층: 직접 연결된 두 노드 간의 데이터 전송을 처리한다.
    시스템 -> 스위치 -> 다른 시스템 으로의 데이터 전송을 쉽게 할 수 있도록 지원한다. 데이터 링크 계층의 재전송 및 흐름 제어 기능은 하위의 물리적 매체에 따라 달라진다.
    ex) 이더넷(유선): 데이터 재전송X, 무선: 재전송O

  • 1계층 - 물리 계층: 상위 네트워크 스택에서 받는 신호(비트)를 물리적 매체가 관리할 수 있게 전기, 광학 또는 무선 신호로 변환하고 그 반대도 마친가지로 담당한다.


데이터 캡슐화를 사용한 트래픽 전송

캡슐화는 구현의 세부 정보를 숨기고 관련한 기타 세부 정보만 사용할 수 있도록 하는 방법이다. 예를 들면 택배를 보낼 때 포장지 안에 있는 내용물을 포장지나 택배 박스 등으로 캡슐화 한 후 택배를 보내게 된다. 이 전송 과정에서는 내용물은 중요하지 않고 받는 사람의 주소나 전화번호등의 정보만 사용하게 된다. 이 처럼 데이터 전송 시에도 안에 있는 데이터 즉 페이로드(payload)나 메시지 본문(message body)는 중요하지 않고 각 계층마다 필요한 헤더 정보를 포함해서 데이터를 캡슐화하게 된다.

데이터가 스택을 따라 이동하며 하위 계층에 의해 캡슐화 된다. 예를 들어 전송 계층은 세션 계층에서 페이로드를 캡슐화하고, 이 페이로드를 프레즌테이션 계층에서 또 다시 캡슐화한다. 페이로드가 스택 위로 이동하는 상황이라면 각 레이어는 이전 레이어에서의 헤더 정보를 제가한다. 만약 반대의 상황이라면 자신의 레이어의 헤더 정보를 추가한다.

만약 계층 내의 클라이언트와 서버 간의 데이터 전송을 하는 수평 통신을 하는 상황에서도 클라이언트 네트워크의 스택을 따라 하위로 이동하고 다시 서버의 네트워크 스택을 따라서 상위 계층으로 이동을 하게 된다.

아래 사진은 이런 흐름을 잘 보여준다.


네트워크 시스템 개요 글은 다음 글에서 계속 됩니다.

0개의 댓글