지니의 따듯한 공간

단편화 및 검사합 본문

Network/Network Analysis

단편화 및 검사합

Jineer 2019. 4. 15. 15:32

최대 전달 단위 (MTU; Maxmum Transfer Unit)

 - 프레임의 형식에 정의된 필드 중의 하나

 -  데이터그램이 프레임 속에 캡슐화 될 때 데이터그램의 크기는 최대 길이보다 작아야 함

최대 전달 단위 (MTU)

 

MTU의 값은 네트워크 프로토콜마다 다름 

서로 다른 네트워크의 MTU

 

※단편화와 관련된 필드

 

식별자(identification)

 - 16bit 필드는 발신지 호스트로부터 나온 데이터그램을 유일하게 식별

 - 식별자와 발신지 IP주소의 조합은 데이터그램이 발신지 호스트를 떠날 때 유일하게 정의되어야 하고, 

이러한 유일성을 보장하기 위해 IP프로토콜은 카운터를 사용하여 데이터그램에 레이블을 붙임

 - 식별자는 목적지에서 데이터그램을 재조립하는데 도움이 됨

 

플래그(Flag)

 - 3bit 필드로 처음 비트는 사용되지 않음

 - 두 번째 비트는 do not fragment로 이 플래그의 값이 1이면 시스템은 데이터그램을 단편화 해서는 안 됨

 - 세 번째 비트는 more fragment로 이 값이 1이면 데이터그램은 마지막 단편이 아니라는 것을 알림

Flag

- 첫 비트는 사용하지 않음

- DF (Don't Fragmentation)

     0 : 단편화 가능  1: 단편화 불가능

- MF (More Fragmentation)

     0 : 분할된 패킷이 마지막 패킷(혹은, 단편화 되지 않았음)

     1 : 마지막 패킷이 아님

 

 

Flag 변수 , // on , off ,/ true, false 여부에 따라 작동이 크게 바뀌는 변수 

 

 

 

단편화 옵셋

  단편화 옵셋 (Fragmentation offset)

    -13 bit 필드로 전체 데이터그램 내에서 단편의 상대적 위치를 나타 냄

    - 원래의 데이터그램 내에서 데이터의 옵셋을 8 바이트 단위로 나타 냄

 

  800 으로 짤리면 실제 거리에서 % 8 해서 몫이 들어간다.

  해당하는 값의 실제값은 x8이다.

 

 

단편화의 예

젤 첫번째 패킷은 Offset이 0 이다.

두 번째 패킷의 실제 Offset은 1400인데, 필드에 들어 갈 때에는 8로 나눠서 들어간다. 즉 175로 들어간다.

 세 번째 패킷의 실제 Offset은 2800인데, 필드에 들어 갈 때에는 8로 나눠서 들어간다. 즉 350

 

 

 

identifier 식별자는 변하지않는다. 14567 어디에서 쪼개 졌는지 알기 위함

다시 순서대로 합할때 누가 앞인지는 어떻게 아는가? offset으로 알 수 있다.

 

 

Fragment 2.1을 보면 MD가 1이다. 당연한 결과다. MD는 원본 데이터그램을 기준으로 마지막 패킷이 0의 값을 가진다.

 

※옵션

- IP 데이터그램의 헤더는 고정 부분과 가변 부분 중 가변 부분은 옵션으로 구성

- 최대 길이는 40바이트 

- 옵션은 네트워크를 시험하거나 디버그하기 위하여 사용

 

 형식

 - 코드 필드와 길이 필드, 그리고 가변 길이의 데이터 필드로 구성

옵션 형식

 

   Copy only in first fragment : 

 

   Class는 00/ 10 만 사용한다. 

 

  ※ 코드

  복사 (copy)

    - 1bit로 구성된 복사 필드는 단편화에 옵션을 포함시킬 것인지를 제어

    - 0인 경우에 옵션은 첫 번째 단편에만 복사

    - 1인 경우에는 옵션이 모든 단편에 복사

 

  클래스 (class)

   - 2bit로 구성된 클래스 필드는 옵션의 일반적인 목적을 정의

   - 00인 경우에는 옵션이 데이터그램의 제어에 사용

   - 10인 경우에는 옵션이 디버그나 관리 목적

   - 01과 11은 아직 정의되지 않음

 

 번호 (number)

   - 5bit로 구성된 번호 필드는 옵션의 유형을 정의

   - 5bit는 32개의 다른 유형을 정의할 수 있지만 현재 여섯 유형만 정의 되어 있음

 

 길이

   - 코드 필드와 길이 필드를 포함한 옵션의 전체 길이를 정의

   - 이 필드는 모든 옵션 유형에 있지 않음

 

 데이터

   - 특별한 옵션이 필요로 하는 데이터를 포함하고 있음

   - 이 필드는 모든 옵션 유형에 있지 않음

 

검사합

송신자의 검사합 계산

   - 송신자에서 패킷은 n 비트 조각으로 나뉘어짐 (보통 n은 16)

   - 이 조각들은 1의 보수 연산을 사용하여 전부 더해져서 n비트의 결과를 생성

   - 합에 대한 1의 보수가 검사합이 됨

 

수신자의 검사합 계산 (계산)

   - 수신자는 수신된 패킷을 k개의 조각으로 나눈 후 이들을 전부 합함

   - 다음 이 합에 대한 1의 보수를 구함

   - 결과가 0이면 패킷을 받아들이고 그렇지 않으면 거부     

검사합 개념

1의 보수 연산을 이용한 검사합

  - 데이터 전달과 처리 과정에서 오류가 없다면 수신자가 모든 조각을 더하고 1의 보스를 구한 결과가 0이 되어야 함

  - 송신자에서 모든 조각을 더한 결과가 T라고 가정하면 이 결과에 대한 1의 보수는 이 수에 대한 음의 수인 -T가 됨

  - 수신자는 패킷을 수신한 후 모든 조각을 합함

  - 이 것은 T와 -T를 합한 것과 같고 그 결과는 -0이 됨

  - 다시 이에 대한 보수를 구하면 0이 됨

  - 그러므로 최종 결과가 0이면 받아들이고 그렇지 않으면 폐기함

 

※ 1의 보수에는 -0과 +0이 존재 0을 하나로 만들기 위해 2의보수가 탄생

1의 보수 연산을 이용한 검사합

IP 패킷의 검사합

 - 검사할 필드를 0으로 만듬

 - 다음 모든 헤더를 16bit의 조각으로 나누고 이들의 합을 구함

 - 이 결과에 대한 보수를 구하여 검사합 필드에 삽입

검사합 계산의 예

Checksum 계산 후 기존 필드에 OverWriting 되어 패킷 완성 후 전달 된다.

'Network > Network Analysis' 카테고리의 다른 글

DNS (Domain Name System)  (0) 2019.06.10
ICMP (2) Query  (0) 2019.04.30
데이터 그램 2  (0) 2019.04.15
IPv6 주소 체계  (0) 2019.04.15
데이터그램 (Datagram) 이란?  (0) 2019.04.09
Comments