OSI 7계층 - 그거 뭔데 어떻게 하는 건데

Jin_jin·2021년 5월 2일
0

CS지식공유모임

목록 보기
1/3

"A Pengine Said Nobody Drinks Pepsi"

네트워킹을 공부하다보면 OSI 7계층이란 말을 자주 접하게 된다. 관련 내용을 어렴풋이 알기는 했으나 진짜로 안다고는 말할 수가 없는 상태였어서, 이번에도 기본 개념을 쭉 정리해본다.
(펭귄이 왜 아무도 펩시를 마시지 않는다고 했는지는 밑에서~!)

OSI 7계층(OSI 참조 모델)이란?

OSI란 Open System Interconnection의 약자로, 컴퓨터 간 통신을 위한 표준 프로토콜(규약)이다. 컴퓨터/네트워킹 장치를 만들 때는 기본적으로 OSI 7계층을 참조해서 모든 통신 장치를 만든다.

위 문장만 읽으면 감이 잘 안 올 수도 있으니(내가 그랬다. 사실 OSI 내용도 이번에 3번째로 보고 겨우 이해한 것! ^0^) 쉽게 풀어서 말해볼까.

인터넷이 막 생겨나던 시기에는 통신 규약이랄 게 없어서 네트워킹 회사마다 다른 방식으로 통신을 했다. 이러다 보니 장비 업체가 다르면 통신이 불가능하다든지 하는 문제가 생겨서, 이를 해결하기 위해 만들어진 컴퓨터 간의 통일된 소통 규격이 바로 OSI 7계층 모델이다.
(네트워킹이란 결국 컴퓨터끼리의 소통이니까, 관련 내용을 공부하게 되면 가장 처음으로, 그리고 가장 많이 나오는 용어가 OSI 7계층일 수밖에.)

  • 그런데 OSI는 왜 7개의 계층으로 나뉘어져 있을까?
    역할 분담을 위해서다. OSI 말고도 계층 구조를 따르는 모델은, 계층 간에 서로 영향을 주지 않고 독립적으로 동작할 수 있도록 하기 위해 해당 시스템을 차용한다.

  • 왜 OSI '참조 모델'이라고 할까?
    사실 현대의 인터넷은 OSI가 아닌 TCP/IP 모델을 따른다. 그러나 OSI는 현재 사용되고 있지는 않지만 그 구조 자체는 다양한 분야에서 참조할 수 있는 '참조 모델'로서 많이 쓰이고, 따라서 엔지니어들이 서로 공용할 수 있는 일종의 공통 언어 역할도 한다.
    (참고) 인터넷의 시초인 ARPANET이 1969년에 고안되었고, TCP/IP는 1970년대에 등장했으며, OSI는 1982년에 제시되었다. OSI는 TCP/IP에 비해서는 한 발짝 늦은데다가 복잡한 사양 때문에 상호 접속성에 문제가 있어 사양되었다네~!

더해서, 요즘에는 업데이트된 TCP/IP 모델을 많이 사용한다. 아래 그림을 참고하자!

OSI 7계층 간단 정리

  • 국제 표준화 기구(ISO)가 1984년에 발표
  • 통신이 일어나는 과정을 7단계로 구분(7개의 Layer로 나눠어져 있다고 표현)
  • 각 계층은 독립되어 있음
  • 상위 계층의 프로토콜이 동작하기 위해서는 해당 프로토콜의 하위에 해당하는 모든 계층에 문제가 없어야 함

그럼 OSI 계층이 뭔지는 알았으니, 각 7계층이 어떻게 구성되어 있는지를 알아볼까?
우선 아래 그림을 보자.
7계층은 위 그림과 같이 나눠져 있고, 각각 독립적 역할을 수행한다. 스터디의 정모군이 "아파서 티내다 피"로도 외운다고 알려주었는데, 나는 펭귄이 더 마음에 든다~!
저는 코카콜라와 아무런 이해관계가 없습니다

물론 위 그림만 보면 또 이해가 되지 않을 테니, 각각의 계층이 실제로 어떤 역할을 하는지 구체적으로 알아볼까.
단 이번 글에서는 7계층 모두를 다루지 않고 최신 TCP/IP 모델에 해당하는 계층들만, 간략하게 살펴보겠다.
(다 정리하면 책 1권은 써야한다. 네트워크는 깊고도 광대한 분야!)

1. 물리 계층(Pysical Layer)

앞에서 네트워킹은 컴퓨터 간의 통신이라고 했다. 그럼 두 컴퓨터가 통신하려면 어떻게 해야할까?
컴퓨터는 0과 1로 데이터를 표현한다. 따라서 두 컴퓨터 간에 이진수 데이터를 주고받을 수 있다면 네트워킹도 가능하다. 이를 물리적으로 구현하는 계층이 바로 OSI의 첫번째 계층, 물리 계층이다.

이진수 데이터를 송/수신하기 위해서는 전기적 데이터를 아날로그 신호로 변환하는 과정이 필요한데(자세한 내용은 어렵습니다), 정리해보면 다음과 같다.

