오늘 하루, develop

#3. 네트워크 모델 본문

네트워크

#3. 네트워크 모델

toZoe 2024. 4. 20. 16:46

 소개

그 유명한 네트워크 프로토콜에 대해 알아보자.

OSI 7 계층TCP/IP 4계층에 대해 알아보기!


네트워크 모델

우선, 네트워크의 정의를 다시 짚고 넘어가자.

▪️ 네트워크란

컴퓨터나 기타 기기들이 리소스를 공유하거나 데이터를 주고 받기 위해 유선 혹은 무선으로 연결된 통신 체계

▪️ 네트워크의 기능

  • 애플리케이션 목적에 맞는 통신 방법 제공
  • 신뢰할 수 있는 데이터 전송 방법 제공
  • 네트워크 간의 최적의 통신 경로 결정
  • 목적지로 데이터 전송
  • 노드 사이의 데이터 전송

▪️ 네트워크 모델의 등장

위와 같은 통신 기능이 제대로 동작하기 위해서는 참여자들 사이에서 약속된 통신 방법이 있어야 한다.

네트워크 통신을 하기 위해서 통신에 참여하는 주체들이 따라야 하는 형식, 절차, 규약을 네트워크 프로토콜이라고 한다.

그러나, 이 모든 기능을 단 하나의 프로토콜로 구현할 수 없다.

마치 우리가 어플리케이션의 모든 기능을 하나의 클래스 파일 안에 구현하는 것과 같다.

이렇게 구현한다면 유지보수와 기능 추가가 매우 어려울 것이다.

 

모듈화를 해야 한다! (기능별로 분리시켜 구현)

 

✔️ 어떻게 모듈화 하지?

네트워크 기능들을 보니, 각 기능이 계층별로 동작하는 것 같다!

그래서 계층 구조로 모델링하게 되었다.

2가지 모델은 아래와 같다.

💡 OSI model(7 layer) : 범용적인 네트워크 구조
💡 TCP/IP 스택 (4 layer) : 인터넷에 특화된 네트워크 구조

→ 이는 개념적인 모델일 뿐이다!!! 너무 집착하지 말자.

 

실무적인 측면에서는 TCP/IP 스택이 더 맞지만, 개념적으로는 OSI 모델로 나뉘어 있다.
여기서는 OSI 7 계층으로 나누고, 주요 계층에 대해 자세히 설명하고자 한다.

OSI 7계층

네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것

✔️ OSI 7계층을 나눈 이유는?

  • 흐름을 한눈에 알아보기 쉽고 사람들이 이해하기 쉽다
  • 네트워크에서 이상이 생기면, 7계층 중 어디에서 생긴 문제인지 파악하고 해당 계층만 고치면 된다
  • OSI 7계층이 생기기 이전에는 표준이 존재하지 않아 각양각색으로 개발을 했기 때문에 데이터 전송이 어려웠다

 

Application layer (7계층)

  • 애플리케이션 목적에 맞는 통신 방법 제공
  • 흔히 사용하는 사용자 인터페이스를 제공하는 프로그램을 의미
  • 통신 단위는 메세지
  • ex) HTTP, DNS, SMTP, FTP 등
    • 웹 페이지를 보여주고 싶다면 http 프로토콜 사용
    • 파일 업로드, 다운로드하고 싶다면 ftp 프로토콜 사용
    • 도메인을 ip 주소로 바꾸고 싶다면 dns 프로토콜 사용
    • 이메일을 주고 받는 기능을 구현하고 싶다면 smtp 프로토콜 사용
  • 실제로 어떻게 데이터가 오고 가게 할 것인지는 이 계층의 관심사가 아님

 

Presentation layer (6계층)

  • 애플리케이션 간의 통신에서 메시지 포맷 관리
  • 애플리케이션 계층(7계층)이 다양한 데이터 타입을 다루는 부담을 덜어줌
  • 인코딩, 암호화, 압축 등 담당
  • ex) 해당 데이터가 TEXT인지 그림인지 GIF인지 등을 구분
  • 통신 단위는 메세지

 

Session layer (5계층)

  • 애플리케이션 간의 통신에서 세션을 관리
  • RPC, Socket이 이 계층에서 동작함
  • 데이터가 통신하기 위한 논리적인 연결을 의미
  • 하지만 4계층에서도 연결을 맺고 종료할 수 있기 때문에 어느 계층에서 통신이 끊어졌는지 판단하는데 한계가 있음
  • 세션 설정, 유지, 종료, 전송 중단시 복구 등의 기능
  • 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공
  • 이 계층은 TCP/IP 세션을 만들고 없애는 책임을 짐
  • 통신 단위는 메세지
여기까지가 application과 관련된 기능을 담당한다.
사실 3개로 나눠서 보기보다 이 3개 전체를 application layer로 보는 게 좋다는 의견도 많다.
명확하게 기능을 나누기 어려운 부분도 있기 때문,,

 

 

