티스토리 뷰

728x90
반응형

Layered Architecture


OSI 7 계층에 대해 공부하기 전에, 우리는 네트워크 통신을 왜 7개나 되는 계층으로 나눈 것인가에 대해 궁금해야 합니다. 이에 대한 답을 우리 일상 생활에서 예를 들어 보겠습니다.

단계별로 구조화된 비행기 여행 과정

우리가 어딘가로 비행기를 타고 여행을 가야하는 상황이라고 생각해 보겠습니다.

먼저 티켓을 구매하고, 짐을 붙입니다. 그런 다음 게이트를 통과하고 비행기에 탑승 후 목적지로 출발합니다. 목적지에 도착을 하면 전의 과정들을 역순으로 행하면서 공항을 빠져나갑니다.

여기서 우리가 거치는 각각의 단계들은 기능별로 나뉘어 있습니다. 티켓을 사거나 확인하는 작업은 매표소에서 이루어지고, 짐을 붙이는 작업은 체크인 카운터 같은 곳에서 행해집니다. 이처럼 단계별로 행해지는 서비스도 다르고 직원들도 다릅니다. 만약, 해당 단계에서 문제나 불만이 생긴다면, 짐을 잘못 붙였다고 매표소에 가서 뭐라고 하지는 않는 것처럼 그 단계의 직원들에게 컴플레인을 겁니다.

이 과정을 그대로 사람이 아닌 패킷이 거친다고 생각하면 됩니다.

어떤 복잡하고 거대한 문제가 있다면, 그 문제를 푸는 가장 좋은 방법 중 하나는 쪼개서 푸는 것입니다. 계층을 나누는 이유도 이와 같습니다. 네트워크는 상당히 복잡한 구조를 가집니다. 때문에 이를 기능별로 나누어 계층적 구조화를 시키는 겁니다. 쉽게 말해서 분업을 하는 것이라고 할 수 있습니다.

이렇게 Layered architecture를 사용할 경우, 복잡한 시스템을 명확하고 구체적으로 구분할 수 있고, 각 계층이 단순화되어 여러 서비스를 모듈로써 제공할 수 있습니다. 이 말은 각 계층이 자신의 역할에 집중할 수 있게 되고 어느 정도 독립성을 가질 수 있습니다.

독립성을 가진다는 말은 만약 어떤 계층의 서비스가 변경된다면 해당 계층만 변경사항을 적용해 주면 됩니다. 다른 계층은 영향이 없습니다! 문제가 생겼을 때도 마찬가지입니다. 다른 곳을 볼 필요 없이 문제가 생긴 계층에서 문제를 해결해 주면 됩니다. 당장 문제가 생긴 계층을 찾지 못한다면, 계층별로 차근차근 밟아 나갈 수 있습니다. 즉, 혼란스러움을 줄일 수 있습니다.

단, 완벽한 독립성은 아닙니다. 이는 아래에서 더 자세히 설명하겠습니다.

 

OSI 7 Layer ?


위에서 언급했듯이 OSI(Open Systems Interconnection) 7 계층은 컴퓨터 네트워크 프로토콜을 기능별로 나누어 7개의 계층으로 나눈 모형입니다.

각 계층은 하위 계층의 기능만을 이용할 수 있고, 상위 계층에게는 기능을 제공할 수 있습니다. 이는 상위 계층이 하위 계층의 정보를 필요로 할 수 있다는 말이 되고, 따라서 계층 분리의 목적을 위반할 수 있게 됩니다. 그러나 여전히 시스템 구성 요소를 체계적으로 논의할 수 있는 점은 큰 장점입니다.

OSI 7 계층은 통신이 시작되고 나온 표준입니다. 따라서 이 OSI 7 계층에 모든 통신이 다 맞게 구조화되지는 않습니다. 하지만 대부분 포함되고, 설명될 수 있기 때문에 통신에 대해 말할 때 뺄 수 없습니다.

위의 그림은 Internet protocol stack(TCP/IP 5 Layer)과 OSI 7 Layer입니다. 둘의 차이는 계층의 수에 있는데, 인터넷 프로토콜 스택은 프레젠테이션 계층과 세션 계층을 애플리케이션 계층에 포함시켰습니다. 이러는 편이 개발자의 입장에서 구현이 더 쉽고 통신에 비용이 적게 들기 때문입니다.

계층은 하드웨어 + 소프트웨어로 이루어져 있으며 하위 계층이 하드웨어, 상위 계층이 소프트웨어입니다.

1. Physical Layer

물리 계층이란 말 그대로 데이터를 전달하는 실제 케이블(링크)을 말합니다.

2. Link Layer

링크 계층은 1홉 통신을 담당합니다.

홉(hop)은 컴퓨터 네트워크에서 노드에서 다음 노드로 가는 경로를 말합니다. 1홉 통신이면 한 라우터에서 그다음 라우터까지의 경로를 말합니다.

 

이 계층을 대표하는 프로토콜로는 이더넷이 있고, 그 외에 토큰링, Wi-Fi, WLAN 등이 있습니다.

