728x90

 

OSI 참조 모델(Open Systems Interconnection reference model)

 

우리가 흔히 OSI 7계층이라고 부르는 것은 사실, OSI 참조 모델이다. 

 

국제표준화기구(ISO)에서 개발한 네트워크 모델이고, 네트워크 동작을 7계층(layer)으로 구성하여 설명하고 있다. 

 

OSI 참조 모델이 필요한 이유

OSI 참조 모델은 어떤 필요에 의해 만들어졌을까?

 

실제로 많은 물건들은 참조 모델을 바탕으로 만들어지고, 유지보수된다. 

 

예를 들어, 자동차에 참조 모델이 없다면, 자동차의 타이어나 엔진이 고장났을 때 자동차를 아예 바꿔야 하는 것이다.   

 

자동차 회사에서 자동차의 모든 것을 만드는 게 아니기 때문에 자동차 회사와 타이어 회사, 엔진 회사와의 규칙, 약속이 있어야, 자동차의 특정 부분이 고장나더라도 해당 부분만 수리해서 자동차를 계속 이용할 수 있는 것이다. 

 

즉, 참조 모델은 어떤 제품을 만들 때 없어서는 안될 규격이자 규칙, 약속과 같은 것이다. 

 

컴퓨팅 장치나 네트워킹 장치를 만들고 유지보수 할 때에도 참조 모델이 꼭 필요하고,

 

모든 통신장치들은 OSI 참조 모델(네트워크 모델)을 참고하여 만들어지고 유지보수된다.  

 

OSI 참조 모델을 통해 통신이 일어나는 과정을 단계별로 파악할 수 있고, 네트워크에서 트래픽의 흐름을 볼 수 있다. 

 

 

일반적인 네트워크의 계층 구조

OSI 참조 모델(네트워크 모델)을 알아보기 전에, 일반적인 네트워크의 계층 구조는 어떻게 되어있는지 확인해보자. 

 

일반적인 네트워크 계층 구조

 

일반적인 네트워크 계층 구조는 크게 LAN, 인터넷, 응용 프로그램으로 이루어져 있다. 

 

LAN

  • 유선 혹은 무선으로 기기를 연결하는 계층 
  • 기기 간 데이터 전송 시 속도 제어 및 오류를 검출하는 계층 

 

인터넷

  • 네트워크와 네트워크를 연결하는 계층 
  • 네트워크 간 데이터 전송 시 속도 제어 및 오류를 검출하는 계층

 

응용프로그램

  • 계층의 최상단, 사용자가 사용하는 프로그램이 있는 계층 
  • ex) 웹, 채팅, 게임

 

OSI 참조 모델

그럼 이제 국제 표준화 기구에서 개발한 네트워크 모델OSI 참조 모델에 대해 알아보자.

 

OSI 7계층

 

위의 일반적인 네트워크 계층에서 보았던 것도 보인다.

(계층 1, 2는 LAN, 계층 3,4는 인터넷, 계층 7은 응용프로그램)

 

그럼 이제 하나하나 OSI 참조 모델 7계층에 대해 세세하게 알아보도록 하자. 

 

물리 계층(Physical Layer)

네트워크에서 유선 혹은 무선으로 인접한 기기 간 연결을 담당하며, 네트워크 연결선의 특징, 무선 연결 방식의 특징을 규정한다. 

 

  • 신호: 아날로그 신호를 사용하는 네트워크 vs 디지털 신호를 사용하는 네트워크
  • 데이터를 전송하는 매체: 유선 vs 무선 

 

물리 계층에서 사용되는 통신 단위는 비트(0과 1)이다. 즉, 전기적으로 on/off 상태. 

 

이 계층에서는 단지 데이터를 전달하는 기능만 수행하고, 에러에는 관여하지 않는다. 

 

데이터 링크 계층(DataLink Layer)

인접한 기기 간에 오류 없는 데이터를 전송할 수 있도록 해주고, 물리 계층을 통해 데이터를 주고 받을 때 얼마나 빠른 속도로 데이터를 주고받을지, 받은 데이터에 오류가 없는지 등을 살펴본다.  

 