(1) 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려보내기(encoding)
(2) 아날로그 신호가 들어오면 0과 1의 나열로 해석하기(decoding)

결국 Pysical Layer란 물리적으로 연결된 컴퓨터가 0과 1의 나열을 주고받을 수 있게 해주는 모듈이며,
이는 PHY 칩에 하드웨어적으로 구현이 되어있다.

사실 물리 계층은 정말 물리적으로 컴퓨터 간 연결을 구현해놓은 계층이기 때문에, 깊이 파고들면 정말 내용이 어려워진다. 전압이라든가... 전선 종류라든가... 배울 게 많은데, 일단은 간단히 정리하고 넘어가자.

그리고 잠깐, 네트워크 계층으로 넘어가기 전에, 스위치와 허브 등 네트워킹 관련 장치의 특성을 간략히 짚고 넘어가자.

  • 허브(더미 허브)
    컴퓨터와 컴퓨터를 연결해준다. 전기적 신호를 증폭시켜 여러 대의 장치를 연결해 네트워크를 만들어주는 방식이다. 단, 허브는 자신과 연결된 컴퓨터들을 구분할 수가 없어서 모든 컴퓨터에 요청을 보내버리고, 각 컴퓨터는 연결 요청이 오면 자신에 관한 것인지 확인한 뒤 응답을 보낸다. 이렇듯 연결된 모든 디바이스에 데이터 프레임을 전송하므로 충돌이 발생할 수 있는데, 따라서 허브에 접속된 장비들은 하나의 충돌 영역에 있다고 한다.

  • 스위치(스위치 허브)
    허브의 문제 문제점을 해결하기 위한 장치가 스위치다. 자신과 연결된 컴퓨터를 구분할 능력이 없는 허브와 달리, 스위치는 MAC 주소(컴퓨터들의 고유한 번호)를 통해서 연결 대상인 컴퓨터에만 요청을 보낸다.

  • 라우터
    LAN(local area network)을 연결시켜주는 장치로, 최종 목적지에 가기 위하여 거쳐야하는 많은 경로들 중에 적절한 통신 경로를 결정하기 위하여 한 통신망에서 다른 통신망으로 데이터 패킷을 전송하는 장치다.

  • 인터넷
    Inter-networking(인터넷들의 연결)의 약자로, 라우터들의 모임이라고 생각하면 쉽다. LAN들이 라우터를 통해 연결되어 만들어진 거대 네트워크가 인터넷이고, 이는 WAN(Wide Area Network)으로 분류된다.

    LAN(Local Area Network) : 근거리 통신망. 집, 회사 정도의 규모
     MAN(Metropolitan Area Network) : 도시 지역 통신망. 도시 하나 정도의 규모
     WAN(Wide Area Network) : 광역 통신망. MAN이 모여서 만들어짐.

같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈이며,
이는 랜카드에 하드웨어적으로 구현되어 있다.

3. 네트워크 계층(Network Layer)

수많은 네트워크들의 연결로 이루어지는 inter-network 속에서, 목적지 컴퓨터로 데이터를 전송하기 위해 IP 주소를 이용해서 길을 찾고(routing) 자신 다음의 라우터에게 데이터를 넘겨주는 것(forwarding)이며,
이는 운영체제의 커널에 소프트웨어적으로 구현이 되어 있다.

4. 전송 계층(Transport Layer)

포트 번호를 이용해서 데이터를 도착지 컴퓨터의 최종 도착지인 프로세스에까지 데이터가 도달하게 하는 모듈이며,
이는 운영체제의 커널에 소프트웨어적으로 구현이 되어 있다.

  • 포트 번호는 하나의 컴퓨터에서 동시에 실행되는 서로 겹치지 않게 가져야 하는 정수값

5. 어플리케이션 계층(Application Layer)

TCP/IP 소켓(네트워크) 프로그래밍 - 운영체제의 Transport Layer에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것

[출처]
야마자키 야스시 외, <그림으로 공부하는 IT 인프라 구조>
https://jhnyang.tistory.com/194
https://www.youtube.com/watch?v=1pfTxp25MA8
https://www.grandmetric.com/topic/network-layers-and-devices-operation/physical-layer-layer-1/
https://www.google.com/search?q=physical+layer&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiU94-hjqvwAhVSZt4KHa70DXQQ_AUoAXoECAEQAw&biw=1390&bih=760#imgrc=XVhdpgb4SbdOsM&imgdii=x9n4GqV8jzAUjM
https://coding-chobo.tistory.com/38
https://velog.io/@ckstn0777/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%ED%97%88%EB%B8%8C-%EC%8A%A4%EC%9C%84%EC%B9%98-%EB%9D%BC%EC%9A%B0%ED%84%B0-%EA%B3%B5%EC%9C%A0%EA%B8%B0
https://ko.wikipedia.org/wiki/%EA%B4%91%EC%97%AD_%ED%86%B5%EC%8B%A0%EB%A7%9D

profile
일단 떠나는 기차

0개의 댓글