Transport layer (4계층)

  • 애플리케이션 간의 통신 담당
  • 목적지 애플리케이션으로 데이터 전송
  • 양 끝단(end-to-end) 사용자들( = 프로세스간 통신)이 신뢰성 있는 데이터를 주고받을 수 있게 함
  • 포트 번호를 통해 process(=응용 프로그램)를 식별
  • TCP / UDP 프로토콜 사용
    • 안정적이고 신뢰할 수 있는 데이터 전송 보장(TCP)
    • 필수 기능만 제공(UDP)
  • TCP 프로토콜 채택 시, 흐름 제어(flow control), error correction, congestion control이 이루어짐
  • 통신 단위는 TCP - Segment, UDP - Datagram
  • 목적지 애플리케이션에 데이터를 전송하기 위해 어떤 식의 통신을 할 것인지 결정
  • 실제로 데이터가 어떻게 목적지까지 찾아 가느냐는 이 계층의 관심사가 아님 (이건 아래 네트워크 계층에서 담당)

 

Network layer (3계층)

  • 호스트 간의 통신 담당 (대표적으로 IP 프로토콜)
  • 목적지 호스트의 IP 주소를 활용하여 목적지 호스트데이터 전송
  • 실제로 데이터를 목적지까지 찾아가게 해야 하므로 네트워크를 이루고 있는 라우터 같은 장치들도 네트워크 계층의 기능을 구현해야 함
  • 네트워크 간의 최적의 경로 결정
  • 전체 경로를 담당하지만 각각의 노드 사이에서 어떻게 데이터를 전송할 것인지는 관심사가 아님 (그건 아래 data layer가 담당)

3계층에서 하는 일에 대한 자세한 내용은 이후 포스팅에서 다룰 예정입니다!

 

Data Link layer (2계층)

  • 두 노드 사이의 통신을 담당
  • 인접한 네트워크 노드들끼리 데이터를 전송하는 기능과 절차 제공
  • point - to - point 간의 신뢰성 있는 전송
    1. 신뢰성 있는 전송 : 목적지 프로세스에 항상 모든 데이터가 순서대로 도착하고, 중간에 손실되는 데이터가 없음을 의미
    2. 오류 제어 - 물리계층에서 생길 수 있는 오류를 감지하고 수정함
    3. 흐름제어(Flow Control) - 송신자와 수신자 사이의 데이터 처리 속도를 조절하는 역할
  •  
  • Mac 주소(Mac Address)로 통신
  • 대표적인 프로토콜 : 이더넷(Ethernet)
  • 대표적인 장비로는 switchbridge가 있다. 직접 이어진 곳에만 연결할 수 있다.
  • 통신 단위는 프레임
  • 용어 설명
    • 브릿지
      • 포트가 2-3개 존재
      • store-and-forward 방식을 사용한다
    • 스위치
      • 여러 네트워크 기기를 연결하는 역할
      • 허브는 특정 데이터를 모든 포트에 전달했다면 스위치는 원하는 포트에만 선별적으로 데이터 전달 가능 → 포트마다 회선이 독립적으로 존재
      • 몇 백개의 포트를 가지고 있다
      • 브릿지의 업그레이드 버전 (속도 더 빠름)
      • 스위치의 모든 포트는 MAC 주소가 다름 → 포트별로 연결된 기기가 다르기 때문
      • L3 스위치 : VLAN을 적용시킨 스위치

2계층에서 하는 일에 대한 자세한 내용은 아래 블로그 확인 부탁드려요!

 

Physical layer (1계층)

  • 실제 물리적인 매개체(케이블, 무선 신호 등)를 통해서 데이터를 bit 단위로 전송하는 역할
  • 이 계층에서는 단지 데이터를 전달만 할뿐 전송하려는(또는 받으려는) 데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경 쓰지 않음. 단지 데이터 전기적인 신호로 변환해서 주고받는 기능만 함
  • 비트 0, 1의 통신 단위로 기계적, 전기적 신호를 주고받는 역할을 한다
  • 상위 계층으로부터 받아온 데이터를 전기적 신호로 변환해 전달하는 역할
  • 이 계층에 속하는 통신 장비로는, 케이블, 허브, 리피터 등이 있다.
  • 통신 단위는 비트
  • 용어 설명
    • 리피터
      • 신호가 약해졌을 때 신호를 멀리 보내기 위한 증폭 장치
      • 지금은 다른 네트워크 장비에 기본적으로 리피터 기능이 탑재되어 있어 사용하지 않음
    • 허브
      • 리피터 역할을 하며, 여러 네트워크 기기를 연결하는 역할
      • 뚫려있는 구멍의 숫자에 따라 연결할 수 있는 장비의 수가 결정됨
      • 요즘은 스위치가 등장하여 거의 사용되지 않음

✔️ TCP/IP 스택 (4 layer) vs OSI model(7 layer) 


출처

https://youtu.be/6l7xP7AnB64?si=TE9YYZzt5ZOITS7j

https://youtu.be/y9nlT52SAcg?si=7xEaEQPZaVAsPrEM

https://shlee0882.tistory.com/110

https://coding-study-page.notion.site/8e86779c6261485fa777e21b1a1cd220?v=bb0b468144444314871d355f43e0dce1