본문 바로가기
  • 시 쓰는 개발자
CS 개념/네트워크

데이터 통신 정리 (2) - Service, Protocol, Service의 분류(COC, CLS), OSI, TCP/IP

by poetDeveloper 2023. 9. 28.

(학교 수업 내용을 정리한 글입니다.)

 

Network Software

  • 디자인 복잡도를 줄이기 위해 분할정복 접근을 활용해 layer를 쌓은 구조이다. → Hierachy 구조
  • 하위 layer는 상위 layer에 서비스를 제공하여 새로운 가상 머신을 만들어낸다.
  • 하위 layer 의 기술적인 디테일을 상위 layer에 숨긴다. → 추상화

용어 정리

  • Service : Layer가 하는 일을 정의. 무엇을(what) 해야하는지에 대해 내용이다.
  • Interface : 서비스를 제공하는 장소. 수직적으로 서비스에 어떻게(how) 접근하는지 알려준다.
  • Protocol : agreement, rules, grammer 같은 맥락이다. layer들 사이에서 통신이 어떻게 진행되는지에 대한 약속이다. 수평적으로 서비스를 어떻게 구현하는지 정의.
  • Network Architecture : layer와 protocol의 모음
  • 정리하면, 데이터의 이동은 수직적으로, Virtual Communication(통신)은 수평적으로 이루어진다. 데이터와 통신은 별개이다.

Protocol

  • Syntax(문법) + Semantis(의미) + Actions(행동)
  • 프로토콜은 데이터를 보낼 때 제어정보를 맨 앞에 실어서 보낸다. field는 헤더의 제어정보에 있는 정보들을 말한다.
  • Syntax : 어떤 필드를 포함하는지, 그것의 크기와 형식은 어떠한지
  • Semantis : 각 필드의 값이 무엇을 의미하는지
  • Actions : 만약 not-ok 메세지를 받으면 재전송을 하는 등의 행동
  • 보내는 메세지가 너무 크면 이를 쪼개기도 한다. 이를 Segmentation이라고 하고, 쪼개면서 메세지에 대한 새로운 헤더들이 생성되기도 한다. 아래 그림의 맨 뒤 T는 trailer를 의미한다. 이는 Error Detection을 위한 code를 만들 때 주로 사용하며, 앞에 붙이면 Memory Read가 필요하다.

Service

  • 하위 계층에서 얻을 수 있는 것에 대한 개념 설명이다.
  • Primitive(System Call)의 모음으로 구현 된 인터페이스에게 제공받은 것이다.
  • 여기서 말하는 Primitive는 각 서비스에 어떤 작업수행을 요청 또는 Peer에 의해 수행된 작업 결과 요청이다.

Service와 Protocol 사이 관계

  • Service : layer 사이에서 상위 layer에게 제공하는 Primitive의 집합
  • Protocol : 한 layer 상에서 또는 Peer간에 교환되는 Packet의 형식과 의미를 규정하는 규칙들의 집합

Service의 분류 (1) Connection-Oriented Service , Connectionless Service

  • Connection-Oriented Service
  • 전화망을 모델링 한 것이다.
  • Packet이 보낸 순서대로 도착한다.
  • tube나 Circuit처럼 동작한다. 그래서 Data가 정해진 통로를 통해서 막힘이 없이 전달된다.
  • Connection 확립(통화 연결음) → Data Transfer(서로 대화)  → Release(전화 끊기)
  • Connectionless Service
  • 우편 시스템을 모델링 한 것이다.
  • Packet이 보낸 순서대로 도착하지 않을 수도 있다.
  • 통로 설정 없이 바로 보내진다.
  • Packet이 full destination address를 들고다닌다.

Service의 분류 (2) Reliability , Message sequence -vs- byte stream

  • Reliability
  • Reliable (acknowledged) : Data가 잘 도착했다고 피드백을 보내는 것.
  • Unreliable : 위에처럼 Acknowledge를 받아야 하는 Reliable 서비스는 Cast가 높다. 그래서 작은 Bit loss  정도는 문제로 삼지 않고 빠른 전달이 더 중요할 때 필요함. 즉, 조금 손실 되더라도 빠르게 전달하는게 중요할 때 사용.
  • Message sequence -vs- Byte stream
  • Message sequence : 메세지의 boundary를 보장함. 즉, 메세지가 쪼개지거나 합쳐지지 않음.
  • Byte stream : 메세지가 합쳐지거나 쪼개질 수 있고, 그 단위가 byte 이다.

Network Architecture

  • OSI 모델 7계층
  • 이론적이다.
  • 주로 다른 모델과 비교할 때 기준으로써 사용된다.
  • 각 layer가 무엇을 해야하는지에 대해서만 기술하고, Service와 Protocol에 대해서는 관심이 없다.
  • TCP / IP 모델 4계층
  • 구체적이고, 실제 사용된다.
  • 모델로써의 가치는 떨어진다.

