나는 여태 OST 7계층이 현업에서도 자주 사용되고,
뭔가 실제로 적용되어 사용 중인 것인 줄 알았다.
하지만 말 그대로 '모델'이다.
네트워크 통신 과정을 계층별로 "개념화"한 모델이다.
이걸 왜 이제 알았지?..
물론, 현업에서도 L3 스위치, L4 스위치 등
OSI 7계층의 개념을 포함한 용어들을 쓰기 때문에
아예 모르면 절대 안된다.
하여튼 아래 글들을 참고로,
OSI 7계층과 현업에서 많이 사용하는 TCP/IP에 대해 글을 작성했다.
- 네트워크 통신 계층: OSI 7계층 바로 알기
- "데이터가 전달되는 원리" OSI 7계층 모델과 TCP/IP 모델
- OSI 7계층 vs TCP/IP 계층
- 데이터? 세그먼트? 패킷? 헷갈릴 땐 PDU를 알아보자
- IT 위키 - OSI 7계층
- [나무위키] OSI 모형
- What is difference between End to End, Point to Point, and Hop by Hop networks?
OSI 7계층에 대해 알아야 하는 이유?
현대인에게 온라인 통신이란,
붕어빵의 팥만큼이나
뗄레야 뗄 수 없는 관계일 것이다.
이러한 온라인 통신,
즉, 네트워크 통신을 통해 메신저, 이메일 등의
다양한 정보(데이터)를 주고 받는다.
이러한 데이터들은 '0'과 '1'로 이루어진 이진법으로 구성되고
컴퓨터는 '0'과 '1'을 '꺼짐'과 '켜짐'의 전기 신호로 표현하여,
이진법으로 구성되었던 데이터를
'아주 긴 전기 신호'로 변환하여 케이블을 통해 어디론가 보내진다.
하지만 이러한 통신 과정은 우리의 눈에 쉽게 보이지 않기 때문에
그 과정을 체계적으로 이해하고 표준화하기 위해,
또한, 초창기의 네트워크는 각 컴퓨터마다 시스템이 달랐기 때문에
하드웨어와 소프트웨어의 논리적인 변경없이 통신 가능하게 하기 위해,
1984년, 국제표준화기구(International Standard Organization, ISO)는
아래와 같은 'OSI 7계층'이라는 네트워크 표준 모델을 발표한다.
이로 인해,
네트워크 통신을 하며 발생하는 각 과정들이 우리의 눈에 보이지 않아도
계층별로 분리하여 구조적으로 이해하고 학습할 수 있게 되었고,
더 나아가 그러한 과정에서 발생한 문제를 추적하여 해결할 수 있게 되었다.
이런 것들을 제외하고도,
본 글 초반부에서도 언급했듯이
현업에서도 'L3 스위치', 'L4 스위치' 등
OSI 7계층에 대한 용어를 사용하기 때문에 알아야 한다.
'프로토콜'이란?
네트워크에 대해 공부하다보면 TCP/IP 프로토콜, HTTP 등
필연적으로 만나는 단어이다.
위키백과에서 정의하는 '프로토콜'의 뜻은 아래와 같다.
"컴퓨터나 원거리 통신 장비 사이에서
메신저를 주고 받는 양식과 규칙의 체계이다"
즉, 내 컴퓨터나 스마트 폰에서 발생한 데이터가
상대방 컴퓨터 혹은 서버로 전달되기 위해서는,
발생된 전기 신호가 냅다 케이블을 타기만 하면 되는 것이 아니라
'프로토콜'이라는 표준화 된 어떠한 약속이나 절차를 따라야한다는 것이다.
OSI 7계층이란?
OSI 계층 구조에 대해 자세히 알아보기 전에,
위 그림을 보면 알 수 있는 점이 한가지 있다.
바로 건너뛰어 한번에 맨위 또는 맨아래로 이동할 수 없고
위, 아래 층으로만 이동할 수 있다는 점이다.
즉, 현재 위치한 계층이 '전제 조건'이 되어
다음 계층으로 넘어갈 수 있다는 뜻이다.
또한, 하위 계층(1~4계층)으로 갈수록 하드웨어에 가까워지고
상위 계층(5~7계층)으로 갈수록 소프트웨어에 가까워지는 특성도 있다.
OSI 7계층에 대해 조금 더 자세하게 설명된
아래 그림을 참고해보며 각 계층에 대해 자세히 알아보자.
PDU(Process Data Unit)?
OSI 7계층에서 알아야 할 개념 중 하나인 PDU란,
각 계층에서 전송되는 단위이다.
쉽게 생각하면,
사용자는 Data라고 부르는 것을
Transport 계층에서는 Segment라고 부르고,
Network 계층에서는 Packet이라고 부르고,
Data Link 계층에서는 Frame이라 부르며,
Physical 계층에서 컴퓨터 하드웨어는 그것을 Bit로 연산하고 다루는 것이다.
(엄밀히 말하면, Physical 계층에서의 PDU인 Bit는
단위라기보다 단지 전기 신호의 흐름이다)
그렇기 때문에 보통 PDU라 함은,
2계층(Data Link, 데이터 링크)에서 사용되는 프레임(Frame),
3계층(Network, 네트워크)에서 사용되는 패킷(Packet),
4계층(Transport, 전송)에서 사용되는 세그먼트(Segment)정도만 생각하며,
네트워크 통신 과정에 대해 깊게 이해하기 위해
왜 각 계층의 PDU가 다른지,
그 역할은 무엇인지에 대해 알고 있어야 한다.
7계층 - 응용 계층 (Application Layer)
사용자와 바로 연결되어 있으며, 응용 S/W를 도와주는 계층이다.
즉, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행하는데,
이러한 일반적인 응용 서비스는 관련된 응용 프로세스들 사이의 전환을 제공한다.
응용 서비스의 예로,
우리가 자주 접하는 웹 프로토콜(HTTP),
메일 프로토콜(SMTP, POP3 등) 등을 이용하여
사용자가 네트워크에 접근할 수 있도록 인터페이스를 제공한다.
사용자로부터 정보를 입력받아 하위 계층으로 전달하고,
하위 계층에서 전송한 데이터를 사용자에게 전달한다.
TCP/IP 4계층 모델일 경우,
하위 3계층 TCP/IP 프로토콜 스택을 통해 전달받은 패킷을 다시 파싱해
응용 S/W(네트워크 S/W)를 통해 최종적으로 사용자까지 데이터를 전달한다.
대표적인 예로는,
크롬과 같은 브라우저나 Zoom 등의 여러 가지 응용 프로그램을
네트워크에 연결해주는 역할을 한다.
- PDU: 데이터(Data) 또는 메시지(Message)
- 주요 프로토콜: HTTP, SMTP, FTP, TELNET 등
- 주요 장비: L7 스위치
6계층 - 표현 계층 (Presentation Layer)
코드 간의 번역을 담당하여
사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을
7계층(응용 계층)으로부터 덜어 준다.
EBCDIC로 인코딩된 문서 파일을
ASCII로 인코딩된 파일로 바꿔 주는 등의
MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어지며,
아래의 주요한 세 가지 기능을 갖고 있다.
(1) 수신자 장치에서 적합한 애플리케이션을 사용하여
송신자 장치로부터 온 데이터를 해석하기 위한 7계층 데이터 부호화 및 변환
(2) 수신자에서 압축을 풀 수 있는 방식으로 된 데이터 압축
(3) 전송을 위한 암호화와 복호화
이처럼, 데이터의 표현 방식이나
상이한 부호 체계 간의 변화에 대해 규정하며,
응용 프로그램 혹은 네트워크를 위해 데이터를 '표현'하는 계층이다.
즉, 응용 프로그램 형식을 네트워크 형식으로 변환하거나
네트워크 형식을 응용 프로그램 형식으로 변환하는 일,
다시 말해, 데이터의 변환 / 압축 / 암호화가 발생하는 계층이다.
- PDU: 데이터(Data)
- 주요 프로토콜: 없음
- 주요 장비: 없음
5계층 - 세션 계층 (Session Layer)
'세션'이라는 이름답게 통신을 구성하는 계층으로,
실제 네트워크 연결이 이뤄지며
포트 번호(Port Number)를 기반으로 연결한다.
계층 이름처럼 두 대의 기기가 '대화'하기 위해서는
하나의 '세션'이 열려야 하며,
TCP/IP 세션을 만들고 없애는 책임을 지는 계층이다.
이러한 통신하는 프로세스 사이의 대화를 제어하고,
통신 과정이 진행될 때 동기화를 유지하는 역할을 한다.
- PDU: 데이터(Data) 또는 메세지(Message)
- 주요 프로토콜: 없음
- 주요 장비: L5 스위치
4계층 - 전송 계층 (Transport Layer)
양 끝단(End Point 혹은 Host)의 사용자들이 신뢰성 있는 데이터를 주고 받을 수 있도록 해주어,
상위 계층들(5/6/7계층)이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다
(End-to-End Reliable Delivery).
종단의 구체적인 목적지(Process)까지 데이터가 도달할 수 있도록 하며
(Process-to-Process Comunication),
그러한 Process를 특정하기 위한 주소로 Port Number를 사용하여
보내고자 하는 데이터의 용량 / 속도 / 목적지를 처리하는 계층이다.
여기서 종단이란,
가령 내가 PC로 google을 접속하려 할때,
내 PC와 google 웹 서버는 종단(End Point / Host)이다.
즉, 송신지와 수신지 간(End-to-End)의 제어와 에러를 관리하기 위해
패킷의 전송이 유효한지 확인하고, 전송에 실패된 패킷을 다시 보내는 등의
신뢰성 있는 통신을 보장한다.
Port Number에 대해서는 아래의 예시를 보며 간단하게 무엇인지 알아보자.
3계층(네트워크 계층)의 IP 주소를 이용하여
목적지 시스템까지 데이터가 무사히 전달되었다고 가정해보자
(3계층이나 IP 주소 등의 생소한 용어는 아래에서 자세히 알아보고
여기서는 대충 받아들이고 넘어가자).
그 목적지 시스템에는 여러 서비스가 실행되고 있기 때문에,
(ex. 크롬 브라우저, 카카오톡, ...)
어떤 (통신) 프로그램에게 해당 데이터를 전달할지 결정하는 것이
바로 Port Number(포트 번호)이다.
이러한 4계층의 가장 대표적인 프로토콜은
TCP(전송 제어 프로토콜)이며,
보통 TCP는 IP(인터넷 프로토콜) 위에 구축되어 있기 때문에
TCP/IP로 함께 부른다.
이 4계층부터는 송/수신 측의 port number, 순서 번호, 오류 검출 코드(체크섬) 등의
부가적인 정보를 Header에 추가하여
5계층(세션 계층)으로부터 받은 Data 앞에 붙임으로서,
'세그먼트(Segment)'라는 것으로 만든다.
신뢰성 있는 데이터 전송을 위해
데이터 분할 및 재조립, 연결 제어, 흐름 제어, 오류 제어, 혼잡 제어,
주소 설정, 다중화 등을 수행한다.
- PDU: 세그먼트(Segment)
- 주요 프로토콜: TCP, UDP
- 주요 장비: L4 스위치
3계층 - 네트워크 계층 (Network Layer)
여러 개의 Node(Point)를 거칠 때마다 경로를 찾아주는 역할을 하며
다양한 길이의 데이터를 네트워크를 통해 전달하고,
그 과정에서 4계층(전송 계층)이 요구하는 서비스 품질(QoS, Quality of Service)을
제공하기 위한 기능적, 절차적 수단을 제공하는,
인터넷이 가능하게 만드는 계층이다.
즉, 종단(End or Host) 간 전송을 위한 경로 설정을 담당하기 위해
(End-to-End 혹은 Host-to-Host Delivery),
종단으로 도달하기 위한 최적의 경로를 Routing 알고리즘을 통해 선택하고 제어하며,
라우팅 뿐만 아니라 패킷 포워딩, 세그멘테이션, 인터네트워킹 등을 수행한다.
여기서 'Routing'이란,
송수신 측의 논리 주소(IP 주소) 지정 및
데이터가 최종 목적지에 도달할 수 있도록 경로를 배정하는 것을 의미하는데,
우리가 학창 시절 컴퓨터에 대해 아무 것도 모르던 시절
온라인 게임에서 시비가 붙은 상대방을 겁주며 자주 언급하던 바로 그 'IP 주소'다.
논리적인 주소 구조를 나타내는 'IP 주소'는
네트워크 관리자가 직접 주소를 할당하는 계층적 구조를 가지며
PC 혹은 서버까지 데이터를 도달하게 할 수 있는 '기기의 주소'를 말한다.
다시 돌아와서,
사용자가 송신한 데이터가 목적지까지의 경로를 설정하는 역할을 하는 계층인데,
그 길목에 있는 여러 대의 라우터(Router)들을 바탕으로
Routing 알고리즘을 사용하여 최적의 경로를 선택하고,
송신 측으로부터 수신 측으로 전송한다.
4계층(전송 계층)에서 살펴 보았던 '세그먼트'와 마찬가지로,
4계층으로부터 전달 받은 '세그먼트' 앞 부분에
송/수신 컴퓨터 주소(IP) 등의 부가적인 정보를 Header에 추가한 후 붙인다.
송신 측에서는 그러한 데이터를 '패킷(Packet)'이라는 단위로 분할하여 2계층으로 전송하고
수신 측에서는 이러한 '패킷'들을 받아 다시 합친다.
수신 측 입장에서 좀 더 자세히 말하면,
3/4계층에서 사용하는 TCP/IP 프로토콜 스택이라는 녀석이
2계층에서 받은 데이터(프레임)를 Socket 인터페이스를 통해
7계층(응용 계층, TCP/IP 4계층)으로 올려보낸다
(TCP/IP 프로토콜 스택은 컴퓨터 커널(OS) 내부에 구현되며
하위 2계층(1/2계층)과 디바이스 드라이버(네트워크 드라이버)를 통해
컴퓨터 내부에서 데이터를 통신한다).
아래에서 알아볼 2계층(데이터 링크 계층)의 물리 주소는
패킷이 시스템으로 이동할 때마다 변경되지만,
네트워크 주소는 목적지까지 변하지 않는다.
또한, 2계층이 Node(Point)와 Node(Point) 사이의 전달을 감독한다고 하면,
3계층은 각 패킷이 목적지까지 성공적이고 효과적으로 전달되도록 한다.
(2계층 관련 내용은 아래 내용을 참고)
- PDU: 패킷(Packet)
- 주요 프로토콜: IP, ARP, ICMP, IGMP, RIP, OSPF, IGRP, EIGRP, BGP, RARP 등
- 주요 장비: 라우터(Router), L3 스위치
2계층 - 데이터 링크 계층 (Data Link Layer)
두 개의 직접적으로 연결된 Point(Node) 간의 신뢰성 있는 데이터 전송을
보장하기 위한 계층으로 (Point-to-Point 혹은 Node-to-Node Delivery),
그에 따라 오류 제어와 흐름 제어가 필요하다.
네트워크 위의 개체들 간 데이터를 전달하고,
단순히 비트(Bit)를 전송하기만 하는 1계층 물리 계층에서 발생할 수 있는 오류를 찾아 내며,
해당 오류를 수정하는 데 필요한 기능적, 절차적 수단을 제공하여 신뢰성을 더한다.
그러한 개체(Point or Point)들의 주소 값은 물리적으로 할당 받는데,
이는 개체 내의 NIC(Network Interface Card)가 만들어질 때부터 정해져 있는
MAC(Media Access Control) 주소이다.
NIC(Network Interface Card, 유/무선)는
전기 신호를 bit 신호로 바꾸는 기능을 하며,
각 NIC마다 고유한 주소인 MAC 주소라는 것을 공장에서 만들어질 때 가진다.
이러한 주소는 체계가 없는 단일 구조이다.
그렇기 때문에 주변의 NIC와 통신하려면 주변 NIC의 MAC 주소가 필요하며
이러한 MAC 주소는 Broadcast Domain에 속한다.
쉽게 말하자면,
내 PC가 연결되어 있는 작은 네트워크 내에서만 사용될 수 있기 때문에
(ex. 이더넷)
다른 네트워크에 존재하는 개체에 데이터를 전달하기 위해서는
상위 계층(3계층 - 네트워크 계층)의 IP 주소를 이용해야 한다.
또한, 데이터 전송 시 오류가 없도록 하기 위해
3계층(네트워크 계층)으로부터 받은 '패킷'을
'프레임(Frame)'이라는 것으로 만들어 1계층(물리 계층)으로 전송한다.
보통 3계층에서 받은 '패킷'의 앞과 뒤에
MAC 주소와 제어 정보를 추가로 넣는다.
보통 1계층과 2계층이 S/W가 아닌 H/W의 통합 칩 형태로 구현되는데
임베디드 시스템보다 더 하위단의 회로 설계 관점으로 생각하면 된다.
일반적으로 컴퓨터 공학에서는 3계층,
즉, OS 커널 단에 구현된 TCP/IP와 7계층(애플리케이션 계층)과의 접점인
버클리소켓 등을 활용해 통신 S/W를 구현하는데,
그럼에도 불구하고 개발자가 2계층 기능에 대해 알아야 하는 이유는
실제 구현하는 것보다는 3계층에서 처리된 패킷이 어떻게 처리되어
통신선로를 타고 흘러가는지에 대한 원리를 설명하기 위함이다
(실제 구현은 정보통신학과나 전자공학에서 심도 깊게 연구된다).
- PDU: 프레임(Frame)
- 주요 프로토콜: PPP, HDLC, ADCCP, LLC, ALOHAX.25, Ethernet, TokenRing, DFFI, FrameRelay 등
- 주요 장비: L2 스위치, 브릿지(Bridge) 등
1계층 - 물리 계층 (Physical Layer)
실제 장치들을 연결하기 위해 필요한 전기적, 물리적 세부 사항들을 정의한다.
좀 더 자세히 말하자면,
2계층인 데이터 링크 개체 간의 Bit 전송을 위한 물리적 연결을
설정, 유지, 해제하기 위한 수단을 제공한다.
상위 층들과 달리 주소 개념이 없으며,
물리적으로 연결된 Node 간에 신호를 주고 받는다.
즉, 상위 계층(2~7계층)에서 전송된 데이터를
물리 매체(ex. 허브, 라우터, 케이블 등)를 통해
다른 시스템에 전기적 신호(bit, 비트)를 전송하는 역할을 한다.
기계어(디지털 데이터)를 아날로그적인 전기적 신호로 변환하여
와이어에 실어 전송하는 일을 하기 때문에
케이블 종류, 무선 주파수 링크, 핀, 전압 등의 물리적인 요건을 포함한다.
예를 들면,
핀들의 배치나 전압, 전선의 명세 등과
LAN 케이블의 전기적 신호인 유선 LAN 통신,
무선 AP와 통신하는 무선 주파수인 무선 LAN 통신 등이 있다.
라우터나 스위치의 전원이 켜져 있는지,
케이블이 제대로 연결되어 있는지 등에 관한 것도
여기 1계층에 해당되는 이야기다.
그뿐 아니라, 여러 사용자들 간의 통신 자원을 효율적으로 분배하는 데에도 관여한다.
(ex. 경쟁 상태의 해소 or 흐름 제어 등)
- PDU: 비트(bit)
- 주요 프로토콜: X.21, RS-232C 등
- 주요 장비: 허브(Hub), 리피터(Repeater), 네트워크 카드(NIC, Network Interface Card) 등
캡슐화
어떠한 시스템에서 동작하는 어플리케이션으로부터
다른 시스템에서 동작 중인 어플리케이션에 데이터를 보낸다고 가정하자.
어플리케이션이 사용하는 데이터는 위 그림처럼 7계층(응용 계층)에 해당한다.
보내려고 하는 메세지(데이터)를 전송하려면 7계층(응용 계층)부터
1계층(물리 계층)까지 타고 내려가야 하는데,
계층을 하나씩 내려갈 때마다 상위 계층으로부터 받은 데이터는
해당 계층에서는 관심 대상이 아니기 때문에 캡슐로 싸고
필요한 정보를 header라는 이름으로 앞에 추가로 달고
아래 계층으로 보낸다.
이러한 과정이 계층을 내려갈 때마다 반복되기 때문에
'캡슐화'라는 용어를 사용하며,
1계층(물리 계층)까지 도착한 데이터는
보내려고자 했던 다른 시스템의 어플리케이션에 도착하여
캡슐화의 반대 과정을 통해 데이터를 얻게 된다.
TCP/IP 모델
하지만 앞서 말했듯이,
OSI 7계층 모델은 참조 정도로만 보는 이론적 표준(De jure)이고,
실제 사용되는 사실상의 표준(De facto)은 TCP/IP 모델이다.
이러한 TCP/IP 모델은 아래 그림에서 볼 수 있듯이,
OSI 7계층 구조를 완벽히 따르지는 않는다.
대부분은 위 그림의 TCP/IP 모델을 따르며,
데이터의 흐름 관리, 정확성 확인, 패킷의 목적지 보장을 담당한다.
주로 TCP가 데이터의 정확성 확인을,
IP가 패킷을 목적지까지 전송하는 일을 담당한다.
끝!
'Study > Network' 카테고리의 다른 글
[Network][장비] Hub(허브), Bridge(브릿지), Switch(스위치), Router(라우터), Gateway(게이트웨이)란? (0) | 2021.12.01 |
---|---|
[Network] 웹 브라우저에 www.google.com / www.naver.com 을 입력했을 때 벌어지는 일들에 대해 (2) | 2021.09.08 |
[Network] IP 주소에 대해 - (3) 서브넷 마스크 (Subnet Mask) (0) | 2020.12.06 |
[Network] IP 주소에 대해 - (2) IP 주소 분류, 구분 방법 (0) | 2020.12.04 |
[Network] IP 주소에 대해 - (1) IP 주소란? (0) | 2020.12.04 |