ADSL 모뎀을 설치하고 전원을 켜면, 다음과 같은 세 컴퓨터가 붙어있는 가상의 네트웍이 형성된다.
[내 컴퓨터]----랜케이블----[ADSL 모뎀]-----전화선-----[전화국의 내 서버 카드]
그리고, 전화국의 메인 서버가 전화국의 내 서버 카드에 IP를 할당하고, 이 패킷을 적절히 이 폐쇄 네트웍 안으로 포워딩해 줌으로써 인터넷 연결이 유지되는 것이다.
즉, 일부 분들의 설명과는 달리, 전화국내 서버 카드가 단순 라우터이거나, 인터넷으로 네트웍이 열려 있다는 식은 옳지 않다.
이전에 고정 IP 일때는 전화국의 내 서버 카드에 고정적으로 IP를 할당하였고, 중간에 PPPoE로 패킷을 패키징 하지 않았기 때문에 랜인것 처럼 내 컴퓨터가 인터넷을 사용할 수 있었다.
하나로 통신의 경우에는 이 세 컴퓨터가 붙은 네트웍 내에 Microsoft 계열의 VPN 프로토콜을 이용하게 되어 있다.
어쨌든, 이때 PPPoE 클라이언트를 돌리면 다음과 같은 순서로 연결이 일어난다.
이렇게 연결되면, 계속 내 컴퓨터와 전화국 카드는, 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가 알아서 다 처리하므로 별로 신경 쓸 여지가 없다. 앞으로도 지속적인 안정화가 필요한 상황...