본문 바로가기
CS/Data Communication

Networks Model - TCP/IP 프로토콜

by delee2008 2024. 6. 27.

Networks Model

Protocol Layering

컴퓨터 네트워크에서 데이터 통신을 위한 프로토콜을 계층적으로 구성하는 방법

대표적인 프로토콜 계층화 모델로 OSI모델 TCP/IP모델이 있다

 

특징

  1. 계층 구조:
    • 프로토콜은 서로 관련된 기능을 가진 계층으로 분리됩니다. 각 계층은 하위 계층의 서비스를 활용하고, 상위 계층에게 서비스를 제공합니다.
  2. 모듈화:
    • 각 계층은 모듈화되어 있어, 하나의 계층이 변경되어도 다른 계층에 영향을 미치지 않습니다. 이는 시스템의 유연성을 높여줍니다.
  3. 추상화:
    • 각 계층은 상위 계층에게 추상화된 인터페이스를 제공합니다. 이를 통해 상위 계층은 하위 계층의 구현 상세를 알 필요 없이 서비스를 이용할 수 있습니다.

 

원칙

  1. 계층 분리 원칙:
    • 각 계층은 명확하게 분리되어야 합니다. 이는 하위 계층이 특정 하드웨어나 기술에 종속되지 않고 독립적으로 작동할 수 있도록 합니다.
  2. 상향식 데이터 흐름:
    • 데이터는 상위 계층에서 하위 계층으로 전달됩니다. 각 계층은 상위 계층에서 받은 데이터를 필요한 형식으로 변환하여 하위 계층으로 전달합니다.
  3. 제어 정보의 역흐름:
    • 제어 정보는 하위 계층에서 상위 계층으로 전달됩니다. 이는 각 계층이 서로 통신 상태를 유지하고, 에러나 상황 변화에 대응할 수 있도록 합니다.
  4. 프로토콜의 투명성:
    • 각 계층은 다른 계층이 제공하는 서비스의 내용을 알 필요 없이 해당 서비스를 사용할 수 있어야 합니다. 이를 통해 각 계층이 독립적으로 개발될 수 있고, 유지보수가 쉬워집니다.

TCP/IP Protocol Suite

현재 인터넷에서 사용하는 프로토콜 그룹

 

 

