[CS-네트워크] 프로토콜

Smite·2023년 9월 24일

CS

목록 보기
6/12

도로에서 교통을 통제하기 위해 빨간 불, 노란 불, 초록 불과 같은 신호등이 존재한다. 신호등은 어떤 차량이 움직일지, 어떤 차량이 멈추어야 하는지를 규정하는 중요한 역할을 한다. 교통 신호를 규정하는 신호등이 없다면 교통에 혼란을 겪을 것이다. 이와 유사하게 컴퓨터와 기기 간에 데이터를 원활하게 주고받기 위해 사용되는 것이 바로 프로토콜(Protocol)인데, 프로토콜에 대한 내용은 다음과 같다.


프로토콜

프로토콜은 컴퓨터와 서버, 컴퓨터와 컴퓨터, 또는 애플리케이션과 애플리케이션 간에 통신을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신 규약이다.

프로토콜 구성 요소

프로토콜은 구문(Syntax), 의미(Semantics), 타이밍(Time) 세 가지 구성 요소로 구성되어 있다.

  • 구문(Syntax)

    프로토콜의 구문은 전송하고자 하는 데이터의 형식, 부호화, 신호 레벨 등을 규정한다. 예를 들어, JSON(JavaScript Object Notation)은 데이터를 표현하는 방식 중 하나인데, JSON의 구문은 다음과 같다.
{
    "name": "Smite",
    "age": 20,
    "city": "New York"
}

이 예제에서는 JSON 형식을 사용하여 사용자 정보를 표현하는데, "name", "age", "city"와 같은 키와 해당 값들이 정해진 구문을 따르고 있다. 프로토콜은 데이터를 이러한 형식으로 정의하고, 이를 사용하여 데이터를 주고받는 방법을 정의한다.

  • 의미(Semanfics)

    프로토콜의 의미는 두 기기 간의 효율적이고 정확한 정보 전송을 위해 전송 조작, 데이터 해석, 오류 제어, 상태 관리 등의 제어 정보를 규정한다. 예를 들면, TCP(Transmission Control Protocol)는 데이터의 안정적인 전송을 보장하기 위한 프로토콜로, 데이터 전송의 순서, 오류 복구, 중복 데이터 처리 등의 의미를 정의한다.

  • 타이밍(Timing)

    통신 속도, 메시지의 순서 제어 등을 규정한다. 예를 들어, TCP 프로토콜은 데이터 패킷의 전송 및 재전송 시간과 관련된 시간적인 측면을 다룬다.

프로토콜의 기능

  1. 주소 지정(Addressing)

    통신을 위해서는 통신 상대방의 주소를 알아야 한다. 프로토콜은 각 통신 계층에 맞는 주소 체계를 정의하여 데이터를 전송할 대상을 식별한다. 이 주소 지정 기능은 통신의 기초 중 하나이며, 예를 들면 IP 주소나 MAC 주소가 이에 해당된다.

  2. 순서 제어(Sequence Control)

    데이터가 전송될 때, 이 데이터들은 특정한 순서를 가져야 하는 경우가 있다. 특히 연결 지향형 프로토콜에서는 데이터의 순서를 관리하여 데이터가 올바른 순서로 도착하도록 보장한다. 이는 흐름 제어, 혼잡 제어 및 오류 제어와 관련된 중요한 역할을 한다.

  3. 단편화 및 재조합(Fragmentation & Reassembly)

    큰 데이터를 한 번에 전송하는 것은 비효율적일 수 있다. 프로토콜은 데이터를 작은 단위로 분할하여 전송하고, 수신 측에서는 이러한 단편화된 데이터를 재조합하여 원래의 데이터로 복구한다. 이를 통해 전송 효율성을 높이고 대용량 데이터 전송이 가능해진다.

  4. 캡슐화(Encapsulation)

    통신은 여러 계층으로 구성되며, 각 계층은 특정한 역할을 수행한다. 프로토콜은 데이터를 각 계층을 통과시키면서 필요한 정보를 추가하고, 수신 측에서는 이 정보를 제거하여 데이터를 추출한다. 이 과정을 캡슐화라고 하며, 각 계층에서 데이터를 추가하거나 제거한다.

  5. 연결 제어(Connection Control)

    통신은 연결 지향형과 비연결 지향형 두 가지 방식으로 이루어진다. 연결 제어는 연결 지향형 통신에서 연결 설정, 데이터 전송, 연결 해제 등을 다룬다. 예를 들어, TCP는 연결 지향형 프로토콜로, 3-way 핸드셰이킹을 통해 연결을 설정하고, 데이터를 안정적으로 전송한다.

  6. 흐름 제어(Flow Control)

    송신 측과 수신 측 간의 데이터 전송 속도 차이로 인한 데이터 유실을 방지하기 위해 흐름 제어를 수행한다. 이는 수신 측이 데이터를 처리할 수 있는 속도로 데이터를 송신 측에서 전송하는 것을 조절하는 메커니즘을 말한다.

  7. 오류 제어(Error Control)

    데이터를 교환할 때, 데이터의 손상 또는 유실을 방지하고, 손상된 데이터를 식별하고 복구하기 위한 기법으로 오류 제어가 사용된다. 이는 데이터의 무결성을 유지하고 품질을 보장하는 데 중요하다.

  8. 동기화(Synchronization)

    송신 측과 수신 측 간의 데이터 전송 시점을 정확하게 일치시키는 것은 중요하다. 특히 비동기 통신에서는 데이터의 동기화가 필수적이다.

  9. 다중화(Multiplexing)

    다중화는 하나의 통신 선로에서 여러 시스템이 동시에 통신할 수 있도록 하는 기술이다. 이는 효율적인 자원 활용을 가능하게 한다.

  10. 전송 서비스

    프로토콜은 데이터 전송에 대한 다양한 서비스를 제공한다. 이 서비스에는 우선순위 결정, 서비스 등급 설정 등이 포함된다. 예를 들어, QoS (Quality of Service)를 통해 특정 데이터에 대한 서비스 품질을 관리할 수 있다.

프로토콜은 이러한 다양한 기능을 통해 통신 시스템 간의 상호 운용성을 보장하고 데이터 교환을 원활하게 수행할 수 있도록 한다. 이러한 표준화된 규약은 서로 다른 시스템 간에 효율적인 데이터 통신 및 네트워크 상호 작용을 가능하게 하며, 다양한 응용 분야에서 핵심적으로 활용된다.


📖CS Index

0개의 댓글