네트워크의 척추 라고도 할 수 있으며 어딜 가더라도 IT 분야에서는 항상 빠지지 않는 OSI 7계층 (OSI 7 Layer), 그리고 비슷한 개념인 TCP/IP 4계층 (TCP/IP 4 Layer, TCP/IP Protocol Suite) 에 대하여 각 개념과 그 예시, 그리고 실제 사례들을 통해 알아보겠습니다.
네트워크의 연결도 각기 다른 역할을 담당하는 기능/장비들이 어떠한 절차와 복잡한 규약을 바탕으로 한 논리 구조 위에서 이루어집니다. (신호등 없는 교차로에 자동차들이 그냥 많이 몰려있다고 생각해보세요. 끔찍하죠?) 그 기능과 절차를 1. 국제기구인 International Organization for Standardization (ISO / 국제표준화기구) 에서 1983년도에 OSI (Open Systems Interconnection) 7계층 으로 표준화하여 정리했고, 2. 미 국방성 산하 방위고등연구계획국 (DARPA : Defense Advanced Research Projects Agency) 라는 곳에서는 TCP/IP 통신 방식을 미 국방성 (DoD : Department of Defence) 의 통신 표준으로 채택하면서 인터넷 프로토콜 스위트 (Internet Protocol Suite) 또는 DoD 모델 이라고도 부르는 TCP/IP 4계층 으로 정리 하였습니다.
(** 1960년대 냉전이 한창이던 시절, 미 국방성에서는 통신 방식에 대한 연구가 한창이었습니다. 기존의 중앙집중형 방식 네트워크는 중앙에 있는 회선 교환 방식을 위한 회선 교환기가 공격을 받으면 전체 통신이 죽기 때문에 일부가 공격 받아도 통신이 가능한 패킷 교환 방식을 사용하기로 합니다. (데이터를 패킷으로 쪼개서 각 패킷을 보냈으면 받았다는 답신을 보내는 방법) 이 때 위의 DARPA 에서는 ‘ARPANET’ 이라는 인터넷의 시초라고 할 수 있는 패킷 교환 방식의 네트워크를 구축하고 TCP 라는 통신 규약의 초기 모델을 만듭니다.)
그러한 OSI 7계층과 TCP/IP 4계층 각각의 계층 모델들은 어떻게 구성되어 있는지, 그리고 각 구성은 어떤 것을 의미하는지, 또 구성 마다 어떠한 기술들이 있는 지 구체적으로 아래와 같이 알아보겠습니다.
1. OSI 7계층 (물리 – 데이터링크 – 네트워크 – 전송 – 세션 – 표현 – 응용)
OSI 7계층은 위의 그림과 같은 계층들의 순서에 따라 각 계층에서 담당하는 기술과 방식으로 데이터를 종단에서 종단까지 전달하는 것이라고 볼 수 있습니다. 여러분들이 사용하는 스마트폰의 LTE, 5G 통신에서 부터 데이터 센터를 위한 엄청난 규모의 네트워크 까지, 대부분의 패킷 기반 통신을 이 모델로 설명 할 수 있습니다.
위와 같은 특징들을 기반으로 각 계층이 어떠한 것을 나타내는지 좀 더 상세히 알아보도록 하겠습니다.
(1) 물리 계층 (Physical Layer)
전기, 물리 신호에 대한 계층입니다. 단순하게 장비를 가동시키기 위한 전기 공급 부터 장비 끼리의 물리적인 연결을 위한 랜 케이블, 그리고 무선 통신을 위한 주파수까지 다양한 전기적/물리적인 것들을 모두 포함합니다. 단위를 ‘Bit’ 로 사용 하지만, 이 때 Bit 의 의미는 전기적 신호 (0 또는 1) 를 나타낼 때 사용하는 단위입니다. 따라서 이 계층에서는 오류 제어, 알고리즘 등이 없이 단순한 전기적인 신호를 전달하는 역할만을 담당합니다. 대표적인 프로토콜/기술들은 전선, 광케이블, 동축케이블, 랜 케이블, 무선 전파, PSTN, 리피터, DSU, CSU, 모뎀 등이 있습니다.
(2) 데이터 링크 계층 (Data Link Layer)
위 1계층의 물리적인 링크를 이용하여 데이터를 신뢰성있게 전송하는 계층입니다. 또한 아래 3 계층에서와 같이 논리 주소 (예> IP 주소) 가 아닌 물리 주소 (예> MAC 주소) 를 참조하여 각 장비간 전송을 하게 합니다. 이 계층에서는 크게 다음과 같은 역할들을 수행합니다.
– 물리적인 주소를 지정합니다. (예> MAC 주소)
– 전송하는 데이터 (비트의 모음들) 의 헤더에 다음 목적지 주소를 같이 붙이게 됩니다. 특히 데이터 링크 계층에서는 꼬리 부분에 오류 검출을 위한 부분이 따라 붙습니다. 이러한 데이터 링크 계층에서 전송하는 데이터 전체 구성을 ‘프레임 (Frame)’ 이라고 합니다. 따라서 데이터 링크 계층의 데이터 단위는 프레임 입니다.
– 물리 계층에서 발생할 수 있는 오류를 찾고 수정하는데 필요한 기능/절차들을 제공합니다. (예> CRC 기반 오류 제어 및 흐름 제어. 오류 제어의 경우, 정확히 수신되지 않은 패킷들은 재전송 – 타이어 및 ACK 신호에 의해 전송 에러 파악 가능) 특히 데이터 링크 계층에서는 다음과 같은 부계층들로도 구분합니다.
– LLC (Logical Link Control – 논리적인 연결 제어) : 데이터링크 계층의 기본 기능 다룸
– MAC (Media Access Control – 매체 접근 제어) : 물리적 전송 선로의 특징과 매체 간의 연결 방식에 따른 제어 부분을 처리
대표적인 프로토콜/기술들은 L2 스위치 장비, 브릿지, 이더넷 (Ethernet), ARP, 무선 랜, HDLC, PPP, 토큰 링 (Token Ring), ISDN, ATM, FDDI 등이 있습니다.
(3) 네트워크 계층 (Network Layer)
데이터가 들어 있는 ‘패킷 (Packet)’이 서울에서 뉴욕까지 가는 경로는 상당히 많습니다. 그러한 경로를 어떻게 설정해서 나아갈지를 결정하게 하는 계층입니다. 이 계층에서는 크게 다음과 같은 기능들을 포함합니다.
– 각 단말을 구분하도록 IP 주소를 할당하는 논리 주소 (Logical Address) 기능
– 패킷 전달을 위해 할당된 IP 주소를 기반으로 네트워크를 구분하는 라우팅 (Routing) 기능
– 복잡하고 다양한 경로들 중 가장 최적의 경로를 찾기 위한 경로 설정 (Path Determination) 기능 (예> OSPF, BGP 프로토콜)
대표적인 프로토콜/기술들은 IP, ICMP, X.25, BGP, OSPF, RIP, IPX, DDP 등이 있습니다.
(4) 전송 계층 (Transport Layer)
각 종단 간의 데이터 전송에 대한 전반적인 조율을 담당하는 계층입니다. 특히 이 계층에서 통신의 신뢰성 (Reliablility) 을 보장할 수 있습니다. 이 계층에서는 크게 다음과 같은 기능들을 포함합니다.
– 쪼개진 데이터 유닛인 ‘세그먼트 (Segment)’ 를 포트 번호 등으로 구분하여 각 응용 계층이 나눠 받도록 하는 분할 (Segmentation) 작업
– 서로 다른 장비 간 각기 다른 대역폭 속도를 서로 맞춰 주는 흐름 제어 (Flow Control) 작업 (예> 서버는 100Mbps 속도를 제공하지만, 사용자 컴퓨터에서는 10Mbps 속도만 이용 가능한 경우)
– 수신하지 못한 세그먼트가 있을 경우 해당 부분만 다시 송신을 요청하는 오류 제어 (Error Control) 작업
– 데이터 수신 유/무를 확인하는 연결형 (Connection-oriented) 작업
– 데이터 수신 유/무를 확인하지 않는 비연결형 (Connectionless) 작업
대표적인 프로토콜/기술들은 TCP, UDP, AppleTalk, RTP 등이 있습니다. (** TCP 는 IP 위에서 동작하는 프토토콜 입니다. 그래서 항상 TCP/IP 라고 같이 붙여서 부릅니다. ** UDP 는 TCP 와 다르게 수신 확인을 하지 않습니다. 그러나 ‘전송’을 하기 위한 비연결형 프로토콜 이므로 전송 계층에 포함될 수 있습니다.)
(5) 세션 계층 (Session Layer)
데이터가 서로 만나는 환경을 조성해주는 단계 (Session Management) 라고 할 수 있습니다. 파티를 하려면, 음식도 준비해야 하고 식기나 기타 물품을 준비해야되는 것과 똑같습니다. 그리고 어떤 서버를 접근할 때 인증 (Authentication) 을 해야 하는 경우, 사용자는 사용자의 아이디와 암호를 입력해야만 서버에 접근할 수 있을 것입니다. 이 후 정상적인 로그인을 한 사용자라면 서버는 접근 권한을 부여할 것이고, 그렇지 않다면 접근 권한을 부여하지 않겠죠. (Authorization) 대표적인 프로토콜/기술들은 TLS, SSH, NetBIOS 등이 있습니다.
(6) 표현 계층 (Presentation Layer)
데이터를 더 빠르고 안전하게 전송하기 위한 압축, 그리고 더 안전하게 전송하기 위한 암호화/복호화 작업을 하는 단계입니다. 데이터를 압축하기 전, 처음 상태가 5MB 라고 가정해보겠습니다. (예> EBCDIC 코드 상태) 그 상태를 다른 형태로 번역 하여 크기를 줄 일 수 있다면, 당연히 전송 속도가 빨라지고 또한 손실률이 감소 하겠죠. (예> EBCDIC 코드 상태를 ASCII 코드로 변환). 또한 그냥 데이터를 보내면 중간에 누군가가 가로채서 볼 수 있으니까 암호화를 해 줍니다. 수신자는 당연히 역순으로 복호화 (암호화 풀기) 하고 압축된 것을 원상복구 (예> ASCII 코드를 EBCDIC 코드로 변환) 해서 응용 계층으로 다시 던져주겠죠. 대표적인 프로토콜/기술들은 SSL (Secure Sockets Layer), JPEG, MPEG 등이 있습니다.
(7) 응용 계층 (Application Layer)
도착한 데이터를 최종 사용자가 확인하는 마지막 단계라고 볼 수 있습니다. 브라우저, 메일 등 네트워크를 활용하는 다양한 응용 프로그램들이 이 계층에 포함될 수 있습니다. 웹 브라우저는 대표적으로 HTTP, HTTPS 와 같은 프로토콜을 사용하고 있죠. 그 외에도 응용 계층에서 사용하는 SNMP, DHCP, FTP, POP3 등과 같은 다양한 프로토콜 들이 있으며 이 들을 각각 활용하는 응용 프로그램들은 굉장히 많습니다. (예> 메신저, 파일 공유 프로그램, 원격 가상 터미널 등)
OSI 7계층 에서는 데이터를 전송할 때 각각의 층마다 별도로 인식할 수 있는 헤더를 각각 붙이게 되는데, 이 과정을 캡슐화 (Encapsulation) 라고 합니다. 반대로 데이터가 전송 매체를 통해 전송된 후 헤더가 벗겨지게 되는 것을 디캡슐화 (De-encapsulation) 라고 합니다. 한 마디로 각 계층은 아래 계층의 데이터가 됩니다. (직전 계층에서 내려오는 부분을 Payload 라고도 부릅니다) 이렇게 각 계층마다 요청 (Request) 와 응답 (Response) 의 상호작용을 하기 때문에 이는 서버와 클라이언트 관계라고도 할 수 있습니다.
또한 각 계층에서의 데이터 단위를 구분하는 PDU (Process Data Unit) 의 개념이 있습니다. 1계층의 전기적 신호 (Bit) 를 제외한 나머지 2계층 (Frame), 3계층 (Packet), 4계층 (Segment) 에 대한 심도 있는 이해를 하는 것이 OSI 7계층을 기반으로 한 통신 과정을 이해하는데 많은 도움이 됩니다. 다음 그림은 위의 내용을 요약한 것입니다.
그리고 OSI 7계층에서 이어지는 4계층과 3계층의 상세한 패킷 내용에 대한 예시를 살펴보겠습니다. (** 아래 패킷 내용들의 경우 아시는 분들은 그렇구나 이해하고 넘어 가도록 하고, 패킷 상세 내용에 대해 알고 싶으신 분들을 위한 더 깊은 내용에 대해서는 별도 포스팅을 통해 다루어 보겠습니다. 참고로 패킷 분석을 위한 자주 사용되는 툴은 WireShark 등이 있습니다.)
– 집에서 외부 네트워크 세계 (인터넷) 에 존재하는 어떤 홈페이지를 접속한다고 가정해 보겠습니다. 그러면 응용 계층에서 HTTP 프로토콜 (GET 요청 등) 이 생성되어 TCP 세그먼트의 Payload 에 실리게 되겠죠. (다른 계층은 생략하겠습니다.) 그리고 TCP Segment 의 헤더는 위의 왼쪽 그림과 같이 구성되는데, Source port 와 Destination port 값들이 중요하다고 볼 수 있겠습니다. 그리고 이 TCP Segment 는 다시 하위 계층 IP Packet 의 Payload 로 포함됩니다. 이 IP Packet 의 헤더는 아래와 같이 구성됩니다.
– 위의 IP Packet 에서는 Source IP 주소 와 Destination IP 주소 정도가 중요한 값이 되겠습니다. 네트워크 계층에서는 다른 일을 수행하지 않고 전송하는 역할만 담당하게 되니까요. (** 이 때 Destination의 IP 를 알기위하여 DNS 로 살짝 빠져서 도메인 주소에 대한 요청이 발생합니다.) 그리고 생성된 IP Packet 은 다시 하위 계층 (데이터 링크) Frame 의 Payload 가 됩니다. Frame 에서 Source 주소 와 Destination 주소 값이 중요하며, 이것이 바로 MAC 주소입니다.
– 이 후, 대상 서버가 네트워크 외부에 존재 한다면 라우터에 MAC 주소를 찾는 ARP (브로드캐스트) 요청을 하게 됩니다. (로컬 서브넷 마스크를 이용하여 상대방의 IP 주소 중에서 네트워크 ID 를 구별해 내고, 이 것을 자신이 속해있는 네트워크 ID와 비교 작업을 합니다.)
– 위 과정에서 다음 목적지의 MAC 주소 를 구하여 Destination 주소로 지정합니다. 라우터 입장에서는 해당 Frame 을 수신한 다음 자신의 IP 주소 와 다른 Destination IP 주소를 확인하고 해당 IP 를 처리할 수 있는 최적의 경로를 판단하기 위하여 라우팅 테이블을 참고합니다. (드디어 라우팅의 시작입니다. 여기서 OSPF 와 같은 라우팅 프로토콜들이 적용됩니다.)
– 그 다음 Destination 주소에 해당 IP 를 처리할 수 있도록 라우터 또는 서버의 MAC 주소 를 할당한 Frame 을 새롭게 생성합니다. (목적지가 나올 때 까지 다음 라우터에서 계속 반복)
– 라우터들을 거쳐 최종적으로 목적지 (서버) 가 있는 네트워크에 도달할 때 최종 서버의 MAC Address 가 구해질 것입니다. (결국, IP Pakcet 상위 계층에는 변화가 없다는 이야기 입니다.)
(** 위 내용들은 기회가 되면 추후 ARP 프로토콜 또는 라우팅 에서 따로 다루어 보도록 하겠습니다.)
2. TCP/IP 4계층 또는 인터넷 프로토콜 스위트 (네트워크 – 인터넷 – 전송 – 응용)
인터넷 환경에서 대부분은 IP 를 기반한 TCP 통신으로 이루어져 있습니다. 이에 TCP/IP 통신을 기준으로 만든 것이 바로 TCP/IP 4계층 (또는 인터넷 프로토콜 스위트) 입니다. 이 모델은 위에서 설명한 OSI 7계층 보다는 조금 더 간소화된 모델이라고 볼 수 있습니다. 그러나 OSI 7계층 모델로 부터 진화한 계층 모델은 아닌, TCP/IP 4계층 그 자체 별도의 모델이라고 볼 수 있습니다. (심지어 OSI 7계층보다 TCP/IP 4계층이 먼저 등장했습니다.) 또한 SSL, TLS 을 설명하고자 할 때는 TCP/IP 4계층 대신 OSI 7계층이 더 잘 들어맞을 수 있습니다.
(1) 네트워크 인터페이스 계층 (Network Interface Layer)
OSI 7계층에서 (1) 물리 계층과 (2) 데이터 링크 계층에 해당됩니다. 따라서 네트워크 드라이버와 같은 물리적인 TCP/IP 패킷의 전달 및 수신 과정에 대해 담당하고 있는 계층이라고 볼 수 있습니다.
(2) 인터넷 계층 (Internet Layer)
OSI 7계층에서 (3) 네트워크 계층과 대응되는 계층입니다. 패킷을 목적지까지 효율적으로 전달하는 것만 고려하는 계층입니다. 즉, 논리적인 주소인 IP 주소를 판독하고 목적지의 네트워크를 찾아가서 해당 목적지(호스트) 가 잘 받을 수 있도록 전송하는 역할만을 담당합니다.
(3) 전송 계층 (Transport Layer)
OSI 7계층의 (4) 전송 계층과 동일한 역할을 하는 계층입니다. 전달되는 패킷의 오류를 검사하고 재 전송을 요구하는 등의 전반적인 제어를 담당하는 계층입니다.
(4) 응용 계층 (Application Layer)
OSI 7계층에서 (5) 세션 계층, (6) 표현 계층 그리고 (7) 응용 계층 들이 한꺼번에 해당됩니다. 사용자의 응용 프로그램 레벨에서 데이터를 처리하는 계층입니다. (하위계층 으로부터 받은 메세지 변환, 또는 하위 계층으로 메세지 전달)
3. OSI 7계층 과 TCP/IP 4계층의 비교
요즘은 OSI 7계층 보다는 TCP/IP 계층을 더 많이 사용/참조하는 곳도 많습니다. (실제로 OSI 7계층의 전송-세션-표현 계층 들에 대해 이해가 어렵다는 분들이 종종 있는데, TCP/IP 4계층으로 오면 그런 어려움이 없다는 의견들이 많습니다.) 아래와 같이 PDI, 프로토콜, 그리고 주요 기기 들과 함께 OSI 7계층과 TCP/IP 4계층 (DoD 모델) 을 비교하여 한 번 살펴보시기 바랍니다.
4. 계층 모델의 장점
– 데이터 흐름을 한 눈에 파악하기 쉽습니다.
– 표준화된 규칙을 기반으로 하기 때문에 다른 제조사 장비들 끼리도 통신이 가능합니다. (호환성 보장은 결국 비용 절감이 가능해집니다.)
– 장애 처리 (문제 해결) 하기가 쉽습니다. 계층 단계별로 체크하면 되니까요.
– 다른 계층 끼리는 각 전달 과정을 알 필요 없이 자신의 계층에만 집중하면 되고, 따라서 캡슐화와 숨기기 (은닉) 가 가능합니다.
– 같은 업계(?) 사람들끼리 네트워크에 대한 이야기를 하기가 쉽습니다. 예를 들면, 내가 담당하는 범위의 기술들을 복잡하게 이야기 하지 않고, ‘OSI 7계층을 기준으로 저희는 3계층까지만 지원합니다’ 라고 하면 그 범위를 대부분 바로 이해합니다.
5. 실제 사례 – 장애 처리 건 : ‘사내 홈페이지가 안 들어가 집니다’
사내 망의 특정 홈페이지가 들어가지지 않는다는 장애가 접수 되고, 문제 해결을 위해 장애 처리 가상 회의 (브릿지 콜) 에 들어가보니 서버가 문제니, 네트워크가 문제니 서버 담당 팀과 네트워크 담당 팀이 서로 싸우고 있습니다. 그래서 그만 싸우라고 하고, OSI 7계층을 꺼내들고 단계 별로 하나씩 점검 해 나가보기로 합니다.
– 일단 특정 홈페이지만 접속이 안된다고 하니, 네트워크 (OSI 1~3계층) 문제일 가능성은 적습니다. (혹은 특정 홈페이지 서버가 있는 네트워크가 문제 일 수도 있겠죠)
– 그러나 서버 팀이 원격에서도 서버 접근은 가능하다고 하니, 서버가 있는 네트워크도 문제가 없어 보였습니다. (목적지의 OSI 1-3계층)
– 홈페이지 자체를 관리하는 팀은 확인해 보니 정상적으로 서비스가 운영 중이고 서버 자체에서 홈페이지는 잘 들어가진다고 합니다. (OSI 7계층)
– 그래서 남은 계층 (OSI 4-6계층) 을 확인 하던 중, 서버에서 사내 망으로 접근하기 위한 계정이 정상적으로 로그인 되고 있지 않는 걸 캡처되고 있는 로그를 통해 확인 하였습니다. (OSI 5계층)
– 이 후 인증 담당 팀이 서버 팀과 정상적으로 로그인 되도록 복구 하여 일반 사용자들도 홈페이지 접속이 가능해 졌습니다.
처음에서 설명 드렸던 것 처럼, OSI 7계층과 TCP/IP 4계층은 네트워크의 척추라고 할 수 있을 만큼 상당히 중요한 내용입니다. 각 모델들이 정리되고 발표된 지 약 40년 간 변하지 않는 내용으로 기술이 발전하더라도 앞으로 당분간은 위 모델 내에서 네트워크가 구성이 될 전망입니다. 현 시점에서 이 모델들을 발전시켜 줄 다음 세대의 또다른 다양한 기술들이 또 어떤 것들이 추가될 지 기대가 됩니다.
# Steven
안녕하세요. 잘 읽었습니다.
표현계층 설명 부분에서 궁금한 것이 있는데
ASCII 코드가 EBCDIC 코드보다 크기가 큰 가요?
ASCII 는 7비트 EBCDIC는 8비트로 알고 있는데 헷갈려서 질문드립니다.
감사합니다.
안녕하세요. 방문해 주셔서 감사합니다.
알려주신 것과 같이 ASCII 코드는 7비트, EBCDIC 코드는 8비트가 맞습니다. 제가 본문에서는 바꾸어 기입을 해 놓았었네요, 너그럽게 양해 부탁 드립니다.
다만 본문에서 설명드린 것은 단순히 ASCII 코드와 EBCDIC 코드로 설명드린 예시입니다. 표현 계층에서 압축을 할 수 있는 기술이나 다른 구현 및 응용 가능한 방법들은 상황에 따라 더 많이 있을 수 있을 것임을 참고 부탁 드립니다.
감사합니다!