즉, 물리 계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할을 한다. 

 

  • IP 주소 - 인터넷으로 연결된 각 컴퓨터마다 유일하게 부여된 주소, 네트워크 계층에서 사용함 
  • MAC 주소 - IP 주소 외에도 데이터 링크 계층에서 사용하는 주소, 제조사에서 통신 장비에 부여하는 고유한 주소, 물리적 주소라고도 함(데이터가 LAN에서만 움직일 때는 MAC 주소를 사용하고, LAN을 빠져나와 인터넷을 돌아다닐 때는 IP 주소를 사용)
  • CRC 코드 - 오류 탐색 코드

데이터 링크 계층에서의 데이터 단위는 프레임이다. 

 

네트워크 계층(Network Layer)

LAN들을 연결하여 인터넷을 구성하는 계층이다.

 

LAN들 사이에서 데이터를 어떻게 주고 받을지 결정하며, 어떤 경로로 데이터를 보낼지도 결정한다. 

(경로를 선택하고, 경로에 따라 패킷을 전달해줌

 

  • 패킷 - 네트워크 계층에서 데이터의 단위
  • 라우팅 - 어떤 경로로 패킷을 보낼지 결정하는 것 (경로배정), 네트워크 계층에서 가장 중요한 기능(데이터를 목적지까지 가장 안전하고 빠르게 전달해야 함)
  • 라우터 - LAN과 LAN을 연결하는 기계, 데이터를 한쪽 네트워크에서 다른 쪽 네트워크로 전달하는 기기
  • IP(Internet Protocol) - 인터넷에서 패킷 전송을 담당하는 프로토콜, 주요 역할은 라우팅(뒤바뀌거나 사라진 패킷을 원래대로 맞추어주는 일을 전송 계층에 있는 TCP가 수행, 인터넷을 사용할 때 TCP/IP를 같이 사용)
  • IP 주소 - 통신을 하려면 주소가 필요, 인터넷으로 연결된 각 컴퓨터마다 유일하게 부여된 주소, 이 주소는 라우팅할 때 가장 중요
  • 도메인 이름 - 인터넷에서 통신하려면 IP 주소가 꼭 필요하지만 사람이 외우기 힘드므로, IP 주소에 이름을 붙여주는 것 
  • DNS(Domain Name Service) - 도메인 이름을 IP 주소로 바꾸어주는 것, 사용자가 웹 브라우저에 도메인 이름을 쓰면 웹 브라우저는 DNS 서버(도메인 이름과 IP 주소를 모아 놓은 컴퓨터)에 접속하여 IP 주소를 받아옴

 

전송 계층(Transport Layer)

전송 계층을 통해 양 끝단의 사용자들이 신뢰성 있는 데이터를 주고 받을 수 있다

 

출발지에서 목적지 컴퓨터끼리 데이터를 주고받을 때 오류를 점검하고 보정하며, 오류가 있으면 재전송 요청을 한다. 

 

네트워크 계층의 'IP'만으로도 데이터를 목적지까지 전달할 수는 있지만, 중간에 데이터가 손상되거나 유실되었을 때의 방법이 없다.

 

데이터의 확실한 전송을 위해 전송계층에서 'IP'와 (TCP or UDP)를 함께 사용하면 데이터가 중간에 손상되거나 유실되었을 때 다시 보낼 수 있다

 

◆ TCP(Transmission Control Protocol)

정확한 데이터를 전송하는 것이 목적이다. ex) 택배원이 직접 우리 집에 찾아와 내 사인을 받고 택배물을 나에게 전달해주는 것

 

3-way-handsahke

: 'TCP' 통신은 데이터를 전송하기 전에 3가지의 확인 과정을 거친 후에 데이터를 전송한다. 택배원이 우리집(IP)으로 찾아와 문을 두들기고(요청) 내가 (대답) 후, 누구냐고 물어보면(요청), 택배원이 '택배입니다' (대답)하면서 3번 서로의 안전을 확인한 후, 택배(데이터)를 받게 된다. 3-way-handshake로 인해 시간은 다소 걸리지만, 데이터 복구 기능이 있어 데이터를 안전하게 받을 수 있다는 장점이 있다. 

 

