[Network] 프로토콜과 OSI 7계층

영근·2024년 9월 28일
1

Network

목록 보기
1/9
post-thumbnail

<IT엔지니어를 위한 네트워크 입문> 책을 함께 읽는 스터디를 진행하며 올리는 포스팅입니다.
스터디 repository

Intro

네트워크란 무엇일까요? 위키백과에서는 '분산되어 있는 컴퓨터를 통신망으로 연결한 것'이라고 정의하고 있습니다.

통신망으로 연결된 컴퓨터끼리 전기 신호를 주고 받는 과정에서, 약속된 규약(프로토콜) 그리고 전기 신호가 우리가 보는 화면에 알아볼 수 있는 형태로 나타나기까지 거치는 계층(OSI 7계층) 을 살펴봅니다.


프로토콜

어딜 가든 '국룰'은 존재합니다. 가령, 바텀에는 원딜과 서포터 두 명이 가는 것이 국룰입니다. 이렇듯 네트워크 세상에서 존재하는 국룰을 프로토콜이라 합니다.

과거에는 이런 저런 규칙이 다양하게 존재했지만, 최근에는 이더넷-TCP/IP 기반 프로토콜이 '국룰'이 되어, 여러 기술들이 이 프로토콜로 변경되고 있습니다.

이 프로토콜은 두 가지 측면으로 살펴볼 수 있습니다.

  • 물리적 측면(이더넷) : 데이터 전송 매체, 신호 규약, 회선 규격 등
  • 논리적 측면(TCP/IP) : 장치들끼리 통신하기 위한 프로토콜 규격

TCP와 IP는 별도 계층에서 동작하는 프로토콜이지만, 함께 사용하기 때문에 묶어 TCP/IP 프로토콜이 되었습니다. 이러한 프로토콜 묶음을 '프로토콜 스택'이라 합니다.


OSI 7계층

과거 국룰이 존재하지 않던 시절, 네트워크 규약을 통합하려는 노력을 통해 OSI 7계층이 등장하였습니다.
이를 통해 각 계층별 프로토콜 템플릿을 통해, 계층별 프로토콜을 모듈화하여 개발할 수 있게 되었습니다.

OSI 7계층은 두 가지 계층으로 나눌 수 있습니다.

  • Data Flow Layer
    • 하위 계층(Lower Layer)이라고도 하며, 1~4계층을 나타냅니다.
    • 데이터를 상대방에게 잘 전달하는 역할을 합니다.
    • 주로 네트워크 엔지니어가 담당합니다.
  • Application Layer
    • 상위 계층(Upper Layer)이라고도 하며, 5~7계층을 나타냅니다.
    • 데이터를 표현하는 데 초점을 맞춥니다.
    • 주로 애플리케이션 개발자들이 고려하는 영역입니다.'

이와 달리, TCP/IP 모델은 4계층으로 구분합니다.


OSI 7계층 자세히 알아보기

Physical Layer

  • 전기 신호를 전달합니다.
  • 주요 장비
    • Hub : 가까운 거리에 있는 장비들을 케이블을 사용하여 연결해 주는 장치
    • Repeater : 신호를 멀기 보내기 위한 증폭 장치
    • Tranceiver : 컴퓨터의 랜카드와 케이블을 연결하는 장치
    • Tab : 네트워크 모니터링/패킷 분석을 위해 전기 신호를 다른 장비로 복제하는 장치
    • Cable, Connector
  • 모든 포트에 같은 전기 신호를 전송합니다.
  • 주소 정보를 정의하고(MAC 주소 체계) 정확한 주소로 통신이 되도록 합니다.
  • Flow Control : 받는 사람이 현재 데이터를 받을 수 있는지 확인하는 작업
  • 구성 요소
    • Network Interface Card : 물리적으로 컴퓨터를 네트워크와 연결해주는 카드. 고유 MAC 주소가 있어, 입력되는 전기 신호를 데이터 형태로 만든 뒤, MAC 주소가 맞는지 확인합니다.
    • Switch : 단말이 어떤 MAC 주소인지, 연결된 포트는 어느 것인지 주소 습득(Address Learning) 과정에서 알고, 통신할 때 필터링 및 정확한 포트로 포워딩합니다.

Network Layer

  • IP 주소와 같은 논리적인 주소가 정의됩니다.
  • 주요 장비
    • Router : IP 주소를 사용해 최적의 경로를 찾아주고 해당 경로로 패킷을 전송합니다.

Transport Layer

  • 패킷이 유실되거나 순서가 바뀌었을 때 바로잡아 주는 역할을 합니다.
  • 패킷 분할 시 패킷 헤더에 보내는 순서, 받는 순서를 적어 통신합니다.
    • Sequence Number : 보내는 순서를 명시한 번호
    • Acknowledgement Number(ACK 번호) : 받는 순서를 나타낸 것
  • 포트 번호를 사용해 상위 애플리케이션을 구분합니다.
  • 주요 장비
    • 로드밸런서 : 포트 번호, 시퀀스, ACK 번호 정보를 이용해 부하를 분산합니다.
    • 방화벽 : 보안 정책을 수립해 패킷을 통과, 차단하는 기능을 수행합니다.

Session Layer

  • 양 끝단의 응용 프로세스가 연결을 성립하도록 도와줍니다.
  • 연결이 안정적으로 유지되도록 관리합니다.
  • 작업 완료 후에 연결을 끊는 역할을 합니다.

Presentation Layer

  • 표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 통일된 구문 형식으로 변환시키는 기능을 수행합니다.

Application Layer

  • 애플리케이션 프로세스를 정의하고 애플리케이션 서비를 수행합니다.
  • 대표적인 프로토콜 : HTTP, FTP, SMTP, TELNET

Encapsulation & Decapsulation

상위 계층에서 하위 계층으로 데이터를 보내면, 물리 계층에서 전기 신호 형태로 신호를 보냅니다. 이를 Encapsulation이라 합니다.
반대로 받은 전기 신호를 데이터 형태로 만드는 것을 Decapsulation이라 합니다.

인캡슐레이션 과정에서는 4계층부터 네트워크 전송을 위한 정보를 헤더에 붙여 넣습니다.
헤더 정보는 4, 3, 2계층에서 각각 붙는데, 이 때의 정보는 비트 단위를 사용합니다.

반대로 디캡슐레이션 과정에서는 헤더 정보를 사용해 데이터를 올려보내면서, 해당 헤더를 삭제합니다.

헤더에는 반드시 현재 계층에서 정의하는 정보, 상위 프로토콜 지시자 의 두 가지 정보가 포함되어야 합니다.
상위 계층으로 올라갈수록 프로토콜 스택의 종류가 많아지기 때문에, 디캡슐레이션 과정에서 헤더 정보를 보고 어떤 상위 프로토콜로 데이터를 올려보내야 할지 결정해야 하기 때문입니다.
4계층은 포트 번호, 3계층은 프로토콜 번호, 2계층은 이더 타입이라고 부릅니다.

MSS, MTU

데이터가 적절한 크기로 쪼개질 수 있게 설정된 값을 MSS(Maximum Segment Size)라 하고, 네트워크에서 한 번에 보낼 수 있는 데이터 크기를 MTU(Maximum Transmission Unit)이라 합니다.

MTU는 일반적으로 1500 바이트인데, 보통 2계층에서 헤더(3계층 헤더 20바이트 + 4계층 헤더 20바이트)를 제외한 1460바이트를 MTU 크기라고 부릅니다.



이미지 출처

profile
Undefined JS developer

0개의 댓글