본문 바로가기

Computer Science/네트워크

[쉽게 배우는 데이터 통신과 네트워크] CH2. 네트워크 모델

반응형
SMALL

01. 계층 구조의 개념

프로토콜의 설계 과정은 모듈(Module)화를 통하여 이루어진다. 이렇게 함으로써 사용자에게 더 편리하고 간편한 통신 기능을 제공할 수 있다.

 

1. 계층적 모듈 구조

모듈은 독립적으로 동작하면서도 상호 유기적으로 통합될 수 있어야 한다. 그러므로 모듈 사이에는 적절한 인터페이스가 필요하다.

 

1.1 모듈화

  • 복잡한 시스템을 기능별로 모듈화하면 시스템 구조가 단순해져서 전체 시스템을 이해하기 쉽다.
  • 각 단위 모듈이 독립적인 기능을 수행하기 때문에 고장이나 업그레이드 등의 상황에 손쉽게 대처할 수 있다.

모듈화

  • (a)처럼 전체 시스템을 기능에 따라 3부분으로 나눠 설계할 수 있다.
    • 각 모듈은 유기적으로 연결되어야 한다.
    • B 모듈은 A 모듈과 곡선 모양의 인터페이스로 연결되고, C 모듈과는 톱니 모양의 인터페이스로 연결된다. A와 C 모듈은 직접 연결되는 인터페이스가 없고, B 모듈을 통해 간접적인 관계를 유지한다.
  • (b)처럼 오류가 발생한 B 모듈만 교체해서 버전2로 대체할 수 있다.
  • (c)처럼 성능이나 기능을 개선해 버전3으로 교체할 수도 있다.

 

1.2 계층 구조

계층 구조

  • (1) 계층 구조에서는 상위 계층이 하위 계층에 특정 서비스를 요청하는 방식으로 동작한다.
  • (2) 요청을 받은 하위 계층은 해당 서비스를 실행하여 그 결과를 상위 계층에 돌려준다.

 

모듈화된 계층 구조 프로토콜의 장점

  • 전체 시스템을 이해하기 쉽고, 시스템을 설계하고 구현하기도 편리하다.
  • 모듈의 독립성은 전체 시스템의 구조를 단순하게 만들어준다.
  • 대칭 구조에서는 통신 양단에 위치하는 동일 계층 사이의 프로토콜을 단순화할 수 있다.
  • 상하 혹은 좌우 계층 간의 인터페이스를 유지하면 특정 계층의 내부 변경이 다른 모듈의 동작에 영향을 미치지 않는다.

 


2. 프로토콜 설계 시 고려 사항

2.1 주소 표현

  • 시스템을 구분하여 지칭하기 위해서 이름을 부여하는 것을 주소(Address) 체계라고 한다.
  • 주소 체계를 결정할 때는 확장성을 반드시 고려해야 한다.

 

2.2 오류 제어 (Error Control)

  • 네트워크에서는 데이터 송수신 과정에서 오류가 발생할 수 있다. 전송 오류에는 데이터가 깨져서 도착하는 데이터 변형 오류와 데이터가 도착하지 못하는 데이터 분실 오류가 있다.

 

전송 결과 유형

  • (a) 데이터가 오류 없이 도착하는 정상적인 경우
  • (b) 데이터가 수신 호스트에 도착하지 못하는 데이터 분실 오류
    • 수신 호스트가 자신에게 데이터가 보내졌다는 사실을 인지하는 것이 쉽지 않다. 그래서 보통은 송신 호스트에서 오류를 감지하는 방법을 사용한다. (Ex. ACK)
  • (c) 데이터의 내용이 변경되어 도착하는 데이터 변형 오류
    • 수신 호스트가 여러 방식의 오류 검출 기법을 이용해 오류를 검출할 수 있다. 
    • 일반적으로 전송 오류를 해결하기 위해 원래 데이터를 재전송한다.

 

