반응형
PPP point to point protocol
 

PPP(Point-to-Point Protocol)

HDLC는 IETF의 표준 프로토콜로서 점대점 및 다중점 형상 모두에서 사용될 수 있는 프로토콜이지만 PPP가 가장 널리 사용되는 점대점 프로토콜이며 두 컴퓨터 간의 데이터 전송 제어 및 관리를 위한 프로토콜이다. 초기 점대점 프로토콜인 SLIP(Serial Line Internet Protocol)의 단점인 동적 IP 주소 할당을 가능하게 하며 사용자 인증 또한 제공한다. PPP는 다음과 같은 기능을 정의한다.


장치들 사이에서 교환될 프레임의 형식

두 장치 간에 링크 설정 및 데이터 교환

네트워크 계층의 데이터에 대한 encapsulation

두 장치 간의 인증 절차

다양한 네트워크층 프로토콜을 지원하는 다중 네트워크층 서비스 제공

다중 링크를 통한 연결 지원

네트워크 주소 구성 지원


1.1 frame 구성

그림 1은 PPP frame의 구조를 나타낸 것이다. HDLC 프레임과 마찬가지로 PPP 프레임의 양 끝에 flag를 두어 시작과 끝을 구분할 수 있도록 한다. 그리고 PPP는 점대점 프로토콜이며 데이터 링크 주소를 사용하지 않기 위해 address 필드는 ‘11111111’로 고정된다. Control 필드는 ‘11000000’으로 고정되어 순서번호를 갖지 않는 HDLC의 U-frame을 사용하고 이는 PPP frame이 순서 번호를 포함하지 않으며 flow 및 error control을 하지 않음을 뜻한다. Protocol 필드는 Data 필드에 실린 사용자 데이터나 기타 정보를 의미한다. FCS(Frame Check Sequence) 필드는 에러검사를 위해 사용된다.


그림 1) PPP frame 구조


PPP frame이 HDLC frame과 다른 것은 byte stuffing을 사용하여 플래그와 같은 ‘01111110’과 같은 문자가 데이터에 나타날 때마다 추가적으로 바이트를 더하여 수신자가 다음의 문자는 플래그가 아니라는 것을 알 수 있게 해준다는 점이다. 예를 들어 flag를 제외한 frame 내부에 ‘01111110’이 나타나면 ‘0111101’이라는 특수한 제어 바이트를 앞에 삽입하여 플래그와 혼동을 방지할 수 있다.


1.2 Transition states

PPP의 상태는 그림 2와 같이 idle, establishing, authenticating, networking, terminating 등 크게 다섯 가지로 나눌 수 있다. Idle 상태는 carrier나 링크가 활성화되지 않은 상태를 말한다. Establishing 상태는 링크 상의 carrier를 감지하여 활성화되기 시작하는 상태를 말한다. 이 상태에서는 LCP를 이용하여 양 끝의 단말 간에 링크 설정에 필요한 옵션들을 전송하여 옵션에 대한 설정을 한다. 이 설정이 성공하게 되면 시스템은 인증이 필요할 경우 authentication 상태로 들어가고 아니면 바로 networking 상태로 들어가게 된다. Authenticating 상태는 인증을 위한 단계로 필수적인 단계가 아닌 선택사항이며 인증여부는 establishing 상태에서 양 링크 간에 설정된다. 인증이 성공적으로 끝나게 되면 networking 상태로 진입하게 되며 성공적으로 끝나지 않을 경우는 바로 terminating 상태로 들어간다. Networking 상태는 실제로 사용자 및 제어 데이터가 송수신되는 상태로 양단에서 어느 한 곳에서 연결 종료를 할 때까지 지속된다. Terminating 상태는 연결이 종료되는 시점으로 양단간의 링크 해제를 위한 메시지가 교환된다.


그림 2) Transition states


1.3 PPP Layers

PPP는 그림 3과 같이 physical layer와 data link layer로 구성되어 있다. PPP의 physical layer에서 특별히 정의하는 프로토콜은 존재하지 않으며 ANSI에서 정의된 프로토콜을 지원한다. Data link layer에서 PPP는 HDLC 프로토콜의 프레임을 사용한다.


그림 3) PPP layer

1.4 LCP(Link control Protocol)

LCP는 양단간의 링크 설립, 유지, 설정, 종료 등의 역할을 하는 프로토콜로 PPP frame의 payload 필드를 통해 전송된다. 그림 4는 LCP 패킷의 구조를 나타낸 것이다. Code 필드에는 PPP 사용 시 양단간의 주고받는 설정, 종료, 제어 메시지 등 패킷의 종류를 나타낸다. ID 필드는 하나의 request/reply 메시지를 다른 request/reply 메시지들과 구별하기 위해 사용된다. Length 필드는 LCP 패킷의 전체 길이를 말하고 Information 필드는 일종의 옵션으로 사용된다. 표 1은 LCP 패킷의 종류를 나타낸 것이다.


그림 4) LCP 패킷

 

표 1) LCP 패킷 종류

코드

패킷 타입

설명

0x01

Configure-request

설정된 옵션 값의 목록을 포함

0x02

Configure-ack

모든 옵션을 수용

0x03

Configure-nak

일부 옵션을 수용할 수 없음

0x04

