CS/TCP, IP

[TCP/IP] OSI 참조 모델 계층

dame1 2023. 2. 19. 23:39

물리 계층 (1 계층)

1 계층은 데이터가 네트워크 인터페이스(두 가지 네트워크 장비 또는 프로토콜 계층이 연결되는 지점)를 통해 물리적으로 전송되는 계층이다. 물리 계층이기 때문에 네트워크 하드웨어만 다룰 것 같지만 사실은 그렇지 않다. 물리 계층은 하드웨어 케이블과 카드 이외에도 여러 네트워크 기능을 정의한다. 그리고 모든 네트워크 하드웨어가 물리 계층에 속할 것이라고 생각하지만 그것도 아니다. 모든 하드웨어는 데이터를 네트워크로 전송하기 위해 물리 계층과 일부 연관이 있어야 하지만 하드웨어 장비는 물리 계층 외에도 OSI 모델의 여러 계층을 구현한다.

 

물리 계층 기술은 네트워크로 전송되는 실제 0과 1이라는 비트를 다룬다. 이들 장비는 메시지 내용에 대한 아무런 지식이 없고 단지 입력 비트를 받고 출력으로 내보낼 뿐이다.

 

물리 계층의 역할은 다음과 같다.

 

  1. 하드웨어 명세 정의: 케이블, 커넥터, 무선라디오 송수신기, 네트워크 인터페이스 카드(PC나 서버 등의 컴퓨터를 네트워크에 연결시키기 위한 장치. 네트워크 카드, 이더넷 카드, LAN 어댑터, LAN 카드라고도 한다.) 등 장비 동작의 세부 사항은 일반적으로 물리 계층의 기능이다.
  2. 인코딩과 신호: 비트 데이터를 네트워크를 통해 전송하기 위한 신호로 인코딩하거나 변환한다.
  3. 데이터 송신과 수신: 데이터를 적절히 인코딩한 후 실제로 데이터를 송신하고 수신한다.
  4. 토폴로지와 물리 네트워크 설계: 물리 계층은 여러 하드웨어 관련 네트워크 설계 문제를 다룬다. (토폴로지란 컴퓨터 네트워크의 요소들(링크, 노드 등)을 물리적으로 연결해 놓은 것, 또는 그 연결 방식을 말한다.)

물리 계층은 주로 하드웨어를 정의하긴 하지만 데이터 링크와도 밀접한 연관이 있다. 일반적으로 물리 계층에 있는 하드웨어를 데이터 링크 계층에서 쓰이는 기술에서 따로 떼내 독립적으로 정의하는 것은 불가능하다. 

예를 들어 이더넷은 특정 유형의 케이블과 네트워크를 설명하는 기술이지만 이더넷의 물리 계층은 데이터 링크 계층과 완전히 분리될 수 없다. 이더넷 케이블은 물리 계층에 속하지만 케이블의 최대 길이는 데이터 링크 계층의 메시지 포맷 규칙과 밀접히 연관돼 있다.

 

OSI 모델의 최하위 계층은 물리 계층이다. 물리 계층은 네트워킹 하드웨어 명세의 영역으로 데이터 인코딩, 신호 처리, 송신, 수신 기능을 수행한다. 물리 계층은 데이터 링크 계층과 밀접히 연관돼 있다.

 

데이터 링크 계층 (2 계층)

OSI 모델의 둘째 하위 계층은 데이터 링크 계층이다. 이것은 링크 계층 혹은 DLL이라고 불리기도 한다. 데이터 링크 계층은 여러 유선/무선 LAN 기술의 주요 기능이 위치하는 곳이다. 예를 들어 이더넷, 토큰 링, FDDI, 802.11(무선 이더넷, 와이파이)은 때때로 데이터 링크 기술이라고 불리기도 한다. 데이터 링크 계층에서 연결된 장비 모음은 단순 네트워크로 간주된다.(이것은 3 계층에서 연결된 네트워크 모음인 인터네트워크와 반대 개념이다.)

 

