[CS] OSI 7계층( + TCP/IP 4계층)

말하는 감자·2024년 12월 29일

CS

목록 보기
2/33

1. 데이터의 기술적 개념

데이터들은 수많은 0과 1로 이루어진 숫자에 불과하다.
데이터는 0혹은 1로 이루어진 숫자이고, 컴퓨터는 2진법의 숫자를 전기의 켜짐(On), 꺼짐(Off)로 표현할 수 있다.
즉, 데이터는 아주 긴 전기신호인 것이다.
데이터가 전기 신호라 했으니 데이터를 전달하려면 긴 케이블이 필요하다.

2. 프로토콜(Protocol)

컴퓨터, 핸드폰 등 클라이언트에서 발생한 데이터가 상대방 컴퓨터 혹은 서버로 전달되기 위해서는 표준화된 약속 혹은 절차를 따라야하는데, 이는 전기 신호가 그냥 케이블을 타고 상대방 컴퓨터로 전달되는 것이 아니기 때문이다.
보내는 쪽에서는 데이터를 안전하고, 정확하고 신속하게 규격화 즉, 포장하는 방법이 필요하고,
받는쪽에서는 그 데이터를 안전하고 정확하고 신속하게 해석하는 방법이 필요하다.
이러한 기술적 약속을 프로토콜이라고 한다.

3. 계층 구조

네트워크 상에서 여러 컴퓨터가 데이터를 주고받으려면 이들을 서로 연동할 수 있도록 표준화된 인터페이스를 지원해야 한다.
계층 구조는 네트워크뿐만 아니라 운영체제 등 다양한 분야에서 적용되는데, 계층 구조를 사용하는 목적은 분할정복 때문이다. 쉽게 말하면, 어떠한 복잡한 문제를 해결하기 위해 나눠서 생각하면 쉽게 해결 가능하다는 취지

계층 구조의 또 다른 특징은 위, 아래 층으로만 이동할 수 있다는 점이다. 즉, 다음 단계로 넘어가려면 이전 계층이 선행되어야 한다.

4. OSI 7 layer의 장점

  1. 표준 규격
  • 네트워크 구성 요소를 표준화함으로써 서로 다른 통신 장치와의 상호 호환 가능
  1. 계층 별 모듈화 된 것이 하나로 조립/ 융합된 구조
  • 유지관리의 수월성
  • 특정 한 곳에 이상이 생기면 해당 단계만 고쳐서 해결 가능

OSI 7 Layer

PDU

PDU는 각 계층에서 전송되는 단위를 말한다.
1 계층에서는 PDU가 비트라고 생각하기 쉽지만, PDU 라고 말하지 않고, 단지 전기 신호의 흐름일 뿐이다.
2계층: 프레임(Frame)
3계층: 패킷(Packet)
4계층: 세그먼트(Segment)
네트워크 통신 과정을 깊게 이해하기 위해 각각의 계층의 PDU가 다른지 알아야 한다.

물리 계층(Physical Layer)

OSI 모델의 최하위 계층에 속하며, 상위 꼐층에서 전송된 데이터를 물리적인 전송 매체(허브 라우터 케이블)를 통해 다른 시스템에 전기적 신호를 전송하는 역할을 한다.
즉, 기계어를 전기적 신호로 바꿔서 와이어에 실어주는 것

  • 최하위 계층
  • 물리적인 전송 매체를 통하여 상위 계층인 데이터링크 계층으로부터 전달된 비트 스트림을 상대측 물리 계층으로 전달하는 기능을 수행
  • 단지 데이터를 전달 할 뿐, 전송받는 데이터가 무엇인지, 에러가 있는지 알 필요 없음
  • PDU: 비트(1: On, 0:Off)- 전기 신호의 흐름
  • 장비: 통신 케이블, 허브
  • 데이터를 전기적인 신호로 변환해서 주고받는 기능만 수행

네트워크 기기들 사이의 데이터 전송을 하는 역할을 한다.
시스템간의 오류 없는 데이터 전송을 위해 패킷을 프레임으로 구성하여 물리 계층으로 전송한다.
네트워크 계층에서 정보를 받아 주소와 제어 정보를 헤더와 테일에 추가

  • 물리적인 네트워크 사이에 데이터 전송을 담당하는 계층
  • Point to Point 간 신뢰성 있는 전송을 보장하기 위한 계층
  • 물리 계층을 통해 송수신 되는 데이터의 전송 오류를 감지하는 기능과 오류 감지시 재전송 기능 제공
  • MAC 주소를 가지고 통신
    • MAC Address: 컴퓨터 간 데이터를 전송하기 위한 컴퓨터의 물리적 주소
  • PDU: 프레임(Frame)
  • 장비: 브리지, 스위치
  • 프로토콜: 이더넷, LAN, Wifi, MAC

네트워크 계층(Network Layer)

기기에서 데이터그램(Datagram)이 가는 경로를 설정해주는 역할을 한다.
라우팅 알고리즘을 사용하여 최적의 경로를 선택하고 송신 측으로부터 수신 측으로 전송한다.
이때, 전송되는 데이터는 패킷 단위로 분할하여 전송한 후 다시 합쳐진다. 데이터링크 계층이 노드 대 노드 전달을 감독한다면, 네트워크 계층은 각 패킷이 목적지까지 성공적이고 효과적으로 전달되도록 한다.

  • 목적지 네트워크 주소(IP)를 정하고, 그에 따른 경로(Route)를 선택하고, 경로에 따라 패킷을 전달해주는 역할
  • 데이터를 목적지까지 가장 안전하고 빠른 경로로 전달하는 기능(Routing)이 가장 중요 - 프로토콜, 라우팅 기술 등
  • 여러 노드를 거칠때마다 경로를 찾아주는 역할을 하는 계층
  • 다양한 길이의 데이터를 네트워크를 통해 전달하고, 그 과정에서 전송계층이 요구하는 서비스 품질을 제공하기 위한 기능적, 절차적 수단 제공
  • PDU: 패킷(Packet)
  • 장비: 라우터,L3 스위치
  • 프로토콜: IP,ICMP,ARP,RARP