OSI 7 Layer

  • Layer수가 많아질수록 function call이 많아지고, 속도가 저하된다. 하지만 모듈성은 높아진다. 즉, 모듈성과 속도는 trade-off 관계이다.

1 Physial Layer ( Hardware와 가깝다. )

  • Bit단위의 추상화가 이루어진다.
  • 기계적이고 전기적인 일을 한다.
  • 광섬유, 연선 등의 Physical 엔티티를 Logical 엔티티로 만든다.
  • Data(logical) Signal(physical) 데이터를 물리적인 신호로 변환한다.
  • 전달 매체에 맞는 신호로 변환하기 위해서 기계적, 전기적, 타이밍 등의 문제를 다룸.

2 Data Link Layer ( 이웃-이웃 사이의 문제 )

  • Physical Layer에서 제공하는 Unreliable bit pipe abstraction으로 Network Layer로 향하는 Reliable bit pipe를 만듦.
  • Reliability를 제공하기 다음과 같은 일을 한다. (Point to Point인 경우에 해당한다.)
  • Bit Framing : 처음과 끝을 표시하여 일련의 bit들을 transmission 단위로 Packing한다. 이렇게 하면 좋은 이유가, 오류가 난다면 해당 frame만 재전송 하면 됨.
  • Error Detection(오류검출)과 Error Correction(교정) 알고리즘 수행
  • Segmentation(쪼개기), Sequencing(순서설정), Acknowlegment(잘 받았는지 알려줌)를 제공한다
  • Flow control : Receiver에 비해 Sender가 너무 빨리 보내지 않게 조절. Receiver가 준비 됐을 때만 보내도록 함.
  • Broadcast network 에서는 Channel access control을 수행하는데, 누가 주어진 시간에 공유 채널을 사용할 것인지를 결정해준다. 

3 Network Layer ( Source - Destination 사이의 관계 )

  • Data Link Layer로부터 받은 Reliable bit pipe 서비스를 연결해서 Source와 Destination 사이에 논리적인 링크가 있는 것 처럼 추상화 한다. 즉, 2계층에서 시작과 끝에 Link to Link로 Bit pipe를 설정해서 [ 시작 - 링크1 -  링크2 - ... - 끝 ] 이러한 구조로 되어 있다면, End to End에서는 [ 시작 - 링크 - 끝 ] 이렇게 하나의 링크만 있는 것 같은 추상화 작업을 해준다.
  • End to End Bit Pipe Abstraction을 제공하기 위해 다음과 같은 작업을 한다.
  • Routing : 길찾기
  • Congestion Control : 라우터에 너무 많은 데이터가 몰리면 버퍼 오버플로우가 발생하므로, 데이터 주입을 줄여준다.
  • Quality of Service (QoS) : 데이터에 우선순위를 부여한다. → 스케쥴링 작업
  • Internetworking : 여러 네트워크에 연결해준다.

4 Transport Layer

  • 3계층에서 만든 Unreliable End to End Bit Pipe에다가 Error Control, Flow Control, multiplex(인풋이 여러개, 아웃풋이 1개, 즉 공유를 위함)를 얹어서 결과적으로 Reliable하고 효율적인 End to End 링크가 생성된다.
  • Flow control 대상 : End to End
  • App의 요구에 맞춰서 여러 Type의 서비스를 제공한다. ex) TCP : Reluable  /  UDP : Unreliable, but Fast Transmission

5 Session Layer

  • 4계층에서 제공하는 서비스 + 고급 서비스
  • Library 형태로 제공하고, 사용자가 원할 때만 사용한다.
  • Full-duplex service를 사용한다.

6 Presentation Layer

  • 전송되는 정보의 Syntax나 Semantics와 관련

7 Application Layer ( 사용자와 가깝다 )

  • 네트워크 appliation 지원 (http, file transfer, electronic, mail ... ETC)

 

TCP / IP

  • TCP / IP모델은 4계층으로, 7계층인 OSI보다 간단하다.
  • 구현은 잘 되어있지만 모델로는 적절하지 않다.

OSI  ,  TCP / IP 모델의 단점

  • OSI 모델
  • 이론은 좋지만 실제 사용하지 않는다.
  • 문제점
  1. 안좋은 타이밍 : OSI가 표준화 되었을 때 이미 TCP가 구현되기 시작해서 OSI는 투자받지 못했다.
  2. 너무 복잡하고 기능이 중복된다.
  3. 너무 크고 느리다.
  • TCP / IP 모델
  • Service, interface, protocol 간의 구분이 모호하다.
  • 1물리 계층과 2데이터링크 계층의 구분이 없다.