프로토콜, OSI 7 layer, 캡슐화와 비캡슐화

이정빈·2024년 4월 7일

네트워크

목록 보기
2/10

프로토콜 이란?

저번 시간에 네트워크에 대해 정리해보았다. 결국 네트워크의 목적은 통신인데, 통신 기능이 제대로 작동하기 위해서는 참여자들 사이에 약속된 통신 방법이 있어야한다. 그 방법이 바로 프로토콜이다.

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

이런 프로토콜들은 각 용도에 따라 나뉘게 된다. 프로토콜을 하나로 통일한다면 성능과 효율성이 떨어지기 때문이다.


OSI 7 layer(model) 이란?

네트워크의 기능들을 정리하면 다음과 같다.

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

이런 기능들을 보면 각 기능이 계층별로 동작하는 것을 알 수 있다.
그래서 이것을 계층구조(layered architecture)로 만든 것이 OSI 모델 (7 layer)와 TCP/IP 스택 모델(4 layer)이다. OSI 모델은 범용적인 네트워크 구조를 모델링한 것이고, TCP/IP 스택 모델은 인터넷에 특화된 네트워크 구조이다.

계층구조로 나눴을 때의 장단점

장점

  • 크고 복잡한 네트워크 시스템을 여러 개의 계층(Layer)으로 나누면 이해하기 쉽고, 통신의 흐름을 단계적으로 파악할 수 있다.
  • 각 계층은 서로 독립적이어서 모듈화의 장점인 유지보수와 업데이트 용이성을 갖는다.

단점

  • 계층간 기능이 중복될 수 있다.
  • 계층간 많은 상호작용이 요구되기 때문에 오버헤드가 발생한다.

앞으로 배울 다양한 계층의 프로토콜을 모두 합하여 프로토콜 스택(Protocol Stack)이라고 부른다.

다시 OSI 7 layer 모델을 살펴보자.

OSI 7 layer 모델은 범용적인 네트워크 구조를 7단계로 모델링한 것이다.

사진처럼 각 레이어에 맞게 프로토콜이 세분화되어 구현되어 있다. 또한 각 레이어의 프로토콜을 하위 레이어의 프로토콜이 제공하는 기능을 사용하여 동작한다. 예를 들어 네트워크 계층의 프로토콜은 데이터 링크 계층의 프로토콜의 기능을 사용하여 동작한다.

1. 물리 계층(physical layer)

전송단위: Bit, 주소단위: 없음 = 주소의 개념이 없음

  • 이 계층에서는 주로 전기적, 기계적, 기능적인 특성을 이용해서 통신 케이블로 비트단위의 데이터를 전송한다.
  • 1계층의 주요 장비로는 허브, 리피터, 케이블 등이 있다.
  • 허브는 장치들을 연결하는데 주소의 개념이 없으므로 모든 포트로 데이터를 브로드캐스트 한다.
  • 2계층 장치인 스위치와 1계층 장치인 허브는 비슷한 역할을 하지만 스위치는 목적지가 있어 목적지에만 데이터를 전송하고, 허브는 목적지 없이 브로드캐스트한다.
  • 리피터는 데이터를 증폭하는 데 사용된다.

전송단위: Frame, 주소단위: MAC

  • 전기 신호를 모아 우리가 알아볼 수 있는 데이터 형태로 처리한다.
  • 주소라는 개념이 생기고, 직접 연결된 노드(디바이스) 간의 통신을 담당한다(MAC 주소를 활용). 주소가 생겼다는 것은 한명과만 소통하는 것이 아니라 여러명과 동시에 통신할 수 있다는 것이므로 무작정 데이터를 보내는 것이 아니라 받는 사람이 데이터를 받을 수 있는지 확인하는 작업부터 해야한다. 이를 Flow Control이라고 한다.
    • ARP: IP 주소를 MAC 주소로 변환해주는 프로토콜
  • 프레이밍:
    • 상위 계층에서 받은 데이터에 헤더(header)테일러(tailer)를 추가한다. 이는 주소정보를 포함하고, 오류 감지와 프레임 경계 식별을 위해서다.
    • 하위 계층에서 받은 데이터를 프레임(frame)이라고 불리는 작은 단위로 나눈다.
  • 2계층의 주요 장비로는 NIC(Network Interface Card = 랜카드: 컴퓨터를 네트워크에 연결하기 위한 장치)와 스위치가 있다.
    • NIC에는 고유의 MAC 주소가 있다. 그래서 목적지 MAC 주소가 자신의 MAC 주소와 같으면 데이터를 메모리에 적재한다(아니면 버린다).
      -스위치는 올바른 MAC 주소를 확인하여 해당 주소로 데이터를 전달한다.
  • 이 계층의 예시로는 이더넷이 있다.
    • 이더넷: 가장 널리 사용되는 네트워크 디바이스들을 연결하는 유선 LAN 기술

3. 네트워크 계층(network layer)

