흰 스타렉스에서 내가 내리지

OSI 7 Layer 본문

Network

OSI 7 Layer

주씨. 2023. 3. 20. 23:15
728x90

OSI 7 계층 단계

 

 

1 Layer : Physical Layer

두 대의 컴퓨터가 통신하려면?  

  • 1을 보낼 때는 +5V의 전기를 전선으로 흘려보내고
  • 0을 보낼 때는 -5V의 전기를 전선으로 흘려보내면
  • 0과 1의 전송이 가능할 것이다. 
  • 0과 1을 주고 받을 수 있으면 모든 데이터를 주고 받을 수 있으므로 
  • 두 컴퓨터는 통신이 가능 
  • 실제 상황에서는 잘 동작하지 않았다. 

Physical Layer 란?

  • 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려 보내고, (encoding)
  • 아날로그 신호가 들어오면 0과 1의 나열로 해석하여 (decoding)
  • 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고 받을 수 있게 해주는 모듈 (module)

 

여러 대의 컴퓨터가 통신하려면?

스위치

예림이가 메시지의 목적지를 확인해서 다른 두대의 컴퓨터들에게 주지 않고 혜림이에게만 전달할 수 있도록 하는 것을 스위치라고 한다. 

 

각각이 네트워크

예림이와 혜림이는 다른 네트워크에 있다. 

두 컴퓨터는 전선으로 연결되어 있지 않아서 통신을 할 수 없다. 

 

만약, 스위치와 스위치를 연결할 수 있다면?

라우터

이처럼, 스위치와 스위치를 연결해서 서로 다른 네트워크에 속한 컴퓨터끼리 통신이 가능하게 해주는 장비를 라우터 라고 한다. 

라우터는 우리가 잘 알고 있는 공유기에 해당된다. 

 

 

라우터와 라우터를 라우터를 이용해서 연결할 수도 있다.

이런식으로 전 세계의 컴퓨터들을 연결한 것을 인터넷 이라고 한다. 

 

2 Layer : DataLink Layer

앞서 컴퓨터들이 계층구조를 이루며 연결되어 있는 것을 보았다. 

이렇게 전 세계의 컴퓨터들이 계층구조로 연결되어 있는 것을 인터넷이라고 한다. 

 

Physical layer에 속하는 기술만으로는 여러대의 컴퓨터가 통신하도록 만들 수 없었다.  ㅇ

 

여러 대의 컴퓨터가 통신하려면?

  • 송신자는 데이터의 앞 뒤에 특정한 비트열을 붙여서 보낸다. 
  • 예를 들어, 송신자(전송자)가 데이터를 보낼 때 앞에는 1111을, 뒤에는 0000을 붙인다고 해보자.
  • 00001111을 찾으면 이를 구분자로 하여 데이터를 잘 찾을 수 있을 것이다. 

 

결국 Data-Link Layer란?

  • 같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈
  • Framing은 Data-link layer에 속하는 작업들 중 하나이다. Framing은 앞에서 앞뒤로 특정한 비트열을 붙인것을 말한다.

Data-link Layer 기술은 어디에 구현되어 있을까?

  • 랜카드
  • 2계층 모듈도 1계층 모듈처럼 하드웨어적으로 구현되어 있다. 

 

3 Layer : Network Layer

더 많은 컴퓨터들 사이의 통신 

 

  1. A는 데이터 앞에 목적지 주소(IP 주소)를 붙여서 가에 전달.
  2. '가'는 IP주소가 자신과 연결되어 있지 않음을 확인한 후 데이터를 다시 포장하고 '마'에 전달
  3. 목적지가 B라는 것을 알게된 라우터 '마'는 패킷이 B에 도착하려면 어느 전선으로 패킷을 내보내야 하는지 알아내야한다.
  4. '마'는 어떻게 데이터를 '바'에게로 전달해야 한다는 것을 알아낼 수 있을까? 이거는 라우팅을 자세하게 공부해보라
  5. '마'는 데이터를 다시 패킷으로 포장해서, '바'에게 넘겨준다.
  6. '바'는 '마'가 했던 것과 똑같은 방법으로 '라'에게 패킷을 보낸다. 
  7. '라'는 자신과 연결된 컴퓨터들 중에 IP주소가 55.10.54.75인 컴퓨터가 있다는 것을 알고 있어서, 패킷을 B에게 전달.

