OSI 모델

박시시·2022년 10월 12일
0

Network

목록 보기
2/3

OSI 모델이란?

예전 네트워크 시스템은 같은 제조사가 만든 장비끼리만 통신이 가능했다. 통일되지 않은 시스템으로 인해 통신에 한계가 있었고 국제적으로 통신하는데에는 더욱 더 큰 방해가 되었다.
이러한 한계를 극복하기 위해 일종의 국제 표준이 필요했는데, 이에 국제 표준화 기구에서는 다양한 통신 시스템이 표준 프로토콜을 사용하여 통신할 수 있도록 개방형 시스템 상호 연결 모델, 즉 OSI 모델을 내놓았다.

OSI 모델은 네트워크 통신이 일어나는 과정을 7개의 추상적 계층으로 나누고 각각의 계층이 다른 계층 위에 얹히는 개념이다.


(출처: https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi)

이와 같이 OSI 모델의 각 계층은 특정 작업을 처리하고 그 위와 아래의 계층과 통신한다.

OSI 모델의 장점

네트워크 상의 모든 장비는 OSI 모델을 기반으로 통신하고 있으며, 각 계층으로 나뉘어 있기에 문제를 분해하고 문제의 원인을 분리할 수 있다. 즉 어떠한 문제가 일어났을 때 그 원인을 특정 계층으로 좁힐 수 있으므로 불필요한 작업을 피할 수 있게 된다.

OSI 모델 7계층

탑다운 방식으로 설명할 예정이므로 7번 -> 1번의 순으로 넘버링 하겠다.

7. 응용 프로그램 계층


(출처: https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi)

이 계층은 유저의 데이터와 직접 상호 작용하는 유일한 계층이다. 웹 브라우저 및 이메일 클라이언트와 같은 '소프트웨어 애플리케이션'은 통신을 하기 위해 애플리케이션 계층에 의지한다. 헷갈리지 말아야 할 것은 '소프트웨어 애플리케이션' 자체가 애플리케이션 계층이 아니란 것이다. 애플리케이션 계층은 소프트웨어가 유저에게 의미있는 데이터를 제공하기 위해 의존하는 프로토콜이다. 이 계층의 프로토콜에는 HTTP, SMTP, FTP, DNS 등이 있다.

6. 프레젠테이션 계층


(출처: https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi)

데이터의 암호화 및 복호화, 압축 등을 담당한다.
암호화된 연결을 통해 통신하려는 경우, 프레젠테이션 계층은 암호화를 추가 하며 최종 수신자에게 해당 데이터를 복호화하여 애플리케이션 계층에 제시하는 역할을 한다. 서로 통신하는 두 개의 통신 장치가 서로 다른 인코딩 방법을 사용하고 있을 수도 있으므로 해당 계층에서는 애플리케이션 계층이 이해할 수 있는 구문으로 수신된 데이터를 변환하는 일을 담당하기도 한다.
또한 애플리케이션 계층에서 수신한 데이터를 세션 계층으로 전송하기 전 압축하는 일도 담당한다. 전송할 데이터의 양을 최소화함으로써 통신 속도와 효율을 높이는 데 도움이 된다.

해당 계층의 역할을 다시 정리하자면 아래와 같다.

  1. Translation: ASCII 혹은 EBCDIC 등으로 번역
  2. Encryption/ Decryption: 데잍터를 다른 형식이나 코드로 변환한다. 암호화된 데이터는 암호문, 복호화된 데이터는 일반 텍스트이다. 키 값은 암호화 및 복호화에 사용된다.
  3. Compression: 네트워크에서 전송해야 하는 비트 수를 줄인다.

해당 계층에서는 SSL 또는 TSL 프로토콜을 사용한다.

5. 세션 계층


(출처: https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi)

두 기기 사이의 통신을 시작하고 종료하는 일을 담당한다. 통신이 시작될 때 부터 종료될 때 까지의 시간을 세션이라 한다. 세션 계층은 교환되고 있는 모든 데이터를 전송할 수 있도록 충분히 오랫동안 세션을 개방하며 데이터 전송이 끝났을 시 리소스 낭비를 방지하기 위해 세션을 즉시 닫을 수 있도록 보장한다.
또한 데이터를 전송할 때 동기화 포인트를 추가하는 역할도 한다. 예를 들어 100mb의 파일을 전송하는 경우 세션 계층에서 5mb마다 체크포인트를 추가하도록 설정할 수 있다. 중간에 연결이 끊어지거나 충돌이 발생해도 마지막 체크 포인트에서 세션을 재개하는 것이 가능하다.