전송 단위 : Packet, 주소 단위 : IP

  • 호스트 간의 통신을 담당한다(IP 주소(논리주소)를 활용).
  • 네트워크 간의 최적의 경로를 결정한다.
    • 라우팅을 통해 패킷의 최적 이동경로를 결정하고 포워딩으로 패킷을 다음 라우터에 전송한다.
  • 3계층의 주요 장비는 라우터이다.

4. 전송 계층(transport layer)

전송 단위 : Segment, 주소 단위 : Port

  • 실제로 1,2,3 계층이 데이터를 잘 보내도록 확인하는 역할은 한다.
    • 패킷의 유실 여부와 순서를 체크한다.
    • 패킷의 보내는 순서를 명시한 것이 SEQ 번호(시퀀스 번호)이고, 받는 순서를 나타낸 것이 ACK 번호(acknowledge number)이다.
  • 프로토콜에는 안정적이고 신뢰할 수 있는 데이터 전송을 보장하는 TCP와 빠르고 필수 기능만 제공하는 UDP가 있다.
  • 4 계층의 주요 장비로는 트래픽을 분산해주는 로드밸런서가 있다.

5. 세션 계층(session layer)

전송 단위 : Massage

  • 통신을 하는 두 host간 최초 연결을 수행하고 연결을 유지한다(세션을 열고 닫고 관리한다).

1. 세션 설정(Session Establishment): 통신을 시작하기 위해 양측 간의 세션을 설정한다.

2. 세션 유지(Session Maintenance): 세션이 설정된 후에는 데이터를 주고 받는 동안에도 세션을 유지해야 한다. 세션 계층은 이를 위해 데이터 전송 중에 동기화 및 대화 기능을 수행한다.

  • 동기화(Synchronization): 세션 계층은 통신하는 당사자 간에 데이터 교환을 동기화한다. 이는 데이터의 일관성과 순서를 유지하기 위해 필요한 작업이다.
  • 대화 제어(Dialog Control): 세션 계층은 통신 세션 동안 양측 간의 대화를 제어한다. 데이터 전송의 순서를 조정하고, 필요에 따라 데이터 전송을 일시 중지하거나 재개하는 등의 작업을 수행한다.

3. 세션 종료(Session Termination): 통신이 완료되면 세션 계층은 통신이 완료되었음을 양측 장치에 알리고 세션을 안전하게 종료한다.

  • 동시 송수신 방식(Full-Duplex Mode): 동시 송수신 방식은 양쪽 장치가 동시에 데이터를 주고 받을 수 있는 방식이다. 이 방식은 전이중 방식을 사용하며, 네트워크에서 가장 일반적으로 사용되는 방식 중 하나이다.
  • 반이중방식(Half-Duplex Mode): 반 이중 방식은 양쪽 장치가 번갈아가며 데이터를 주고 받을 수 있는 방식이다. 한 번에 하나의 방향으로만 통신이 이루어지며, 순서대로 데이터를 주고 받는다.
  • 전이중 방식(Full-Duplex Mode): 전이중 방식은 양쪽 장치가 동시에 데이터를 주고 받을 수 있는 방식이다. 각각의 방향으로 별도의 통신 채널을 사용하므로, 동시에 양방향으로 통신이 이루어진다.

6. 표현 계층(presentation layer)

전송 단위 : Massage

  • 어플리케이션 간의 통신에서 메시지 포맷을 관리한다.
    • EX) ASCII, EBCDIC, CIF, JPEG, AVI, MPEG 등
  • 따라서 인코딩(디코딩), 암호화(복호화), 압축(압축풀기) 등을 담당한다.

7. 응용 계층(application layer)

전송 단위 : Massage

  • 어플리케이션 목적에 맞는 통신 방법을 제공한다.
  • HTTP, DNS, SMTP, FTP 등

캡슐화(encapsulation)와 비캡슐화(decapsulation)

앞서 살펴보았듯 데이터를 보낼 때는 데이터에 응용 계층부터 아래로 각 계층이 헤더를 붙인다(물리 계층은 헤더를 붙이지 않으며, 데이터 링크 계층은 헤더와 테일러를 모두 붙인다). 이러한 과정을 캡슐처럼 포장하는 것에 빗대어 캡술화(encapsultaion)라고 한다. 반대로 하위 계층에서 상위 계층으로 올라갈 때 헤더나 추가된 정보들을 제거하는 과정비캡슐화(decapsulation)라고 한다.

정리하자면 캡슐화데이터가 상위 계층에서 하위 계층으로 내려갈 때 새로운 헤더(Header)나 특정한 정보를 추가하여 패킷(Packet)을 형성하는 과정이고 비캡슐화데이터가 하위 계층에서 상위 계층으로 올라갈 때, 각 계층의 헤더나 추가된 정보들을 제거하고, 해당 계층의 프로토콜에 따라 데이터를 처리하는 과정이다.

참고:

profile
사용자의 입장에서 생각하며 문제를 해결하는 백엔드 개발자입니다✍

0개의 댓글