OSI 7계층

GreenBean·2021년 8월 6일
0
post-thumbnail

OSI 7계층

7계층을 나누는 이유

  • 계층을 분리함으로서 각 계층은 독립적인 역할을 할 수 있는데, 역할이 분리되면서 문제 발생 시 문제의 현상을 보았을 때 어떤 계층에 문제가 생겼는지도 파악이 가능
    • 각 계층의 수행 역할이 다르기 때문에 이런 것이 가능
  • 각 계층은 하위 계층을 사용하고 현재 계층의 기능을 포함하여 상위 계층에 제공
    • 그래서 계층구조는 위에서 바라보았을 때 아래층이 안보이는 구조라 볼 수 있음
    • 따라서 최상위 계층만 보면 그 아래 계층을 모두 포함하고 있는데 OSI 7계층 또한 그러함

1. 물리 계층 (Physical Layer)

  • 리피터, 케이블, 허브 등
  • 단지 데이터를 전기적인 신호로 변환해서 주고받는 기능을 진행하는 공간
  • 즉, 데이터를 전송하는 역할만 진행
    • 데이터의 종류나 오류를 제어하지 않는데 이것은 다음 계층인 데이터 링크 계층에서 다룸

2. 데이터 링크 계층(Data Link Layer)

  • 브릿지, 스위치 등
  • 물리 계층으로 송수신되는 정보를 관리하여 안전하게 전달되도록 도와주는 역할
  • 데이터 링크 계층은 Point to Point 간의 신뢰성 있는 전송을 보장하기 위한 계층
  • 전송 데이터에 대한 CRC 오류 제어가 필요
  • 물리 주소인 MAC 주소가 이 계층에 해당하며 전송 단위는 Frame

3. 네트워크 계층(Network Layer)

  • 라우터, IP
  • 네트워크 계층은 우리가 흔히 아는 IP 주소를 제공하는 계층
    • IP 주소 또한 계층적으로 A,B,C,D클래스로 나누어져 있음
  • 네트워크 계층에서는 대표적으로 노드들을 거칠 때마다 라우팅 해주는 역할을 담당
    • 실제 우리 실생활에서 가장 쉽게 볼 수 있는 라우팅 장비가 공유기
    • 공유기가 라우터라는 말은 아니지만 라우터의 NAT이라는 기능을 활성화 시킨 것이며 공유기는 하나의 외부 통신선에서 들어오는 요청을 사설망에 연결되어있는 컴퓨터에게 전달해주는 역할을 함
  • 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능을 담당
  • 라우터를 통해 이동할 경로를 선택하여 IP 주소를 지정하고, 해당 경로에 따라 패킷을 전달
  • 라우팅, 흐름 제어, 오류 제어, 세그먼테이션 등을 수행
  • 전송 단위는 Packet

4. 전송 계층(Transport Layer)

  • TCP, UDP
  • 전송 계층의 경우 양 끝단(End to End)의 사용자들이 데이터를 주고 받을 수 있게 하는 계층
    • 대표적으로 우리가 자주 사용하는 TCP, UDP 프로토콜이 있는 계층
  • TCP와 UDP 프로토콜을 통해 통신을 활성화
  • 포트를 열어두고 프로그램들이 전송을 할 수 있도록 제공
  • 전송 단위는 Segment임

Tip!
TCP : 신뢰성, 연결지향적
UDP : 비신뢰성, 비연결성, 실시간

  • TCP의 경우 신뢰성 있는 통신을 보장
    • 따라서 데이터가 전달되는 과정에서 여러 스위치 라우터 등을 거치면서 데이터가 잘못 전달되는 현상이나 전달이 안되는 경우 오류 제어나 흐름 제어를 통해 신뢰성 있는 데이터가 전달될 수 있도록 함
    • TCP는 연결시 3-way hanshaking 방식으로 목적지와 상호 패킷을 교환하여 연결하며 연결을 종료할 때는 4-way hanshaking 방식을 사용
    • 신뢰성 연결과 전달을 보장하는 만큼 중간의 확인과정을 거치고 연결을 계속 유지해야되기 때문에 그만큼의 리소스가 더 들어감
  • UDP 프로토콜의 경우 비연결형 프로토콜로서 데이터를 빠르게 전달하는데에 초점
    • 따라서 UDP는 목적지에 데이터가 제대로 전달 되었는지 조차 확인하지 않으며 그냥 전송하면 끝
    • 이렇게만 말하면 이걸 왜 쓰냐고 할 수 있는데 비연결을 지향하고 데이터를 전달할 때 TCP에 비해 오버헤드가 적음
    • 그래서 신뢰성 있는 데이터 전송이 필요할 때보다 스트리밍같이 연속적인 특성을 가지고 있는 서비스에 사용

5. 세션 계층(Session Layer)

  • API, Socket
  • 세션 계층부터 데이터를 만들어내는 계층
  • 데이터가 통신하기 위한 논리적 연결을 담당
  • 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공
    • 동시 송수신 방식(Duplex), 반이중 방식(Half-Duplex), 전이중 방식(Full Duplex)의 통신과 함께 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행
    • 통신하는 사용자들을 동기화하고 오류 복구 명령들을 일괄적으로 다룸
  • TCP/IP 세션을 만들고 없애는 책임을 지니고 있음

6. 표현 계층(Presentation Layer)

  • JPEG, MPEG 등
  • 표현 계층은 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어 줌
    • MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어짐
    • 우리가 자주 사용하는 데이터의 압축이나 인코딩 등을 여기에서 다룬다고 볼 수 있음
  • 데이터 표현에 대한 독립성을 제공하고 암호화하는 역할을 담당
  • 파일 인코딩, 명령어를 포장, 압축, 암호화

7. 응용 계층(Application Layer)

  • HTTP, FTP, DNS 등
  • 응용 계층은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행
    • 한마디로 우리가 사용하는 사용자 인터페이스를 제공하는 프로그램 등을 말하는 것
    • 대표적으로 우리가 잘 알고있는 HTTP, FTP 등의 프로토콜이 응용 계층에 속함
  • 최종 목적지응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행
  • 사용자 인터페이스, 전자우편, 데이터베이스 관리 등의 서비스를 제공
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 댓글