Computer Science
OSI 7 Layer
Yuna_dev
2021. 6. 3. 12:58
OSI는 Open System Interconnection의 약자로, '개방형 시스템 상호연결'이라는 말이다. 이는 시스템 설계나 동작원리가 공개되어 있고, 보편적으로 인정받거나 표준화된 시스템을 상호연결하는 것을 말한다. 통신할 때의 연결과정을 7단계로 나누어 놓은것이고, 각각의 계층에 따라 역할이 구분되어 있기 때문에 7 계층이라고 하는 것이다. 2개의 시스템이 통신을 한다고 할 때 7가지 단계의 과정을 거친다는 것으로 말할 수 있다.
OSI 7 계층은 네트워크를 구상할 때 참조하는 모델이다. 이를 꼭 따를 필요는 없으나 다르게 만들었을 경우 일반 네트워크와의 통신을 보장할 수 없다.
1. physical layer (1 layer)
- 물리 계층은 말 그대로 하드웨어의 전송 기술로 이루어져 있으며, 전기적인 신호를 주고받는 역할을 하는 계층이다.
- 두 컴퓨터가 통신을 할 때 데이터는 0과 1의 비트 단위로 주고 받아진다.
- 이러한 0과 1로 이루어진 나열을 아날로그 신호로 바꾸어 전선으로 흘려보내고(encoding), 아날로그 신호가 들어오면 0과 1의 나열로 해석하는(decoding),
- 이 두가지의 과정을 통해 전선이라는 물리적으로 연결된 2대의 컴퓨터가 0과 1의 나열을 주고 받을수 있다.
- 이러한 기술은 컴퓨터의 하드웨어의 PHY 칩에서 input 과 output 을 구현해냄으로써 구현을 하고 이를 physical layer가 담당한다.
- 그러나 physical 계층은 통신을 할때 데이터의 종류나 오류를 제어하지 않는다.
2. Data Link layer (2 layer)
- 컴퓨터 간에 통신을 할때 전선을 통하여서만 통신을 할 수 있다고 가정하면, 컴퓨터의 수가 많아지면 많아질수록 전선이 많이 필요하고 비용면에서 비효율적이게 된다.
- 따라서 1계층, physical layer에 속하는 기술만으로는 여러대의 컴퓨터가 통신하도록 만들수 없다.
- 전선하나를 가지고 여러대의 컴퓨터와 통신하는 방법을 구현해야 하는데, 이는 다음과 같다.
- 각 컴퓨터를 하나의 스위치(라우터)에 연결을 하고, 통신을 하는 방법으로 여러대의 컴퓨터를 연결할 수 있고, 이를 하나의 네트워크(=인트라넷)라고 한다.
- 더 많은 컴퓨터를 연결은 아래와 같은 모습으로 구현된다.
- 이러한 모습으로 전세계의 컴퓨터들이 계층구조로 연결된 것을 인터넷이라고 한다. 위와 같이 구현된 인터넷 구조에서 같은 네크워크에 있는 여러대의 컴퓨터들이 데이터를 주고 받기 위해 구현한 계층이 Data-Link 계층이다.
- 이 기술은 컴퓨터 하드웨어의 렌카드에 구현되어 있고, 오류없이 안전하게 데이터를 보내는 역할로 프레임 단위로 데이터 전송을 한다.
- 2계층에서 MAC 주소라는 개념이 가장 중요한데, 이는 Media Access Control의 약자로, 통신기기의 하드웨어자체의 Lan card에 구현이 되어있는 고유한 식별 번호이다(물리 주소). ARP 프로토콜이 있어서 ip 프로토콜이 mac 주소를 확인하고 데이터를 정확한 컴퓨터에 전달할 수 있다.
3. Network layer (3 layer)
- 해당 데이터가 전달되어야 목적지의 주소와 경로설정을 담당하는 계층이다. 이 이때의 데이터의 전달은 IP(Internet Protocol) 주소를 통해 전달이 되는데, network 계층은 이 IP 주소를 제공한다.
- 수많은 네트워크로 연결로 이루어진 inter-network 속에서 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해, IP 주소를 이용해서 경로를 찾아 라우터에게 데이터 패킷를 넘겨주는 라우팅 역할을 담당한다.이 계층의 대표적인 장비는 라우터, L3 스위치, IP 공유기 등이 있다.
4. Transport layer (4 layer)
- 컴퓨터는 데이터를 적합한 프로세스에게 전달하려고 한다. 이때 어떤 데이터를 어떠한 프로세스에게 전달되어야 하는지 알수 있을까?
- 이 전송계층은 사용자들이 데이터를 주고 받을 수 있게 하는 계층이다. 대표적으로 자주 사용하는 TCP, UDP 프로토콜이 있다.
- 각각의 프로세스들은 포트번호를 가진다. 포트번호는 하나의 컴퓨터에서 동시에 실행되는 프로세스 들이 서로 겹치지 않게 가지는 정수 번호다.
- 포트번호를 사용하여 원하는 데이터를 해당 프로세스에 구분하여 보낼수 있다.
- 이 기술은 운영체제의 커널에 소프트웨어적으로 구현되어 있다.
5. Session layer (5 layer)
- 통신을 할때 논리적인 통신 회선을 만들게 되고 이를 session이라고 하는데, 이런 회선에 대한 생성, 유지, 종류 등의 관리 등이 session 계층에서 처리된다.
- 통신장치 간 상호작용 및 동기화를 제공하며 연결 세션에서 데이터 교환, 에러 발생시 복구를 관리한다. 즉 응용 프로그램 간의 연결을 지원해주는 계층이다.
- TCP/IP session을 만들고 없앨수 있다.
6. Presentation layer (6 layer)
- 서로 다른 시스템이 통신을 할때, 데이터를 수신하는 측에서 문제없이 데이터를 받아야 하기 때문에 보내는 측에서 데이터를 상대도 알수 있는 공통된 표준 형식에 맞춰서 변형하여 보내는 것이다.
- 즉, 인코딩과 디코딩을 포함하여 암호화, 복호화 등의 동작들이 이 계층에서 이루어진다.
- 헤더 부분에 어떤 형식으로 변환될것인지 담겨져 있다.
7. Application layer (7 layer)
- 최상위 7계층인 응용계층은 사용자 또는 어플리케이션이 네트워크에 접근할 수 있도록 해준다. 사용자 인터페이스를 제공하는 계층으로 사용자에게 보이는 유일한 계층이다. 대표적으로 HTTP, FTP 등의 프로토콜이 이 응용 계층에 속한다.
- OSI 7계층은 TCP/IP 모델과의 시장점유 싸움에서 졌기때문에 현재 대부분의 모델이 TCP/IP의 모델을 사용하고 있다. 이 TCP/IP 모델은 transport layer까지는 거의 비슷하고, 기존의 OSI 의 5,6,7 계층을 Application layer 하나로 합쳤다.
- TCP/IP를 기반으로 설명을 하자면 Application layer에 TCP/IP 소켓 프로그래밍이 있는데, 이는 운영체제의 transport layer에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것을 말한다. 이를 네트워크 프로그래밍이라고도 한다. 이 소켓 프로그래밍만으로도 클라이언트, 서버 프로그램을 따로따로 만들어서 동작시킬수 있고, 누구나 Application layer 프로토콜(HTTP, FTS 등)을 만들어서 사용할 수 있다.