4. 전송 계층


(출처: https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi)

전송 계층은 종단 간 신뢰성있고 정확한 데이터 전송을 보장한다.
세션 계층에서 데이터를 가져와 네트워크 계층으로 보내기 전 세그먼트라고 하는 조각으로 분할하는 일을 한다. 이때 헤더에 출발지와 목적지 포트 번호를 추가한다. 수신 기기 측의 전송 계층에서는 세그먼트화된 데이터를 세션 계층에서 이용할 수 있는 데이터로 재조립한다.
해당 계층에서는 흐름 제어 및 오류 제어도 담당한다. 흐름 제어를 통해 연결 속도가 빠른 발신자가 연결 속도가 느린 수신자를 압도하지 않도록 최적의 전송 속도를 결정한다. 또한 수신된 데이터가 완전한지 확인하고, 완전하지 않은 경우 재전송을 요청하여 수신 측의 오류 제어를 수행한다.
전송 계층에서의 데이터 단위는 위에서 언급했듯이 세그먼트이며 주로 TCP, UDP 프로토콜을 사용한다.

3. 네트워크 계층


(출처: https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi)

네트워크 계층은 출발지에서 목적지, 즉 End-To-End를 신경쓰며 종단 간 데이터 전송을 촉진하는 일을 담당한다.
목적지에 데이터 전송위해 필요한건 결국 ip이다. 전송계층에서 네트워크 계층으로 내려오면 네트워크 계층에서는 헤더에 ip 주소 정보를 넣어 데이터를 감싼다.
해당 계층에서는 발신자의 기기에서 전송 계층의 세그먼트를 패킷이라고 하는 더 작은 단위로 분할하고 수신 장치의 네트워크 계층에서 이 패킷을 재조립한다.
또한 데이터가 목적지에 도달할 수 있는 최상의 물리적 경로를 찾는데, 이를 라우팅이라 한다.

네트워크계층의 주요 역할을 정리하자면 아래와 같다.
1. 패킷 전달: 종단 간의 패킷 전달 수행
2. 라우팅: 종단 간 패킷 전송시 라우팅 프로토콜을 기반으로 가장 효율적인 경로 선택하여 패킷을 전송할 수 있게 함
3. 논리적인 주소 사용: ip주소를 사용하여 사용자 데이터를 목적지 장치까지 전달. 즉 전송 계층으로부터 받은 데이터에 송수신 장치의 ip 주소들을 포함하는 ip 프로토콜 헤더를 붙여 캡슐화 수행 후 패킷 전송

네트워크 계층의 데이터를 패킷이라 하며 주로 IPv4/IPv6, ARP, ICMP와 같은 프로토콜을 사용한다.


(출처: https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi)

데이터 연결 계층은 네트워크 계층과 유사하지만, 동일한 네트워크에 있는(혹은 직접 연결된) 두 기기 간 데이터 전송을 촉진한다는 점에서 차이가 있다. 주요 기능으로는 한 노드에서 다른 노드로의(동일 네트워크 내) 데이터 전송이 오류없이 수행되도록 하는 것이다. 네트워크 계층에서 패킷을 수신하면 프레임이라고 하는 더 작은 단위로 나눈다. 해당 프레임을 MAC 주소를 사용하여 인접 노드에 전송한다.

데이터링크의 역할을 정리하자면 아래와 같다.

  1. Framing: 송신자가 수신자에게 의미있는 비트의 세트를 전송하는 방법을 제공한다. 이는 프레임의 시작과 끝에 특수한 비트 패턴을 부착함으로써 가능하다.
  2. Physical addressing: 프레임을 만든 후 데이터링크 계층은 각 프레임의 헤더에 송신자 및 수신자의 MAC 주소를 추가한다.
  3. Error control: 데이터링크 계층은 손상되거나 손실된 프레임을 감지하고 재전송하는 오류 제어 메커니즘을 제공한다.
  4. Flow Control: data rate는 양쪽에서 일정해야 한다. 그렇지 않으면 데이터는 손상될 수 있으므로 flow control은 승인(acknowledgement) 받기 전에 보낼 수 있는 데이터 양을 조정한다.
  5. Access control: 단일 통신 채널이 여러 장치에 의해 공유되는 경우 데이터 링크 계층의 MAC 하위 계층은 주어진 시간에 채널을 제어하는 장치를 결정하는 데 도움됨

