멈추지 않고 끈질기게
[네트워크] OSI 참조 모델 본문
※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다.
※ 해당 포스팅은 하기 출처들을 참고하였습니다.
- 애덤 우드벡, Go 언어를 활용한 네트워크 프로그래밍, 제이펍, 2022
이번 포스팅에서는 네트워킹 표준화를 위한 OSI 참조 모델에 대해 알아보겠습니다.
1. OSI 참조 모델
OSI(Open System Interconnection) 참조 모델은 국제 표준화기구(ISO)에서 발표한 네트워킹 표준화를 위한 모델로서, 네트워크 통신 과정을 7개의 계층으로 나누어 OSI 7계층(OSI 7 Layer) 라고도 합니다. 각 계층을 독립적인 구조로 구분하고 역할을 명확하게 정의하여 네트워크 통신 구조를 이해하는데에 중요한 역할을 합니다.
2. 계층 구조 레이어
OSI 참조 모델은 다음과 같은 7개의 계층으로 구분됩니다.
1) 제 1계층 - 물리 계층(Physical Layer)
네트워크 데이터가 전송되는 물리적 매체를 가리키며, 네트워크 계층에서 발생한 비트(디지털 신호)를 물리적 매체가 제어 가능한 신호(아날로그 신호)로 변경하는 역할을 합니다(반대도 포함). 또한 비트 전송률을 제어하는 역할도 물리 계층이 담당하고 있습니다. 이 계층에 속하는 하드웨어에는 리피터, 허브 등이 있습니다.
2) 제 2계층 - 데이터 링크 계층(Data Link Layer)
직접 연결된 두 노드간의 데이터 전송을 처리하며(시스템 ↔ 스위치), 물리 계층에서 발생한 신호의 에러 식별 및 수정을 담당하는 계층입니다. 신호의 재전송 및 흐름 제어 기능은 하위의 물리적 매체에 따라 변경될 수 있습니다. 유선 통신의 경우 비트 에러 발생률이 낮아 재전송하지 않지만, 무선은 비트 에러 발생률이 높기 때문에 재전송하는 식입니다. 이 계층에 속하는 하드웨어에는 브리지, 스위치 등이 있습니다.
3) 제 3계층 - 네트워크 계층(Network Layer)
노드 간의 데이터 전송을 담당하는 계층으로, 라우팅(Routing), 주소 지정, 멀티 캐스팅 및 트래픽 제어 관련 네트워크 관리를 위한 프로토콜의 중심이 되는 계층입니다. 라우팅은 네트워크에서 최적의 경로를 선택하는 프로세스로, 라우팅의 성능에 따라 네트워크 통신의 효율성이 차이나게 됩니다. 이 계층에 속하는 대표적인 하드웨어가 라우터 입니다.
4) 제 4계층 - 전송 계층(Transport Layer)
안정성 유지 및 노드 간의 데이터 전송 제어, 조정을 담당하는 계층입니다. 에러 수정, 데이터 전송 속도 제어, 데이터 청킹 및 분할, 누락된 데이터 재전송, 수신 데이터 확인 과정 등을 포함하며, 수신자가 데이터를 인정하지 않는 경우 이 계층에서 재전송을 담당하게 됩니다.
5) 제 5계층 - 세션 계층(Session Layer)
노드간의 연결 수명 주기를 관리하는 계층으로, 노드 간 연결 수립, 연결 시간 초과 관리, 연결 종료 등을 담당하는 계층입니다. 일부 7계층의 프로토콜이 이 계층의 기능에 의존할 수 있습니다.
6) 제 6계층 - 표현 계층(Presentation Layer)
데이터가 아래 계층으로 이동할 때 네트워크 계층의 데이터를 준비하고, 위 계층으로 이동할 때 어플리케이션 계층에 데이터를 제공하는 계층입니다. 데이터 인코딩, 암호화 및 해독이 이 계층에서 이루어집니다.
7) 제 7계층 - 어플리케이션 계층(Application Layer)
호스트 식별 및 리소스 검색 역할을 하는 계층으로, 사용자는 어플리케이션 계층을 통해 서버와 상호작용하게 됩니다. 웹 콘텐츠 교환에 사용하는 프로토콜인 HTTP(HyperText Transfer Protocol)가 7계층의 프로토콜에 해당합니다.
3. 트래픽 전송
OSI 참조 모델에서 트래픽 전송 시 각 계층에서의 데이터는 하위 계층에 의해 캡슐화(Encapsulation)되며, 이 때 헤더 등을 제외한 전송하고자 하는 알짜 정보를 페이로드(payload)라고 합니다.
동일 계층 내의 클라이언트-서버 간 통신을 수평 통신(horizontal communication)이라고 하는데, 이는 동일 계층 간에 직접 데이터를 전송한다는 뜻은 아닙니다. 실제로는 클라이언트의 네트워크 스택을 따라 하위 계층으로 이동하며 데이터를 전송하고, 서버에서도 수신한 후에 네트워크 스택을 따라 상위 계층으로 이동하여 데이터를 전달받게 됩니다. 아래 그림은 클라이언트에서 서버에 데이터를 전송하는 과정을 도식화한 것입니다.
클라이언트에서 서버로 트래픽을 전송할 경우 6계층에서 7계층의 페이로드 수신 후 헤더로 캡슐화 + 6계층의 페이로드 추가 -> 5계층에서 6계층의 페이로드 수신 후 헤더로 캡슐화 + 5계층의 페이로드 추가 -> ... 와 같은 과정이 반복됩니다. 4계층에서는 TCP 또는 UDP 프로토콜을 사용하며, 이 계층에서의 페이로드는 세그먼트(segment) 또는 데이터그램으로 명칭합니다(TCP와 UDP 프로토콜의 차이점에 대해서는 추후 별도의 포스팅에서 다루겠습니다). 3계층의 IP(Internet Protocol)는 세그먼트 수신 후 헤더와 함께 캡슐화하여 페이로드를 생성하는데 이를 패킷(packet)으로 부릅니다. 2계층은 패킷 수신 후 헤더와 푸터를 추가하여 페이로드를 생성하며 이를 프레임(frame)이라 합니다. 푸터(footer)는 오류 제어를 위한 데이터로 프레임 검사 시퀀스(Frame Check Sequence)등을 포함합니다. 1계층에서 프레임을 디지털 신호(비트 형태)로 받은 다음 서버로 전송하고, 서버에서는 역순으로 올라가며 계층마다 헤더를 제거하여 최종적으로 데이터를 수신하고 클라이언트의 요청을 수행하게 됩니다.
'네트워크' 카테고리의 다른 글
[네트워크] TCP vs UDP (0) | 2023.03.10 |
---|