IP Fragment( IP단편화 ) 프로그래밍

2017. 6. 30. 21:42NetworkHacking/Network




1> IP조각화 ( 단편화 )

큰 IP패킷들은 MTU ( Maximun Transmission Unit )를 갖는 링크를 통해 전송되려면 적적할 크기의 여러개의 작은 패킷들로 쪼개져서 전송된다

최종 목적지에 도달하면 쪼개진 패킷들은 다시 원래의 큰 패킷으로 재조립(Reassembly) 되어진다



2> IPv4 헤더 단편화 제어 필드

[ IP Header ]


 * Identifier ( 2byte ) - 각 조각이 동일한 데이터 그램에 속하면 같은 번호를 가진다

 * Flag & Fragment Offset ( 2byte )

    - Flag : 분열의 특성을 나타내는 플래그

  0 : 뒤 쪽에 조각이 없고 현재 조각이 마지막인 경우 0

  1 : 뒤 쪽에 더 많은 조각이 존재한다면 1

    - Fragment Offset 

  최초의 분열된 조각으로부터 어느 지점에 붙어야 하는 위치를 나타낸다 ( 8바이트 단위 )

  각 조각들이 순서가 바뀌어 도착할 수 있기 때문에 중요한 필드이다



 3> 파이썬으로 프로그래밍 하여 직접 IP패킷을 단편화 시켜보자


[ 실행결과 ]

Segment 1

id = 0x1234

flag : 1

offset : 0

Segment 2

id = 0x1234

flag : 1

offset : 8

Segment 3

id = 0x1234

flag : 0

offset : 16


해당 패킷들을 단편화시켜서 다른 아이피로 패킷을 보냈습니다

id값이 같은 Segment들이 모여서 flag와 offset을 확인해서 IP재조립이 이루어집니다

이로써 IP단편화에 대한 블로깅을 마칩니다