계층1: Physical Layer(물리 계층)

  • 컴퓨터 네트워크에서 가장 하위에 위치한 계층으로 데이터를 전송하기 위한 물리적인 매체를 다룸
  • 디지털 비트 스트림을 전송 매체로 변환하고, 신호를 전송하고, 데이터 전송의 물리적인 특성을 관리
  • 오류 검출과 흐름 제어 등의 기능은 제공하지 않
  1. 데이터 전송 매체:
    • Physical Layer는 데이터를 전송하기 위한 물리적인 매체를 다룹니다. 이 매체는 유선이나 무선으로 나뉘며, 유선 매체로는 동축 케이블, 광섬유 케이블, 트위스트 페어 케이블 등이 있고, 무선 매체로는 무선 주파수, 인터넷 등이 있습니다.
  2. 신호 변환:
    • Physical Layer는 디지털 데이터를 전송 매체에 맞는 아날로그 신호로 변환하거나, 아날로그 신호를 디지털 데이터로 변환합니다. 이 과정을 디지털 변조와 디지털 복조라고 합니다.
  3. 물리적 특성 관리:
    • Physical Layer는 데이터 전송에 필요한 전압, 속도, 케이블의 특성 등과 같은 물리적인 특성을 관리합니다. 이는 데이터가 매체를 통해 안정적으로 전달되도록 보장하는 역할을 합니다.
  4. 비트 동기화:
    • 전송된 비트들을 동기화하여 수신자가 데이터를 올바르게 해석할 수 있도록 합니다. 이 과정은 매체에 따라 다르며, 매체가 오류를 유발하는 환경에 대비하여 오류 감지와 수정 기능을 가질 수도 있습니다.
  5. 케이블의 연결 및 규격:
    • Physical Layer는 네트워크 장비 간에 케이블을 연결하는 방법과 케이블의 규격을 정의합니다. 이는 네트워크 장비들이 서로 통신할 수 있도록 보장합니다.

 

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

  • 컴퓨터 네트워크에서 두 개의 인접한 노드 간의 데이터 전송을 관리하는 계층
  • 물리 계층에서 전송된 데이터를 프레임(Frame) 단위로 조직
  • 오류 검출과 흐름 제어, 접근 제를 수행하여 신뢰성 있는 데이터 전송을 보장
  1. 프레임의 동기화:
    • Data Link Layer는 데이터를 프레임이라는 작은 단위로 나누어 전송
    • 프레임의 시작과 끝을 식별하여 수신측에서 데이터를 올바르게 해석할 수 있도록 동기화
  2. 오류 검출과 수정:
    • 데이터 전송 중 발생할 수 있는 오류를 감지하고 수정하는 기능을 수행
    • 이를 위해 CRC(Cyclic Redundancy Check)나 해밍 코드와 같은 오류 검출 기법이 사용
  3. 흐름 제어:
    • 송신자와 수신자 간의 데이터 전송 속도를 조절하여 데이터의 오버플로우나 언더플로우를 방지하는 기능을 수행
  4. 접근 제어:
    • 공유 매체에서 여러 장치가 동시에 데이터를 전송하는 것을 제어합니다. 이를 위해 CSMA/CD(Carrier Sense Multiple Access with Collision Detection)나 CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)와 같은 프로토콜이 사용
  5. 링크 관리:
    • 네트워크 장비 간의 물리적인 연결과 해제를 관리
    • 주소 지정(Addressing) ⇒ 프레임의 송/수신자의 물리 주소 정보를 헤더에 추가

 

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

  • 논리적인 호스트 간의 통신을 관리하고, 패킷을 목적지까지 전송하기 위한 경로 선택과 라우팅을 수행하는 계층
  • IP 주소를 사용하여 패킷을 목적지로 전달하고, 서로 다른 네트워크 간의 통신을 가능하게 함
  1. 패킷 전송:
    • 데이터를 패킷으로 분할하고, 각 패킷에 목적지 주소를 부여하여 전송 ⇒ 이러한 패킷은 라우터를 통해 목적지로 전달됨
  2. 라우팅:
    • 패킷이 목적지에 도달하기 위한 최적의 경로를 선택하는 역할
  3. 주소 지정:
    • 각 호스트와 라우터에 고유한 IP 주소가 할당됩니다. 이 IP 주소를 사용하여 송신자와 수신자를 식별하고, 데이터를 전달
  4. 오류 검출 및 복구:
    • 패킷 전송 중 발생한 오류를 검출하고, 필요한 경우 복구합니다. 이를 위해 일부 프로토콜은 오류 검출 코드를 포함하고 있어서 패킷이 손상되었는지 여부를 확인할 수 있음
  5. 플로우 제어:
    • 패킷의 흐름을 제어하여 네트워크의 혼잡을 방지하고, 효율적인 전송을 보장. 이를 위해 일부 프로토콜은 플로우 제어 메커니즘을 제공

 

