PPP(Point to Point Protocol)

PPP의 설계

PPP는 두 네트워크 노드간의 일 대 일 연결을 위한 프로토콜이다. 이더넷상의 PPPoE(PPP over Ethernet)는 이더넷 네트워크 상의 두 노드간에 특정한 PPP 통로(pipe)를 제공한다. PPP는 다음과 같은 것을 제공한다.

프레이밍

일련의 데이터 흐름을, 시작과 끝 마크를 포함하는 블록으로 나눈다.

오류체크

메시지의 무결성 검증을 위해 순환 중복 코드(CRC: Cyclic redundancy code)를 제공한다.

제어 시퀀스

일반적인 제어문자들은 데이터스트림에서 특정한 제어 시퀀스를 사용함으로써 제거될 수 있다.

협상

두 노드간에 상호 수용 가능한 프로토콜과 옵션을 결정하기 위한 협상이 가능하다. 이 과정은 종종 인증과 주소 결정(주소 집합에서 동적으로 주소를 할당하는 일)을 포함한다.

프레이밍

프레이밍 방법은 HDLC(High-level Data Link Control)라고 불리우는 ISO의 표준 통신 프로토콜로부터 온 것이다. HDLC는 IBM의 SNA(Systems Network Architecture) SDLC(Synchronous Data Link Control) 프로토콜 계층에 대한 연구에 바탕을 둔다. 비동기식의 직렬 연결이 사용되기 때문에, 대부분의 HDLC 기능들은 중복된다. 따라서 AHDLC(Asynchronous HDLC)라고 불리는 부분 집합을 사용한다.

HDLC 플래그 문자는 각 프레임의 시작과 끝을 표시한다. 연결(link) 헤더는 주소와 제어 필드를 가지고 있는 반면, 연결 트레일러(trailer)는 FCS(Frame Check Sequence)를 가지고 있다.

HDLC의 주소 필드는 사용하지 않기 때문에, FFh(방송)로 고정한다. 제어 필드는 poll/final 비트를 0으로 설정한(이 값은 03h이다) 번호매김 없는 값으로 고정한다. 이것은 PPP프레임이 7E FF 03h의 바이트들로 시작하는 것을 의미하는데, 이는 두 PPP 노드 사이의 통신에서 프레임을 분석하는데 매우 편리하다. 그러나 노드들은 어떤 상황하에서는 주소와 제어바이트를 사용하지 않도록 협상할 수 있기 때문에 이 바이트는 생략될 수 있다.

정보 필드는 프로토콜 데이터를 포함한다. 기본적으로 이 필드의 크기는 1502 바이트 까지 될 수 있다.

프로토콜 요소

컴포넌트 헤더

다음 그림은 PPP(AHDLC) 프레임의 정보 필드안에 있는 PPP 컴포넌트 프로토콜들의 형식을 나타내고 있다. 크기는 기본 최소 크기인 1502 바이트를 근거로 하고 있으며, 이 값은 더 큰 값이나 작은 값으로 협상 될 수 있다. 모든 프로토콜 컴포넌트들은 어떤 컴포넌트들이 사용되는지 식별하기 위한 프로토콜 워드로 시작한다.

c021

링크 제어 프로토콜(LCP: Link Control Protocol)

8021

IP 제어 프로토콜(IPCP: IP Control Protocol)

80fd

압축 제어 프로토콜(CCP: Compression Control Protocol)

c023

암호 인증 프로토콜(PAP: Password Authentication Protocol)

대부분 컴포넌트의 기본 형식은 같다.

Code config-REQ, config-ACK, config-NAK 등

ID 응답을 특정요청에 대응시키기 위한 시퀀스 번호

Length 코드, ID, 길이, 옵션 필드의 전체 크기를 바이트 수로 나타낸 것

Options 0 또는 다른 옵션을 포함하는 가변길이의 필드

IPCP 같은 네트워크 층의 컴포넌트 프로토콜들은 두 가지 형식을 가지고 있다. 하나는 협상을 위한 것이고, 다른 하나는 데이터 전송을 위한 것이다. 데이터 전송을 위한 형식은 데이터 앞의 고유 프로토콜 워드를 둠으로써 구별된다(IPCP의 경우는 0021)

옵션 포멧

각 옵션은 어떤 옵션이 필요한지를 나타내는 type 1바이트, 전체 길이 1바이트, 그리고 최대 253 바이트 까지의 데이터 필드를 가지고 있다.

다음은 자주 사용되는 옵션 형태이다.

LCP

01

최대 수신 단위 – PPP 정보 필드의 최대 크기

02

비동기 제어 문자 맵 – 이스케이프로 처리되어져야 하는 제어 문자들

03

인증 프로토콜 – 인증을 위한 프로토콜 선택

05

매직 넘버 – 루프를 발견(detect)하기 위한 난수

07

프로토콜 필드 압축 – 프로토콜 피드를 한 바이트로 줄임

08

주소와 제어필드 압축 – HDLC 헤더의 제거

IPCP

02

IP 압축 프로토콜 – IP 헤더의 압축

03

IP 주소 – 로컬 시스템의 주소

참고문헌

임베디드 웹서버를 위한 TCP/IP – Jeremy Bentham 저

Leave a Reply