조각화는 그룹 교환의 구현이자 IP 프로토콜이 해결하는 두 가지 주요 문제 중 하나입니다. IP 프로토콜의 분할 알고리즘은 주로 서로 다른 물리적 네트워크의 최대 전송 단위 (MTU) 차이로 인한 전송 문제를 해결합니다. 그러나 전송 과정에서 지속적으로 패킷을 조각화하고 재구성하면 많은 작업량과 안전하지 않은 요소가 추가될 수 있습니다. 이 작은 논문에서 우리는 IP 조각화의 원인, 원리, 실현 및 보안 문제를 논의할 것이다.
첫째, IP 조각화란 무엇입니까?
IP 분할은 네트워크에서 IP 메시지를 전송하는 기술적 수단입니다. 패킷을 전송할 때 IP 프로토콜은 패킷을 여러 조각으로 나누어 전송하고 타겟 시스템에서 다시 조립합니다. 이 과정을 조각화라고 합니다.
둘째, 왜 IP 조각화?
각 물리적 네트워크는 링크 계층 데이터 프레임의 최대 길이를 링크 계층 MTU (최대 전송 단위) 라고 합니다. IP 프로토콜에서 패킷을 전송할 때 데이터 프레임 헤더를 추가한 후의 IP 데이터그램 길이가 MTU 보다 길면 패킷은 여러 블록으로 분할되어 전송되고 타겟 시스템에서 재조립됩니다. 예를 들어 이더넷 환경에서 전송할 수 있는 최대 IP 메시지 크기 (MTU) 는 1500 바이트입니다. 전송할 데이터 프레임 크기가 1500 바이트를 초과하는 경우 IP 데이터그램 길이가1472 보다 큽니다 (1500-20-8 =/kloc-0)
셋째, 지적 재산권 파편화의 원리와 분석
조각 재구성 프로세스는 전송 계층에 투명합니다. IP 데이터그램 분할 후 대상 스테이션에 도달해야만 재구성할 수 있고, 목적지에서 IP 계층에 의해 수행되기 때문입니다. 세그먼트 데이터그램도 필요에 따라 다시 세그먼트화할 수 있습니다.
IP 슬라이스와 전체 IP 메시지는 거의 동일한 IP 헤더를 가지며, 각 슬라이스의 ID 필드는 일치하므로 재구성 시 동일한 IP 메시지의 슬라이스를 식별할 수 있습니다. IP 헤더에서 16 자리 식별 번호는 IP 패킷 ID 를 고유하게 기록하며 동일한 ID 를 가진 IP 슬라이스는 재조립됩니다. 13 슬라이스 오프셋은 전체 그룹을 기준으로 IP 슬라이스의 위치를 기록합니다. 이 두 테이블 사이에 있는 3 자리 플래그는 이 조각 뒤에 새로운 조각이 있는지 여부를 나타냅니다. 이 세 가지 플래그는 수신자가 IP 데이터를 재구성할 수 있는 IP 조각에 대한 모든 정보 (뒷부분에서 설명) 를 구성합니다.
1, 플래그 필드의 역할
플래그 필드는 세그먼트 데이터그램에서 중요한 역할을 합니다. 데이터보가 조각화되면 해당 값이 각 슬라이스로 복사되는 플래그 필드 중 하나는 "조각화 없음" 비트이고 다른 하나는 "더 많은 조각" 을 나타냅니다. 마지막 데이터그램을 제외한 각 데이터그램에 대해 비트를 1 으로 설정해야 합니다. 슬라이스 오프셋 필드는 슬라이스가 원본 데이터그램의 시작 부분을 오프셋하는 위치입니다. 또한 데이터가 세그먼트화되면 각 세그먼트의 총 길이 값을 해당 세그먼트의 길이 값으로 변경해야 합니다. 플래그 필드의 비트가 1 으로 설정되면 IP 는 데이터그램을 세그먼트화하지 않습니다. 중간 라우터에서 분할해야 하는 경우 데이터그램을 삭제하고 소스 호스트에 ICMP 도달 불가 오류 메시지를 보냅니다. 특별한 요구 사항이 아니라면1으로 설정해서는 안 됩니다. 맨 오른쪽 비트 1 은 메시지가 마지막 IP 조각이 아님을 나타냅니다. 전체가 아닌 일부 IP 조각을 의도적으로 전송하면 대상 호스트가 조각 소비를 기다리고 시스템 자원을 차지하게 됩니다. 일부 조각 별 폭풍 공격은이 원칙에 근거합니다. 이더넷을 예로 들어보죠. 이더넷 전송당 전기 제한으로 인해 이더넷 프레임당 최소 크기는 64 바이트이고 최대 크기는 15 18 바이트입니다. 이더넷 프레임 끝의 머리 (DMAC 목적 MAC 주소 48 비트 = 6 바이트+SMAC 소스 MAC 주소 48 비트 = 6 바이트+유형 필드 2 바이트)14 바이트 및 CRC 검사 섹션 4 바이트; 네트워크 계층의 IP 프로토콜은 이 값에 따라 상위 계층에서 전달되는 데이터를 분할할지 여부를 결정하기 때문에 네트워크 계층 프로토콜도 매우 중요한 관심사입니다. 한 상자에 큰 빵 한 덩어리를 담을 수 없는 것처럼, 우리는 빵을 조각으로 잘라 여러 상자에 넣어야 한다.
다음은 IP 헤더에서 플래그 비트의 형식과 각 플래그의 의미입니다.
식별
희귀하다
DF
중간 주파수
조각 오프셋
R: 사용하지 마십시오. DF: 조각하지 않고,' 조각하지 않는' 비트, 이 비트가 1 으로 설정되어 있다면 IP 계층은 데이터보를 조각하지 않습니다. MF: more fragment, "more fragments", 마지막 조각을 제외하고 데이터그램을 구성하는 모든 조각은 비트를1으로 설정해야 합니다. 조각 오프셋: 원본 패킷의 시작 위치에서 조각이 오프셋됩니다. 오프셋된 바이트 수는 이 값에 8 을 곱한 값입니다.
2.MTU 원칙
두 대의 원격 PC 가 통신해야 할 때, 그 데이터는 많은 라우터와 다양한 네트워크 매체를 거쳐야 대측에 도달할 수 있다. 네트워크에 있는 미디어마다 MTU 가 다릅니다. 긴 수도관처럼 두께가 다른 수도관으로 구성되어 있습니다 (MTU 는 다름). 이 수도관을 통과하는 최대 물의 양은 중간에 가장 작은 수도관에 의해 결정된다.
네트워크 계층의 상위 계층 프로토콜 (이 경우 TCP/IP 프로토콜 패밀리의 경우) 의 경우 "수도관" 의 두께에 관심이 없으며 네트워크 계층의 문제라고 생각합니다. 네트워크 계층 IP 프로토콜은 상위 계층 프로토콜의 각 패킷 크기를 확인하고 로컬 MTU 크기에 따라' 분할' 여부를 결정합니다. 조각화의 가장 큰 단점은 전송 성능을 저하시킨다는 것이다. 한 번에 할 수 있는 일은 여러 번 할 수 있기 때문에 네트워크 계층의 상위 계층 (즉, 전송 계층) 구현에서 이를 알아차리는 경우가 많습니다! 어떤 고위층은 나에게 이 빵이 어떤 이유로 슬라이스할 수 없다고 물어본다. 나는 빵이 완전하기를 바란다. 그래서 나는 IP 포두에 DF (조각하지 마라) 라는 라벨을 붙일 것이다. 이렇게 하면 IP 패킷이 대형 단면 네트워크 (수도관 내부) 에서 전송될 때 MTU 가 IP 패킷보다 작으면 전달 장치가 필요에 따라 패킷을 폐기합니다. 그런 다음 발신자에게 오류 메시지를 반환합니다. 이로 인해 통신 문제가 발생하는 경우가 많지만 다행스럽게도 대부분의 네트워크 링크의 MTU 는 1500 이상입니다 (X.25 네트워크의 576 과 지점 간 네트워크의 296 만 1500 보다 작음).
UDP 프로토콜의 경우 프로토콜 자체는 연결되지 않은 프로토콜로, 패킷의 도착 순서와 정확한 도착에 관심이 없으므로 일반적인 UDP 응용 프로그램에는 조각에 대한 특별한 요구 사항이 없습니다.
TCP 프로토콜은 다르며 연결 지향 프로토콜입니다. TCP 프로토콜의 경우 패킷의 도착 순서 및 전송에 오류가 있는지 여부에 대해 매우 우려하고 있습니다. 따라서 일부 TCP 애플리케이션은 세그먼트-세그먼트 없음 (DF) 이 필요합니다.
3.MSS 원리
Mss (최대 신호 크기) 는 TCP 패킷이 한 번에 전송할 수 있는 최대 데이터 세그먼트입니다. 최적의 전송 효율성을 위해 TCP 프로토콜은 일반적으로 연결을 설정할 때 양 당사자의 MSS 값을 협상합니다. 이 값은 TCP 프로토콜이 구현될 때 MTU 값으로 대체되는 경우가 많기 때문에 (IP 헤더 크기와 TCP 데이터 세그먼트의 헤더에서 20 바이트를 빼야 함) MSS 값은 종종 1460 입니다. 통신 당사자는 양 당사자가 제공한 최소 MSS 값을 기준으로 이 연결의 최대 MSS 값을 결정합니다.
IP 데이터그램이 조각화되면 각 슬라이스는 자체 IP 헤드가 있는 패킷이 되며 라우팅을 선택할 때 다른 패킷과 독립적입니다. 이런 식으로, 이 데이터그램이 목적지에 도착하면 그것들은 무질서할 수 있지만, IP 보고 헤더에는 수신기가 이 데이터그램을 제대로 조립할 수 있는 충분한 정보가 있다.
IP 조각화 과정은 투명하게 보이지만, 사람들이 원하지 않는 한 가지는, 데이터 한 토막만 잃어버리더라도 전체 데이터보를 재전송해야 한다는 것이다. (존 F. 케네디, Northern Exposure (미국 TV 드라마), 데이터명언) IP 계층 자체에는 시간 초과 재전송 메커니즘이 없기 때문에 상위 계층은 시간 초과 및 재전송을 담당합니다 (TCP 에는 시간 초과 및 재전송 메커니즘이 있고 UDP 에는 없습니다. 일부 UDP 응용 프로그램 자체는 시간 초과 및 재전송을 수행합니다.) TCP 세그먼트 중 하나가 손실되면 TCP 는 시간 초과 후 전체 TCP 세그먼트를 다시 보냅니다. 이는 IP 데이터그램에 해당합니다. 데이터보 중 하나만 재발송할 수 있는 방법은 없다. 사실, 데이터 그램이 시작 시스템이 아닌 중간 라우터에 의해 분할되면 시작 시스템은 데이터 그램이 어떻게 분할되는지 알 수 없습니다. 이런 이유로 조각화를 피해야 하는 경우가 많다.
넷째, IP 조각 알고리즘 원리
조각화 재구성은 IP 계층에서 가장 중요한 작업입니다. 즉, 한 패킷이 한 네트워크 A 에서 다른 네트워크 B 로 들어갈 때 원래 네트워크의 패킷이 다른 네트워크 또는 인터페이스의 MTU 길이보다 길면 조각화가 필요하다는 것입니다 (DF 가 1 으로 설정된 경우 패킷을 삭제하고 ICMP 에 도달할 수 없는 경우) 따라서 IP 패킷 헤더에는 조각 패키지의 동일한 식별 번호, 조각의 오프셋, 마지막 조각인지 여부 및 조각 허용 여부를 나타내는 여러 식별 필드가 있습니다. 전송 중 게이트웨이는 이러한 식별 필드를 사용하여 다시 조각화하므로 호스트는 수신된 조각을 다시 조립하여 데이터를 복구할 수 있습니다. 따라서 조각화된 패킷이 네트워크 모니터링 장치, 보안 장치 및 시스템 관리 장치를 통과할 때 정보를 얻고 데이터를 처리하기 위해 패킷을 조각화하거나 재구성해야 합니다.
동사 (verb 의 약어) IP 파편 보안 문제
IP 분할은 네트워크에서 IP 메시지를 전송하는 데 일반적으로 사용되는 기술이지만 몇 가지 보안 위험이 있습니다. IP 조각을 재구성하는 동안 Ping of Death, teardrop 등의 공격으로 인해 일부 시스템이 종료되거나 재부팅될 수 있습니다. 서비스 거부 공격 외에도 일부 IP 조각 공격은 방화벽이나 네트워크 침입 탐지 시스템을 피하는 수단으로 자주 사용됩니다. 일부 라우터 또는 네트워크 기반 침입 탐지 시스템 (NIDS) 은 IP 세그먼트 분할 및 재구성이 부족하여 정상적인 필터링 또는 감지를 수행할 수 없습니다.
작은 조각 공격 소개:
작은 조각 공격은 악의적인 조작을 통해 작은 조각을 보내고 패킷 필터링 시스템이나 침입 감지 시스템을 우회하는 공격 방식이다. 공격자는 악의적인 작업을 통해 두 세그먼트에 TCP 헤더 (보통 20 바이트) 를 분산하여 두 번째 세그먼트에 대상 포트 번호를 포함시킬 수 있습니다. 패킷 필터링 장치 또는 침입 감지 시스템의 경우 먼저 대상 포트 번호를 결정하여 허용/금지 조치를 취합니다. 그러나 대상 포트 번호는 악성 슬라이스를 통해 두 번째 슬라이스에 배치되므로 패킷 필터링 장치는 첫 번째 슬라이스를 판단하여 후속 슬라이스를 통과할 수 있는지 여부를 결정합니다. 하지만 이 조각들은 대상 호스트에서 재구성된 후 각종 공격을 형성한다. 이 방법은 일부 침입 탐지 시스템과 일부 보안 필터링 시스템을 우회할 수 있습니다. 현재 일부 스마트 패킷 필터링 장치는 보고 헤더에 포트 정보가 포함되지 않은 세그먼트를 직접 폐기합니다.