2.3 흐름 제어 (Flow Control)

  • 물리적인 오류가 없어도 송수신 호스트 사이의 데이터 전송/처리 속도 차이 때문에 발생할 수 있다.
    • 일반적으로 수신 호스트의 버퍼 처리 속도보다 송신 호스트가 데이터를 전송하는 속도가 빠르면 논리적인 데이터 분실 오류가 발생할 수 있다. 이 때 송신 호스트의 전송 속도를 조절하는 흐름 제어 기능이 필요하다.
  • 흐름 제어 기능은 보통 수신 호스트의 제어에 의해 이루어진다.

 

흐름 제어

  • (1) 송신 호스트가 i번째 데이터를 보내고 수신 호스트가 이를 제대로 받는다.
  • (2) 수신 데이터는 데이터를 수신할 여력이 있을 경우에만 전송 허가를 보낸다.
  • (3) 전송 허가를 수신한 후에 송신 호스트가 다음 데이터인 i+1을 전송하고 있다.

 

2.4 데이터 전달 방식

  • 단방향 방식: 일대일 통신 환경에서 데이터를 한쪽 방향으로만 전송하는 것
  • 전이중 방식: 양쪽에서 데이터를 동시에 전송하는 것 (일반적인 통신 프로토콜이 지원)
  • 반이중 방식: 데이터가 양방향으로 전송되지만 특정 시점에는 한쪽 방향으로만 전송할 수 있는 것

 


3. 서비스 프리미티브

계층 구조 프로토콜에서 하위 계층이 상위 계층에 제공하는 서비스의 종류에는 연결형과 비연결형이 있다.

 

연결형 서비스

  • 먼저 데이터 전달 경로를 설정하는 연결 설정 단계가 필요하다.
  • 모든 데이터의 전송이 완료되어 데이터 전송 단계를 끝내면 연결을 끊는 연결 해제 단계가 필요하다.

비연결형 서비스

  • 전송할 데이터가 있으면 각 데이터를 독립적으로 목적지 호스트로 전송하면 된다. (연결 설정/해제 단계X)
  • 데이터는 독립적인 경로 선택 과정에 의해 전달되므로 도착하는 순서가 보낸 순서와 일치하지 않을 수 있다.

 

프리미티브(Primitive)는 하위 계층을 사용하는 방법을 정형화한 것이다.

 

연결형 서비스의 프리미티브 종류

종류 용도
CONNECT 연결 설정
DATA 데이터 전송
DISCONNECT 연결 해제

 

서비스 프리미티브의 기능

기능 설명
Request 클라이언트가 서버에 서비스를 요청함
: 서버가 프리미티브의 기능을 수행하도록 하위 프로토콜에 요청할 때 사용한다.

- 연결 설정 요청, 데이터 전송 요청, 연결 해제 요청 등
Indication 서버에 서비스 요청이 도착했음을 통지함
: 서버의 하위 프로토콜은 Indication을 사용해서 프리미티브 요청이 발생했음을 알린다.

- 연결 설정: CONNECT.Indication
- 데이터 전송: DATA.Indication
- 연결 해제: DISCONNECT.Indication
Response 서버가 클라이언트에 서비스 응답을 회신함

- 연결 설정 요청: CONNECT.Response
- 데이터: DATA.Response
- 연결 해제: DISCONNECT.Response
Confirm 클라이언트에 응답이 도착했음을 통지함

- 연결 설정: CONNECT.Confirm
- 데이터: DATA.Confirm
- 연결 해제: DISCONNECT.Confirm

 

서비스 프리미티브의 동작 원리

  • 클라이언트로부터 Request가 발생하면 서버에 Indication 형태로 전달되어 서버가 인지한다.
  • 서버에서는 해당 프리미티브를 올바르게 수신하였음을 클라이언트에 통보하기 위해 Response를 응답으로 보내고, 이는 클라이언트에 Confirm 형태로 도착한다.
  • 이러한 4단계 절차를 통해 하나의 서비스 프리미티브가 처리된다.

 