데이터 링크 계층은 개념적으로 논리적 연결 제어(LLC)와 매체 접근 제어(MAC)라고 하는 두 하위 층으로 다시 분류된다. (이 분류는 IEEE 802 프로젝트에서 사용하는 구조에 근거함) LLC와 MAC 기능을 분리함으로써 서로 다른 네트워크 기술 간의 상호 운용성이 향상됐다.

 

다음은 데이터 링크 계층에서 수행하는 핵심 기능이다.

 

  1. 논리적 연결 제어(LLC, Logical Link Control): 논리적 연결 제어는 네트워크의 로컬 장비 간 논리적 연결을 수립하고 제어하는 데 필요한 기능을 기리 킨다. 이것은 보통 하위 계층으로 간주되는데 그렇기 때문에 LLC는 상위에 있는 네트워크 계층에게 서비스를 제공하며 데이터 링크 계층의 세부적인 사항을 감춰 서로 다른 기술이 상위 계층과 쉽게 결합될 수 있도록 한다. 대부분의 LAN 기술은 논리적 연결 제어에 IEEE 802.2 LLC 프로토콜을 이용한다.  (추가 정보: http://www.ktword.co.kr/test/view/view.php?m_temp1=113) 
  2. 매체 접근 제어(MAC, Media Access Control): 장비가 네트워크 매체에 대한 접근을 통제하는 데 사용하는 절차를 의미한다. 많은 네트워크는 공유 매체를 이용하기 때문에 충돌을 피하기 위해 매체를 관리하기 위한 규칙이 필요하다. 이의 예로서 매체 접근 제어를 위해 이더넷은 CSMA/CD를 이용하고 토큰 링은 토큰 전달 방법을 이용한다. (추가 정보: https://nearhome.tistory.com/18)
  3. 데이터 프레이밍(Data Framing): 상위 수준의 메시지를 물리 계층에서 네트워크로 전달하기 위한 최종 캡슐화 과정인 데이터 프레이밍을 수행한다.
  4. 주소지정: 데이터 링크 계층은 OSI 계층에서 주소 지정과 관련된 가장 낮은 계층이다. 데이터 링크 계층은 정보에 특정 목적지 주소를 붙인다. 네트워크의 각 장비는 데이터 링크 계층 프로토콜이 데이터를 특정 머신으로만 보낼 수 있도록 하는 데 쓰이는 유일한 주소를 지니고 있다. 이때 이것을 보통 하드웨어 주소 또는 MAC 주소라고 부른다.
  5. 에러 탐지와 처리: 데이터 링크 계층은 네트워크 스택의 하위 수준에서 발생하는 에러를 처리한다. 순환 잉여 검사 필드는 프레임의 컨텐트를 이용하여 계산되고 다시 프레임 내부에 저장된다. 이 필드는 수신 스테이션이 데이터의 오류를 탐지하는 데에 쓰인다.
  6. 물리 계층 표준: 네트워크의 물리 계층 요구 사항은 때때로 특정 기술을 설명하는 데이터 링크 계층 표준의 일부이기도 하다. 일부 물리 계층 하드웨어와 인코딩 규약이 데이터 링크 계층 기술에 의해 명세가 정의되기도 한다. 

 

OSI 모델 2 계층은 데이터 링크 계층으로서, 대부분의 LAN과 무선 LAN 기술이 정의되어 있다. 2계층은 논리적 연결 제어, 매체 접근 제어, 하드웨어 주소지정, 에러 탐지와 처리, 물리 계층 표준 정의를 담당한다. 2계층은 때때로 IEEE 802 프로젝트에 근거하여 LLC와 MAC 하위 계층으로 구분되기도 한다.

 

2 계층과 연관된 유명 기술에는 이더넷, 토큰 링, FDDI(and CDDI), HomePNA, IEEE 802.11, 비동기 수신 방식, TCP/IP의 직렬 회선 인터넷 프로토콜, TCP/IP의 점대점 프로토콜 등이 있다.

 

네트워크 계층 (3 계층)

OSI 참조 모델 3 계층은 네트워크 계층이다. 네트워크 계층은 인터네트워크(서로 연결된 네트워크)가 어떻게 동작하는지를 정의한다. 네트워크 계층은 OSI 모델에서 원격 네트워크에 있는 컴퓨터에게 데이터를 전달할 수 있는 기능과 관련된 가장 낮은 계층이다. 데이터 링크 계층은 이와 다르게 오직 로컬 네트워크에 있는 장비만을 다룬다.

 

네트워크 계층에서부터 상위 계층의 추상적인 기능과 데이터를 목적지로 보내는 데 필요한 구체적인 작업이 구분되기 시작한다.

네트워크 계층에서 수행하는 기능은 다음과 같다.

 

  1. 논리적 주소지정: 네트워크에서는 통신하는 모든 장비들이 물리적 위치와 관련 없이 장비를 식별하기 위한 논리적 주소를 가지고 있다. 이것을 3 계층 주소라고 명명하기도 한다. 예를 들어 인터넷의 경우 네트워크 계층 프로토콜은 인터넷 프로토콜이며 모든 장비에는 IP주소가 존재한다. 논리적 주소는 특정 하드웨어와 무관하게 전체 인터네트워크에서 유일해야 한다.
  2. 라우팅 네트워크: 계층을 한마디로 정의하는 기능이 라우팅(일련의 연결된 네트워크로 데이터를 이동하는 것)이다. 여러 곳에서 들어오는 패킷을 받아 최종 목적지를 파악하고 그 목적지로 보내기 위해 패킷이 통과해야 할 다음 경로를 결정하는 것은 네트워크 계층에서 동작하는 장비와 소프트웨어의 역할이다.
  3. 데이터그램 캡슐화: 상위 계층에서 받은 메시지를 네트워크 계층 헤더를 붙여 캡슐화하여 데이터그램(혹은 패킷)을 만든다.
  4. 단편화와 재조합: 일부 데이터 링크 계층 기술은 송신할 수 있는 메시지의 크기를 제한한다. 그래서 네트워크 계층에서 보내고자 하는 데이터의 크기가 너무 크면 네트워크 계층은 패킷을 단편화해서 데이터 링크 계층으로 보내야 하고, 단편화된 패킷을 목적지 머신의 네트워크 계층에서 재조합해야 한다. 이러한 기능을 수행하는 대표적인 프로토콜이 IP이다.
  5. 에러 처리와 진단: 네트워크 계층은 논리적으로 연결된 장비들이 네트워크나 장비 상태 정보를 교환할 수 있도록 하는 특수 프로토콜을 사용한다.

네트워크 계층 프로토콜은 네트워크로 패킷을 보내기 위한 연결형 서비스 혹은 비연결형 서비스를 제공하지만 이 중 비연결형 서비스가 더 자주 발생한다. 많은 프로토콜 슈트에서 네트워킹 계층 프로토콜은 비연결형이며 연결형 서비스는 전송 계층에서 일어난다. 예를 들어 TCP/IP에서 IP는 비연결형 프로토콜이지만 4 계층 TCP는 연결형 프로토콜이다.

 

연결형 프로토콜 : 두 장비가 데이터를 전송하기 전 논리적 연결을 맺도록 요구함. 이를 위해 장비들은 연결을 어떻게 시작하고, 협상하고, 관리하고 끊는지에 대한 규칙을 따라야 함. 일반적으로 한 장비가 연결 맺기를 요청 -> 다른 한쪽의 응답 -> 연결을 맺을지, 어떻게 맺을지 제어 정보 교환 -> 데이터 교환 -> 연결 종료

비연결형 프로토콜: 장비 간 연결을 맺지 않음. 데이터를 보내고 싶으면 그냥 보냄

 

가장 유명한 네트워크 계층 프로토콜은 IP이다. 그리고 IP와 직접적으로 연관되며 네트워크 계층에서 동작하는 여러 프로토콜이 있는데 그중에는 IPsec, IP NAT, 모바일 IP 등이 있다.

 

OSI 참조 모델 3 계층은 네트워크 계층이다. 네트워크 계층은 개별 네트워크를 인터네트워크로 연결한다. 네트워크 계층 기능에는 인터네트워크 수준 주소지정, 라우팅, 데이터그램 캡슐화, 분할과 재조합, 특정 유형의 에러 처리와 진단 등이 있다. 네트워크 계층과 전송 계층은 밀접한 연관이 있다.

 

전송 계층 (4 계층)

전송 계층은 상당히 추상적이어서 세부적인 패킷 전송과 관련된 부분을 다루지 않는다. 전송 계층은 장비 간 실제 데이터 이동을 직접 처리하지 않고 하위 계층을 이용한다. 전송 계층의 주요 역할은 서로 다른 컴퓨터에 있는 소프트웨어 애플리케이션 프로세스들이 서로 통신하는 데 필요한 기능을 제공하는 것이다.

 

현대의 컴퓨터는 멀티태스킹 방식으로 동작하기 때문에 한 시점에 다양한 소프트웨어 애플리케이션들이 동일한 머신에서 데이터를 송수신하는 게 가능하다. 전송 계층은 이 애플리케이션들이 동일한 하위 계층 프로토콜을 구현을 이용하여 데이터를 송수신할 수 있는 방법을 제공한다. 그래서 전송 계층의 역할을 종단-종단 또는 호스트 간 전송이라고 부르기도 한다.

 

다음은 전송 계층에서 제공하는 기능들이다.

 

  1. 프로세스 수준 주소 지정: 전송 계층에서의 주소지정은 소프트웨어 프로그램을 구분하는 데 쓰인다. 이 기능이 있기 때문에 여러 소프트웨어 프로그램이 동시에 네트워크 계층 프로토콜을 이용할 수 있는 것이다. 전송 계층 프로세스 수준 주소지정 방법의 가장 좋은 예는 TCP/IP에서 사용하는 TCP포트와 UDP포트이다. 이들은 TCP/IP 장비에서 동작하는 애플리케이션이 별도로 처리되도록 한다.
  2. 다중화와 역다중화: 프로세스 수준의 주소를 사용하여 송신 장비의 전송 계층 프로토콜은 여러 애플리케이션 프로그램이 보내고자 하는 데이터를 다중화하여 하나의 데이터 스트림으로 결할 할 수 있다. 그리고 이를 수신한 전송 계층의 프로토콜은 입력 데이터그램 스트림을 역다중화하여 각 데이터를 적절한 수신 애플리케이션 프로세스로 전달할 수도 있다.
  3. 단편화, 패키징, 재조합: 전송 계층은 출발지 머신에서 네트워크로 대량의 데이터를 송신할 때 데이터를 단편화한다. 단편화된 데이터를 전달받은 목적지 머신은 그 데이터를 재조합한다.
  4. 연결 수립, 유지, 종료: 전송 계층 연결형 프로토콜은 연결을 수립하고, 데이터를 전송하는 동안 연결을 유지하고, 더 이상 필요 없을 때 연결을 끊는 데 필요한 일련의 통신 과정을 책임진다.
  5. 승인과 재전송: 전송 계층은 안정적인 데이터 전달을 보장하는 여러 프로토콜을 구현하는 곳이다. 이를 위해 여러 기술이 쓰이는데 가장 많이 쓰이는 기술이 승인과 재전송 타이머를 결합하는 것이다. 송신 장비는 데이터를 보낼 때마다 타이머를 시작시킨다. 그리고 데이터를 받은 수신자는 송신자에게 성공적인 전송을 나타내는 승인 정보를 보낸다. 송신자는 타이머 만료 시간까지 승인 정보가 도착하지 않는다면 데이터를 재전송한다. 
  6. 흐름 제어: 이 기능은 통신에 참여하는 한 장비가 다른 장비에게 데이터 송신율을 낮추도록 요구한다. 그 결과 데이터 수신자가 너무 많은 데이터를 처리하지 못하는 일을 예방할 수 있다.

 

가장 널리 쓰이는 전송 계층 프로토콜로 TCP/IP 슈트에서는 TCP, UDP, 네트웨어 프로토콜 슈트에서는 SPX, NetBIOS/NetBEUI/NBF 슈트에서는 NetBEUI 등이 있다.

 

전송 계층은 데이터 전달 문제를 다루는 하위 계층과 애플리케이션 소프트웨어들이 다루는 상위 계층 간의 전환이 이루어지는 지점이다. 전송 계층은 애플리케이션 프로세스 간의 종단 간 통신을 가능케 하는데 이를 위해 프로세스 수준 주소지정과 다중화, 역다중화를 이용한다. 전송 계층 프로토콜은 애플리케이션 데이터를 분할하는 작업도 담당하며 연결형 또는 비연결형 특성을 갖는다. 그리고 전송계층 프로토콜은 안전성과 흐름 제어 같은 데이터 전달 관리 서비스를 제공하기도 한다.

 

세션 계층 (5 계층)

OSI 계층 스택을 밑에서부터 위로 올라갈 때 세선 계층은 처음으로 데이터 주소지정, 패키징, 전달과 관련된 실제적인 문제를 다루지 않는 계층이다. 세션 계층은 상위 계층 중에서 가장 하위에 있다.

 

세션 계층은 장비가 세션을 수립하고 관리할 수 있도록 하기 위해 설계됐다. 세션은 두 소프트웨어 애플리케이션 프로세스 간의 지속적인 논리적 연결로 데이터를 교환할 수 있도록 한다. 

 

세션 계층 프로토콜은 주로 세션을 생성하고 유지, 종료하는 데 필요한 수단을 제공한다. 이러한 세션 계층 도구들은 보통 상위 계층 프로토콜에 응용프로그램 인터페이서(API, Application Program Interface)라고 불리는 명령 집합으로 제공된다.

 

널리 쓰이는 API에는 NetBIOS, TCP/IP 소켓, 원격 절차 호출(RPC, Remote Procedure Call) 등이 있다. API는 애플리케이션이 표준화된 서비스 모음을 이용하여 상위 수준 네트워크 통신을 이용할 수 있도록 한다. 이러한 세션 계층 도구는 대부분 애플리케이션 소프트웨어 개발자들의 주요 관심사이다. 프로그래머는 API를 사용함으로써 TCP/IP의 세부적인 동작 방식 구현을 잘 알지 못하더라도 TCP/IP를 이용하여 통신하는 소프트웨어를 작성할 수 있다.

 

세션 계층은 소프트웨어 프로세스 간에 세션을 수립하고 관리하는 기능을 제공한다. 세션 계층 기술은 응용프로그래밍 인터페이스(API)라는 소프트웨어 도구 모음으로 제공되기도 한다. API는 프로그래머가 전송, 주소지정, 전달과 관련된 하위 수준 세부 사항에 신경 쓸 필요 없이 네트워킹 애플리케이션을 개발할 수 있도록 하기 위한 일관적인 서비스 모음을 제공한다.

 

프레젠테이션 계층 (6 계층)

프레젠테이션 계층은 다른 계층과 달리 훨씬 제한적이고 구체적인 기능을 제공하고 훨씬 적게 쓰이며 통신에서 필요로 하지 않는다. 프리젠테이션 계층은 데이터 표현을 다룬다. 

 

프리젠테이션 계층이 다루는 구체적인 데이터 처리 유형은 다음과 같다.

 

  1. 번역: 여러 유형의 컴퓨터가 동일한 네트워크에 존재할 수 있다. 각 컴퓨터는 뚜렷한 특성을 가지고 있어 데이터를 서로 다른 방법으로 표현하는데 이때 프리젠테이션 계층이 컴퓨터 간의 차이를 감춘다.
  2. 압축: 데이터 처리율을 향상하기 위해 프레젠테이션 계층에서 압축 또는 해체를 할 수 있다.
  3. 암호화: 프로토콜 스택의 아래 방향으로 내려가는 데이터의 보안을 보장하기 위해 프리젠체이션 계층에서 특정 유형의 암호화 혹은 복호화를 진행할 수 있다. SSL(Secure Sockets Layer)는 매우 유명한 암호화 방법인데 이는 프레젠테이션 계층과 연관 돼 있다.

 

프레젠테이션의 번역 작업이 필수적이진 않기 때문에 실제 프로토콜 스택 구현에서 제외되는 경우가 많다. 그러한 경우에는 7계층 프로토콜이 5계층 프로토콜과 직접 통신할 수 있다.

 

프리젠테이션 계층 프로토콜은 데이터를 다른 머신에서 표현하기 위해 변환하는 기능(번역, 압축, 암호화 등)을 수행한다. 대부분의 경우 이런 기능을 네트워킹 스택에서 필요로 하지 않기 때문에 6 계층 프로토콜이 존재하지 않고 7 계층에서 5 계층을 직접 다룰 수도 있다.

 

애플리케이션 계층 (7 계층)

애플리케이션 계층은 네트워크 애플리케이션을 위한 계층이다. 네트워크 애플리케이션은 사용자가 네트워크를 통해 이루고자 하는 여러 작업을 실제로 수행하는 기능을 구현한다. 사실 OSI 모델에서 애플리케이션이라고 부르는 것이 일반적인 애플리케이션과는 다르다. OSI 모델에서 애플리케이션 계층은 사용자가 애플리케이션을 이용할 수 있는 서비스를 제공한다.

 

예를 들어 웹브라우저의 경우 실제 소프트웨어는 PC에서 동작중인 애플리케이션이 된다. 그 소프트웨어는 실제로 애플리케이션 계층에 존재하지 않는 대신 애플리케이션 계층에서 동작하는 프로토콜(HTTP)의 서비스를 이용한다.

 

모든 사용자 애플리케이션이 애플리케이션 계층을 동일한 방법으로 사용하지는 않는다. 웹 브라우저, 이메일 클라이언트 등은 동일한 방법으로 애플리케이션 계층을 이용할 것이지만 텍스트 편집기로 네트워크에 있는 파일을 읽는 경우는 그 편집기는 애플리케이션 계층을 사용하는 것이 아니라 네트워크의 어딘가로 매핑된 파일을 보고 있는 것이다. 이럴 경우 운영체제는 편집기가 하는 일을 네트워크로 중계한다.

 

이러한 예외 상황도 존재하지만 일반적인 경우에서 컴퓨터에서 네트워크를 사용하는 프로그램을 사용할 경우 사용자는 애플리케이션 계층에 직접 접근하는 것이다. 예를 들어 이메일 메시지를 보내고, 웹 브라우저를 사용하고, 내가 블로그에 글을 쓰는 것 또한 애플리케이션 계층에 존재하는 프로토콜을 사용하는 것이다.

 

애플리케이션 계층의 프로토콜은 매우 다양하다. HTTP, FTP, SMTP, DHCP, NFS, Telnet, SNMP, POP3, NNTR, IRC 등이 있다.

 

애플리케이션 계층은 최상위에 위치하기 때문에 상위 계층을 위한 서비스를 제공하지는 않지만 네트워크를 이용하고자 하는 프로그램과 사용자에게 서비스를 제공한다. 그래서 애플리케이션 계층의 역할은 사용자가 필요로 하는 기능을 구현하고 하위 계층에서 제공하는 서비스를 이용하기 위한 적절한 명령을 내리는 것이다.

 

특정한 사용자 애플리케이션과 기타 상위 수준 기능을 구현하는 애플리케이션 프로토콜이 이 계층에서 정의된다. 애플리케이션 계층은 최상위에 존재하기 때문에 상위 계층에게 서비스를 제공하지 않는 유일한 계층이며 하위 계층의 서비스를 이용하기만 한다.

 


OSI 참조 모델과 TCP/IP 모델 비교

 

OSI 모델 최상위 3개의 계층의 차이는 그리 명확하지 않다. TCP/IP의 경우에는 5, 6, 7 계층을 구분하지 않기 때문에 더욱 그렇다. TCP/IP 모델에서는 상위 계층을 모두 애플리케이션 프로토콜로 인식한다.

 

 

 

참조

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=872152

 

하위 계층에서 사용되는 용어 중 낯선 게 많았고 잘 모르는 기술도 많아 이해에 어려움이 있었다.

책 전반부에서 여러 용어에 대한 정리가 잘 되어있었는데 다시 꼼꼼히 읽어봐야겠다🥲

 

다음 포스팅에선 TCP/IP 프로토콜 슈트와 그 구조에 대해 공부한 후 그에 대한 주제로 올리게 될 것 같다.