👀 OSI 참조모델

  • 예전엔 제조사별로 각자 통신 모델을 만들어 썼기 때문에 서로 호환이 되지 않아 통신이 되지 않는 경우가 많았다.
  • 그래서 1970년대 후반에 국제 표준화 기구 ISO(Open System Interconnection)가 네트워크 설계의 호환성을 증진시키기 위해 개방시스템 상호접속 참조모델(OSI) 구조를 제안함
  • OSI란 말은 타사의 시스템 간이라도 데이터를 교환하기 위한 표준을 가질 수 있다는 것을 의미함
  • OSI7계층으로 이루어져 있다.

계층 구조의 장점

  • 크고 복잡한 시스템을 기능별로 나누어 개발 과정을 단순화 하는데 매우 유용하게 사용(모듈화)
  • 각 계층이 제공하는 서비스를 변경하기 쉬움(한 계층을 변경해도 나머지 계층에 영향을 주지 않아 유지 보수가 쉽다)

OSI 참조모델의 계층

  • N 계층의 프로토콜 모듈은 상대방의 동일 계층 프로토콜 모듈과 통신을 하며 동일 계층에 있는 N 계층 끼리의 통신 규약을 N 계층 프로토콜이라 함
  • N 계층 프로토콜이 상대방의 동일 계층에 데이터를 직접 전달하는 것이 아니라 하위 계층(N - 1)으로 전달해서 맨 아래 계층인 물리 계층까지 도달하면 케이블을 통해 상대 호스트의 물리 계층으로 데이터를 전달한다.
  • 상대 호스트는 물리 계층에서 받은 데이터를 하나씩 확인하며 상위 계층(N + 1)으로 올려 보낸다.
  • 결과적으로, OSI 7계층 모델에서 상위 계층은 하위 계층의 서비스 사용자(Service User)가 되며, 하위 계층은 상위 계층의 서비스 제공자(Service Provider)가 된다.

서비스 프리미티브(Service Primitive)

  • 동일 호스트상의 서비스 사용자(N + 1계층)와 서비스 제공자(N계층)간에 주고 받는 데이터
  • N 계층의 서비스는 N 서비스 프리미티브와 이 프리미티브에 관련된 파라미터로 규정
  • N 서비스 프리미티브는 요청(Request), 통지(Indicator), 응답(Response), 확인(Confirm)으로 구분
  • 송신측에서 수신측으로 Request를 보내면 수신측의 하위 계층에서 Indicator를 발생시킨 뒤 송신측으로 Response를 보낸다. 송신측은 받은 데이터를 확인(Confirm)하며 하위계층에서 상위계층으로 올려보낸다.
  • 송신측에서 데이터를 전송할 때 서비스 프리미티브를 사용하여 N + 1 계층의 송신 데이터(PDU : Protocol Data Unit)는 N 계층의 서비스 데이터 단위(SDU : Service Data Unit)로 N 계층에 넘겨진다.
  • N 계층에서는 PDU에 프로토콜 제어 정보(PCI : Protocol Control Information)를 헤더로 붙여 N 계층 PDU로 만든 뒤 하위 계층으로 내려보내고 하위 계층에서도 이걸 반복한다.
  • 이러한 계층간 데이터의 전달 과정을 캡슐화(Encapsulation)라고 한다.

OSI 참조모델의 7계층

물리 계층(Physical Layer)

  • 계층 1에 해당하며 전송매체에 대한 전기적, 기계적인 인터페이스를 다룸
  • 전송하고자 하는 데이터를 전송매체에 적합한 전기적 신호로 바꾸는 기능
  • 하드웨어로 구현되며 계층 2 이상은 대부분 소프트웨어로 구현된다.
  • 물리 계층 관련 장치들
    • 리피터(Repeater), 허브(Hub), 케이블, 이더넷(Ethernet) 등과 같은 하드웨어 장치
    • LAN에서 사용하는 UTP(Unshieled Twisted Pair), STP(Shieled Twisted Pair)와 같은 케이블
    • LAN의 UTP 케이블에 연결하는 RJ-45 커넥터(흔히 사용하는 인터넷 랜선 커넥터)
  • 물리 계층을 통해 전송되는 데이터의 오류 문제를 해결하여 신뢰성 있는 데이터 전송 기능을 제공하는데 호스트 - 라우터 간 오류 문제만 제어한다.
  • 이를 통해 상위 계층인 네트워크 계층에게 오류 문제에 대한 부담을 줄임
  • 데이터링크 계층에서 전송하는 데이터 단위를 프레임(Frame)이라 한다.
  • 데이터링크 계층의 주요 기능
    • 순서 제어 : 데이터의 순차적 전송을 위해 프레임 번호 부여
    • 오류 제어 : 오류 검출과 교정 (가장 중요한 기능)
    • 흐름 제어 : 연속적인 프레임을 전송할 때 수신측이 수신이 가능한지 여부를 제어. 호스트 간 CPU 성능이 다를 때 느린 쪽이 빠른 쪽의 속도에 어느정도 맞춰 받을 수 있는지 서로 확인한 후 전송하는 등의 제어를 한다.
    • 프레임 동기화 : 데이터 전송시 프레임 단위로 전송

