Networks Model
Protocol Layering
컴퓨터 네트워크에서 데이터 통신을 위한 프로토콜을 계층적으로 구성하는 방법
대표적인 프로토콜 계층화 모델로 OSI모델 TCP/IP모델이 있다
특징
- 계층 구조:
- 프로토콜은 서로 관련된 기능을 가진 계층으로 분리됩니다. 각 계층은 하위 계층의 서비스를 활용하고, 상위 계층에게 서비스를 제공합니다.
- 모듈화:
- 각 계층은 모듈화되어 있어, 하나의 계층이 변경되어도 다른 계층에 영향을 미치지 않습니다. 이는 시스템의 유연성을 높여줍니다.
- 추상화:
- 각 계층은 상위 계층에게 추상화된 인터페이스를 제공합니다. 이를 통해 상위 계층은 하위 계층의 구현 상세를 알 필요 없이 서비스를 이용할 수 있습니다.
원칙
- 계층 분리 원칙:
- 각 계층은 명확하게 분리되어야 합니다. 이는 하위 계층이 특정 하드웨어나 기술에 종속되지 않고 독립적으로 작동할 수 있도록 합니다.
- 상향식 데이터 흐름:
- 데이터는 상위 계층에서 하위 계층으로 전달됩니다. 각 계층은 상위 계층에서 받은 데이터를 필요한 형식으로 변환하여 하위 계층으로 전달합니다.
- 제어 정보의 역흐름:
- 제어 정보는 하위 계층에서 상위 계층으로 전달됩니다. 이는 각 계층이 서로 통신 상태를 유지하고, 에러나 상황 변화에 대응할 수 있도록 합니다.
- 프로토콜의 투명성:
- 각 계층은 다른 계층이 제공하는 서비스의 내용을 알 필요 없이 해당 서비스를 사용할 수 있어야 합니다. 이를 통해 각 계층이 독립적으로 개발될 수 있고, 유지보수가 쉬워집니다.
TCP/IP Protocol Suite
현재 인터넷에서 사용하는 프로토콜 그룹
계층1: Physical Layer(물리 계층)
- 컴퓨터 네트워크에서 가장 하위에 위치한 계층으로 데이터를 전송하기 위한 물리적인 매체를 다룸
- 디지털 비트 스트림을 전송 매체로 변환하고, 신호를 전송하고, 데이터 전송의 물리적인 특성을 관리
- 오류 검출과 흐름 제어 등의 기능은 제공하지 않
- 데이터 전송 매체:
- Physical Layer는 데이터를 전송하기 위한 물리적인 매체를 다룹니다. 이 매체는 유선이나 무선으로 나뉘며, 유선 매체로는 동축 케이블, 광섬유 케이블, 트위스트 페어 케이블 등이 있고, 무선 매체로는 무선 주파수, 인터넷 등이 있습니다.
- 신호 변환:
- Physical Layer는 디지털 데이터를 전송 매체에 맞는 아날로그 신호로 변환하거나, 아날로그 신호를 디지털 데이터로 변환합니다. 이 과정을 디지털 변조와 디지털 복조라고 합니다.
- 물리적 특성 관리:
- Physical Layer는 데이터 전송에 필요한 전압, 속도, 케이블의 특성 등과 같은 물리적인 특성을 관리합니다. 이는 데이터가 매체를 통해 안정적으로 전달되도록 보장하는 역할을 합니다.
- 비트 동기화:
- 전송된 비트들을 동기화하여 수신자가 데이터를 올바르게 해석할 수 있도록 합니다. 이 과정은 매체에 따라 다르며, 매체가 오류를 유발하는 환경에 대비하여 오류 감지와 수정 기능을 가질 수도 있습니다.
- 케이블의 연결 및 규격:
- Physical Layer는 네트워크 장비 간에 케이블을 연결하는 방법과 케이블의 규격을 정의합니다. 이는 네트워크 장비들이 서로 통신할 수 있도록 보장합니다.
계층2: Data Link Layer(데이터 링크 계층)
- 컴퓨터 네트워크에서 두 개의 인접한 노드 간의 데이터 전송을 관리하는 계층
- 물리 계층에서 전송된 데이터를 프레임(Frame) 단위로 조직
- 오류 검출과 흐름 제어, 접근 제를 수행하여 신뢰성 있는 데이터 전송을 보장
- 프레임의 동기화:
- Data Link Layer는 데이터를 프레임이라는 작은 단위로 나누어 전송
- 프레임의 시작과 끝을 식별하여 수신측에서 데이터를 올바르게 해석할 수 있도록 동기화
- 오류 검출과 수정:
- 데이터 전송 중 발생할 수 있는 오류를 감지하고 수정하는 기능을 수행
- 이를 위해 CRC(Cyclic Redundancy Check)나 해밍 코드와 같은 오류 검출 기법이 사용
- 흐름 제어:
- 송신자와 수신자 간의 데이터 전송 속도를 조절하여 데이터의 오버플로우나 언더플로우를 방지하는 기능을 수행
- 접근 제어:
- 공유 매체에서 여러 장치가 동시에 데이터를 전송하는 것을 제어합니다. 이를 위해 CSMA/CD(Carrier Sense Multiple Access with Collision Detection)나 CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)와 같은 프로토콜이 사용
- 링크 관리:
- 네트워크 장비 간의 물리적인 연결과 해제를 관리
- 주소 지정(Addressing) ⇒ 프레임의 송/수신자의 물리 주소 정보를 헤더에 추가
계층3: Network Layer(네트워크 계층)
- 논리적인 호스트 간의 통신을 관리하고, 패킷을 목적지까지 전송하기 위한 경로 선택과 라우팅을 수행하는 계층
- IP 주소를 사용하여 패킷을 목적지로 전달하고, 서로 다른 네트워크 간의 통신을 가능하게 함
- 패킷 전송:
- 데이터를 패킷으로 분할하고, 각 패킷에 목적지 주소를 부여하여 전송 ⇒ 이러한 패킷은 라우터를 통해 목적지로 전달됨
- 라우팅:
- 패킷이 목적지에 도달하기 위한 최적의 경로를 선택하는 역할
- 주소 지정:
- 각 호스트와 라우터에 고유한 IP 주소가 할당됩니다. 이 IP 주소를 사용하여 송신자와 수신자를 식별하고, 데이터를 전달
- 오류 검출 및 복구:
- 패킷 전송 중 발생한 오류를 검출하고, 필요한 경우 복구합니다. 이를 위해 일부 프로토콜은 오류 검출 코드를 포함하고 있어서 패킷이 손상되었는지 여부를 확인할 수 있음
- 플로우 제어:
- 패킷의 흐름을 제어하여 네트워크의 혼잡을 방지하고, 효율적인 전송을 보장. 이를 위해 일부 프로토콜은 플로우 제어 메커니즘을 제공
계층4: Transport Layer(전송 계층)
- 송신자와 수신자 간의 신뢰성 있는 데이터 전송을 보장하고, 데이터의 흐름을 제어
- 주로 TCP와 UDP가 Transport Layer에서 사용되며, 각각 연결 지향적인 서비스와 비연결 지향적인 서비스를 제공
- 연결 지향 vs 비연결 지향 프로토콜:
- Transport Layer는 연결 지향 프로토콜과 비연결 지향 프로토콜 두 가지 유형의 프로토콜을 지원합니다.
- 연결 지향 프로토콜: 데이터 전송 전에 먼저 연결을 설정하고, 전송이 완료되면 연결을 해제하는 방식입니다. TCP(Transmission Control Protocol)가 이에 해당합니다.
- 비연결 지향 프로토콜: 각각의 패킷을 독립적으로 전송하며, 송신자와 수신자 간에 논리적인 연결을 설정하지 않습니다. UDP(User Datagram Protocol)가 이에 해당합니다.
- Transport Layer는 연결 지향 프로토콜과 비연결 지향 프로토콜 두 가지 유형의 프로토콜을 지원합니다.
- 신뢰성 있는 데이터 전송:
- Transport Layer는 데이터를 신뢰성 있게 전송하기 위해 다양한 기능을 제공합니다.
- 오류 검출과 복구: 전송된 데이터의 오류를 검출하고, 필요한 경우 재전송을 요청하여 신뢰성을 보장합니다.
- 순서 제어: 전송된 데이터의 순서를 보장하여 수신측에서 데이터를 올바르게 재조립할 수 있도록 합니다.
- 흐름 제어: 송신자와 수신자 간의 데이터 흐름을 조절하여 네트워크의 혼잡을 방지하고, 효율적인 전송을 유지합니다.
- Transport Layer는 데이터를 신뢰성 있게 전송하기 위해 다양한 기능을 제공합니다.
- 다중화와 분할:
- Transport Layer는 여러 개의 어플리케이션에서 전송되는 데이터를 하나의 네트워크 연결로 전송하기 위해 다중화와 분할 기능을 제공합니다. 이를 통해 여러 어플리케이션 간의 데이터 전송을 효율적으로 관리할 수 있습니다.
- 포트와 소켓:
- Transport Layer에서는 송신자와 수신자를 식별하기 위해 포트 번호를 사용합니다. 이 포트 번호는 소켓(Socket)이라는 개념을 통해 어플리케이션에 할당됩니다. 포트 번호를 통해 Transport Layer는 수신된 데이터를 올바른 어플리케이션에 전달합니다.
- 세그먼트(또는 데이터그램) 전송:
- Transport Layer는 네트워크에서 데이터를 전송하기 위해 세그먼트(또는 데이터그램)라는 작은 단위로 데이터를 분할하고, 이를 네트워크 계층으로 전달합니다. TCP는 세그먼트를 사용하고, UDP는 데이터그램을 사용합니다.
계층4: Application Layer(응용 계층)
- 사용자와 컴퓨터 네트워크 간의 상호작용을 담당하는 계층
- 이 계층은 사용자가 웹 브라우저, 이메일 클라이언트, 파일 전송 프로그램 등의 어플리케이션을 통해 네트워크 서비스를 이용할 수 있도록 지원
- 서비스 제공:
- Application Layer는 다양한 네트워크 서비스를 제공합니다. 예를 들어, 웹 브라우저를 통해 웹 페이지에 접속하거나, 이메일 클라이언트를 통해 이메일을 보내고 받을 수 있습니다.
- 사용자 인터페이스 제공:
- 사용자가 네트워크 서비스를 쉽게 이용할 수 있도록 사용자 인터페이스를 제공합니다. 이는 사용자가 텍스트나 그래픽 등의 형태로 정보를 입력하고 결과를 확인할 수 있도록 돕습니다.
- 프로토콜 지원:
- Application Layer는 다양한 프로토콜을 지원하여 특정 어플리케이션 간의 통신을 가능하게 합니다. 예를 들어, HTTP(Hypertext Transfer Protocol)는 웹 브라우저와 웹 서버 간의 통신을 위한 프로토콜이며, SMTP(Simple Mail Transfer Protocol)는 이메일 전송을 위한 프로토콜입니다.
- 메시지 형식 지정:
- Application Layer는 네트워크로 전송되는 데이터의 형식을 정의합니다. 이는 메시지의 구조와 내용을 결정하고, 송수신자 간의 데이터 교환을 원활하게 합니다.
- 인증과 보안:
- 사용자의 인증(Authentication)을 처리하고, 데이터의 보안을 유지하는 기능을 제공합니다. 이는 사용자의 신원을 확인하고, 데이터의 무결성과 기밀성을 보장하여 보안 문제를 해결합니다.
- 응용 프로그램 간 상호작용:
- Application Layer는 다양한 응용 프로그램 간의 상호작용을 지원합니다. 예를 들어, 파일 전송 프로그램은 파일을 다른 사용자에게 전송할 수 있으며, 웹 애플리케이션은 웹 서버와 상호작용하여 동적인 웹 페이지를 생성합니다.
- 네트워크 리소스 관리:
- 네트워크 리소스를 관리하고, 사용자들이 네트워크를 효율적으로 이용할 수 있도록 지원합니다. 이는 대역폭 제한, 서버 부하 분산, 세션 관리 등의 기능을 포함합니다.
캡슐화(Encapsulation)
각 프로토콜에 적합한 데이터 블록을 만들려고 데이터에 정보를 추가(헤더 추가)하는 것
플래그, 주소, 제어 정보, 오류 검출 부호 등을 부착하는 기능
Decapsulation
캡슐화의 반대 작업을 통해 데이터와 헤더 분리
Addressing
- Application Layer에서의 주소 지정:
- 주로 호스트(컴퓨터) 또는 어플리케이션을 식별하기 위해 사용
- 주소는 일반적으로 호스트 이름, 도메인 이름 또는 URL과 같은 형식으로 표현
- 예를 들어, "www.example.com" 또는 "user@example.com"과 같은 주소는 인터넷에서 이메일 클라이언트나 웹 브라우저를 통해 서버에 접속할 때 사용
- Application Layer의 주소는 사용자의 의도와 행동을 반영하며, 네트워크 내부에서 어떤 경로로 전달되는지에 대한 내용을 포함하지 않음
- Data Link Layer에서의 주소 지정:
- 물리적인 네트워크 환경에서 각 장치(네트워크 카드, 스위치 등)를 식별하기 위해 사용
- 주로 MAC(Media Access Control) 주소가 사용되며, 이는 네트워크 인터페이스 카드에 고유하게 할당된 하드웨어 주소
- MAC 주소는 48비트로 구성되어 있으며, 일반적으로 16진수로 표현됩니다. 예를 들어, "00:1A:2B:3C:4D:5E".
- 물리적인 네트워크에서 데이터가 어디로 전송되어야 하는지를 결정
- 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로 구성됩니다. 이를 통해 호스트가 어느 네트워크에 속하는지와 해당 네트워크 안에서 어떤 호스트인지를 식별
- 포트 번호 (전송 계층):
- 컴퓨터 내에서 여러 개의 어플리케이션이 동시에 통신할 수 있도록 지원
- TCP와 UDP 모두 16비트 포트 번호를 사용하며, 범위는 0에서 65535까지
- 잘 알려진 포트 번호(0 ~ 1023)는 특정 서비스에 할당되어 있습니다. 예를 들어, HTTP의 포트 번호는 80이며, HTTPS의 포트 번호는 443
- 포트 번호는 송신자와 수신자 간의 통신이 목적지 어플리케이션에 제대로 전달되도록 도와줌
multiplexing&demultiplexing
네트워크 통신에서 여러 개의 데이터 스트림을 하나의 통로를 통해 전송하고, 그것들을 수신 측에서 다시 원래의 개별적인 데이터로 분리하는 과정
- Multiplexing (다중화):
- 여러 개의 데이터 스트림을 하나의 통로를 통해 전송하는 과정
- Multiplexing을 통해 네트워크 대역폭을 효율적으로 사용할 수 있음
- 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 |