Configure-reject

일부 옵션이 인지되지 않음

0x05

Terminate-request

종료 요구

0x06

Terminate-ack

종료 응답

0x07

Code-reject

잘못된 코드

0x08

Protocol-reject

잘못된 프로토콜

0x09

Echo-request

echo 요구

0x0A

Echo-reply

echo 응답

0x0B

Discard-request

패킷 폐기 요청


1.5 NCP(Network Control Protocol)

NCP는 PPP의 상태가 networking state에 있을 때 사용되는 프로토콜로써 3계층으로부터 오는 데이터(IP, IPX, AppleTalk 등)를 캡슐화하는 목적에 사용된다. IPCP(IP Control Protocol), IPXCP(IPX Control Protocol), ATCP(AppleTalk Control Protocol) 등이 있으며 패킷구조는 그림 5와 같다. NCP 역시도 PPP frame의 payload 필드를 통해 전송된다.


그림 5) NCP packet

1.6 Authentication

PPP가 사용자의 인증이 필수적인 전화선 링크를 사용하도록 설계되었기 때문에 authentication은 PPP에서 중요한 역할을 하고 있다. Authentication이란 자원을 사용하기 위해 접근하고자 하는 사용자를 인증하는 것이다. PPP에서는 이를 위해 PAP(Password Authentication Protocol)와 CHAP(Challenge Handshake Authentication Protocol)가 있다. PAP와 CHAP 둘 다 PPP 프레임의 payload 필드를 통해 전송된다.


가. PAP

PAP는 사용자이름과 암호를 통해 사용자 인증을 거치는 방식의 프로토콜을 말한다. 크게 다음과 같은 2단계의 처리과정을 가진 매우 간단한 인증절차라 볼 수 있다.


시스템에 접근하기를 원하는 사용자는 사용자의 이름과 패스워드를 시스템에 전송한다.

전송받은 시스템은 사용자의 이름과 패스워드의 유효성을 검사하여 연결을 수용 혹은 거부한다.


그림 6은 시스템에 접속하기 원하는 사용자가 Authentication-request 메시지를 보내면 시스템에서 Authentication-ack 혹은 Authentication-nak를 보냄으로써 사용자 인증이 이루어지는 과정을 나타내고 있다.


그림 6) PAP 동작과정

나. CHAP

CHAP는 3-way handshaking 방식으로 사용자 인증 과정을 거치며 PAP보다 보안성이 우수하다. CHAP의 동작과정은 다음과 같다.


시스템이 여러개의 바이트인 challenge value가 들어있는 패킷을 사용자에게 전송한다.

사용자는 시스템으로부터 전송받은 challenge value와 사용자의 패스워드를 받아들이는 미리 정의된 함수를 이용해 계산하고 이에 대한 응답을 시스템으로 다시 전송한다.

사용자로부터 전송받은 시스템은 역시 같은 과정을 거쳐 결과를 계산하고 비교하여 같은 값이면 연결을 허용하고 그렇지 않을 경우는 거부하게 된다.


CHAP 패킷은 PPP 프레임에 캡슐화되며 challenge 패킷은 시스템이 challenge 값을 송신하는 데 사용되고 reponse 패킷은 사용자가 계산결과를 다시 응답할 때 사용된다. Accept 패킷은 사용자가 시스템에 접근하는 것을 허락할 때 사용되고 reject 패킷은 접근을 거부하고자 할 때 사용된다. 그림 7은 CHAP 동작과정 및 메시지 절차를 나타낸 그림이다.

그림 7) CHAP 동작과정


1.7 PPP 메시지 절차

그림 8은 PPP 연결이 네트워크 계층의 패킷을 전달할 때 수행되는 메시지 절차를 나타낸 것이다. 초기에 링크 설정을 위해 사용자는 Configure-request 메시지를 LCP를 이용하여 시스템으로 전송한다. 시스템으로부터 Configure-ack 메시지를 받으면 선택적으로 인증 절차를 수행하게 되는데 인증을 필요로 하는 경우 사용자 이름과 패스워드가 담긴 Authenticate-request 메시지를 PAP를 이용하여 시스템으로 전송한다. 시스템에서는 수신한 메시지로부터 이용자와 패스워드를 확인한 후 일치할 경우 Authenticate-ack 메시지를 전송하게 된다. 이제 사용자는 네트워크 옵션을 설정하기 위해 Configure-request 메시지를 IPCP를 이용하여 전송하고 시스템으로부터 Configure-ack 메시지를 받은 이후로 사용자는 하나 이상의 프레임으로 구성되는 네트워크 계층 데이터를 송신할 수 있다. 데이터 전송이 모두 완료되면 사용자는 Terminate-request 메시지를 전송하고, 시스템으로부터 Terminate-ack 메시지를 수신하면 링크는 종료된다.


그림 8) PPP 메시지 절차

반응형

'Network' 카테고리의 다른 글

OSI 7 layer, OSI 7 계층  (0) 2009.09.10
fork, thread, clone  (0) 2009.09.03
Dijkstra 알고리즘 (다익스트라, 딕스트라 알고리즘)  (0) 2009.08.01
IMS - IP Multimedia Subsystem  (0) 2009.05.20
Raw Socket 날소켓  (0) 2009.05.13

+ Recent posts