네트워크 계층(Network Layer)

  • 네트워크 상에 존재하는 라우터와 같은 노드(Node)를 거칠 때마다 목적지로의 경로를 찾아주는 라우팅(Routing) 역할을 하는 계층
  • 네트워크 계층의 데이터 전송 단위를 패킷(Packet)이라 부르며 패킷 내에는 송신 호스트의 주소와 목적지 호스트의 주소를 포함
  • 라우터에 패킷이 도착하면 패킷의 목적지 주소에 따라 적합한 라우터로 중개하며 이러한 과정을 통해 목적지에 도착
  • 라우터가 패킷을 중개할 때 자신이 관리하고 있는 라우팅 테이블(Routing Table)을 사용해서 패킷을 어디로 보낼지 결정한다.
  • 네트워크 계층의 예
    • 인터넷의 IP(IP 주소가 이 계층에서 사용하는 주소)
    • OSI의 X.25

트랜스포트 계층(Transport Layer)

  • 라우터와 같은 노드와는 상관없이 단대단(End-to-end) 신뢰성 있는 데이터 전송 기능을 제공
  • 이를 위해 단대단 오류 복구, 흐름 제어 기능 등을 포함하는데 트랜스포트 계층에서의 제어 기능들은 A 호스트에서 B 호스트까지 가는 모든 경로의 오류 및 흐름을 제어한다.
  • 트랜스포트 계층은 호스트 내에서 동작하는 프로세스(Process)에서 프로세스로 데이터를 전송한다.
    • 네트워크 계층은 호스트에서 호스트로의 데이터 전송에 관계함
    • 네트워크 계층에서 보내는 IP 주소 만으로는 상대 호스트의 어떤 프로세스에서 이 데이터를 보냈는지 알 수 없다. 그래서 각 프로세스별로 포트(Port) 번호를 사용해서 어떤 프로세스에서 보낸 데이터인지 구분한다.
    • 그래서 단대단 전송이라는 용어는 프로세스와 프로세스 간의 전송을 의미한다.
  • 트랜스포트 계층의 데이터 전송 단위(PDU : Protocol Data Unit)에는 송신측 포트 번호와 수신측 포트 번호를 포함한다.
  • 포트 번호는 특정 프로세스를 나타내기 위해 트랜스포트 계층에서 사용하는 주소라 할 수 있다.
  • 인터넷 통신구조에서 TCPUDP가 트랜스포트 계층에 해당한다.

세션 계층(Session Layer)

  • 양끝단에 있는 응용 프로세스간의 통신을 제어하는 기능 제공
  • 응용 프로세스간 대화를 위해 세션을 설정하여 사용하는 기능 제공
  • 제공 기능
    • 대화(Dialogue) 형태 : 단방향, 반이중, 전이중
    • 복구(Recovery) 기능 : 체크포인트(Checkpoint) 기능을 제공하여 체크포인트 사이에 오류가 있을 때 마지막 체크포인트 이후의 모든 데이터를 세션 계층이 재전송하는 기능

표현 계층(Presentation Layer)

  • 호스트간에 교환되는 데이터의 표현방법(Syntax)과 의미(Semantic)를 다루는 계층
  • 즉 양쪽 호스트의 데이터 표현 방식이 다를 때 송신 호스트는 양쪽 호스트가 이해할 수 있는 표준화 된 형식으로 인코딩(Encoding)하고, 수신 호스트는 표준화 된 형식을 수신측에 적합한 형식으로 디코딩(Decoding)하는 기능
  • 이외에도 데이터의 안전하고 효율적인 전송을 위해 암호화(Encryption)하거나 압축(Compression)하는 기능 제공

응용 계층(Application Layer)

  • OSI 7계층 중에서 최상위 계층에 있으며 사용자에게 필요한 응용 서비스를 제공하는 계층
  • 응용 계층에 해당하는 프로토콜
    • FTAM(File Transfer Access and Management) : 파일 전송 프로토콜이며 인터넷의 FTP와 유사한 서비스
    • VT(Virtual Terminal) : 가상 단말 서비스 프로토콜이며 인터넷의 Telnet과 유사

SDU와 PDU의 차이

  • SDU(Service Data Unit) : 상하위 계층간 데이터 전송을 위해 사용하는 데이터 단위
  • PDU(Protocol Data Unit) : 상대방과의 통신을 위해 사용되는 데이터 단위


출처