OSI 7 Layer (히히)

도두맨·2025년 1월 13일

공부

목록 보기
5/23

히히의 OSI 7 Layer를 보고 주관적으로 정리한 내용입니다.

이런 사람이 들으면 좋아요

  • 네트워크에 대해 거의 모르는 사람
  • OSI 7계층이 무너지 모르는 사람
  • 프로그래밍이 뭔지는 아는 사람
  • 네트워크에 대해 궁금한 사람

시작하기에 앞서

  • 요약적 추상적 설명은 피하고자 함
  • 1계층부터 차례대로 진행

1계층 물리 계층 (Physical Layer)

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

  • 모든 파일과 프로그램은 0고 1의 나열 -> 결국 0과 1만 주고받을 수 있으면 된다.
  • 1을 보낼 때는 +5v의 전기를 전선으로 흘려보내고, 0을 보낼 때는 -5V의 전기를 전선으로 흘려보내면 0과 1의 전송이 가능할 것이다.
  • 0과 1을 주고받을 수 있으면 모든 데이터를 주고받을 수 있으므로 두 컴퓨터는 모든 데이터를 주고받을 수 있음
  • 그러나 이 간단한 아이디어는, 실제에서는 잘 동작하지 않았음
    전자기파를 표현하는 함수
  • 주파수란? 1초당 진동한 진동 횟수 [단위: Hz(헤르츠)]
  • 위 그림의 주파수는 1초간 4번 진동하기 때문에 4Hz
  • 이런 전자기파는 주파수 값이 숫자 하나로 고정되지 않음
  • 위의 전자기파는 파동이 진행되는 동안 주파수 값이 계속 변함
  • 이 전자기파의 주파수 최소값이 1Hz, 최대값이 10Hz라고 가정
  • 그런데 전선은 모든 주파수를 다 통과 시키지는 못함
  • 앞서 두 대의 컴퓨터가 통신하려면 0과 1을 주고받을 수 있으면 된다고 했음
  • 두 대의 컴퓨터는 다음고 같은 전자기파를 주고받을 수 있으면 됨
  • 그런데 수직선과 수평선이 있는 전자기파는 항상 0 ~ 무한대 Hz의 주파수 범위를 가짐
  • 이런 전기신호를 통과시킬 수 있는 전선은 없음!! -> 신호를 아날로그로 바꿔서 전송해야 함

그래서 결국 Physical Layer란?

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

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

  • PHY 칩
  • 1계층 모듈은 하드웨어적으로 구현되어 있음!!

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

  • 다른 컴퓨터와 통신하려 할 때마다 전선을 따로 추가하는 것은 통신하려는 컴퓨터가 많아질수록 비용면에서 비효율적임 -> 전선 하나를 가지고 여러 대의 컴퓨터와 통신할 방법을 모색해야 함
  • 예림 -> 혜림으로 신호를 보낼 때, 구리선을 타고 모든 컴퓨터로 전달됨
  • 스위치를 사용하면 혜림한테만 신호를 보낼 수 있음
  • 서로 다른 네트워크에서 예림이가 혜림이에게 데이터를 보내고 싶을 때, 전선으로 연결되어 있지 않아서 통신할 수 없음
  • 스위치와 스위치를 연결해서 서로 다른 네트워크에 속한 컴퓨터끼리 통신을 가능하게 만들어주는 장비를 라우터라고 함 - 엄밀히 따지면 스위치 + 라우터인 L3스위치 이지만 그냥 라우터라고 생각..
  • 이때 초록색 기계는 우리가 잘 알고 있는 공유기에 해당함
  • 라우터를 이용해서 라우터와 라우터를 연결할 수 있음
  • 이런식으로 전 세계의 컴퓨터들을 연결한 것을 인터넷이라고 함
  • 나라끼리 연결되는 최상위 케이블은 해저 케이블로 바다 안에 있음

  • 스위치로 연결된 컴퓨터에서 다른 컴퓨터들이 예림이한테 거의 동시에 데이터를 보냈을 때, 예림이는 붙어있는 데이터를 받게 됨
  • 잘못 끊어 읽으면 전혀 다른 데이터가 되기 때문에 송신자는 데이터의 앞 뒤에 특정한 비트열을 붙임

  • 이렇게 해서 예림이는 여러 잘송지로부터 전달받은 데이터를 잘 끊어 읽을 수 있음
  • 같은 네트워크에 있는 여러대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈
  • Framing은 Data-link Layer에 속하는 작업들 중 하나 - 앞에서 1111/0000을 사용해 원본 데이터를 감싼것을 Framing이라고 함

2계층과 1계층을 아우른 데이터 인코딩/디코딩 과정

  1. 2계층 encoder에서 data의 앞뒤에 특정한 비트열을 붙임
  2. 1계층 encoder로 들어가 아날로그 신호로 변경
  3. 전선을 타고 아날로그 신호가 이동
  4. 1계층 decoder로 들어가 해석된 데이터로 변경
  5. 2계층 decoder로 들어가 앞, 뒤 플래그가 제거되고 data가 나옴
  • 랜카드
  • 2계층 모듈도 1계층 모듈처럼 하드웨어적으로 구현되어 있음