이 계층에서 이동하는 Packet을 frame 이라고도 합니다.

3. Network Layer

네트워크 계층은 2홉 이상의 통신(멀티홉 통신)을 담당합니다.

먼저 Routing이란 과정을 통해 경로 정보를 얻습니다. 이때 사용되는 것이 라우팅 프로토콜이고, 이 라우팅 프로토콜은 주변에 연결되어 있는 라우터(노드) 정보들을 IP 데이터 포워딩 테이블이란 곳에 저장하고 업데이트합니다. 이런 테이블이 있기 때문에 패킷들의 헤더를 보고 그에 맞는 목적지 경로를 찾아낼 수가 있습니다.

그런 다음 Forwarding 과정에서 IP 포워딩 테이블을 참조해 IP가 실제로 데이터를 전송합니다.

이 계층에서 사용되는 프로토콜은 여러 개가 있지만 그중 가장 오래 살아남은, 가장 많이(거의) 사용되는 프로토콜이 IP 입니다.

네트워크 계층에서의 Packet은 Datagram 이라고도 합니다.

4. Transport Layer

전송 계층의 역할은 전송을 담당한다기보다 전송 보장을 담당합니다. 두 호스트 간의 통신(end-to-end)에서 송수신한 데이터의 보장을 담당합니다. 또한 흐름 제어도 담당합니다. 대표적으로 TCP, UDP 프로토콜이 있습니다.

Packet은 Segment입니다.

5. Application Layer

실제 응용 프로그램의 작동이 시작되고 개발되는 계층입니다. 우리가 자주 사용하는 많은 애플리케이션들이나 웹 브라우저 통신 시작도 어플리케이션 계층입니다.

프로토콜로는 HTTP, FTP, SMTP 등 많은 프로토콜이 있습니다.

여기서의 Packet은 Message로 불립니다.

Session & Presentation Layer

표현 계층은 통신되는 응용 프로그램이 데이터의 의미를 해석할 수 있게 해주는 서비스를 제공합니다. 예를 들어 데이터 압축 및 암호화, 데이터의 설명 등이 있습니다.

세션 계층은 데이터 교환의 구분 및 동기화, 복구 등을 제공합니다.

이 두 계층에 대해 인터넷 프로토콜은 응용 계층에 포함시켜 개발자의 결정에 맡깁니다.

각 계층에 대해 간단히 알아보았는데, 참고로 프로토콜의 개수로 각 계층의 그림을 다시 그릴 수 있습니다.

참조 : https://www.oreilly.com/library/view/handbook-of-fiber/9780124016736/xhtml/APP003.html

이렇게 그림이 그려지는 이유는 간단합니다. 3 계층의 IP와 4 계층의 TCPorUDP가 다른 프로토콜의 필요가 없는 훌륭한 프로토콜이기 때문입니다. 특히 IP 프로토콜은 3 계층이 IP Layer라고 불릴 만큼 독보적입니다.

 

계층적 구조를 통한 Networking


두 호스트 간의 네트워크 통신(패킷 스위칭)을 그림으로 표현하고 있습니다.

자세히 보면 각각의 호스트는 5개의 계층을 모두 구현한 반면, Link-layer switch(레이어 2 스위치)는 2 계층까지만 구현했고, 라우터(레이어 3 스위치)는 3 계층인 네트워크 계층까지 구현되어 있습니다. 또한 각 장비는 구현한 계층까지의 정보만 인식할 수 있고 해당 정보로 전송합니다.

그리고 패킷은 캡슐화되어 있습니다. Source에서 실제 보내고자 하는 Message는 각 계층을 지나면서 헤더라는 정보를 하나 씩 추가합니다. 이를 더 쉽게 말하면 겉에 포장을 더해간다는 의미입니다. 그리고 이 해더는 각 장비에서 구현된 계층만큼 만 열어볼 수 있습니다.

실제로 레이어 2 스위치에서는 링크 계층에 해당하는 헤더만큼 만 열어보고, 이더넷 프로토콜이 이더넷 주소(MAC 주소)만 가지고 패킷을 전송합니다. 당연히 전송 전에 열었던 헤더는 다시 닫고 전송합니다.

그리고 실제로 각 계층별 프로토콜 뿐만 아니라 계층 사이사이에 통신을 도와주는 프로토콜들이 존재합니다.

예를 들어 ARP는 IP 주소를 통해 이더넷 주소 정보를 알려주는 프로토콜로 우리가 통신을 할 때 대부분 상대방의 IP 주소는 알고있을 지 몰라도 이더넷 주소는 모릅니다. 하지만 통신이 가능한 이유는 ARP가 IP 주소로 이더넷 주소를 알아오기 때문입니다.

DNS 서비스도 우리에게 네이버의 IP, 이더넷 주소를 모르지만 www.naver.com 이라는 도메인 네임을 통해 주소를 알아와서 통신을 하게 해줍니다.

 

References

  • Computer_Networking_A_Top-Down_Approach - James Kurose, Keith Ross
728x90
반응형
댓글