안녕하세요. IT 엘도라도 에 오신 것을 환영합니다.
글을 쓰는 것은 귀찮지만 다시 찾아보는 것은 더 귀찮습니다.
완전한 나만의 것으로 만들기 위해 지식을 차곡차곡 저장해 보아요.   포스팅 둘러보기 ▼

기타 IT 지식 (Etc)

[네트워크] OSI 7 계층 참조 모델 (OSI 7 Layer Reference Model)

피그브라더 2020. 7. 9. 12:46

오늘날 우리는 다양한 종류의 컴퓨터, 노트북, 스마트폰, 태블릿 등의 기기들을 활용하여 인터넷 상에서 서로 통신을 한다. 인터넷은 전 세계의 수많은 통신 기기들이 유선 혹은 무선으로 상호 연결되어 있는 하나의 거대한 네트워크이다. 그래서 www, 즉 Word Wide Web이라는 용어를 사용하는 것이다. 그렇다면 어떻게 서로 다른 기기들이 네트워크 상에서 통신을 할 수 있는 것일까? 이를 이해하기 위한 개념이 바로 OSI 7 계층 참조 모델(OSI 7 Layer Reference Model)이다. 이에 대해 한 번 알아보자.

 

1. 네트워크의 역사

네트워크의 시초는 미국 국방부(DoD)의 산하 연구기관이었던 방위고등연구계획국(DARPA)에서 연구용으로 제작한 아르파넷이다. 그 당시 아르파넷 상에서 서로 통신을 하기 위해서는 컴퓨터가 반드시 아르파넷의 규칙을 지켜야만 했다. 그런데 시간이 지날수록 다양한 종류의 네트워크가 등장하게 되었고, 이로 인해 통신 규칙을 통일해야 하는 필요성이 대두되었다. 그 결과 아르파는 TCP/IP 프로토콜 스위트(TCP/IP Protocol Suite)라는 통신 규칙을 정의하였고, 이는 오늘날까지도 인터넷을 사용하기 위한 통신 규칙으로 사용되고 있다.

 

2. OSI 7 계층 참조 모델 (OSI 7 Layer Reference Model)

OSI 7 계층 참조 모델(Open System Interconnect 7 Layer Referecne Model)은 서로 다른 기기들이 네트워크 상에서 통신을 할 수 있도록 하는 통신 규칙의 표준이다. 쉽게 말해서, 네트워크를 통해 다른 기기와 통신을 하려는 기기는 소프트웨어/하드웨어가 반드시 이 모델에 따라서 설계되어야 한다는 것이다. 네트워크 상에서 통신하려는 서로 다른 두 기기가 데이터의 발신과 수신을 처리하는 과정을 일련의 7단계로 구분하였으며, 각 계층마다 데이터를 가공하는 특정 역할이 명확하게 정의되어 있다. 발신자는 데이터를 발신할 때 필요한 몇 가지 정보들을 7단계를 거치며 조금씩 덧붙이는데, 이러한 과정을 캡슐화(Encapsulation)라고 부른다. 그리고 그렇게 캡슐화가 이뤄진 데이터는 유선 혹은 무선으로 수신자에게 전달이 된다. 그러면 수신자는 그 데이터에 덧붙여진 몇 가지 정보들을 7단계를 거치며 조금씩 떼어냄으로써 최종적으로는 발신자가 보내고자 한 데이터를 얻게 되는데, 이러한 과정을 역 캡슐화(Decapsulation)라고 부른다.

 