전송 계층(Transport Layer)

전송계층은 발신지에서 목적지 간 제어와 에러를 관리한다. 패킷의 전송이 유효한지 확인하고, 전송에 실패한 패킷을 다시 보내는 것과 같은 신뢰성있는 통신을 보장하며, 헤드에는 세그먼트가 포함된다. 주소 설정, 오류 및 흐름 제어, 다중화를 수행한다.

  • EndPoint(목적지)의 사용자들이 신뢰성 있는 데이터를 주고받게 해주는 역할
    • 오류 검출 및 복구, 흐름 제어와 중복 검사 등 수행
  • 패킷 생성 및 전송
    • 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송
  • 헤더에 포트 번호 포함
    • 포트번호: 프로세스를 구분하기 위해, 프로세스가 가야 할 번호
  • PDU: 세그먼트
  • 장비: 게이트웨이, L4 스위치
  • 프로토콜: TCP, UDP
    • TCP
      • 신뢰성있는 전송 보장(패킷 손실, 중복, 순서 바뀜 등이 없도록 보장 - ACK 사용
      • IP가 처리할 수 있도록 데이터를 여러 개의 패킷으로 나누고, 도착지에서 완전한 데이터로 패킷을 재조립
      • 데이터 전송 단위: 세그먼트
    • UDP
      • 비연결형, 비신뢰성 서비스
      • TCP와 다르게 패킷을 나누고 재조립하는 과정 없이, 수신지에서 제대로 받든 말든 상관하지 않고 데이터를 보내기만 한다 -> 에러와 그에 따른 재전송, 대체는 애플리케이션에서 처리
      • 속도는 빠르다
      • 데이터 전송 단위: 데이터그램(DataGram)

세션 계층(Session Layer)

세션 계층은 통신 세션을 구성하는 계층으로, 포트 번호를 기반으로 연결한다.
통신 장치 간의 상호작용을 설정하고 유지하며 동기화한다. 동시 단방향(Duplex), 반이중(Half-Duplex), 전이중(Full-Duplex) 방식의 통신과 함게 체크 포인팅과 종료, 다시 시작 과정 등을 수행한다.

  • 세션:클라이언트와 웹 서버 간 네트워크 연결이 지속 유지되고 있는 상태
  • 네트워크 상 양쪽 연결을 관리하고 연결을 지속시켜주는 계층
  • 세션 생성, 유지, 종료, 전송 중단 시 복구 기능 수행
    • OS가 세션 계층으로 이 역할 수행
  • TCP/IP 세션을 만들고 없애는 역할
  • 통신하는 사용자들을 동기화하고 오류 복구 명령들을 일괄적으로 다룬다
  • 프로토콜: NetBIOS,SSH,TLS

표현 계층(Presentation Layer)

송신 측과 수신 측 사이에서 데이터의 형식을 정해준다.
받은 데이터 코드 변환, 구문 검색, 인코딩-디코딩 및 암호화, 압축의 과정을 통해 올바른 표준 방식으로 변환

  • 응용 계층으로부터 전달받거나 전송하는 데이터의 인코딩-디코딩 및 암호화 등이 이루어지는 계층
    • 송신 측: 응용계층으로 전달받은 데이터를 인코딩하여 1계층으로 보냄
      • 데이터 - 세그먼트 - 패킷 - 프레임
    • 수신 측: 물리계층을 통하여 전달 받은 데이터를 디코딩하여 위로 보냄
      • 프레임 - 패킷 - 세그먼트 - 데이터
  • 코드 간의 번역을 담당하여 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어준다.
  • 프로토콜: JPG, GIF, SSL

응용 계층(Application Layer)

응용 계층은 사용자와 바로 연결되어 있으며 응용 SW를 도와주는 계층이다.
사용자로부터 정보를 입력받아 하위 계층으로 전달하고 하위 계층에서 전송한 데이터를 사용자에게 전달한다.
파일 전송, DB, 메일 전송 등 여러가지 응용 서비스 네트워크에 연결해주는 역할

  • 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 네트워크에 연결 및 수행하는 역할
  • 사용자와 직접 연결되어 있는 계층
    • 사용자로부터 정보를 입력받아 하위 계층으로 전달하고, 하위 계층에서 전송한 데이터를 사용자에게 전달
    • UI, I/O
  • 프로토콜: HTTP, DNS, Telnet, FTP

전체적인 통신 플로우


1. 발신 측에서 응용 계층부터 시작해 각 계층마다 헤더를 붙여 캡슐화를 진행(인코딩)

  • 데이터 - 세그먼트 - 패킷 - 프레임 - 비트
  1. 수신 측에서는 물리 계층부터 차례로 올라가면서 헤더를 떼 네는 디캡슐레이션을 진행하여 데이터 식별(디코딩)
  • 비트 - 프레임 - 패킷 - 세크먼트 - 데이터
  • 네트워크 계층에서 IP 헤더이 있는 프로토콜 정보를 이용해 데이터가 TCP인지 UDP인지 식별한 후 그에 따른 처리를 전송 계층에서 수행한다.

TCP/IP 모델


OSI 모델이 시장 점유에서 밀리며 새롭게 등장한 TCP/IP 모델
물리 계층 + 데이터 링크 계층 -> Link Layer
응용 계층 + 표현 계층 + 세션 계층 -> 응용 계층

profile
주니어개발자(?)

0개의 댓글