OSI 7계층
CS 지식 중에서 네트워크 분야를 학습하면 가장 먼저 접하게 되는 지식이 바로 OSI 7계층이다.
OSI 7계층은 표준 프로토콜을 사용하여 다양한 통신 시스템이 통신할 수 있도록 국제표준화 기구에서 만든 개념 모델이다. 말 그대로 컴퓨터 간 서로 통신할 수 있는 표준이라고 생각하면 될 것 같다.
각 계층은 하위 계층과 상위 계층 간의 통신이 가능하여 데이터를 주고받을 수 있다.
데이터는 Application Layer(응용 계층)에서 Physical Layer(물리 계층)으로 흐르게 되고 마지막 물리 계층이 데이터를 전송할 상대 PC의 물리 계층으로 전송하여 해당 PC의 물리 계층에서부터 다시 응용 계층으로 데이터가 전달된다.
각 계층마다 어떤 역할을 가지고 있는지 하나씩 살펴보자.
- Application Layer(응용 계층)
응용 계층은 사용자의 데이터와 직접 상호 작용하는 유일한 계층이다.
HTTP, SMTP, FTP, IMAP, Telnet 등과 같은 프로토콜을 사용하게 된다.
- Presentation Layer(표현 계층)
표현 계층은 주로 데이터를 준비하는 역할을 하여 응용 계층이 이를 사용할 수 있게 해 준다.
데이터를 준비한다는 것은 주로 다음 하위 계층으로 전달하기 위해 데이터를 변환하거나 암호화, 압축을 하는 것이고, 반대로 응용 계층으로 데이터를 전달하기 위해 변한 된 데이터를 다시 원본으로 바꿔주는 역할을 하게 된다.
이러한 표현 계층을 통해서 데이터를 압축하여 세션 계층으로 전송할 때 데이터의 양을 최소화함으로써 통신의 속도와 효율을 높여줄 수 있고, 데이터를 암호화하여 보안성을 높일 수도 있다.
- Session Layer(세션 계층)
통신이 시작될 때부터 종료될 때까지의 시간을 세션이라고 한다. 두 기기 사이의 통신을 시작하고 종료하는 일을 담당하는 계층을 세션 계층이라고 부른다.
세션 계층은 교환되고 있는 모든 데이터를 전송할 수 있도록 충분히 오랫동안 세션을 개방한 다음 리소스를 낭비하지 않기 위해 세션을 즉시 닫을 수 있도록 보장한다.
앞서 설명한 것과 같이 세션을 개방하거나 닫기 위해서는 체크포인트라는 것을 표시하게 되는데 세션 계층은 데이터 전송을 체크포인트와 동기화한다.
이를 통해서 연결이 끊어지거나 충돌이 발생하면 마지막 체크 포인트에서 세션을 재개하여 복구가 가능해진다.
하지만 반대로 세션 계층을 통과하고 그다음 하위 계층에서 접속이 끊긴 경우는 판단하기 힘들다는 한계도 가지고 있다.
- Transport Layer(전송 계층)
전송 계층은 두 기기 간의 종단 간 통신을 담당하게 되는데 주로 TCP나 UDP 프로토콜을 사용하여 통신을 하게 된다.
전송 계층에서는 주로 데이터를 분할 및 조립, 흐름 제어, 오류 제어를 담당하게 된다.
- 데이터 분할 및 조립
세션 계층에서 받은 데이터를 세그먼트라는 단위로 분할하게 되는데 수신 기기의 전송 계층은 세그먼트를 세션 계층이 이용할 수 있는 데이터로 재조립해야 한다.
- 흐름 제어
흐름 제어는 연결 속도가 빠른 송신자가 연결 속도가 느린 수신자를 압도하지 않도록 최적의 전송 속도를 결정한다.
- 오류 제어
전송 계층은 수신된 데이터가 완료되었는지 확인하고 수신되지 않은 경우 재전송을 요청하여 최종 수신자에 대해 오류를 제어한다.
- Network Layer(네트워크 계층)
네트워크 계층은 서로 다른 두 네트워크 간 데이터 전송을 용이하게 하는 역할을 한다.
주로 IP, ICMP, IGMP, IPSec와 같은 프로토콜을 사용하여 통신을 하게 되고 라우팅 기술을 사용하여 데이터를 원하는 곳까지 전달하기 위한 경로를 찾게 된다.
네트워크 계층은 전송 계층의 세그먼트를 송신자의 장치에서 패킷이라고 불리는 더 작은 단위로 세분화하여 수신 장치에서 이러한 패킷을 다시 조립한다.
참고로 서로 통신하는 두 장치가 동일한 네트워크에 있는 경우에는 네트워크 계층이 필요하지 않다.
- Data Link Layer(데이터 링크 계층)
데이터 링크 계층은 동일한 네트워크에 있는 두 개의 장치 간 데이터 전송을 용이하게 한다.
데이터 링크 계층은 네트워크 계층에서 패킷을 가져와 프레임이라고 불리는 더 작은 조각으로 세분화하고 수신 장치에서 이러한 프레임을 다시 조립하게 된다.
네트워크 계층과 마찬가지로 데이터 연결 계층도 인프라 네트워크 통신에서 흐름 제어 및 오류 제어를 담당한다.
대표적으로 브리지나 스위치와 같은 네트워크 기기를 사용하여 MAC 주소를 통해 물리 계층에서 받은 정보를 전달하게 된다.
- Physical Layer(물리 계층)
물리 계층은 케이블, 리피터, 허브 등 데이터 전송과 관련된 물리적 장비가 포함된 계층이다.
또한 물리 계층은 1과 0의 문자열인 비트 스트림으로 변환되는 계층으로 주로 전기적, 기계적 특성을 이용해서 통신 케이블로 데이터를 전송하게 된다.
해당 계층에서는 단지 데이터를 전달만 해줄 뿐이지 데이터에 어떤 내용이 있고, 무슨 에러가 있는지 등에는 전혀 신경을 쓰지 않는다.
OSI 7계층 동작 과정
간단하게 그림을 그려보면서 OSI 7계층이 동작하게 되는지 알아보자.
예를 들면 A라는 사용자가 B라는 사용자에게 메일을 보낸다고 생각해 보자.
그럼 메일 데이터가 가장 먼저 응용 계층으로 오게 되며 해당 계층에서 메일에 대한 네트워크 프로토콜(SMTP)을 선택하고 다음 계층인 표현 계층으로 데이터를 전달하게 된다.
위의 그림과 같이 표현 계층은 응용 계층으로부터 메일을 전달받으면 앞서 살펴봤던 것과 같이 표현 계층에서 데이터를 압축이나 암호화와 같은 데이터 변환 과정을 거치게 된다.
간단히 전달받은 메일 데이터를 .zip 파일로 압축된다고 가정해 보자.
표현 계층에서 압축된 데이터가 세션 계층으로 전달되면 세션이 시작했다고 체크포인트를 걸어주고 압축 데이터를 전송 계층으로 전달해 준다.
압축된 데이터를 전송 계층에서 받게 되면 세그먼트로 분할하게 되고 다음 계층으로 전달한다.
네트워크 계층은 전송 계층에서 받은 세그먼트를 다시 패킷으로 분할하게 되고 라우팅 작업을 거쳐 데이터의 최종 목적지를 확인하게 된다.
그런 다음 패킷을 데이터 링크 계층으로 전달해 준다.
데이터 링크 계층은 네트워크 계층으로부터 전달받은 패킷을 다시 프레임으로 분할하여 물리 계층으로 보내준다.
물리 계층은 데이터 링크 계층으로부터 받은 프레임을 1과 0으로 이루어진 비트 스트림으로 변환하여 통신 케이블을 통해 B라는 사용자의 PC 물리 계층으로 데이터를 전송해 준다.
다시 B 사용자의 PC로 넘어와 해당 PC의 물리 계층에서 비트 스트림을 프레임으로 다시 조립하여 데이터 링크 계층으로 전달한다.
전달받은 프레임은 데이터 링크 계층에서 네트워크 계층으로 전달하기 위해 패킷으로 조립하여 전달하게 된다.
네트워크 계층은 전달 받은 패킷을 세그먼트로 다시 조립하여 전송 계층으로 보내주게 되고, 전송 계층에서 세그먼트를 다시 압축 형태의 데이터로 변환해 준다.
다시 압축한 데이터를 전송 계층에서 세션 계층으로 전달한다.
세션 계층에서는 이전의 A 사용자 PC에서 열었던 세션을 종료시키고 압축 데이터를 표현 계층으로 전달한다.
압축 데이터를 전달받은 표현 계층은 해당 데이터에 대한 압축 해제 작업을 진행하게 된다.
압축을 해제하여 나온 메일 데이터를 응용 계층으로 전달하게 되고 해당 메일을 다시 B라는 사용자에게 전달하여 최종적으로 메일을 받을 수 있게 된다.
TCP/IP 4 계층
TCP/IP 4 계층은 네트워크에서 사용되는 통신 프로토콜의 집합으로 계층들은 프로토콜의 네트워킹 범위에 따라 네 개의 추상화 계층으로 구성된다.
TCP만 사용하지 않고 TCP와 IP를 함께 사용하는 이유는 TCP를 통해서 데이터를 보낼 때 목적지가 필요한데 해당 목적지를 찾아주는 역할을 IP가 해주기 때문이다. (UDP도 동일하게 IP와 함께 사용됨)
TCP/IP의 계층 구조
주로 OSI 7 계층과 많이 비교한다.
TCP/IP 4 계층에서는 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되어 있어 TCP를 UDP로 변경해도 상관없는 유연한 설계를 가지고 있다.
각 계층들을 살펴보면 아래와 같다.
애플리케이션 계층(Application Layer)
애플리케이션 계층은 오류 없는 데이터를 전달하는 것을 담당하고 데이터의 복잡성으로부터 보호해 준다.
또한, FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층이며 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층이다.
- FTP: 장치와 장치 간의 파일을 전송하는 데 사용되는 표준 통신 프로토콜
- SSH: 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
- HTTP: World Wide Web을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는 데 쓰는 프로토콜
- SMTP: 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜
- DNS: 도메인 이름과 IP 주소를 매핑해 주는 서버
전송 계층(Transport Layer)
송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공한다.
애플리케이션과 네트워크 계층 사이의 데이터가 전달될 때의 중계 역할을 한다.
대표적으로 TCP와 UDP가 있다.
인터넷 계층(Internet Layer)
인터넷 계층은 전체 네트워크를 통한 데이터의 논리적 전송을 담당하는 프로토콜을 정의하고, 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층이다.
인터넷 계층의 주요 역할로는
1. IP 주소 할당: 각 기기에 고유한 IP 주소를 할당해 준다.
2. 라우팅: 데이터 패킷의 출발지에서 목적지로 이동하는 경로를 결정하고 패킷을 다음 라우터로 전달해 준다.
3. 패킷 분할 및 재조립: 데이터는 패킷으로 분할되고, 인터넷 계층에서 목적지까지 전달되며 목적지에서 다시 조립된다.
4. 네트워크 간 통신: 서로 다른 네트워크 간의 통신을 관리하며 데이터가 한 네트워크에서 다른 네트워크로 이동하도록 도와준다.
주소를 지정할 때는 IP, ARP, ICMP 프로토콜 등이 있으며 패킷을 수신해야 할 상대의 주소를 지정하여 데이터를 전달한다.
인터넷 계층에서 데이터를 전달해 주지만, 상대방이 제대로 받았는지에 대해 보장하지 않는 비연결형적인 특징을 가지고 있다.
네트워크 계층(Network Layer)이라고도 불린다.
- IP(Internet Protocol): 데이터 패킷의 헤더에 있는 IP 주소를 확인하여 패킷을 소스 호스트에서 목적지 호스트로 전달하는 역할을 한다.
- ICMP(Internet Control Message Protocol): IP 데이터그램 내에 캡슐화되어 네트워크 문제에 대한 호스트에 정보를 제공하는 역할을 한다.
- ARP(Address Resolution Protocl): 알려진 IP 주소로부터 호스트의 하드웨어 주소(MAC)를 찾고 매핑해 주는 역할을 한다.
링크 계층(Data Link Layer)
전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 규칙을 정하는 계층이다.
OSI 7 계층에서는 링크 계층을 물리 계층과 데이터 링크 계층으로 나뉘는데 물리 계층은 무선 LAN과 유선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층이며, 데이터 링크 계층은 이더넷 프레임을 통해 에러 확인, 흐름 제어, 접근 제어를 담당하는 계층이다. 링크 계층은 이 두 계층을 합친 것을 의미한다.
네트워크 접근 계층(Network Access Layer)라고도 한다.
계층 간 데이터 송수신 과정
A라는 컴퓨터에서 B라는 컴퓨터에 데이터를 요청한다면 캡슐화 / 비캡슐화 과정을 통하여 송수신이 된다.
캡슐화
상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정을 말한다.
애플리케이션 계층의 데이터가 전송 계층으로 전달되면서 세그먼트 또는 데이터그램화되며 TCP(L4) 헤더가 붙여지게 된다.
그 후 인터넷 계층으로 가면서 IP(L3) 헤더가 붙여지게 되며 패킷화가 되고 링크 계층으로 전달한다.
마지막으로 링크 계층에서 프레임 헤더와 프레임 트레일러가 붙으며 프레임화가 된다.
비캡슐화
하위 계층에서 상위 계층으로 가며 각 계층의 헤더 부분을 제거하는 과정이다.
링크 계층에서부터 상위 계층으로 올라가면서 프레임화 된 데이터를 다시 패킷화, 세그먼트 / 데이터그램화를 거쳐 메시지화가 되는 과정이 비캡슐화이다.
그 이후 최종적으로 사용자에게 애플리케이션 PDU인 메시지로 전달된다.
PDU
네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위를 뜻한다.
PDU는 제어 관련 정보들이 포함된 헤더, 데이터를 의미하는 페이로드로 구성되어 있으며 계층마다 부르는 명칭이 다르다.
- 애플리케이션 계층: 메시지
- 전송 계층: 세그먼트(TCP), 데이터그램(UDP)
- 인터넷 계층: 패킷
- 링크 계층: 프레임(데이터 링크 계층), 비트(물리 계층)
참고 자료
https://www.cloudflare.com/ko-kr/learning/ddos/glossary/open-systems-interconnection-model-osi/
'CS > 네트워크' 카테고리의 다른 글
네트워크 - IP (0) | 2023.10.14 |
---|---|
네트워크 - TCP와 UDP (0) | 2023.10.13 |
네트워크 - 네트워크 기기 (0) | 2023.10.13 |
네트워크 - 유선 LAN과 무선 LAN (0) | 2023.10.12 |
네트워크 - 기초 (0) | 2023.10.03 |