계층4: Transport Layer(전송 계층)

 

  • 송신자와 수신자 간의 신뢰성 있는 데이터 전송을 보장하고, 데이터의 흐름을 제어
  • 주로 TCP와 UDP가 Transport Layer에서 사용되며, 각각 연결 지향적인 서비스와 비연결 지향적인 서비스를 제공
  1. 연결 지향 vs 비연결 지향 프로토콜:
    • Transport Layer는 연결 지향 프로토콜과 비연결 지향 프로토콜 두 가지 유형의 프로토콜을 지원합니다.
      • 연결 지향 프로토콜: 데이터 전송 전에 먼저 연결을 설정하고, 전송이 완료되면 연결을 해제하는 방식입니다. TCP(Transmission Control Protocol)가 이에 해당합니다.
      • 비연결 지향 프로토콜: 각각의 패킷을 독립적으로 전송하며, 송신자와 수신자 간에 논리적인 연결을 설정하지 않습니다. UDP(User Datagram Protocol)가 이에 해당합니다.
  2. 신뢰성 있는 데이터 전송:
    • Transport Layer는 데이터를 신뢰성 있게 전송하기 위해 다양한 기능을 제공합니다.
      • 오류 검출과 복구: 전송된 데이터의 오류를 검출하고, 필요한 경우 재전송을 요청하여 신뢰성을 보장합니다.
      • 순서 제어: 전송된 데이터의 순서를 보장하여 수신측에서 데이터를 올바르게 재조립할 수 있도록 합니다.
      • 흐름 제어: 송신자와 수신자 간의 데이터 흐름을 조절하여 네트워크의 혼잡을 방지하고, 효율적인 전송을 유지합니다.
  3. 다중화와 분할:
    • Transport Layer는 여러 개의 어플리케이션에서 전송되는 데이터를 하나의 네트워크 연결로 전송하기 위해 다중화와 분할 기능을 제공합니다. 이를 통해 여러 어플리케이션 간의 데이터 전송을 효율적으로 관리할 수 있습니다.
  4. 포트와 소켓:
    • Transport Layer에서는 송신자와 수신자를 식별하기 위해 포트 번호를 사용합니다. 이 포트 번호는 소켓(Socket)이라는 개념을 통해 어플리케이션에 할당됩니다. 포트 번호를 통해 Transport Layer는 수신된 데이터를 올바른 어플리케이션에 전달합니다.
  5. 세그먼트(또는 데이터그램) 전송:
    • Transport Layer는 네트워크에서 데이터를 전송하기 위해 세그먼트(또는 데이터그램)라는 작은 단위로 데이터를 분할하고, 이를 네트워크 계층으로 전달합니다. TCP는 세그먼트를 사용하고, UDP는 데이터그램을 사용합니다.

 

계층4: Application Layer(응용 계층)

 

  • 사용자와 컴퓨터 네트워크 간의 상호작용을 담당하는 계층
  • 이 계층은 사용자가 웹 브라우저, 이메일 클라이언트, 파일 전송 프로그램 등의 어플리케이션을 통해 네트워크 서비스를 이용할 수 있도록 지원
  1. 서비스 제공:
    • Application Layer는 다양한 네트워크 서비스를 제공합니다. 예를 들어, 웹 브라우저를 통해 웹 페이지에 접속하거나, 이메일 클라이언트를 통해 이메일을 보내고 받을 수 있습니다.
  2. 사용자 인터페이스 제공:
    • 사용자가 네트워크 서비스를 쉽게 이용할 수 있도록 사용자 인터페이스를 제공합니다. 이는 사용자가 텍스트나 그래픽 등의 형태로 정보를 입력하고 결과를 확인할 수 있도록 돕습니다.
  3. 프로토콜 지원:
    • Application Layer는 다양한 프로토콜을 지원하여 특정 어플리케이션 간의 통신을 가능하게 합니다. 예를 들어, HTTP(Hypertext Transfer Protocol)는 웹 브라우저와 웹 서버 간의 통신을 위한 프로토콜이며, SMTP(Simple Mail Transfer Protocol)는 이메일 전송을 위한 프로토콜입니다.
  4. 메시지 형식 지정:
    • Application Layer는 네트워크로 전송되는 데이터의 형식을 정의합니다. 이는 메시지의 구조와 내용을 결정하고, 송수신자 간의 데이터 교환을 원활하게 합니다.
  5. 인증과 보안:
    • 사용자의 인증(Authentication)을 처리하고, 데이터의 보안을 유지하는 기능을 제공합니다. 이는 사용자의 신원을 확인하고, 데이터의 무결성과 기밀성을 보장하여 보안 문제를 해결합니다.
  6. 응용 프로그램 간 상호작용:
    • Application Layer는 다양한 응용 프로그램 간의 상호작용을 지원합니다. 예를 들어, 파일 전송 프로그램은 파일을 다른 사용자에게 전송할 수 있으며, 웹 애플리케이션은 웹 서버와 상호작용하여 동적인 웹 페이지를 생성합니다.
  7. 네트워크 리소스 관리:
    • 네트워크 리소스를 관리하고, 사용자들이 네트워크를 효율적으로 이용할 수 있도록 지원합니다. 이는 대역폭 제한, 서버 부하 분산, 세션 관리 등의 기능을 포함합니다.

캡슐화(Encapsulation)

각 프로토콜에 적합한 데이터 블록을 만들려고 데이터에 정보를 추가(헤더 추가)하는 것