02. OSI 참조 모델

  • 일반적으로 컴퓨터 네트워크에서는 계층 구조로 모듈화된 프로토콜 스택(Stack)을 사용한다.
  • OSI 7계층 모델은 개방화된 데이터 통신 환경에 적합한 계층적 구현 모델의 표준이다.

 

1. OSI 7계층 모델

  • 연결된 두 호스트가 각각 7개 계층으로 구성된 모듈을 수행함으로써 데이터 송수신이 가능하다.
    • 전송 데이터는 송신 호스트의 응용 계층에서 시작해 하위 계층으로 순차적으로 전달되어, 최종적으로 물리 계층에서 수신 호스트에 전달된다.
    • 수신 호스트에서는 데이터를 상위 계층으로 순차적으로 이동시켜 응용 계층까지 보내준다.
  • 데이터가 하위 계층으로 내려갈 때는 각 계층의 프로토콜에서 정의한 헤더 정보가 추가된다.
  • 데이터를 수신하는 호스트에서는 반대로 상위 계층으로 올라가며 순차적으로 헤더 정보를 제거하고 해석한다.

 

1.1 용어 정의

OSI 7계층 모델의 동작

  • 프로토콜: 호스트에서 실행되는 계층 n 모듈이 상대 호스트의 계층 n 모듈과 논리적으로 통신할 때, 사용하는 규칙
    • 프로토콜에서 정의된 기능을 수행하면서 필요한 정보를 서로 교환한다.
  • 동료 프로세스: 동일 계층에 위치한 통신 양단
  • 인터페이스: 한 호스트에서 상하로 이웃하는 계층에 위치한 모듈 사이에 정의된 것으로, 둘 사이의 접근 방법을 제한하는 것
  • 상위 계층에서는 하위 계층의 인터페이스를 통해 하위 계층의 서비스를 이용할 수 있다.
  • 각 계층의 동료 프로세스가 직접 통신하는 형태를 보이지만, 실제로는 항상 물리 계층을 통해 데이터가 전송된다.

 

1.2 헤더 정보

  • 물리 계층에서는 수신 호스트에 데이터를 실제로 전송하고, 이를 수신한 호스트에서는 송신 절차와 반대 방향으로 헤더를 제거하는 과정이 반복된다. (계층별로 해당 계층의 헤더 정보를 해석하여 적절히 처리한 후 상위 계층으로 올림)
  • 각 계층의 프로토콜은 정해진 기능을 수행하여 데이터 송신 과정에서 발생하는 문제점을 해결한다.

 

1.3 중개 기능

라우터의 기능

  • 중개 시스템은 데이터가 목적지까지 올바르게 전달되도록 경로 배정 기능을 수행한다.
  • 중개 시스템에서는 경로 배정 기능을 수행하는 네트워크 계층의 프로토콜이 동작하는데, 이와 같은 경로 배정 기능을 라우팅(Routing)이라 한다.
  • 라우터(Router)는 자신에게 도착한 데이터의 헤더 정보를 해석해서 적절한 경로로 전달하며, 다음 라우터로 보내기 전에 헤더 정보를 수정하는 작업도 진행한다.

 


2. 계층별 기능

  • OSI 7계층 모델은 전송 계층을 기준으로 두 부분으로 나뉜다고 볼 수 있다.
    • TCP/IP 모델에서는 운영체제 내부에 계층 4까지의 기능을 구현하고, 상위 계층의 기능은 사용자 프로그램으로 구현한다.

 

2.1 물리 계층

  • 전송 매체의 물리적 인터페이스에 관한 사항을 기술한다.
    • 전송 매체에서는 개별 정보의 비트 교환 문제를 다룬다.
    • 전송 매체의 특성에는 데이터의 전송 속도, 송수신 호스트 사이의 클록 동기화 방법, 물리적 연결 형태 등이 있다.
  • 물리 계층은 하드웨어 시스템으로 구현되고, 계층 2 이상의 프로토콜들은 소프트웨어적으로 구현된다.

 