[Figure 1] OSI 7 계층 (출처 : https://www.flickr.com)
[Figure 2] OSI 7 계층 캡슐화/역캡슐화 과정

 

OSI 7 계층의 구조는 위 그림과 같다. 이 중에서 응용 계층, 표현 계층, 세션 계층, 전송 계층, 네트워크 계층은 소프트웨어적으로 처리하는 부분이고, 데이터 링크 계층은 하드웨어/소프트웨어적으로 처리하는 부분이며, 마지막으로 물리 계층은 하드웨어적으로 처리하는 부분이다. 그리고 각각의 계층은 서로 독립되어 있기 때문에, 한 계층이 고장 나더라도 전체를 고칠 필요 없이 고장 난 계층만 따로 고쳐주면 문제가 해결된다. 그러면 이제 본격적으로 각 계층의 역할에 대해 알아보도록 하자.

 

※ 참고로, 실제로 인터넷 통신은 7단계로 이뤄진 OSI 7 계층 참조 모델이 아닌 DoD에서 정의한 4단계로 이뤄진 TCP/IP 프로토콜 스위트(스택)에 기반하여 이뤄진다. 그러나 OSI 7 계층 참조 모델을 이해한다면 이것도 어렵지 않게 이해할 수 있을 것이다. 단계의 개수와 몇몇 특징들이 다르긴 해도 기본적인 원리는 유사하기 때문이다.

 

[Figure 3] OSI 7 계층 참조 모델과 TCP/IP 프로토콜 스위트의 비교

 

3. OSI 7 계층

3-1. 응용 계층 (Application Layer, 7계층)

사용자가 어플리케이션에 입력한 정보를 특정 프로토콜(HTTP, SMTP, FTP 등)의 형식에 맞게 표현하는 계층이다. 예를 들어, 누군가에게 편지를 보내는 상황을 가정해 보자. 편지를 보내기 위해서는 먼저 편지지를 구매하고 그 위에 전달할 내용을 작성해야 할 것이다. 여기서 편지지가 바로 우리가 발신하고자 하는 정보를 입력하는 어플리케이션(웹 브라우저 등)에 해당한다고 볼 수 있다.

 

3-2. 표현 계층 (Presentation Layer, 6계층)

수신자가 이해할 수 있는 형태로 데이터를 변환하고(인코딩), 더불어서 데이터 전송의 효율성과 안전성을 보장하기 위해 데이터를 압축하고 암호화하는 계층이다. 데이터의 형태를 변환하는 이유는 통신하는 두 기기가 특성이 같다는 보장이 없기 때문이다. 따라서 누구나 이해할 수 있는 공통의 표준 형식으로 데이터를 변환하여 수신자에게 보내고, 이를 받은 수신자는 자신에게 맞는 형태로 해당 데이터를 다시 변환하게 된다. 예를 들어, 미국인이 중국인에게 "One, Two, Three"라는 메시지를 전달하고 싶다면 두 사람 모두 이해할 수 있는 "1, 2, 3"으로 메시지를 변환하여 전송하고, 이를 받은 중국인은 해당 메시지를 "Yī', èr, sān"으로 변환하여 이해하게 될 것이다. 마찬가지로, 압축이나 암호화가 되어 있는 경우도 수신자가 그 과정을 거꾸로 진행하여 원래의 데이터를 복구해야 할 것이다.

 

3-3. 세션 계층 (Session Layer, 5계층)

통신하는 두 기기 사이의 연결 상태를 관장하는 계층으로, 어떠한 방식으로 두 기기가 상호작용할 것인지를 결정한다. 예를 들어 통화하는 것처럼 쌍방향으로 동시에 데이터를 주고받을 것인지, 무전기처럼 데이터를 서로 번갈아서 주고받을 것인지, 아니면 일방적으로 데이터를 받기만 할 것인지 등에 관한 상호작용 방식을 결정한다. 수신자는 세션 계층에서 명시한 정보를 바탕으로 어떤 방식으로 반응을 해야 할지 결정하게 된다. 무전기로 요청이 왔으면 무전기로 응답하고, 우편으로 요청이 왔으면 우편으로 응답하는 셈이다.

 

3-4. 전송 계층 (Transport Layer, 4계층)

누가 누구에게 보냈는지에 대한 정보를 명시하는 계층이다. 조금 더 엄밀하게 말하자면, 최종 도착지에 위치한 어떤 프로세스에게 데이터를 전달할 것인가, 즉 포트 번호를 명시하는 계층이라고 할 수 있다. 참고로 그 최종 도착지가 어디인가를 명시하는 것은 바로 이어서 설명할 네트워크 계층의 역할이다. 전송 계층에 해당하는 대표적인 프로토콜은 바로 TCP와 UDP이다. 이 둘의 차이를 간단하게 설명하면 다음과 같다. TCP는 데이터를 발신하는 쪽에서 수신자가 온전한 데이터를 받을 수 있도록 하는 책임을 지니고 있어서, 데이터가 제대로 전달되지 않은 경우 이를 재전송해야 한다. 반면에 UDP는 그러한 책임을 지니고 있지 않아서 데이터가 제대로 전달되지 않은 경우에도 특별히 이를 재전송하지 않는다. 편지지가 제대로 전달됐는지 확인이 가능한 등기 우편과 그렇지 않은 일반 우편의 차이인 셈이다.

 

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

전송 계층이 누구에게 보낼지를 명시한다면, 네트워크 계층은 수신자가 위치해 있는 최종 도착지를 명시한다. 편지를 보낼 때 받는 사람의 아파트 주소를 적어야 하는 것과 마찬가지이다. IP(Internet Protocol)가 바로 네트워크 계층에 해당하는 대표적인 프로토콜로, 이 경우 최종 도착지를 IP 주소로 명시하게 된다. 한편, 최종 도착지뿐만 아니라 그곳까지 가기 위해 필요한 경로들의 정보도 함께 명시하는 라우팅 기능을 수행한다. 참고로 최종 도착지의 경우 수신자에게 도달할 때까지 변하지 않는 정보이지만, 이어서 설명할 데이터 링크 계층에서 명시하는 물리 주소(EX. MAC 주소 등)는 노드를 이동할 때마다 변하는 정보라는 사실을 기억하도록 하자.

 

3-6. 데이터 링크 계층 (Data Link Layer, 2계층)

직접 연결된 두 개의 노드 사이에서 안전하게 데이터가 전송되도록 하고, 물리 계층에서 담당하지 않는 흐름 제어 및 오류 수정의 기능을 담당하는 계층이다. 물리 계층에서는 단순히 비트열을 전달할 뿐 데이터의 신뢰성에 대한 특별한 검사를 진행하지 않기 때문에 데이터 링크 계층에서 데이터의 신뢰성을 보장해주는 것이다. 데이터 링크 계층에서는 물리 주소(EX. MAC 주소)를 명시함으로써 수신자의 MAC 주소와 일치하지 않는 경우에는 데이터의 전달이 잘못되었음을 판단할 수 있도록 한다.

 

3-7. 물리 계층 (Physical Layer, 1계층)

발신할 데이터를 디지털 신호에서 전기 신호로 바꾸고, 수신한 데이터를 전기 신호에서 디지털 신호로 바꾸는 계층이다. 즉 물리적인 매체를 통해 비트열을 전송할 수 있도록 하는 계층으로, 물리적인 장치 및 인터페이스가 데이터의 전송을 위해 필요로 하는 몇 가지 처리 절차를 담당하고 있다. 전기 신호를 어떻게 만들어서 보낼지, 어떠한 회선을 사용할지, 부호화는 어떤 식으로 할 건지 등등을 정의하게 된다.

 

 

 

 

 

 

본 글은 아래 링크의 내용을 참고하여 학습한 내용을 나름대로 정리한 글임을 밝힙니다.

https://youtu.be/aTPy201F0AA