[네트워크] OSI 7계층
정보통신산업 초기에는 정보통신 업체들이 각자의 방법으로 장비를 개발해 제조사가 다르면 서로 통신이 불가능했습니다.
OSI 7계층은 네트워크에서 통신이 일어나는 과정을 7단계로 분리한 것으로, 서로 다른 제조사 시스템 간의 호환성 문제 해결을 위해 iso 국제표준에 의해 재정되었습니다.
OSI 는 Open System Interconnection 의 약자로, OSI 7계층을 준수하는 통신장비들은 서로 호환이 가능해집니다.
장단점
그렇다면 이를 7개의 계층 구조로 나타낸 이유가 있을텐데, 그 장단점에 대해 알아보겠습니다.
장점
- 네트워크 통신을 계층 구조로 나누다면 각 계층은 독립적인 역할을 할 수 있음
- 통신이 일어나는 과정을 이해하기 쉽고, 이를 단계별로 파악할 수 있게 됨
- 각 계층과 그 상호작용이 명확하게 정의되면 전반적인 분할 과정을 통해 디자인, 구현, 테스팅이 간단해짐
- 7계층 중 특정한 곳에 문제 발생 시 다른 계층의 장비 및 소프트웨어를 건드리지 않고도 문제가 발생한 계층만 수정하면 됨
단점
- 많은 계층들로 인해 생기는 딜레이로 발생하는 오버헤드 존재
통신 방법
사용자 데이터는 각 계층을 지납니다.
데이터 전송 시 7계층에서 1계층으로 각각의 층마다 인식할 수 있는 헤더를 붙이는데 이 과정을 캡슐화라고 합니다.
반대로 데이터를 받은 컴퓨터는 해당 데이터를 분석하며 1계층에서 7계층으로 헤더를 분리하는 과정을 거치는데 이는 역캡슐화라고 합니다.
이제 각 계층 구조에 대해 자세히 알아보도록 하겠습니다.
1계층 - 물리 계층 (Physical Layer)
- 단위 : 비트 (bit)
- 주요 장비 : 허브, 리피터, NIC 등
물리 계층에서는 말 그대로 물리적인 의사소통만을 담당합니다.
물리 계층은 0과 1로 이루어진 데이터를 아날로그 신호 (전기신호) 로 바꿔주는 하드웨어 계층입니다.
하드웨어 장치를 통해 실제 메세지를 전달하기 때문에 네트워크 스택의 최하위 수준으로 간주됩니다.
이는 주소 개념을 가지고 있지 않으며 연결된 노드간에 신호를 주고 받습니다.
데이터가 0, 1 즉 on, off 인 전기적 신호이기 때문에 해당 계층은 오직 데이터만 전달합니다.
데이터 전달 역할이기 때문에 알고리즘이나 오류제어 기능은 가지고 있지 않습니다.
2계층 - 데이터링크 계층 (Data-Link Layer)
- 단위 : 프레임
- 주요 장비 : Bridge, L2 Switch 등
데이터링크 계층은 Point to Point 간의 신뢰성 있는 전송을 보장하기 위한 계층입니다.
데이터링크 계층은 4가지의 기능을 가지고 있습니다.
Service to neighbors
이웃한 계층 (1, 3계층) 에게 잘 정의된 서비스 인터페이스를 제공합니다.
주로 확인되지 않은 비연결형 서비스, 확인된 비연결형 서비스, 확인된 연결형 기반 서비스, 이 세 가지를 제공합니다.
Framing
네트워크 계층 데이터그램을 프레임 단위로 만들고 헤더와 트레일러를 추가합니다.
트레일러는 비트 에러를 감지합니다.
헤더에는 목적지, 출발지의 MAC 주소, 그리고 이더넷 유형을 정의합니다.
ARP 를 이용하면 IP 주소를 이용하여 MAC 주소를 찾을 수 있습니다.
흐름 제어 (Flow Control)
데이터를 전송하는 측과 수신하는 측의 속도를 확인하여 이를 제어하는 것입니다.
데이터를 전송하는 측의 속도가 상대적으로 빠를 때, 전송에 오류가 없더라도 특정 시점에서 수신하는 측은 프레임이 도착하자마자 처리할 수 있는 능력이 되지 않아 일부 프레임을 손실하게 됩니다.
따라서 데이터를 수신하는 측이 속도가 느릴때 빠르게 데이터를 전송하는 측에 의해 막히지 않도록 속도를 규제합니다.
오류 제어 (Error Control)
모든 프레임이 최종 목적지에 올바른 순서로 전달되었는지 확인하여 전송된 오류를 처리합니다.
오류 검출 코드는 단지 전송중에 발생한 오류의 존재 여부만을 수신측이 알 수 있도록 하는 코드로써, 패리티 검사, 검사합, 순환 중복검사 등이 있습니다.
오류 수정 코드는 무엇이 잘못되었는가를 충분히 알 수 있는 여분의 정보를 포함시켜 수신측이 직접 오류를 고칠 수 있게 하는 코드로써, 부호어, 해밍 부호 등이 있습니다.
3계층 - 네트워크 계층 (Network Layer)
- 단위 : 패킷
- 주요 장비 : 라우터, L3 Switch
네트워크 계층은 종단간 전송을 위한 경로 설정을 담당합니다 . (End to End 혹은 Host to Host Delivery)
이 때 전송을 위한 주소로 IP 주소를 이용합니다.
네트워크 계층은 OS 내부에 구현되어 있으며 다음과 같은 기능을 수행합니다.
Routing
어떤 네트워크 안에서 통신 데이터를 보낼 경로를 선택하는 과정입니다.
혼잡 제어 (Congestion Control)
혼잡이란, 현재 서브넷에 많은 패킷이 들어올 때 수행능력이 감소하는 것을 뜻합니다.
트래픽이 너무 많아 라우터가 더 이상 이를 대처할 수 없게되어 패킷 손실이 발생합니다.
이러한 혼잡을 제어하는 기능을 개방루프, 폐쇄루프 등의 방법을 이용해 제어하는 것을 혼잡제어라고 합니다.
Internetworking
네트워크 간 통신하는 개념 혹은 기술 전반을 뜻합니다.
4계층 - 전송 계층 (Transport Layer)
- 단위 : 세그먼트
- 주요 장비 : L4 Switch
전송 계층은 두 네트워크 간 데이터 전송, 흐름 제어, 오류 제어를 담당하는 계층입니다.
데이터링크 계층의 흐름 제어, 오류 제어는 자신이 전송할 바로 다음의 네트워크만 고려하면 되지만, 전송 계층의 경우에는 통신 간 모든 네트워크를 고려해야 한다는 차이점이 있습니다.
또한 전송 계층은 종단간 신뢰성 있는 데이터 전송을 담당하며 (End to End Reliable Delivery) 종단 (Host) 의 구체적인 목적지 (Process) 까지 데이터가 도달할 수 있도록 합니다. (Process to Process Communication)
이 때 Process 를 특정하기 위한 주소로 Port Number 를 이용합니다.
전송 계층의 주요 프로토콜로는 TCP 와 UDP 가 있습니다.
5계층 - 세션 계층 (Session Layer)
- 단위 : 데이터 or 메세지
세션 계층은 네트워크의 연결을 관리하고 지속시켜주는 계층으로써 세션의 파괴, 생성, 유지, 복구 등을 지원합니다.
세션 계층은 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공합니다.
동시 송수신 방식, 반이중 방식, 전이중 방식의 통신과 함께 체크 포인팅과 종료, 다시 시작 과정 등을 수행합니다.
또한 세션 계층은 TCP/IP 세션을 만들고 없애는 책임을 집니다.
이는 통신 세션을 구성하는 계층으로, 포트 연결이라고도 할 수 있습니다.
6계층 - 표현 계층 (Presentation Layer)
- 단위 : 데이터
표현 계층은 데이터 표현방식, 상이한 부호체계 간 변화에 대해 규정합니다. 입력 또는 출력되는 데이터를 하나의 표현 형태로 변환시키는 역할을 합니다.
표현 계층은 코드 간 번역을 담당하여 사용자 시스템에서 데이터 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어줍니다. MIME 인코딩이나 암호화 동작이 표현 계층에서 이루어집니다.
또한 표현 계층은 데이터 인코딩/디코딩, 압축/해제, 암호화/복호화 등의 역할을 수행합니다.
7계층 - 응용 계층 (Application Layer)
- 단위 : 데이터
응용 계층은 최종 목적지로써 사용자가 네트워크에 접근할 수 있도록 해주는 계층이며, HTTP, FTP, SMTP 등과 같은 프로토콜을 가지고 있습니다.
해당 통신 패킷들은 프로토콜들에 의해 모두 처리됩니다. 사용자가 사용하는 브라우저나 메일 프로그램은 프로토콜을 보다 쉽게 사용하게 해주는 응용 프로그램입니다.
응용 계층은 응용 프로세스와 직접적인 관계로 일반적인 응용 서비스를 수행합니다. 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스인 API 를 제공합니다.
참고 링크
https://junuuu.tistory.com/259
https://velog.io/@chae_eun/OSI-7%EA%B3%84%EC%B8%B5
https://shlee0882.tistory.com/110
https://itwiki.kr/w/OSI_7%EA%B3%84%EC%B8%B5
'Studies > Computer Science' 카테고리의 다른 글
[네트워크] 쿠키와 세션 (0) | 2022.07.13 |
---|---|
[네트워크] JSON & XML (0) | 2022.07.05 |
[네트워크] TCP & UDP (0) | 2022.06.06 |
[네트워크] RESTful, REST API (0) | 2022.06.03 |
[운영체제] 프로세스와 스레드 (Process & Thread) (0) | 2022.05.26 |