네트워크 이론을 공부할 때 반드시 마주치게 되는 개념이 있다. 바로 OSI 7 Layers 이다.
이 용어가 무엇을 의미하는지, 각 레이어는 무엇으로 이루어져 있는지 간단하게 살펴보자.
일단 컴퓨터 네트워킹이라는 개념은 아주 광대하고 복잡하다.
전 세계에 퍼져있는 거대한 인터넷망에 대한 이론이 상당히 심플하게 정리될 수 있다면 그거야말로 초-신기술일 것이다.
하지만 그런 마법같은 일은 일어나지 않았고, 개발자들은 이 복잡한 개념을 어떻게 정리해야 할지 고민한 결과,
네트워크 구조는 총 7가지의 계층 구조로 나누어지게 되었다.
그 결과, 거대한 네트워크 통신이 일어나는 과정을 단계별로 파악할 수 있게 되었고
네트워크 통신 규칙 및 통신 기술도 이러한 계층 구조에 기반하여 만들어지기 시작했다.
이에 따라 7개의 레이어 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들지 않고도
이상이 생긴 단계만 고칠 수 있게 되니 기술의 생산성이 높아졌고, 통신 기술은 점점 빠르게 발전할 수 있었다.
OSI 7 계층
OSI 7 계층은 위 그림과 같이 총 7개의 레이어로 이루어져 있다.
사용자가 데이터를 다른 누군가에게 보내면, 해당 데이터는 각 레이어를 거치며 제각기 다른 형태로 감싸져 다음 레이어로 전달된다.
7번째 계층부터 차례대로 각 계층의 의미와 역할을 간단하게 살펴보자.
7 Layer : Application Layer (응용 계층)
• 네트워크 상에서 데이터가 이동할 때 가장 끝과 끝에 위치한 목적지라고 볼 수 있다.
- 예를 들어 A가 B에게 편지를 보낸다고 할 때, A가 보낸 편지는 A의 집에서 시작되어 우체국을 거치고, 도로 위를 이동하고,
우편 배달부의 손을 거쳐 최종적으로 B의 집에 도착한다면 A의 집과 B의 집이 Application Layer에 해당한다.
• 네트워크 소프트웨어의 UI 부분 및 사용자의 입출력(I/O) 부분을 담당한다.
• 어플리케이션 계층 프로토콜
- HTTP(웹 문서), SMTP(전자메일), FTP(파일) 등 다양한 프로토콜을 포함한다.
- 특정 위치에 있는 어플리케이션이 다른 위치에 있는 어플리케이션과 데이터를 교환할 때 이 프로토콜이 사용된다.
• 네트워크 어플리케이션
- 어플리케이션 계층에서 생성되는 데이터는 메시지(message) 라고 불린다.
- 이러한 메시지들은 어플리케이션 계층 프로토콜에 의해 처리되며, 우리가 사용하는 브라우저나 메일 프로그램 등은
프로토콜을 보다 쉽게 사용하게 해주는 응용프로그램이다.
- 메시지는 또 다른 어플리케이션 계층까지 전해지기 위해 바로 다음 계층인 Transport Layer로 전달된다.
6 Layer : Presentation Layer (표현 계층)
• 표현 계층은 데이터 표현 형식이 서로 다른 어플리케이션끼리 통신할 때 서로의 데이터를 해석할 수 있도록 해주며,
데이터 해석 외에도 데이터 압축, 데이터 암호화 등의 작업을 담당한다.
- 예를 들어 EBCDIC로 인코딩된 문서 파일을 ASCII 파일로 바꿔 주는 것,
데이터가 TEXT 인지, GIF 인지, JPG 인지 구분하는 것 등이 표현 계층이 수행하는 역할이다.
• 표현 계층이 이러한 서비스를 제공해주기 때문에 어플리케이션 단계에서는 데이터가 표현 및 저장되는 형식을 신경쓰지 않아도 된다.
5 Layer : Session Layer (세션 계층)
• 데이터가 통신하기 위한 논리적인 연결이 이루어지는 계층이다. 쉽게 말해 통신이 맺어지는 관문이라고 할 수 있다.
• 세션 설정, 유지, 종료, 전송 중단시 복구 등의 기능을 수행하며 TCP/IP 세션의 생성과 소멸 작업을 책임지고 담당한다.
• 통신을 관리할 수 있는 기능으로 동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex) 등을 제공하며
통신 체크 포인팅 작업, 그리고 유휴/종료/다시 시작 등의 상태에 대한 작업을 수행한다.
4 Layer : Transport Layer (전송 계층)
• 어플리케이션 레이어(4~7 계층)에서 만들어진 메시지를 클라이언트 단에서 서버로 전송하는 역할을 담당하는 계층이다.
- A가 B에게 편지를 보내려면 편지를 우체통에 넣어야 한다. 이 때 A가 쓴 편지가 어플리케이션 레이어에서 만들어진 메시지라면,
편지를 우체통에 넣는 행위가 메시지를 서버에 올리는 작업이라고 할 수 있다.
• 즉 통신을 활성화시키는 계층이며 포트를 열어 응용프로그램이 데이터를 전송 할 수 있도록 연결을 맺는 역할을 수행한다.
• 어플리케이션 레이어에서 메시지를 받아 Transport 레이어에서 한번 더 감싸는 작업을 거치면 해당 데이터는 세그먼트(Segment)
라고 불리게 된다. 이 데이터는 다시 바로 다음 계층인 Network 레이어로 전달된다.
• 만약 어플리케이션 레이어에서 데이터가 여러 개 도착했다면 전송 계층에서 이를 하나의 세그먼트로 모아 다음 계층에 전달한다.
• Transport Layer에는 TCP 와 UDP 라는 Transport Protocol 이 존재한다.
• 이 두가지 통신 규약을 통해 사용자들은 데이터가 신뢰할 수 있고, 손상되지 않은 데이터임을 보장받을 수 있다.
• Transport Layer가 존재함으로써 해당 계층의 상위 계층들은 데이터 전달의 유효성이나 효율성을 신경쓰지 않아도 된다.
• TCP (Transmission Control Protocol)
- 연결 지향형 서비스 : 연결 관리를 위한 연결 설정(3 way handshake) 및 연결 해제(4 way handshake)가 필요하다.
- 신뢰성 있음 (Reliable) : 패킷의 손실, 중복, 순서바뀜 등이 없도록 보장한다.
- Network 레이어로 세그먼트를 보낼 때 제대로 전달 되었는지 확인하고, 전송에 실패한 경우 재전송한다.
• UDP (User Datagram Protocol)
- TCP와 달리 비연결적인 접속 상태로 통신하며, 신뢰성이 없고 순서화되지 않은 서비스를 제공한다.
◦ 메세지가 제대로 도착했는지 확인하지 않는다 : 확인 응답 없음
◦ 수신된 메세지의 순서를 신경쓰지 않고 전송한다 : 순서 제어 없음
◦ 흐름 제어를 위한 피드백을 제공하지 않는다 : 흐름 제어 없음
◦ checksum 을 제외하면 특별한 오류 검출 및 제어가 없다.
- 그 대신 실시간 응용 및 멀티캐스팅이 가능하므로 빠른 요청과 응답이 필요한 실시간 서비스에 적합하다.
◦ 멀티캐스팅 : 여러 다수 지점에 데이터를 동시 전송하는 것 (1:多)
- 또한 TCP가 세그먼트 헤더로 20 바이트를 사용하는데 비해 UDP는 8 바이트만 사용하므로 헤더 데이터 처리에 소요되는 비용이 적다
3 Layer : Network Layer (네트워크 계층)
• Transport Layer 에서 전달된 세그먼트는 네트워크 계층 내에서 패킷(packet)이라는 이름으로 불린다.
• 이 계층에서 가장 중요한 기능은 데이터그램을 목적지까지 안전하고 빠르게 전달하는 기능(라우팅)이다.
- 즉 목적지로 데이터를 보낼 수 있는 가장 빠른 경로를 선택하고, 경로를 따라 패킷을 전달하는 것이 이 계층의 역할이다.
• IP 프로토콜
- IP 데이터그램의 필드를 정의하며 라우터가 이 필드에 어떻게 작용하는지를 정의한다.
• 라우팅 프로토콜
- 출발지와 목적지 사이에서 패킷이 이동하는 경로를 결정한다.
- 네트워크 레이어는 여러개의 라우터(패킷 스위치)를 통해 패킷을 전송하고,
라우터를 하나 지날 때 마다 데이터를 가장 빠르게 전송할 수 있는 라우터를 재탐색하며 경로를 만들어 나간다.
2 Layer : DataLink Layer (데이터링크 계층)
• 앞서 Network Layer는 출발지와 목적지 간에 일련의 라우터를 거쳐 데이터그램을 전송한다고 이야기했다.
이 때 경로상의 한 라우터에서 다른 라우터로 데이터그램을 이동시킬 때 데이터링크 레이어의 서비스를 이용하게 된다.
- 각 라우터에서 네트워크 계층은 데이터그램을 아래 데이터링크 레이어로 보내고, 데이터링크 레이어는 다음 라우터에 해당
데이터그램을 전달한다. 다음 라우터에 데이터그램이 도착하면, 해당 라우터의 데이터링크 레이어는 받은 데이터그램을 상위
네트워크 레이어로 올려 보낸다.
• 데이터링크 계층에서 전송되는 데이터 단위를 프레임(frame)이라고 하며, 이 계층에서는 맥 주소를 가지고 통신한다.
• 대표적인 장비로는 브리지, 스위치 등이 있다. (해당 장비들이 맥 주소를 사용한다)
1 Layer : Physical Layer (물리 계층)
• 이 계층에서는 주로 전기적, 기계적, 기능적인 특성을 이용해 통신 케이블로 데이터를 전송한다.
• 물리 계층에서 사용되는 통신 단위는 비트(bit)이며 이것은 1과 0, 즉 전기적으로 On, Off 상태를 나타내는 신호이다.
• 물리 계층은 데이터를 전달하기만 할뿐 수신/발신하려는 데이터가 무엇인지, 어떤 에러가 있는지 등은 전혀 신경 쓰지 않는다.
단지 데이터를 전기적인 신호로 변환해서 주고받는 기능만 할 뿐이며, 이 계층에 속하는 대표적인 장비는 통신 케이블, 리피터, 허브
등이 있다.
참고자료
'CS Knowledge > Network' 카테고리의 다른 글
[Network] 어플리케이션 계층의 프로세스 간 통신 (0) | 2022.08.25 |
---|---|
[Network] 네트워크 어플리케이션 구조란? (0) | 2022.08.25 |
[Server] 웹서버 vs WAS (0) | 2022.06.25 |
[REST] REST API의 개념과 간단한 설계 원칙 (0) | 2022.05.06 |