2.2 데이터 링크 계층

  • 물리 계층을 통해 전송되는 데이터의 물리적 전송 오류를 해결한다.
  • 두 호스트가 일대일로 직접 연결된 환경에서만 데이터 전송을 지원한다.
  • 전송되는 데이터를 프레임이라 부르며, 프레임 헤더에 표시되는 송수신 호스트 정보에는 LAN 카드에 내장된 송수신 호스트의 MAC 주소가 기록된다.
  • 송신 호스트와 수신 호스트 사이의 전송 속도 차이를 고려한 흐름 제어 기능도 지원할 수 있다.

 

2.3 네트워크 계층

  • 송신 호스트가 전송한 데이터가 어떤 경로를 통해 수신 호스트에 전달되는지를 결정하는 라우팅 문제를 처리한다.
    • 정적인 방식: 전달 경로 선택이 미리 정해진다.
    • 동적인 방식: 네트워크의 현재 부하 상태에 따라 결정된다.
  • 전송되는 데이터를 패킷이라 부르며, 중개 과정에서 경로 선택의 기준이 되는 호스트 주소가 필요하다.
  • 네트워크의 트래픽이 과도하게 증가하는 문제를 조절하는 혼잡 제어 기능도 담당한다.

 

2.4 전송 계층

  • 송신 프로세스와 수신 프로세스를 직접 연결하는 단대단(End-to-End) 통신 기능을 제공한다.
  • 컴퓨터 내부에서 논리적으로 구축되는 통신 당사자인 프로세스 사이의 통신 문제를 다룬다. (하위 계층은 호스트 간 데이터 전송 과정에서 발생하는 문제들만 다룸)
  • 전송 오류율, 전송 속도 등과 같은 일반 사용자의 서비스 요구 유형에 대한 고려와 흐름 제어 기능도 제공한다.

 

2.5 세션 계층

  • 사용자에게 원격 파일 전송이나 원격 로그인 등과 같은 상위적 연결 개념인 세션 기능을 제공한다는 점이 전송 계층과 다르다.
  • 송수신 호스트 사이의 대화 제어를 비롯해 상호 배타적인 동작을 제어하기 위한 토큰 제어, 일시적인 전송 장애를 해결하기 위한 동기 기능 등을 제공한다.

 

2.6 표현 계층

  • 데이터의 의미와 표현 방법을 처리한다. (통신 양단에서 서로 이해할 수 있는 표준 방식으로 데이터를 코딩하는 문제를 다룸)
  • 데이터를 암호화하는 기술도 다룬다.
  • 영상 정보 같은 대용량 데이터의 크기를 줄여주는 압축도 담당한다.

 

2.7 응용 계층

  • 다양하게 존재하는 응용 환경에서 공통으로 필요한 기능을 다룬다.
  • 네트워크 파일을 이용할 때는 파일 공유 뿐 아니라, 허가된 사용자가 적절한 접근 권한에 따라 사용할 수 있게 한다.
  • 텔넷이 제공하는 가상 터미널, 전자 메일 등도 대표적인 인터넷 서비스이다.

 


03. TCP/IP 모델

  • 인터넷에 연결하고자 하는 호스트는 반드시 IP 프로토콜을 지원해야 하며, 전송 계층은 TCP, UDP를 사용한다.
  • 주로 사용하는 IP 프로토콜은 IPv4이다.

 

1. 구현 환경

TCP/IP 구현 환경

  • 전송 계층까지의 기능을 시스템 공간인 운영체제 내부에 구현한다.
  • 인터넷 환경에서 사용하는 TCP/IP와 하위 계층의 기능을 담당하는 LAN 카드 드라이버 루틴은 운영체제 영역에 속한다.
  • TCP/IP를 이용하려면 사용자 공간에서 네트워크 응용 기능을 지원하는 프로그램을 작성해야 한다.

 

