OSI 7 Layer (OSI 7계층)

yoneeki·2022년 12월 8일
0

OSI 7 Layer

1 : Physical Layer (물리 계층)

  • 두 대의 컴퓨터가 통신하기 위해서는, 즉 데이터를 주고 받기 위해서는 0, 1만 주고 받을 수 있으면 된다. 모든 파일과 프로그램은 0과 1로 이루어져 있기 때문이다.
  • 그런데 전자기파의 주파수 값이 숫자 하나로 고정되지 않을 수 있다. 어떤 전자기파는 파동이 진행되는 동안 주파수 값이 계속해서 변화한다. 그런데 전선을 포함한 모든 매질은 모든 주파수를 다 통과시키지는 못한다.
  • 주파수를 통일시키기 위해 수직선과 수평선을 이용해 일관된 형태로 만들어도 0~무한대의 Hz 범위를 가지기에 문제가 생긴다. 이 역시 전선을 통과할 수 없다.
  • 그러므로 아날로그 신호로 변환하여 0과 1을 전송해야 한다.
  • Encoding(인코딩) : 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려 보내기
  • Decoding(디코딩) : 아날로그 신호가 들어오면 0과 1의 나열로 해석하기. 변조된 것을 원본으로 변환하기.
  • Module(모듈) : 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고 받을 수 있게 해주는 함수.
  • 인코더와 디코더는 일종의 함수라고 말할 수 있다.
    원본을 아날로그로 변조하는 인코더 함수의 파라미터는 data일 것이며 리턴 값은 아날로그 신호일 것이다. 디코더 함수의 파라미터는 아날로그 신호일 것이고 리턴 값은 원본 data일 것이다.

Physical Layer의 구현 예

  • PHY 칩
  • 1계층 모듈을 하드웨어적으로 구현되어 있다. 사실 함수가 아니라 회로!
  • 그러나 input을 받아 output을 낸다는 로직에 있어서 함수와 회로의 기능은 동일.

여러 대의 컴퓨터 간의 통신

  • 2대 이상의 컴퓨터라면? 통신하고 싶은 컴퓨터가 생길 때마다 전선을 다 서로서로 이을 수는 없다.
  • 따라서 전선 하나로 여러 대의 컴퓨터와 통신할 방법을 찾아야 한다.
  • 더미 허브(말하자면 중심이 되는 구리선을 한번에 구겨서 넣은)에 여러 컴퓨터를 연결한다. 더미 허브는 메시지의 목적을 사용해서 원하는 컴퓨터에만 데이터를 전송할 수 있다. 이러한 기능을 하는 더미허브를 더 똑똑하게 만든 것을 스위치라고 한다.
  • 하나의 스위치에 직접적으로 컴퓨터들을 연결시킨 하나의 네트워크를 인트라넷이라고 한다.
  • 그런데 스위치에 연결이 되어 있지 않은 컴퓨터에다가 데이터를 보낼 수는 없다. 그러면 스위치와 스위치를 연결하면 된다. 이렇게 스위치 간에 연결해 서로 다른 네트워크에 속한 컴퓨터 간 통신이 가능하게 해주는 장비를 라우터라고 한다. 라우터와 라우터를 라우터로 연결할 수도 있다.
  • 이렇게 전 세계의 컴퓨터를 연결한 것을 인터넷이라고 한다.
  • 서로 다른 국가 간의 라우터를 연결하려면 엄청난 게 필요할 것이다. 바로 해저케이블.
  • 전 세계의 컴퓨터들이 계층구조로 연결되어 있는 것을 앞서 말했듯 인터넷이라고 했다. 그런데 1-물리계층의 기술만으로는 여러 대의 통신하도록 만들 수 없었다.
  • 네 대의 컴퓨터가 스위치에 연결되어 있다고 해보자. 그 중 한 컴퓨터로 세 대의 다른 컴퓨터가 동시에 데이터를 보냈다. 그 0과 1의 뭉치들을 어떻게 끊어 읽는지에 따라 디코딩이 완전히 달라질 것이다. 그래서 특정한 비트를 끝과 시작의 구분자 역할을 하도록 만든다.
  • 같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해 필요한 모듈.
  • Framing이 Data-link Layer에서 일어나는 작업 중 하나.
  • 데이터링크 계층에서는 각각 2개의 인코더, 디코더가 필요할 것이다. 아날로그 신호에 대한 해석에 대한 모듈을 수행하는 인코더/디코더. 데이터의 끝과 시작의 구분자를 찾아 알맞게 끊어내는 작업에 대한 모듈을 수행하는 인코더/디코더.
  • LAN카드
  • 1계층처럼 2계층도 하드웨어적으로 구현되어 있다.

