본문 바로가기
통신 및 네트워크 공부

OSI 7 계층 간단 정리

by khds 2022. 5. 3.

 

들어가기

 

인터넷 프로토콜 스위트(internet protocol suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합이며, 이를 TCP/IP 4계층 모델로 설명하거나 OSI 7계층 모델로 설명한다.

TCP/IP 4계층에 대해서는 https://khdscor.tistory.com/88를 참고하길 바란다.

네트워크는 다수의 시스템을 전송 매체로 연결해 구성한 시스템들의 집합체이다. 네트워크들이 모여서 더 큰 네트워크로 확장할 수도 있다. 컴퓨터 네트워크는 물리적으로는 크게 호스트 시스템과 전송 매체로 구분한다고 할 수 있다. 서로 다른 호스트들이 전송 매체를 통해서 통신하는 것이 네트워크인 것이다.

하지만 호스트들마다 서로 다른 특징을 가진다. 이런 호스트들을 연결해서 통신을 하기위해선 통신 방식을 표준화해야 한다. 국제 표준화 단체인 ISO(International Standard Orgainzation)에서 규정한 이러한 표준화된 연결 방식이 바로 OSI 7 계층이다. 

OSI는 'Open System Interconnection'의 약자이다. 7 계층은 말 그대로 계층이 7가지로 나눠진다는 것을 의미한다. 

 

아래의 사진을 봐보자.

 

출처http://wiki.hash.kr/index.php/OSI_7_%EA%B3%84%EC%B8%B5

 

 

위의 이미지는 송신 호스트에서 수신 호스트로 데이터를 전달할 때의 그림을 나타낸다. 7 계층은 응용 계층, 표현 계층, 세션 계층, 전송 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층으로 구성된다. 전송 계층을 기준으로 하위에 있는 네트워크 계층부터 물리 계층은 전송 계층의 연결을 설정하고 지원하는 역할을 수행한다. 상위에 있는 세션 계층부터 응용 계층까지는 전송 계층의 연결을 어떻게 활용할지를 다룬다. 그렇기에 전송 계층을 기준으로 두 부분으로 나눈다고 할 수 있다.

사용자는 응용 계층을 통해 접근할 수 있다. 즉, 호스트가 보내려는 데이터는 응용 계층으로부터 물리 계층까지 간 다음 전송매체를 통해 수신 호스트로 전송된다. 그리고 전송된 데이터는 송신과는 반대로 물리 계층에서부터 응용 계층까지 올라간 다음 수신자에게 전달이 된다. 

여기서 중요한 점은 무조건 물리계층으로 가서 전송매체를 이용해야만 통신이 이루어진다는 것이다. 하지만 각 계층마다 동일 계층끼리 프로토콜을 통해 논리적 통신을 한다. 이 말은 각 계층끼리 직접적으로 통신한다는 말이 아니라 물리 계층을 통해 통신이 이루어진다는 말이다. 

 

프로토콜은 통신 시스템이 데이터를 교환하기 위해 사용하는 통신 규칙이다. OSI 7 계층 모델에서는 각 계층에서 수행할 수 있는 프로토콜들이 서로 독립적이라 간주한다. 그렇기에 계층 1은 계층 1 끼리, 계층 2는 계층 2 끼리 통신할 수 있는 프로토콜이 존재한다. 한 번 더 언급하자면 위에서 말했다시피 직접적으로 계층끼리 통신하는 것이 아니라 물리 계층을 통해 통신한다.

송수신 호스트간 같은 계층끼리 프로토콜이라는 규칙이 존재하듯 하나의 호스트에서 상하위의 계층 간에는 인터페이스라는 규칙이 존재하고, 하위 계층이 상위 계층에 제공하는 인터페이스를 특별히 서비스라고 한다. 

 

네트워크 프로토콜을 사용해서 데이터를 교환할 때는 각 계층마다 데이터를 규격화하여 사용한다. 위의 사진을 보면 송신 호스트에서의 데이터가 물리 계층으로 이동할 때 계층마다 헤더를 추가하면서 내려온다. 헤더를 추가함으로써 데이터를 규격화할 수 있고 수신 호스트에서는 반대로 하나하나 헤더를 제거하며 전달된다. 결국 송수신 호스트는 같은 계층에서 같은 규격화된 데이터를 사용하여 통신할 수가 있는 것이다. 

데이터 링크 계층에서 사용하는 데이터 단위는 프레임, 네트워크 계층에서는 패킷, 전송 계층에서는 TCP 프로토콜에서는 세그먼트, UDP에서는 데이터그램이라고 부른다. 프로토콜에 대해서는 각 계층을 설명할 때 추가적으로 설명하겠다.

그렇다면 각 계층은 어떤 역할을 하는 것일까? 하나하나 알아보자. 

 

 

1. 물리 계층(Physucal Layer)

 

OSI 7계층 모델에서 가장 하단부에 위치한 물리 계층은 전송 매체의 물리적 인터페이스에 관한 사항을 기술한다. 물리 계층은 하드웨어 시스템으로 구현되고 계층 2 이상의 프로토콜들은 소프트웨어적으로 구현된다. 모든 통신은 물리 계층을 통해서 이루어진다. 

 

 

2. 데이터 링크 계층(Data Link Layer)

 

데이터 링크 계층에서는 물리 계층을 통해 전송되는 데이터의 물리적 전송 오류를 해결하는데, 이를 위해 오류 제어와 흐름 제어가 있다. 오류 제어는 데이터의 변형, 분실 등에 의해 잘못된 데이터가 전송되었을 때 발생하는 오류를 해결한다. 이를 해결하는 일반적인 방법은 재전송이다. 흐름 제어는 송수신 호스트 사이의 데이터 전송/처리 속도 차이에 의해 발생한다. 송신에서 많은 데이터를 보내지만 수신에서는 미처 처리하지 못하는 등 여러 문제들을 해결한다. 간단한 방식은 수신 호스트에서 허가가 있을 때만 송신이 가능하도록 하는 방법이 있다.

데이터 링크 계층을 이용해 전송되는 데이터를 프레임이라고 부른다. 프레임 헤더에 표시되는 송수신 호스트 정보에는 LAN 카드에 내장된 송수신 호스트의 MAC 주소가 기록된다. 

물리 계층을 통해 데이터를 전송할 때는 MAC 주소를 이용해서 호스트를 구분한다. 

 

 

3. 네트워크 계층(Network Layer)

 

네트워크 계층은 송신 호스트가 어떤 경로를 통해 수신 호스트에 전달되는지를 결정하는 라우팅 문제를 처리한다. 보통 호스트끼리의 통신은 여러 중개 시스템을 거치면서 통신이 이루어지는데, 이는 어떤 경로로 송신 호스트에서 수신 호스트까지 갈지를 정하는 것이다. 중개 시스템은 일반적으로 라우터가 담당한다. 네트워크에서 여러 경로가 만들어지고 통신이 이루어지면 네트워크 부하가 증가할 수 있고, 이로 인해 특정 지역에 혼잡이 발생할 수 있다. 이를 위한 혼잡 제어가 네트워크 계층에서 이루어진다.

네트워크 계층에서는 전송 데이터를 패킷이라 부르며, 중개 과정에서 경로 선택의 기준이 되는 호스트 주소가 필요하다. 인터넷에서는 IP 프로토콜이 네트워크 계층의 기능을 수행하므로 호스트 IP주소가 경로 선택에 중요한 기준이 된다. 호스트에 도착하고 나서는 MAC 주소를 이용하여 호스트를 구분한 후 물리계층을 통해 전송된다. 그렇기에 네트워크 계층에서 데이터 링크 계층으로 데이터를 전송할 때는 먼저 IP주소를 MAC 주소로 변환해야 한다. 

위에서 설명했다시피 각 계층마다 프로토콜을 통해서 통신을 한다. 더욱이 주소와 관련해서 여러 프로토콜이 활용된다. 네트워크 계층에서는 대표적으로 ARP, RARP, ICMP가 있다.

일반적으로 송신 호스트는 자신의 IP 주소와 MAC 주소는 간단히 얻을 수 있지만, 수신자의 주소를 얻으려면 몇 단계의 처리 과정이 필요하다. 우선 상대방 호스트의 MAC 주소를 구해야 한다. 상대방 호스트의 IP 주소는 응용 프로그램의 사용자로부터 입력되지만 MAC 주소는 어디에서도 얻을 수 없다. 이때 필요한 프로토콜이 ARP(Address Resolution Protocol)이다. ARP는 상대방 호스트의 IP 주소를 이용해 MAC 주소를 구하는 기능이 있기에 위 문제를 해결할 수 있다.

그렇다면 RARP는 무엇일까? RARP는 'Reverse Address Resolution Protocol'의 약자이다. 의미대로 ARP와는 반대로 MAC 주소를 통해 IP 주소를 구할 수 가 있다. 호스트의 IP 주소는 컴퓨터 설정 작업의 초기화 과정에서 특정 파일에 보관된다. 그러나 하드디스크가 없는 시스템은 LAN 카드의 내장된 자신의 MAC 주소는 알지만, 파일 시스템이 존재하지 않으므로 IP 주소를 알 수 없다. 이럴 때 RARP를 사용해서 문제를 해결할 수가  있다. 즉, 일반 컴퓨터에서는 RARP를 사용하지 않지만, 디스크가 장착되지 않은 시스템에서는 RARP를 반드시 사용해야 한다. 

마지막으로 ICMP에 대해서 간단히 설명하자면, 사용자 데이터의 전송 과정에서 오류가 발생하면 오류 메시지가 생성되는데, ICMP(Internet Controm Message)는 이를 전송하는 기능을 담당하는 프로토콜이다. 

 

 

4. 전송 계층(Transport Layer)

 

컴퓨터 네트워크에서 데이터를 교환하는 최종 주체는 호스트 시스템이 아니고, 호스트 내부에서 실행되는 네트워크 프로세스이다. 전송 계층은 송신 프로세스와 수신 프로세스 간의 연결기능을 제공하기 때문에 프로세스 사이의 안전한 데이터 전송을 지원한다. 즉, 프로세스 간의 연결을 한다는 것이다. 전송 계층은 데이터가 전송되는 최종적인 경로상의 양 끝단 사이의 연결이 완성되는 곳이다. 일반적으로 계층 4까지의 기능은 운영체제에서 '시스템 콜' 형태로 상위 계층에 제공하며, 계층 5~7의 기능은 사용자 프로그램으로 작성된다. 즉, 전송 계층 이하의 기능들은 호스트의 운영체제 내부에서 구현되고 FTP, 텔넷, 전자 메일 등과 같은 응용 프로그램은 사용자 프로그램 환경에서 계층 5~7이 합쳐져 구현되는 것이다. 

전송계층에서는 포트 주소라는 것이 사용된다. 포트 주소는 호스트에서 실행되는 프로세스를 구분해주며 소켓 주소라는 용어를 사용하기도 한다. 웹을 실행하는지, 파일 전송인지, 메일인지 등 어느 프로세스를 사용하는지를 구분하는 것이다. 인터넷 응용 프로그램의 고유 주소는 포트 주소와 IP 주소의 조합으로 이루어져 있다.

TCP와 UDP가 독립적으로 포트 주소를 관리한다. TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 각각 연결형, 비연결형 서비스를 제공한다. 텔넷이나 FTP, 웹 브라우저 등과 같은 네트워크 응용 프로그램들은 모두 TCP와 UDP를 사용해 네트워크에 연결할 수가 있다. 

TCP와 UDP에 대해 더 궁금하다면 https://mangkyu.tistory.com/15를 참고하길 바란다.

 

세션 계층부터 응용 계층까지의 기능은 사용자 프로그램으로 구현된다. 프로그래밍 환경에서 전송 계층의 기능을 제공하는 소켓 시스템 콜을 호출해 TCP와 UDP 기능을 사용할 수 있다. 소켓 시스템은 유닉스, 리눅스, 윈도즈 운영체제 등 인터넷에 접속 가능한 모든 호스트에서 제공한다. 

 

 

5. 세션 계층(Session Layer)

 

세션 계층의 기능은 전송 계층과 거의 유사하다. 하지만 사용자에게 원격 파일 전송이나 원격 로그인 등과 같이 더 상위의 논리적 연결이다. 즉, 응용 환경에서 사용자 간의 대화 개념의 연결로 사용되기 때문에 전송 계층의 연결과 구분된다. 

 

 

6. 표현 계층(Presentation Layer)

 

표현 계층은 통신 양단에서 서로 이해할 수 있는 표준 방식으로 데이터를 인코딩하는 문제를 다룬다. 또한 본래의 기능에 더해 동영상과 같은 대용량의 멀티미디어  데이터를 압축하는 기능과 암호화 기능도 중요하게 다루고 있다. 

 

 

7. 응용 계층(Application Layer)

 

응용 계층은 사용자를 위한 다양한 네트워크 응용 환경을 지워난다. FTP, 텔넷, 웹 서비스, 전자 메일 등 대표적인 인터넷 서비스들이 있다. 이 서비스들에 따라서 전송계층에서 포트가 정해진다. 

 

 

결론

 

이렇게 간단히 OSI 7계층에 대해서 살펴보았다. 호스트끼리 통신을 할 때는 위의 7 계층을 거쳐 물리 매체를 통해 전송 매체를 거치면서 이루어진다. 하지만 호스트에서 바로 호스트로 넘어가는 것은 아니다. 송신 호스트에서 수신 호스트로 데이터를 전달하려면 중개 역할을 수행하는 중개 노드를 거쳐야 한다. 중개 시스템은 데이터가 어느 경로로 갈지를 배정하는 기능을 수행한다. 중개 노드인 라우터는 자신에게 도착한 데이터의 헤더 정보를 해석하여 경로를 전달한다. 그리고 경로 배정 기능을 할 때 프로토콜이 같이 동작하는데, 이와 같은 경로 배정 기능을 라우팅이라고 한다. 

 

그렇다면 네트워크끼리의 연결은 어떻게 할까?

두 독립적인 네트워크가 연동되서 정보를 교환하려면, 이를 적절히 연결하여 데이터를 중개할 수 있는 인터네트워킹 시스템이 필요하다. 

인터네트워킹 기능을 수행하는 것을 게이트웨이라 부른다. 게이트웨이는 흔히 리피터, 브리지, 라우터 등으로 불린다. 

리피터는 물리 계층의 기능을 지원한다. 물리적 신호는 전송 거리가 멀수록 감쇄되기 때문에 중간에 이를 보완해 주어야 한다. 이런 신호를 단순히 중폭 시키는 기능을 하는 것이 리피터이다.

브리지는 리피터 기능에 데이터 링크 계층의 기능이 추가된 것인데 데이터 링크 계층에서와 마찬가지로 오류를 잡아준다. 

라우터는 물리 계층, 데이터 링크 계층, 네트워크 계층 등의 기능을 지원한다. 어느 네트워크 혹은 어느 호스트로 갈지 경로를 설정하는 것은 네트워크 계층에서와 마찬가지로 라우팅 테이블을 만들어서 경로를 설정할 수 있다.

네트워크에서 네트워크로 데이터가 이동할 때 마다 이러한 리피터, 브리지, 라우터 등의 장치들을 지나치는 것이다.

 

 

참고

 

쉽게 배우는 데이터 통신과 컴퓨터 네트워크- 박기현