결국 Network Layer란?

  1. 수많은 네트워크들의 연결로 이루어지는 inter-network 속에서
  2. 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해,
  3. IP주소를 이용해서 길을 찾고 (routing)
  4. 자신 다음의 라우터에게 데이터를 넘겨주는 것 (forwarding)

 

Network Layer 기술은 어디에 구현되어 있을까?

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

 

4 Layer : Transport Layer

  • 이제 인터넷 상의 모든 컴퓨터가 서로와  통신할 수 있게 되었다. 
  • 데이터를 받는 수신자는 전 세계의 컴퓨터로부터 데이터를 받을 것이다. 
  • 그런데 컴퓨터에는 여러 개의 프로그램들이 실행되고 있었다. 
  • 어떤 데이터를 무슨 프로세스에게 줘야할 지, 컴퓨터는 어떻게 알 수 있을까?
  • 먼저, 데이터를 받고자 하는 프로세스들은 포트 번호 (Port Number) 라는 것을 가져야 한다. 
  • 포트번호는 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야하는 정수 값이다.

 

  • 한편, 송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보낸다.
  • 그러면 데이터 전송자는 9000이라는 포트번호까지 미리 알고 있어야 하는가? ㅇㅇ 맞음

 

결국 Transport Layer 란? 

  • Port 번호를 사용하여 
  • 도착지 컴퓨터의 최종 도착지인 프로세스에 까지 
  • 데이터가 도달하게 하는 모듈

 

Transport Layer 기술은 어디에 구현되어 있을까?

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

 

5,6 Layer : Session Layer, Presentation Layer

OSI 모델 vs TCP/IP 모델

  • OSI 네트워킹 모델은 그 구조가 총 7개의 Layer 로 나뉘어져 있는데요.
  • 현대의 인터넷은 OSI 모델이 아니라 TCP/IP 모델을 따르고 있다. 
  • TCP/IP 모델도 OSI 모델과 마찬가지로 네트워크 시스템에 대한 모델이다.
  • 현대의 인터넷이 TCP/IP 모델을 따르는 이유는 OSI 모델이 TCP/IP 모델과의 시장 점유 싸움에서 졌기 때문이다.

  • 오늘날 TCP/IP Updated Model 이 더 많이 사용되고 있다. 

 

7 Layer : Application Layer

TCP/IP 소켓 프로그래밍

  • 운영체제의 Transport Layer에서 제공하는 API를 활용해서 
  • 통신 가능한 프로그램을 만드는 것을 
  • TCP/IP 소켓 프로그래밍, 또는 네트워크 프로그래밍 이라고 한다. 
  • 소켓 프로그래밍 만으로도 클라이언트, 서버 프로그램을 따로따로 만들어서 동작 시킬 수 있다. 
  • 뿐만 아니라, TCP/IP 소켓 프로그래밍을 통해서 누구나 자신만의 Application Layer 인코더와 디코더를 만들 수 있다. 
  • = 누구든 자신만의 Application Layer 프로토콜을 만들어서 사용할 수 있다. 

 

  • Application Layer도 다른 layer 들과 마찬가지로 인코더, 디코더가 있을텐데
  • 대표적인 Application Layer 프로토콜인 HTTP로 인코딩 & 디코딩을 살펴보자

 

 

 

 

마치며

  • 익숙한 MVC 패턴
  • MVC 패턴은 소프트웨어 아키텍처 중 하나인데요
  • MVC와 마찬가지로, 소프트웨어 아키텍처 중에 Layered Architecture 라는게 있다. 
  • Layered 아키텍처를 따르는 대표적인 예가 네트워크 시스템이다.
  • 그러니까, 네트워크 시스템은 하나의 커다란 소프트웨어라고 할 수 있다. 
  • OSI 7 Layer 모델은 거대한 네트워크 소프트웨어의 구조를 설명하는 것이다. 

'Network' 카테고리의 다른 글

사설IP & NAT & CIDR  (0) 2023.08.28
DHCP  (0) 2023.03.28
VPC, public/private subnet  (0) 2023.03.28
서브넷 마스크, subnet mask  (0) 2023.03.28
TCP & UDP  (0) 2023.03.22