플래그, 주소, 제어 정보, 오류 검출 부호 등을 부착하는 기능

Decapsulation

캡슐화의 반대 작업을 통해 데이터와 헤더 분리


Addressing

  1. Application Layer에서의 주소 지정:
    • 주로 호스트(컴퓨터) 또는 어플리케이션을 식별하기 위해 사용
    • 주소는 일반적으로 호스트 이름, 도메인 이름 또는 URL과 같은 형식으로 표현
    • 예를 들어, "www.example.com" 또는 "user@example.com"과 같은 주소는 인터넷에서 이메일 클라이언트나 웹 브라우저를 통해 서버에 접속할 때 사용
    • Application Layer의 주소는 사용자의 의도와 행동을 반영하며, 네트워크 내부에서 어떤 경로로 전달되는지에 대한 내용을 포함하지 않음
  2. Data Link Layer에서의 주소 지정:
    • 물리적인 네트워크 환경에서 각 장치(네트워크 카드, 스위치 등)를 식별하기 위해 사용
    • 주로 MAC(Media Access Control) 주소가 사용되며, 이는 네트워크 인터페이스 카드에 고유하게 할당된 하드웨어 주소
    • MAC 주소는 48비트로 구성되어 있으며, 일반적으로 16진수로 표현됩니다. 예를 들어, "00:1A:2B:3C:4D:5E".
    • 물리적인 네트워크에서 데이터가 어디로 전송되어야 하는지를 결정
  3. IP 주소 (네트워크 계층):
    • 네트워크 상에서 각 호스트(컴퓨터)와 라우터(중계기)를 식별하는 데 사용
    • IPv4와 IPv6 두 가지 주소 체계
    • IPv4 주소는 32비트로 구성되며 보통 4개의 8비트 숫자로 나타냅니다. 예를 들어, "192.168.0.1".
    • IPv6 주소는 128비트로 구성되며 16진수로 표기됩니다. 예를 들어, "2001:0db8:85a3:0000:0000:8a2e:0370:7334".
    • IP 주소는 네트워크 ID와 호스트 ID로 구성됩니다. 이를 통해 호스트가 어느 네트워크에 속하는지와 해당 네트워크 안에서 어떤 호스트인지를 식별
  4. 포트 번호 (전송 계층):
    • 컴퓨터 내에서 여러 개의 어플리케이션이 동시에 통신할 수 있도록 지원
    • TCP와 UDP 모두 16비트 포트 번호를 사용하며, 범위는 0에서 65535까지
    • 잘 알려진 포트 번호(0 ~ 1023)는 특정 서비스에 할당되어 있습니다. 예를 들어, HTTP의 포트 번호는 80이며, HTTPS의 포트 번호는 443
    • 포트 번호는 송신자와 수신자 간의 통신이 목적지 어플리케이션에 제대로 전달되도록 도와줌

multiplexing&demultiplexing

네트워크 통신에서 여러 개의 데이터 스트림을 하나의 통로를 통해 전송하고, 그것들을 수신 측에서 다시 원래의 개별적인 데이터로 분리하는 과정

  1. Multiplexing (다중화):
    • 여러 개의 데이터 스트림을 하나의 통로를 통해 전송하는 과정
    • Multiplexing을 통해 네트워크 대역폭을 효율적으로 사용할 수 있음
  2. Demultiplexing (다중화 해제):
    • 하나의 통로로 전송된 데이터 스트림을 원래의 개별적인 데이터로 분리하는 과정
    • 수신 측에서 전송된 데이터를 다시 각각의 수신자에게 전달하기 위해 사용
    • 수신 측에서는 데이터의 소스를 식별하고, 해당되는 데이터 스트림으로 데이터를 전달하기 위해 Demultiplexing을 수행

OSI Model

  • 7개의 계층 ⇒ 현재 잘 사용 안함

 

'CS > Data Communication' 카테고리의 다른 글

Date Link Control(DLC)  (1) 2024.07.03
Data-Link-Layer  (0) 2024.07.02
Error Detection and Correction  (1) 2024.07.01
Network와 교환(Switching)  (0) 2024.06.25
데이터 통신이란?  (0) 2024.06.25