◆ UDP(User Datagram Protocol)

정확한 데이터 배달보다는 빠른 전송이 목적이다.  ex) 택배원이 모든 택배물을 경비실에 두고 가는 것

 

TCP와는 달리 UDP스위치(라우터)의 브로드캐스트 주소(경비실)에 그냥 데이터(택배)를 보내버린다. 그러면 컴퓨터는 UDP 브로드캐스트를 받아본 다음 자신에게 온 것이면 받고, 아니면 무시한다. 이런 경우 실제와 마찬가지고, 택배(데이터)가 유실되거나 도둑맞아도 택배원은 책임이 없다. 

 

UDP를 사용하면, 3- way-handshake가 필요한 TCP와 비교해 매우매우 빠른 통신이 가능하지만, 데이터가 제대로 목적지에 전달되었는지 보장할 수 없어 안전성이 낮다

 

신뢰성과 안정성이 중요한 작업이라면 TCP 통신을 하고, 동영상과 같이 빠른 데이터의 전송이 필요한 작업이라면 UDP 통신을 사용한다. 

 

◆ 포트 번호(Port)

더 효율적인 통신을 위해 사용하는 '전송 계층'의 기술은 포트 번호(Port)이다. 

 

포트 번호는 컴퓨터의 어느 애플리케이션(응용프로그램)에게 데이터를 전달할지 알려주는 번호이다. 

IP 주소아파트의 동번호라면, Port 번호아파트의 호수라고 생각하면 된다. 

 

즉, 특정 컴퓨터의 어떤 애플리케이션에게 데이터를 전달하라고 추가적으로 적는 번호가 바로 포트 번호인 것이다. 

 

이렇게 전송 계층에서 목적지 애플리케이션 '포트번호'와 '데이터들의 순서'를 적고 'TCP or UDP'를 써서 만든 데이터의 형태를 세그먼트라고 한다. 

 

세션 계층(Session Layer) 

'네트워크 계층의 IP'를 통해 컴퓨터를 찾아가고, '전송 계층의 포트 번호'를 이용해 컴퓨터의 애플리케이션을 찾아가고, '전송 계층의 TCP or UDP'로 안전한/빠른 연결을 확인하였다.  

 

그러고 나면 서버의 애플리케이션과 클라이언트의 애플리케이션 사이에 데이터 전송을 위한 논리적인 연결통로가 생긴다. 

 

이 때, 실시간으로 데이터를 주고 받기 위한 두 컴퓨터의 논리적 연결, 만남을 세션(Session)이라 하고, 이런 세션을 만들고, 유지, 종료할 때 사용되는 기술과 장비들을 '세션 계층'이라고 한다. 

 

표현 계층(Presentation Layer) 

세션이 만들어지고, 데이터를 전송하려고 하는데, 각 애플리케이션마다 사용하는 데이터 형태가 다르다

 

그래서 세션을 통해 넘어오는 데이터들을 애플리케이션에서 필요한 형태로 변환(데이터를 어떻게 변환할지 다루는 계층)해 애플리케이션에서 표현하는 계층이기 때문에 '표현 계층'이라고 한다. 

 

데이터를 암호화하는 계층이고, 웹에서 흐르는 데이터를 암호화하려면 반드시 표현 계층을 거쳐야 한다. 

 

응용 계층(Application Layer)

우리가 사용하는 사용자 인터페이스를 제공하는 응용 프로그램들의 상호작용을 다루는 계층이다. 

 

세상에 정말 수없이 많은 응용프로그램이 있듯, 각 응용 프로그램에 사용하는 수많은 프로토콜이 있다

 

대표적으로 인터넷상에서 문자(Hyper Text) 데이터를 다루는 프로토콜 HTTP, 파일을 주고 받을 때 사용하는 프로토콜 FTP, 도메인 네임서버를 찾을 때 사용하는 프로토콜 DNS, SSH 연결을 할 때 사용하는 프로토콜 SSH 등이 있다. 

 

 

 

 

728x90

+ Recent posts