
고정된 헤더를 각 프레임마다 전송해야하는 비용의 영향을 줄이기 위해, 서로 다른 프로토콜의 여러 개의 개별 payload를 하나의 PPP 프레임에 multiplexing 하는 방법이 도입되었다.(PPPMux)
우선 PPP 기본 헤더의 Protocol 필드를 PPPMux 로 세팅하고, 각각의 payload 플록을 프레임에 삽입한다. 이 때, 각 payload 블록 앞에 1~4 바이트 크기의 서브프레임 헤더가 추가된다. 즉, 여러 프로토콜 데이터를 하나의 PPP 프레임으로 통합하여 전송하는 것이다.
- Multilink PPP (MP)

PPP의 특별 옵션인 Multilink PPP는 여러 Point-to-Point link를 하나로 통합하여 작동할 수 있도록 설계되었다. MP는 멀티링크 지원을 나타내기 위한 특수 LCP 옵션과 MP에서 분할된 PPP 프레임을 fragmentation하고 다시 결합하기 위한 협상 프로토콜을 포함한다. 통합된 링크는 번들이라고 불리며 이는 완전한 가상 링크로 작동하며 자체 구성 정보를 포함할 수 있다. 번들은 여러 멤버 링크로 구성된다. 각 멤버 링크는 자체 옵션 집합을 가질 수 있다.
MP를 구현하는 가장 간단한 방법은 멤버 링크들 사이에서 패킷을 번갈아 전송하는 것이다. (Bank teller's algorithm). 이 방법은 패킷 재정렬 가능성이 생긴다. 패킷 재정렬은 다른 프로토콜의 성능에 영향을 미칠 수 있으므로 이 문제를 해결하기 위해 각 패킷에 2바이트 또는 4바이트 크기의 sequencing header를 추가한다. 원격 MP 수신기는 이 헤더를 사용하여 PPP 선에서 올바른 순서를 재구성한다. 그림에서 PPP payload 영역을 보면 MP fragment에 포함된 B, E bit field와 Seq Num field를 볼 수 있다. 만약 프레임이 분할되지 않고 전송된다면 BE 비트가 모두 설정된다. (이 프레임이 시작이자 끝임.)
분할된 프레임의 경우 시작 프레임일 시 B를 set, 마지막 프레임일 시 E를 set한다.
MP의 사용은 MRRU라는 LCP 옵션을 포함하여 요청된다. MRRU는 번들에 사용되는 확장된 MRU의 역할을 한다.
멤버 링크 각각의 MRU보다 큰 프레임도 MRRU 설정 값 한도 내에서는 MP 링크를 통해 전송이 허용될 수 있다.
MP 링크는 여러 멤버 링크를 묶어 번들로 구성되므로, 특정 링크가 어떤 번들에 속하는지 식별할 방법이 필요하다.
동일한 번들에 속한 멤버 링크는 LCP endpoint discriminator option을 통해 식별된다. 엔드포인트 식별자는 전화번호, IP 또는 MAC 주소에서 파생된 숫자 등으로 구성할 수 있다.
이러한 LCP link discriminator option 중에는 BAP/BACP라는 것이 있다. 이 옵션은 번들이의각 멤버 링크에 대해 서로 다른 16 비트 숫자 값을 포함하며, BAP는 이를 통해 추가되거나 제거될 링크를 식별한다.
BACP는 PPP link의 단계 동안 번들 당 단 한 번 협상되며 주된 목적은 favored peer를 식별하는 것이다. 즉, 여러 피어 간에 동시에 여러 번들이 설정될 때, favored peer가 멤버 링크를 우선적으로 할당 받는다.
BAP는 3 가지 패킷 유형을 포함한다 : Request, Response, Indication
1. Request : 번들에 링크를 추가하거나 피어에게 번들에서 링크를 삭제할 것을 요청한다.
2. Response : ACK, NACK을 전달한다.
3. Indication : 링크 추가, 삭제 시도 결과를 전달한다.
- Compression Control Protocol
PPP에는 여러 가지 압축 옵션을 사용할 수 있다. 이 옵션은 당연하지만 LCP를 통해 협상된다. LCP에 의해 활성화된 CCP는 NCP처럼 동작하며 압축 옵션이 LCP 링크 설정 교환 과정에서 지정되면, CCP는 압축 구성과 관련된 세부 사항을 처리한다.
CCP는 NCP 처럼 동작하므로 링크가 Network 상태에 진입한 후에만 협상할 수 있다. Protcol 필드 값을 0x80FD로 맞추고, 특수 옵션을 컨트롤하여 협상하는 방식이다.
하나 이상의 압축된 패킷은 PPP frame의 information 부분에 담긴다. MP와 함께 사용될 때, CCP는 번들 전체 또는 멤버 링크 일부의 조합에서 이용할 수 있다. 압축이 사용되는 경우, 도착지에 도달한 압축 PPP 프레임은 상위 계층에 진입하기 이전 압축을 풀 필요가 있다. 이 압축 처리는 Data link layer에서 완료되며 상위 계층은 압축 프레임의 세부 사항을 몰라도 된다.
- Network Control Protocols (NCPs)
PPP link에서는 동시에 여러 NCP를 사용할 수 있으나, 여기서는 IPv4, IPv6 지원 NCP에 초점을 맞춘다.
IPv4의 경우 NCP는 IPCP, IPv6는 IPV6CP라고 불린다.
LCP가 PPP 링크 설정 및 인증 과정을 완료하면, 링크는 Network 상태로 진입한다.(Data link layer까지의 설정을 마친 것이다.) 이후, 각 링크의 end point는 하나 이상의 NCP를 사용하여 network layer 연결을 협상한다.
IPCP는 LCP와 동일한 패킷 교환 메커니즘, 형식을 사용하지만, Code 필드가 0~7 범위로 제한된다.
IPCP의 code 필드 값은 vendor-specific, configure-request, configure-ACK, configure-REJECT, terminate-request, terminate-ACK, code-REJECT 로 구성된다. 또한 IP 압축 프로토콜, IPv4 주소, Mobile IPv4와 관련된 옵션을 협상할 수 있다.
- Header Compression
TCP/IP Protocol은 데이터를 전송할 때, 작은 패킷을 자주 전송할 필요성이 있다. 예를 들면, TCP ACK 패킷 등이 있다. 이러한 패킷은 TCP/IP header를 포함하며, 오버헤드를 유발한다.
한편, 같은 TCP 연결 내에서는 패킷은 Seq 부분을 제외하면 거의 변하지 않는 경향이 있다. 이외의 다른 상위 계층 프로토콜도 유사하게 동작하므로 헤더를 압축하거나 제거하여 느린 Point-to-Point 링크에서 전송되는 바이트 수를 줄이는 방법이 유용하다.
VJ compression은 상위 계층 헤더의 일부를 작은 1바이트 크기의 연결 식별자로 대체하는 방식이다. 일반적으로 옵션이 없다고 가정하면 IPv4 Header, TCP Header는 20바이트이다. 따라서 TCP/IP Header는 40바이트이며 이 중 많은 필드는Communication 간에 변하지 않는다. 변하지 않는 값은 한 번 링크를 통해 전송하고 이 후에는 테이블에 저장한다. (Ex : SRC, DST IP addr.) 이렇게 캐싱된 정보는 앞으로의 송수신에서 작은 인덱스로 대체된다. 또한 변화하는 값들은 값의 변화량만 전송한다. 이를 활용하면 전체 40바이트 헤더를 3~4바이트로 압축이 가능하다.
IP header compression은 VJ compression의 다음으로 개발된 것으로, TCP/UDP transport layer protocol, IPv4/v6 network layer protocol을 사용하는 여러 패킷의 헤더를 압축하는 방법을 제공한다. 주된 특징은 VJ compression을 확장하여 더 많은 프로토콜과 PPP link외에 다른 link에서도 작동하게 했다.
Robust header compression은 IP header compression을 더욱 일반화하여 더 많은 transport protocol을 포괄하여 여러 형태의 헤더 압축을 동시에 작동할 수 있도록 지원한다.
- Loopback
상황에 따라 많은 경우 클라이언트는 TCP/IP와 같은 인터넷 프로토콜을 사용해 자신의 컴퓨터에서 돌아가는 서버와 통신하기를 원할 수 있다. 이를 가능하게 하기 위해, 대부분의 구현은 Network layer loopback 기능을 지원한다. 이 기능은 일반적으로 Virtual loopback network interface의 형태를 취한다. (실제 Network interface는 아니고, OS가 제공하는 특별한 SW의 일종이다.) IPv4에서는 127로 시작하는 주소가 loopback 용도로 예약되어있다. IPv6에서는 ::1이 예약되어있다.
전통적으로 UNIX 계열 시스템은 127.0.0.1 또는 ::1 을 loopback interface에 할당하고, 이를 localhost라는 이름으로 설정한다. loopback interface로 전송된 IP datagram은 실제 네트워크로 전송되지는 않는다.
대부분의 구현에서는 데이터를 Transport layer와 Network layer에서 완전히 처리한 후, 실제 전송을 준비하는 Data link layer에 가기 전 IP datagram을 다시 네트워크 스택으로 되돌려 보낸다. 이러한 방식은 HW overhead가 없이 stack SW 실행 시간을 측정할 수 있어 성능 측정 등에 유용하다.
- MTU and Path MTU
802.3과 같은 많은 link layer protocol에서는 PDU frame size에 제한이 있다. 예를 들어, 802.3 payload size는 약 1500바이트로 제한되며, PPP도 802.3과의 호환성을 유지하기 위해 동일한 크기를 사용하는 경우가 많다. 이러한 단위를 MTU라고 한다. Network burden의 측면에서라도 대부분의 패킷 네트워크는 고정된 송신 상한선 MTU를 지닌다. Serial link와 같은 스트림 유형 네트워크는 구성 가능한 상한선을 제공하며 이를 PPP와 같은 framing protocol에서 활용한다.
그러나 모든 연결이 항상 Point to Point link일 수는 없다. 여러 홉을 거쳐서 가는 연결의 경우 각 링크는 서로 다른 MTU를 가질 수 있으며, 이 때 경로를 구성하는 모든 링크 중 최소 MTU를 Path MTU라고 한다. 경로는 Routing policy에 따라 항상 바뀔 수 있기 때문에 PMTU 탐지 메커니즘의 정의는 필수적이다. 따라서 RFC1191에서는 PMTU Discovery 메커니즘을 정의하였으며, 이는 ICMP와 IP fragmentation에 대한 이해가 필요하다.
* Framing protocol
Data link layer에서 데이터를 frame이라는 구조로 캡슐화하여 전송하는 방법을 의미한다. Frame은 상위 계층의 프로토콜에서 사용하는 datagram 등과 다르게 데이터의 전송 경계와 무결성을 보장하는데 초점이 맞추어져있다.
- Tunneling Basics
특정 상황에서는 인터넷이나 다른 네트워크를 통해 virtual link를 설정하는 것이 보안적으로 유용할 수 있다. (ex : VPN) 이러한 서비스를 구현하는데 가장 흔히 사용되는 방법은 Tunneling이라는 기술이다.
Tunneling이란 일반적으로 하위 계층의 트래픽을 상위 계층(또는 동일 계층)의 패킷에 담아 전송하는 개념이다. (IPv4를 IPv6 패킷으로 전송, 이더넷을 UDP, IPv4 패킷으로 전송)
Generic Routing Encapsulation(GRE)는 IP 계층에서 표준화된 터널링 프로토콜로 범용적이며 다양한 네트워크 프로토콜을 터널링 할 수 있다.
Point-to-Point Tunneling Protocol(PPTP)는 Miicrosoft가 개발한 프로토콜로써 VPN 구현에서 널리 사용된다.
Layer 2 Tunneling Protocol(L2TP)는 주로 IPsec과 함께 사용되어 PPTP를 대체하여 사용된다.
IP-in-IP Tunneling은 초기 비표준 방식으로, IPv4 패킷을 다른 IPv4 패킷으로 캡슐화하는 방식이다.

기본 GRE 사양([RFC2784])는 매우 간단하며 다른 패킷을 캡슐화하기 위한 최소한의 구조만 제공한다.
C bit field는 Checksum field의 존재 여부를 표시하는 영역이다. Checksum field가 포함되면, Reserved1 필드도 추가되며 0으로 설정된다.
수정된 [RFC2890]의 포맷에서는 Key field, Seq. Num. field가 추가된다. K, S 비트가 각각 1로 설정되면 해당 필드가 포함된 것으로 간주한다. Key는 여러 패킷에 공통된 값을 제공하여 동일한 flow의 패킷임을 나타낸다. Seq. Num. field는 Multilink 연결 등을 통해 전송된 경우, 순서가 어긋난 패킷을 재정렬하는데 사용한다.
GRE는 IPv4나 IPv6를 사용하여 데이터를 전송하므로 Layer 3 Tunneling 기술로 분류되며, 네트워크 인프라 내부에서 또는 ISP 간의 트래픽 전달에 주로 사용된다.

PPTP는 원격 엑세스 또는 LAN 연결 시뮬레이션에 활용되며 일반적으로 암호화를 사용하여 데이터를 보호한다.
PPTP는 GRE와 PPP를 결합하여 동작한다. GRE가 가상 Point-to-Point link를 만들고, PPP는 이 링크 위에서 작동하는 것이다. 따라서 Ethernet과 같은 Layer 2 frame을 전송하여 LAN 연결을 에뮬레이트한다.
그림을 참조하면 표준 GRE 헤더와 비교하여 몇 가지 차이점을 확인할 수 있다. 추가된 R, s, A, Flags, Recur 필드가 포함되어있다. 이 필드들 중 대부분은 현재 0으로 고정되며 사용되지 않는다.
K 비트는 Key 필드의 존재 여부를, S 비트는 Seq. Num. 필드를, A 비트는 Acknowledgement Number 필드가 존재함을 나타낸다. Seq. Num. 필드가 포함되어있다면, 해당 값은 peer가 확인한 가장 큰 패킷 번호를 나타낸다.
- Unidirectional Links
지금까지는 양방향 통신을 가정했다. 만약 링크를 일방통행으로 가정하면 어떤 문제가 발생할까?
지금까지 논의한 모든 프로토콜은 LCP든, NCP든 먼저 Establish 단계와 그 단계에서 정보 교환을 필요로 했다. 단방향 링크는 이러한 과정이 구조적으로 불가능하다.
이 문제를 해결하기 위해 제안된 표준은 인터넷의 두 번째 인터페이스를 통해 터널링을 결합하여 단방향 링크를 운영하는 방식을 정의한다.([RFC3077])
대표적인 사례로는 위성 기반 인터넷 연결이 있다. 위성을 통해 다운스트림 트래픽을 처리하고, dial-up modem link롤 통해 업스트림 트래픽을 처리하는 방식이다. 이러한 설저은 다운로드가 업로드보다 훨씬 많은 경우 유용하다.
[RFC3077]에서는 수신 측에서 터널을 자동으로 설정하고 유지하기 위해 DTCP(Dynamic Tunnel Configuration Protocol)을 정의한다. DTCP는 다운링크에서 Multicast Hello 메시지를 전송하여, 관심 있는 수신자가 UDL의 존재와 해당 MAC 및 IP 주소를 알 수 있게 한다. 정확한 작동 방식은 다음과 같다.
1. Hello 메시지 전송 : 서버는 사용자들에게 Multicast Hello 메시지를 전송한다. Hello 메시지는 네트워크 내에서 사용자의 secondary interface를 통해 도달할 수 있는 Tunnel endpoint의 목록을 포함한다.
2. 사용자 선택 : 사용자는 사용할 Tunnel endpoint를 선택한다.
3. 터널 구성 : DTCP는 반환 트래픽이 UDL과 동일한 MAC 유형으로 GRE 터널에서 캡슐화되도록 설정한다.
4. 터널 설정의 차이 : 업스트림 측은 터널을 수동으로, 다운 스트림은 자동으로 구성한다.
UDL 처리 방식의 특징은 link asymmetry를 상위 계층 프로토콜에서 숨긴다. 결과적으로 링크의 양 방향에서 서로 최고의 옵션을 협상하는 방식이 아니므로 업, 다운 스트림의 성능이 크게 비대칭적일 수 있으며 상위 계층의 프로토콜에 부정적인 영향을 미칠 수도 있다. 또한 수동으로 업스트림 측에서 터널을 구성해야하므로 민감한 문제가 있다.
- Attack on Link layers
TCP/IP 네트워크의 하위 계층을 공격하여 TCP/IP 동작을 붕괴시키는 방식은 과거로부터 널리 사용되어왔다. 주 타겟이 Link layer가 된 이유는 이러한 하위 계층 정보는 상위 계층과 공유되지 않는 경우가 많아 탐지와 방어가 어려운 점을 악용한 것이다.
1. 802.3 Attack
- Sniffing : Promiscuous Mode로 네트워크 인터페이스 모드를 설정할 시, 자신에게 목적지로 지정되지 않는 트래픽도 수신할 수 있다. 초기 802.3에서는 모든 컴퓨터가 공유된 케이블에 연결되어있었기 때문에 누구라도 다른 사용자의 프레임을 Sniffing하여 내용을 검사할 수 있었다. 이 공격에 대응하기 위해 스위치를 도입하여 네트워크 그룹을 나누고, 상위 계층에서 암호화된 데이터를 전달하게 하는 방식을 사용한다.
이는 또 다시 스위치에 대한 공격으로 이어지게 되었다. 스위치가 포트별로 유지하는 MAC 테이블을 대량의 쓰래기 MAC 주소로 채워 테이블을 초과하게 만드는 것이다. 또는 STP 공격을 통해 공격자의 기기가 root bridge로 향하는 낮은 비용 경로를 제공한다고 속여 트래픽 탈취를 하는 방법도 있다.
2. 802.11 Attack
802.11에서는 무선 공간에 전파가 노출되기 때문에 802.3보다 Sniffing과 위장 문제가 더 심각할 수 있다. Wi-Fi 장치를 모니터링 모드로 설정하면 공중에서 패킷을 스니핑할 수 있다.
- War Driving : 차량이나 장비를 이용해 이동하면서 인터넷 연결을 제공하는 Wi-Fi AP를 검색, 일부 AP는 암호화 되어있지 않거나 Capturing portal을 사용하여 사용자를 등록 페이지로 리디렉션한 후 MAC 주소 기반으로 접근을 필터링하는 방법을 사용하는데 공격자는 사용자가 포털에 등록하는 과정을 관찰한 뒤 이를 위장하여 접속을 탈취한다.
- WEP : 초기 Wi-Fi AP에서 사용된 WEP 암호화는 심각한 취약점이 존재해 WPA, WPA2로 사용하게 되었다.
3. PPP link Attack
PPP 링크는 공격자가 두 피어간 채널에 접근할 수 있는 경우, 여러 방식으로 공격당할 수 있다. PAP 등의 간단한 인증 매커니즘을 사용하는 경우 sniffing을 통해 비밀 번호를 탈취가 가능하게 된다.
- Tunnel endpoint Attack : DoS는 Tunnel endpoint에서 처리할 수 있는 용량을 초과하는 수의 터널을 생성하려는 시도이다. 또는 Tunnel endpoint의 구성을 공격하여 승인되지 않은 터널을 생성 가능하다. 만약 기본 GRE spec을 사용한다면 암호화 또는 인증 기능이 포함되어있지 않을 것이고, 암호화 되지 않은 GRE 터널에서는 트래픽이 평문으로 전달된다. 각 터널의 end point는 터널 내부 트래픽을 신뢰하고 이를 별다른 조치 없이 로컬 네트워크로 전달하기 때문에 검증되지 않은 트래픽이 내부 네트워크로 침투할 가능성이 있다.
- Summary
1. 802.3의 발전 : 이더넷의 속도 향상과 기능적 발전(VLAN, Link aggregation, Frame format 등)을 다루었다. 또한 스위치가 여러 독립적인 스테이션 세트 간에 직접 전기 경로를 구현함으로써 Bridge보다 더 나은 성능을 제공하는 방법을 확인했다. 마지막으로 Full-duplex 동작이 초기의 half-duplex 동작을 대체한 과정을 살펴보았다.
2. 802.11 : 802.3과의 유사점, 차이점을 논하며 Wi-Fi standard detail을 살펴보았다. 2.4GHz, 5GHz의 두 주요 대역에서 라이선스가 필요 없는 네트워크 접근을 제공하는 802.11은 가장 인기 있는 IEEE 표준 중 하나로 자리잡았다.
3. PPP : PPP protocol을 검토하며 이 protocol이 TCP/IP 및 비 TCP/IP 네트워크의 다양한 패킷을 HDLC와 유사한 프레임 형식을 사용하여 캡슐화할 수 있음을 확인했다. PPP는 저속 dial-up modem 부터 고속 광섬유 링크에 이르기까지 다양한 링크에서 사용되며, 자체적으로 압축, 암호화, 인증 및 링크 통합을 포함하는 프로토콜 모음이다. 또한 2개의 피어의 연결을 가정하기 때문에 802.3이나 802.11의 MAC 프로토콜 처럼 공유 매체에 대한 접근 제어 처리가 필요 없다.
4. Loopback interface : 대부분의 구현에서 루프백 인터페이스는 특수 루프백 주소를 활용하여 3 계층까지만 처리를 하게 된다.
5. MTU : Link layer의 중요한 특징인 MTU와 관련 개념인 Path MTU, PMTUD 알고리즘의 필요성을 논의하였다.
6. Tunneling : 하위 계층 프로토콜을 상위(동일) 계층 패킷에 담아 전달하는 터널링 개념을 논의했다. 이 터널링은 overlay network를 형성하는데 사용되며 인터넷을 기반으로 한 또 다른 네트워크 인프라를 구현한다.
7. Link layer attack : Link layer를 목표 또는 도구로 사용한 공격 유형을 간략히 논의했다.
'Computer Network' 카테고리의 다른 글
4. System Configuration: DHCP & Autoconfiguration - 1 (0) | 2025.01.17 |
---|---|
3. The Internet Protocol (IP) - 2 (0) | 2025.01.14 |
3. The Internet Protocol (IP) - 1 (0) | 2025.01.08 |
2. ARP : Address Resolution Protocol (0) | 2024.12.30 |
1. Link Layer - 1 (0) | 2024.11.27 |