1.1 시스템 공간

  • 소켓(Socket)은 운영체제에서 시스템 콜 기능으로 구현되므로 사용자 프로그램에서 이를 호출하는 방식으로 사용한다.
    • TCP는 연결형 서비스를 제공하고, UDP는 비연결형 서비스를 제공한다.
  • 네트워크 계층은 IP로 구현되며, 전송 패킷의 올바른 경로 선택 기능을 제공한다.
    • 네트워크 계층 아래의 계층들은 LAN 카드와 LAN 카드를 구동하는 드라이버 루틴에 의해 구현된다.

 

1.2 사용자 공간

  • 세션 계층부터 응용 계층까지의 기능은 사용자 프로그램으로 구현된다.
  • 전송 계층의 기능을 제공하는 소켓 시스템 콜을 호출해 TCP와 UDP 기능을 사용할 수 있다.
  • 인터넷 응용 프로그램의 고유 주소는 IP 주소와 포트 번호의 조합으로 구성된다.
    • 포트 번호와 사용자 프로그램이 일대일로 대응된다.
  • 네트워크 응용 프로그램으로는 텔넷, FTP, 웹 브라우저 등이 있는데, 모두 TCP와 UDP를 사용해 네트워크에 연결한다.

 


2. 프로토콜

  • TCP/IP 모델에서는 사용자 데이터의 전송이 TCP, UDP, IP에 의해 이루어지지만, 이들이 올바르게 동작하려면 더 많은 프로토콜이 필요하다.
  • 주소 문제를 해결하기 위한 ARP/RARP와 오류 문제를 해결하기 위한 ICMP는 TCP/IP 모델의 동작에서 매우 중요한 역할을 한다.

 

2.1 TCP/IP 계층 구조

TCP/IP 계층 구조

  • 응용 프로그램은 TCP와 UDP를 사용해 데이터 송수신 기능을 수행하지만, 네트워크 계층의 IP 프로토콜을 직접 사용하기도 한다.
  • ICMP와 ARP/RARP는 네트워크 계층에 소속되어 IP의 동작을 도와준다.
    • IP 동작 과정에서 전송 오류가 발생하는 경우에 대비해 오류 정보를 전송하는 목적으로 ICMP를 사용한다.
    • ICMP에서 발생하는 ICMP 메시지는 IP 패킷에 캡슐화되어 전송된다.

 

2.2 ARP와 RARP

  • ARP는 사용자로부터 입력된 상대방 호스트의 IP 주소를 이용해 MAC 주소를 구하는 기능을 담당한다.
  • RARP는 MAC 주소를 IP 주소로 변환하는 기능을 담당한다.

 

2.3 ICMP

  • IP 동작 과정에서 데이터 전송 오류가 발생하면 송신자에게 회신해 복구 작업을 하게 한다.
  • 오류 메시지를 전송하기 위한 별도의 헤더 구조를 가지며, IP 패킷에 캡슐화되어 전송되지만 IP와 같은 계층으로 취급된다.

 

ARP, RARP, ICMP의 비교

프로토콜 특징
ARP 인터넷에서 통신하려면 자신의 로컬 IP 주소와 MAC 주소, 원격 호스트의 IP 주소와 MAC 주소가 필요하다.
ARP는 원격 호스트의 주소 변환 기능을 제공하는데, 사용자가 입력한 IP 주소를 이용해 MAC 주소를 제공하는 프로토콜이다.
RARP RARP는 로컬 호스트의 주소 변환 기능을 제공하는데, LAN 카드에 보관된 MAC 주소를 이용해 IP 주소를 제공하는 프로토콜이다.
일반 컴퓨터 시스템은 로컬 호스트의 IP 주소가 파일 시스템에 보관되므로 RARP를 사용하지 않지만, 디스크가 장착되지 않은 시스템에서는 RARP를 반드시 사용해야 한다.
ICMP 사용자 데이터의 전송 과정에서 오류가 발생하면 오류 메시지가 생성되는데, ICMP는 이를 전송하는 기능을 담당하는 프로토콜이다.

 


Reference

쉽게 배우는 데이터 통신과 컴퓨터 네트워크

반응형
LIST