3 : Network Layer (네트워크 레이어)

  • 아주 먼 곳에 떨어진 컴퓨터 A가 다른 먼 곳에 있는 컴퓨터 B에게 데이터를 보내고 싶다. 이 컴퓨터들은 수많은 라우터들로 연결되어 있다. 이 때 A는 데이터 앞에 목적지 주소, 즉 B의 주소를 붙인다. 그것을 바로 IP 주소라고 한다. IP 주소는 컴퓨터마다 고유하다.
  • 그렇다면 A는 B의 주소를 어떻게 아는 것일까? -> 이건 DNS를 따로 공부하자. 도메인 주소가 IP로 전환되는 것에 관련되어 있다. 말하자면 주소를 안다는 것은 ip 역시 알고 있다는 것이다.
  • 앞으로 'IP + 데이터'의 결합을 패킷이라고 하자. A가 보낸 패킷을 중간의 라우터들은 그것을 열어보고 목적지 주소의 IP를 가진 컴퓨터가 나한테 연결되어 있지 않다고 판단하면 그것을 다시 포장해 상위에 연결된 라우터에 패킷을 보낸다. 그런데 이것을 무한 반복할 수는 없고 어디다가 제대로 패킷을 보내야 하는지를 결국 판단해야 한다. -> 이건 라우팅을 자세히 공부하면 알 수 있다.
  • 다시 말해 네트워크 레이어란, 수많은 네트워크들의 연결로 이루어진 inter-network(라우터의 연결을 통해 수많은 네트워크-인트라넷이 연결되어 있는 것) 속에서 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해, IP 주소를 통해 길을 찾고(routing), 자신 다음의 라우터에게 데이터를 넘겨주는 것(forwarding).
  • 이제 인코더/디코더 묶음은 각각 3개가 생겼다.

Network Layer의 구현 예

  • 운영체제의 커널에 소프트웨어적으로 구현되어 있다.

4 : Transport Layer (전송 계층)

  • 네트워크 레이어를 통해 이제 인터넷 상의 모든 컴퓨터가 서로 통신할 수 있게 되었다.
  • 데이터를 받는 수신자는 전 세계의 컴퓨터로부터 데이터를 받게 되었다. 그런데 컴퓨터에는 여러 개의 프로그램들이 실행되고 있다.
  • 컴퓨터는 저 세 개의 데이터를 프로세스(실행 중인 프로그램)들에게 나누어 주려고 한다. ex) 컴퓨터에서 실행 중인 크롬, 카카오톡 등
  • 어떤 데이터를 무슨 프로세스에게 줘야할지 컴퓨터는 어떻게 알 수 있을까?
  • 우선 데이터를 받고자 하는 프로세스들은 포트 번호라는 것을 가져야 한다.
  • 포트 번호(Port Number)란 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야 하는 정수 값을 말한다.
  • 한편 데이터를 보내는 송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보낸다. ex) 예를 들어 검색창에 www.naver.com을 입력하는 것은 뒤에 :80이라는 글자가 생략된 것이다. 네이버의 포트 번호는 80이다. www.naver.com:81과 같은 형식으로 접속하려고 하면 접속이 안 될 것이다.
  • 즉 전송 계층이란, Port Number를 사용하여 도착지 컴퓨터의 최종적인 도착지인 "프로세스"에까지 데이터가 도달하게 하는 모듈이다.

Transport Layer의 구현 예

  • 운영 체제의 커널에 소프트웨어적으로 구현되어 있다.

5-6 Layer

  • 5계층(Session Layer)과 6계층(Presentation Layer)은 스킵하고 바로 7계층(Application Layer)을 살펴볼 것이다.
  • 왜냐하면 현대의 인터넷은 OSI 모델이 아니라 TCP/IP 모델을 따르고 있다. TCP/IP 모델은 Network(1+2), Internet(3), Transport(4), Application(5+6+7) 계층들로 이루어져 있다.
  • 그런데 TCP/IP 모델이 업데이트 되면서 Physical(1), Data-Link(2), Network(3), Transport(4), Application(5+6+7) 계층으로 변경되었다.

7 : Application Layer (응용 계층)

  • TCP/IP 소켓 프로그래밍 : 운영체제의 Transport Layer(4)에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것을 TCP/IP 소켓 프로그래밍 혹은 네트워크 프로그래밍이라고 한다.
  • 소켓 프로그래밍만으로도 클라이언트, 서버 프로그램을 따로 따로 만들어서 동작시킬 수 있다.
  • 뿐만 아니라, TCP/IP 소켓 프로그래밍을 통해서 누구나 자신만의 Application Layer 인코더와 디코더를 만들 수 있다. 누구든 자신만의 응용 계층 프로토콜을 만들어서 사용할 수 있다는 것이다.
  • Application Layer도 다른 Layer와 마찬가지로 인코더, 디코더가 있을 것이다. 대표적인 Application Layer Protocol로써는 HTTP가 있다.
  • HTTP의 인코딩 & 디코딩 : HTTP를 이해하기 위해서는 클라이언트 & 서버 패러다임을 알아야 한다(백엔드 단).

추가

  • MVC 패턴은 소프트웨어 아키텍처이고, Layered 아키텍처 역시 소프트웨어 아키텍처이다. 이 Layered 아키텍처를 따르는 대표적인 예가 네트워크 시스템이다.
  • 즉 네트워크 시스템은 하나의 커다란 소프트웨어이다.
  • OSI 7 Layer 모델은 거대한 네트워크 소프트웨어 구조를 설명하는 것이다.
profile
Working Abroad ...

0개의 댓글

관련 채용 정보