Network Layer

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

  • A -> B로 데이터를 전송할 때, A는 데이터 앞에 목적지 주소(B의 주소)를 붙임
  • 이와 같이 각 컴퓨터들이 갖는 고유한 주소를 IP주소라고 함
  • 목적지 IP + data를 패킷 이라고 부름

A->B의 여정

  1. A가 라우터 에게 패킷 전달
  2. 는 패킷을 열어서 목적지 IP 주소를 확인 - 자신과 연결된 컴퓨터 중에는 해당 IP가 없기 때문에 데이터를 다시 포장 한 후, 라우터 에게 전달
  3. 도 패킷을 열어 목적지 주소를 확인 - 패킷을 B로 전달하려면 어느 전선으로 패킷을 보내야 하는지 알아내야 함(라우팅)
  4. 라우팅을 통해 경로를 알아낸 는 패킷을 포장해 로 전달
  5. 가 했던 것과 같은 방법으로 에게 패킷을 전달
  6. 는 자신과 연결된 컴퓨터 중에 55.10.54.75인 컴퓨터를 알고 있어서 패킷을 B에게 전달

그래서 결국 Network Layer란?

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

인코딩/디코딩 과정

  1. 3계층 encoder에서 앞에 목적지 IP주소를 붙임 (구조체나 객체라고 생각)
  2. 2계층 encoder로 들어가서 (목적지 IP + (data))의 앞 뒤에 특정한 비트열을 붙임
  3. 1계층 encoder로 들어가 아날로그 신호로 변경
  4. 전선을 타고 아날로그 신호가 인접한 라우터로 이동
  5. 1계층 decoder로 들어가 0과 1로 해석
  6. 2계층 decoder로 들어가 앞, 뒤 플래그가 제거
  7. 3계층 decoder로 들어가 IP 주소를 사용하고 data만 남음
  8. 다시 1~3 과정 진행 후 다음 순서 라우터에게 전달

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

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

Transport Layer

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

그래서 결국 Transport Layer란?

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

인코딩/디코딩 과정

  1. 4계층 encoder에 들어가서 포트번호를 붙임 port+(data)
  2. 3계층 encoder에 들어가서 목적지 IP주소를 붙임 목적지IP+(port+(data))
  3. 2계층 encoder에서 비트열 더한 후 1계층에서 아날로그 신호로 변경 후 이동
  4. 아날로그 신호 해석 -> 비트열 제거 목적지IP+(port+(data))
  5. 3계층 decoder에서 목적지 IP 제거 port+(data)
  6. 4계층 decoder에서 port 번호를 활용해서 해당 프로세스에게 전달

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

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

Application Layer

OSI 모델 vs TCP/IP 모델

  • 사실 현대의 인터넷은 OSI 모델이 아니라 TCP/IP 모델을 따르고 있음
  • TCP/IP 모델도 OSI 모델과 마찬가지로 네트워크 시스템에 대한 모델임
  • 현대의 인터넷이 TCP/IP 모델을 따르는 이유는 OSI 모델이 TCP/IP 모델과의 시장 점유 싸움에서 졌기 때문
  • TCP/IP 모델이 업데이트 되면서 변경됨
  • Transport 아래의 계층은 OSI 모델과 같아짐
  • 오늘 날 TCP/IP Updated 모델이 더 많이 사용됨
  • TCP/IP 소켓 프로그래밍
    - 운영체제의 Transport layer에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것을 TCP/IP 소켓 프로그래밍, 또는 네트워크 프로그래밍 이라고 함
  • 소켓 프로그래밍 만으로도 클라이언트, 서버 프로그램을 따로따로 만들어서 동작 시킬 수 있음
  • 뿐만 아니라, TCP/IP 소켓 프로그래밍을 통해서 누구나 자신만의 Application Layer 인코더와 디코더를 만들 수 있음 -> 누구든 자신만의 Application Layer 프로토콜을 만들어서 사용할 수 있음
  • Application Layer도 다른 Layer들과 마찬가지로 인코더, 디코더가 있는데 대표적인 Application Layer 프로토콜인 HTTP로 인코딩/디코딩을 조금만 살펴보자

인코딩/디코딩 과정

  1. HTTP encoder에 들어가서 앞에 스테이터스 코드를 붙임 status code+(data)
  2. 4계층에 encoder에 들어가서 포트번호를 붙임 port+(status code+(data))
  3. 3~1계층 encoder를 통해 아날로그 신호가 되어 목적지로 이동
  4. 1~3계층을 decoder를 통해 아날로그 신호 -> 비트열 제거 -> 목적지 IP 제거 status code+(port+(data))
  5. 4계층 decoder를 통해 포트번호를 제거 status code+(data)
  6. 5계층 decoder를 통해 status code 제거 data

마치며...

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

https://youtu.be/1pfTxp25MA8 [10분 테코톡] 🔮 히히의 OSI 7 Layer

0개의 댓글