데이터링크 계층에서의 데이터는 프레임이다.

1. 물리 계층


(출처: https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi)

이 계층은 케이블, 스위치, 허브, 리피터, 모뎀 등의 데이터 전송과 관련된 물리적 장치를 포함한다. 이 계층에서 데이터는 1과 0으로 구성된 문자열인 비트 스트림으로 변환된다.

물리계층의 기능은 아래와 같다.

  1. Bit synchronization: 물리 계층은 clock을 제공함으로써 비트들의 동기화를 제공한다. 이 clock은 송신기와 수신기 모두를 제어하며 비트 레벨에서의 동기화를 제공한다.
  2. Bit rate control: 물리 계층은 또한 전송 속도, 즉 초당 전송되는 비트 수를 정의한다.
  3. Physical topologies: 물리 계층은 서로 다른 장치/노드가 네트워크에서 배열되는 방식, 즉 벗, 스타, 망 토폴로지를 지정한다.
  4. Transmission mode: 물리 계층은 또한 연결된 두 데이터가 흐르는 방식을 정의한다. 가능한 전송모드는 Simplex, half-duplex 그리고 full-duplex가 있다.

물리 계층에서 사용되는 통신 단위는 비트이다.

OSI 모델을 통해 데이터가 전송되는 예

네트워크를 통해 사람이 읽을 수 있는 정보를 장치 간에 전송하려면 데이터가 송신 장치에서 OSI 모델의 7가지 계층 아래로 이동후 최종 수신자 측에서 역으로 7가지 계층 위로 이동해야 한다.

A가 한 브라우저 내의 검색창에 'OSI모델이란' 이란 검색어를 입력 후 버튼을 눌렀다고 하자. 애플리케이션 계층에서는 HTTP라는 프로토콜에 맞게 데이터를 세팅하여 프레젠테이션 계층으로 전달한다. 프레젠테이션 계층에서는 데이터를 압축하고 세션 계층으로 보낸다. 데이터를 수신한 세션 계층에서는 세션을 시작한다.
이제 데이터는 전송 계층으로 넘어가 세그먼트로 나뉘어지게 된다. 이때 헤더에 출발지와 목적지 포트 번호가 추가된다. 네트워크 계층으로 넘어간 세그먼트는 패킷이라는 더 작은 단위로 나뉘어지며 헤더에 ip 주소 정보를 추가한다. 데이터링크 계층으로 넘어간 패킷은 프레임으로 더 작게 나눠진다. 데이터링크 계층에서 물리 계층으로 해당 프레임을 전달하고 물리 계층은 데이터를 1과 0의 비트스트림으로 변환해 물리적 매체(예: 케이블)를 통해 전송한다.

서버측 컴퓨터가 물리적 매체(예: 랜선이나 와이파이)를 통해 비트스트림을 수신하면, 데이터는 역순으로 7개 계층을 통과하게 된다. 물리 계층에서는 1과 0의 비트 스트림을 프레임으로 변환해 데이터링크 계층으로 넘긴다. 데이터링크 계층은 프레임을 패킷으로 재조립하여 네트워크 계층으로 넘긴다. 네트워크 계층은 패킷으로 세그먼트를 만들어 전송 계층으로 넘기고, 전송 계층은 세그먼트를 재조립해 하나의 데이터로 만든다. 데이터는 세션 계층으로 넘어가게 되며 세션 계층에서 이 데이터를 프레젠테이션 계층으로 넘기면, 통신 세션이 종료된다.
프레젠테이션 계층은 압축을 풀고 원본 데이터를 애플리케이션 계층으로 넘긴다. 애플리케이션 계층에서는 해당 데이터를 서버컴퓨터에서 해당 요청을 처리할 수 있는 애플리케이션으로 넘기고 해당 작업을 처리하게 된다.

참조

https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi
https://www.baeldung.com/cs/osi-model
https://www.geeksforgeeks.org/layers-of-osi-model/
https://jhnyang.tistory.com/498?category=947031
https://velog.io/@cgotjh/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-OSI-7-%EA%B3%84%EC%B8%B5-OSI-7-LAYER-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-%EA%B0%81-%EA%B3%84%EC%B8%B5-%EC%84%A4%EB%AA%85

0개의 댓글