다음 이전 차례

4. 동작 원리

ADSL 모뎀을 설치하고 전원을 켜면, 다음과 같은 세 컴퓨터가 붙어있는 가상의 네트웍이 형성된다.

[내 컴퓨터]----랜케이블----[ADSL 모뎀]-----전화선-----[전화국의 내 서버 카드]

그리고, 전화국의 메인 서버가 전화국의 내 서버 카드에 IP를 할당하고, 이 패킷을 적절히 이 폐쇄 네트웍 안으로 포워딩해 줌으로써 인터넷 연결이 유지되는 것이다.

즉, 일부 분들의 설명과는 달리, 전화국내 서버 카드가 단순 라우터이거나, 인터넷으로 네트웍이 열려 있다는 식은 옳지 않다.

이전에 고정 IP 일때는 전화국의 내 서버 카드에 고정적으로 IP를 할당하였고, 중간에 PPPoE로 패킷을 패키징 하지 않았기 때문에 랜인것 처럼 내 컴퓨터가 인터넷을 사용할 수 있었다.

하나로 통신의 경우에는 이 세 컴퓨터가 붙은 네트웍 내에 Microsoft 계열의 VPN 프로토콜을 이용하게 되어 있다.

어쨌든, 이때 PPPoE 클라이언트를 돌리면 다음과 같은 순서로 연결이 일어난다.

  1. 내 컴퓨터에서 망 전체에 ``누구 PPPoE 서버 없냐?'' 하고 외쳐본다. ``혹은 이런 서비스명을 가진 PPPoE 서버는 없냐?'' 하고 물어본다.
  2. 전화국 카드가 ``여기 있다. 내 서비스명은 이거, 카드 ID는 이거다.'' 라고 말한다. (참고로 필자의 Access Concentrator ID는 13021119814491-youngdong_adsl 이다.)
  3. 그렇다면 그 서버로 TCP/IP 연결을 한다. (앞서 랜카드 설정에서 IP는 좋은데, 그래도 라우터는 설정하지 말아야 한다는 이유가 여기에 있다. 라우터 설정이 이상하면 이 단계서 저쪽과 연결을 못한다.)
  4. 서버가 전화 접속의 PPP와 같은 데이터를 보내주고, 여기서 인증을 통해 접속한다. (인증은 일반적인 모뎀에서 쓰는 pap 인증을 사용중이다. 비슷한 chap 인증도 있지만 여기선 사용하지 않는다.)

이렇게 연결되면, 계속 내 컴퓨터와 전화국 카드는, TCP/IP 패킷을 PPP 프로토콜로 포장을 해서 넘기고 받는 일을 반복한다. 물론, 이때 전화 PPP에 사용하는 IP 헤더 압축 전송이나 PPP 고유의 데이터 압축 테크닉 등을 그대로 이용할 수 있다. (실제 지금의 한국통신 코넷 PPPoE 서버가 어디까지 지원하는지는 불확실하지만.)

리눅스에서는

``프로그램 --[pppd]--> ppp0 --[pty-redir]--> ttyp0 --[pppoe]--> eth0 -> 네트웍'' 또는 ``프로그램 --[pppd]--> ppp0 --> pppox0 --> eth0 -> 네트웍'' (커널 패치시에) 의 순서로 패킷이 움직인다.

연결을 끊을때는 마찬가지로 PPP 종료 신호를 보내고 TCP/IP 연결을 끊는다. (아까의 스크립트 구성에서 포트를 먼저 올리고, PPP를 올리는 이유가 여기에 있다. 다른 스크립트 중에는 PPP를 먼저 올리고 포트를 나중에 올리는데, 이렇게 해버리면 종료시에 포트가 먼저 사라져 버린다. 정상 종료를 할 수 없게 된다.)

문제의 많은 부분은, pppoe 프로그램과 pppd가 연결되는 과정이 제대로 되지 않아 발생하는 것으로 보인다. 사실 인증자체는 pppd가 알아서 다 처리하므로 별로 신경 쓸 여지가 없다. 앞으로도 지속적인 안정화가 필요한 상황...


다음 이전 차례