OSI 7 계층
OSI 7 계층은 네트워크 통신의 구조를 7개의 계층으로 나누어 설명하는 개념적 모델입니다. ISO(International Organization of Standardization, 국제 표준 기구)에서 제정한 표준으로 컴퓨터 네트워크의 복잡한 통신 과정을 총 7가지 계층으로 나누어 각 계층의 역할을 명확히 하고 네트워크 프로토콜을 설계하고 분석하는 데 사용됩니다.
OSI 7 계층 표준이 만들어지기 전에는, 서로 다른 네트워크 통신 절차를 사용하는 회사의 장비 간에는 통신이 원활하지 않았습니다. 이를 해결하기 위해 ISO가 개입하여 등장했습니다.
OSI 7 계층 구성
OSI 7 계층은 컴퓨터 간의 통신을 위한 전기적 신호 변환을 담당하는 Physical Layer부터, 사용자와의 직접적인 상호작용을 담당하는 Application Layer까지 총 7까지 계층이 존재합니다.
각 계층에 대해 자세히 알아봅시다.
Physical Layer(물리 계층, 1계층)
네트워크 장비 간의 실제 전송 매체(케이블, 무선 신호)를 통해 데이터를 전송하는 역할 담당하는 계층입니다. 통신 시에 0과 1의 비트를 전기 신호로 변환하여 전송합니다.
1계층의 장비로는 허브, 리피터, 네트워크 케이블 등이 있습니다.
예시
A컴퓨터에서 B컴퓨터로 비트 데이터(0101110101)를 보낸다고 가정해 봅시다.
이 때 전자기파는 0~무한대의(Hz)를 가지게 되는데, 전선이 통과시킬 수 있는 주파수의 범위는 한정적이기 때문에 디지털 데이터(비트)를 아날로그 신호로 바꾸어서 전송하게 됩니다. 디지털 데이터를 아날로그 신호로 변환하는 과정을 Encoding이라고 합니다.
이 때 신호를 수신한 B 컴퓨터는 아날로그 신호를 0과 1로 이루어진 디지털 데이터로 다시 변환하여 해석합니다. 이를 Decoding이라고 합니다.
Data Link Layer(데이터 링크 계층, 2계층)
물리적 데이터 전송에서 더 나아가 원하는 컴퓨터에 데이터를 보내기 위해서는 통신의 흐름 관리가 필요합니다.
데이터 링크 계층은 물리 계층 위에서 패킷(packet) 데이터를 프레임(frame)이라는 더 작은 단위로 나누어 전송합니다. 이 때 데이터를 프레임(frame)으로 나누어 전송할 때 MAC 주소를 붙여 보냅니다.
👆🤓MAC 주소는 NIC(네트워크 인터페이스 카드) 혹은 네트워크 어댑터에 할당된 고유한 식별자로, 물리적 장치 간의 통신을 위해 사용됩니다.
데이터 링크 계층은 데이터의 오류 검출과 수정, 그리고 흐름 제어 기능을 담당합니다. 동일한 네트워크 내의 서로 다른 장치간의 데이터 전송을 담당하는 계층이 데이터 링크 계층입니다.
2계층의 장비로는 스위치, 브리지 등이 있습니다.
예시
여러 대의 컴퓨터가 통신하기 위해서는 기본적으로 컴퓨터끼리 선으로 연결되어 네트워크를 구성하고 있어야 합니다. 네트워크 내에서 특정 컴퓨터로 데이터를 전송할 때, 보내고자 하는 데이터가 송신 컴퓨터와 연결된 모든 컴퓨터로 전송된다는 문제점이 발생합니다.
이 때, 무분별한 통신 흐름을 제어하고, 원하는 목적지로 데이터를 보낼 수 있도록 하는 것이 앞서 설명한 스위치입니다. 스위치를 통해 데이터의 목적지를 확인하고 통신흐름을 제어할 수 있습니다.
네트워크 내의 통신흐름을 스위치로 제어한다면, 네트워크 간의 통신흐름은 라우터로 제어합니다. 라우터를 활용하여 전 세계의 컴퓨터를 연결한 것이 바로 인터넷입니다.
Network Layer(네트워크 계층, 3계층)
네트워크 계층은 네트워크 간 통신에서 노드를 거치며 가장 효율적인 데이터의 경로를 찾아주는 역할을 하는 계층입니다. 네트워크 계층에서는 IP 주소를 사용하여 데이터 패킷이 어떤 경로를 통해 전달될지 결정합니다. 이 것을 라우팅이라고 합니다.
또한 데이터를 보낼 때 송신 호스트에서 세그먼트를 패킷으로 분리하여 보내면 수신 호스트에서 분리된 패킷을 받아서 재조립합니다.
👆🤓같은 네트워크 내의 통신에서는 네트워크 계층을 거치지 않아도 됩니다.
3계층의 장비로는 라우터가 있습니다.
예시
컴퓨터 A가 컴퓨터 B로 데이터를 보낼 때, 네트워크 계층에서는 컴퓨터 B의 IP 주소를 사용하여 패킷을 목적지까지 전달합니다.
Transport Layer(전송 계층, 4계층)
전송 계층은 Port 번호를 통해 데이터 전송을 돕는 계층입니다. 장치 간의 end-to-end 통신(종점 간 통신)을 담당합니다. 기본적으로 데이터의 전달이 신뢰성 있게 이루어지도록 보장하는 것이 전송 계층의 주목적입니다. 이를 위해 전송 계층에서는 데이터의 분할, 전송, 재조립, 오류 검출 및 수정, 흐름 제어 등의 기능을 제공합니다.
전송 계층에서 신뢰성을 우선시하여 데이터의 정확한 전달을 보장하는 TCP(Transmission Control Protocol), 속도를 우선시하는 UDP(User Datagram Protocol)이 사용됩니다.
송신 호스트에서는 세션 레이어를 통해 받은 데이터를 세그먼트(segment)라는 단위로 잘게 쪼개서 3계층인 네트워크 계층으로 보냅니다. 수신 호스트에서는 반대로 세그먼트를 데이터로 합치는 작업을 수행합니다.
구체적으로
1. 발신자와 목적지 간의 에러 여부를 확인하고 전송이 유효하지 않은 경우 패킷을 다시 전송하는 작업,
2. 세그멘테이션(데이터를 세그먼트 단위로 보내는 행위),
3. 오류제어(데이터에 오류가 있으면 데이터를 재전송하는 행위),
4. 흐름제어(기기 사이에 데이터 처리량이 다른 경우 데이터 전송량을 낮추거나 높여 흐름을 제어하는 행위)
등의 기능을 제공합니다.
장비를 통해 작업을 처리하기보다는 소프트웨어를 통해 4계층의 작업이 처리됩니다.
예시
컴퓨터 A에서 데이터 전송 시, 전송 계층은 데이터를 여러 세그먼트로 나눠서 이 세그먼트들을 수신 호스트 컴퓨터 B로 송신합니다. 전송 계층에서는 이 세그먼트들이 순서대로 도착했는지 확인하고, 손실되거나 손상된 세그먼트가 있다면 이를 다시 요청하여 전송의 신뢰성을 보장합니다.
Session Layer(세션 계층, 5계층)
데이터 송수신, 통신 시 컴퓨터 간의 연결을 유지하기 위해 세션의 생성 및 유지의 관리를 담당하는 계층입니다. 데이터 송수신이 이루어지는 동안에는 세션을 유지하고, 송수신이 끝나면 자원이 낭비되는 것을 막기 위해 세션을 닫습니다.
체크포인트를 활용하여 특정 시점으로의 복구 기능인 세션 복구 기능도 제공합니다. 100메가 바이트 파일을 전송한다고 할 때, 세션 계층이 5메가 바이트 단위마다 체크포인트를 설정한다고 가정합시다. 52메가 바이트에서 전송이 끊겨도 50메가 바이트에 설정한 체크포인트 덕분에 50메가 바이트부터 이어서 전송을 진행할 수 있습니다.
예시
컴퓨터 A와 컴퓨터 B가 통신을 시작하면 세션 계층이 세션을 설정하여 두 장치 간의 연결을 관리하게 됩니다. 화상 회의, 로그인 세션, API 호출과 같은 예시 또한 세션 계층의 예시라고 할 수 있습니다.
Presentation Layer(표현 계층, 6계층)
서로 다른 시스템 간에 데이터를 주고 받을 때 데이터의 표현 방식이 다르면 문제가 발생할 수 있습니다. 표현 계층은 서로 다른 장치 간 데이터 출력에 있어 차이가 없도록 하기 위하여 입출력 데이터를 특정 표현 형태로의 변환을 담당하는 계층입니다. 데이터 형식(포맷) 변환, 암호화/복호화, 압축/압축 해제 등의 작업을 수행합니다. 즉 데이터 표현을 담당하는 계층입니다.
송신 호스트와 수신 호스트가 서로 다른 인코딩 방식을 사용하는 경우, 표현 계층이 제 7계층인 응용 계층에서 이해할 수 있도록 변환하는 과정을 수행합니다. 송신 호스트는 암호화를 해서 5계층 세션계층으로 데이터를 넘겨주고, 수신 호스트는 암호화를 풀어서 7계층인 수신 계층으로 넘겨주는 작업을 수행합니다.
예시
컴퓨터 A가 이미지를 컴퓨터 B로 보내는 경우, 표현 계층에서 이미지를 압축하고 암호화하여 전송합니다. 컴퓨터 B는 수신 후 데이터를 복호화하고 원래 이미지로 복원합니다.
Application Layer(응용 계층, 7계층)
계층의 최종 목적지로 사용자와 직접 상호작용하는 계층입니다. 각 프로그램과의 정보 교환을 담당하는 계층입니다. 웹 브라우저나 이메일 클라이언트 같은 소프트웨어들이 통신을 시작하기 위해 응용 계층에 의존합니다.
예시
사용자가 웹 브라우저를 통해 웹사이트에 접속하면, 응용 계층은 해당 요청을 처리하고 웹 사이트를 사용자에게 보여줍니다.
OSI 7계층에서의 송수신 과정
OSI 7 계층에서 데이터 송수신 과정에서는 데이터 캡슐화가 일어납니다. 데이터 캡슐화를 통해 각 계층별 정보를 데이터에 추가하는 작업을 수행합니다.
데이터를 송신할 때 송신 호스트는 PDU(Protocol Data Unit)이라는 OSI 모델의 정보 처리 단위로 데이터를 전송합니다. 데이터 전송 과정에서 7계층인 응용 계층부터 시작해서 아래 계층인 1계층까지 내려간 후 전송 선로를 통해 수신 호스트로 PDU 형식으로 데이터를 전송합니다. 각 계층을 거치며 해당 계층의 제어정보를 담은 헤더와 푸터를 PDU에 추가하게 됩니다. 이 과정이 바로 캡슐화입니다.
반대로 수신 호스트에서는 수신 시에 1계층인 물리 계층부터 시작해서 상위 계층인 7계층까지 이동합니다. 수신 시에 PDU로부터 송신 호스트가 추가한 프로토콜의 헤더와 푸터를 분석하며 올라가 마지막 응용 계층에 도달하면 원본 데이터만 남게 됩니다.
References
http://wiki1.kr/index.php/OSI_7_%ea%b3%84%ec%b8%b5
https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi/
https://notes.networklessons.com/physical-layer-encoding
'CS' 카테고리의 다른 글
[CS] TCP/IP 4계층 (0) | 2024.08.17 |
---|---|
[CS] BSD 소켓(Socket) (0) | 2024.08.16 |
[C언어] GCC(GNU Compiler Collection) (1) | 2024.07.26 |
[CS] 가상화(Virtualization) (3) | 2024.07.26 |
[C언어] 포인터(Pointer) (1) | 2024.07.25 |