67
1 IP 패킷의 헤더 구조 필드에 대한 이해 IP 패킷의 단편화 개념 IP 패킷의 헤더 IP 패킷의 검사합 계산 방법 IP 패키지의 구성요소 모듈의 의사 코드 Objectives Chapter 7 IPv4

IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

1

• IP 패킷의 헤더 구조 및 각 필드에 대한 이해

• IP 패킷의 단편화 개념

• IP 패킷의 헤더

• IP 패킷의 검사합 계산 방법

• IP 패키지의 구성요소 및 각 모듈의 의사 코드

Objectives

Chapter 7

IPv4

Page 2: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

2

목 차

• 소개

• 데이터그램

• 단편화

• 옵션

• 검사합

• IP 패키지

Page 3: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

3

소개

7.1

Page 4: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

4

7.1 소개

IP 프로토콜

TCP/IP에서 사용하는 전송 메커니즘

신뢰성 없는 비연결형 데이터그램 프로토콜

최선노력(best effort) 전달 서비스

데이터에 대한 오류 검사 및 추적 기능을 수행하지

않음

각 데이터그램은 독립적으로 처리

각 데이터그램은 서로 다른 경로로 전달될 수 있음

각 데이터그램은 순서가 바뀌어 전달될 수 있음

Page 5: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

5

7.1 소개(계속)

IP 프로토콜의 위치

Page 6: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

6

데이터그램

7.2

Page 7: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

7

7.2 데이터그램

IP 데이터그램

Page 8: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

8

7.2 데이터그램 (계속)

가변 길이 패킷

헤더와 데이터 부분으로 구성

헤더 : 20 ~ 60 바이트 길이, 라우팅과 전달에 필요한

정보

Page 9: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

9

7.2 데이터그램 (계속)

버전(Ver) - IP 프로토콜 버전(4비트)

헤더길이(HLEN)

헤더의 전체 길이를 4 바이트 단위로 표시(4 비트)

기본값(Option 필드가 없는 경우) : 5

최대값 : 15

Page 10: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

10

7.2 데이터그램 (계속)

서비스 유형(Service type) - (8 비트)

라우터에 의해 데이터그램이 처리되는 방법을 지정

3 bit는 우선 순위, 4 bit는 서비스 유형

Precedenceinterpretation

0 0 0xxx 0

0

1

xx

x

x

x

x

x

x

x

x

x

x

1

1

Differential serviceinterpretation

x

Page 11: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

11

7.2 데이터그램 (계속)

차별화된 서비스(Differentiated Service)

오른쪽 3비트가 0이면 우선순위와 같은 의미로 해석

오른쪽 3비트가 0이 아니면 기관에서 정의된 서비스

코드 포인트의 값

Page 12: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

12

7.2 데이터그램 (계속)

전체 길이(total length)

16 bit 필드(65,535 까지 표현)

IP 데이터그램의 전체 길이를 바이트 단위로 표시

데이터 길이 = 전체 길이 – 헤더 길이

이더넷 프레임에서 작은 데이터그램의 캡슐화

Page 13: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

13

7.2 데이터그램 (계속)

식별(Identification) – 단편화에 사용

플래그(flag) – 단편화에 사용

단편 옵셋(fragmentation offset) – 단편화에 사용

수명(time to live) – 데이터그램의 수명

데이터그램의 수명

기본값 : 16

라우터에서는 1씩 감소시킨다

감소한 값이 0이면 데이터그램 폐기

Page 14: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

14

7.2 데이터그램 (계속)

프로토콜(protocol)

IP의 서비스를 사용하는 상위 계층 프로토콜

Page 15: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

15

7.2 데이터그램 (계속)

프로토콜(protocol) (계속)

Page 16: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

16

7.2 데이터그램 (계속)

검사합(checksum)

오류 확인

발신지 주소(source address)

목적지 주소(destination address)

Page 17: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

17

7.2 데이터그램 (계속)

Example

처음 8비트가 “01000010”인 IP 패킷을 수신

HLEN = 2 이므로

총 헤더의 길이 = 2 * 4 = 8 바이트

최소 헤더의 길이는 20바이트이다.

따라서 패킷을 폐기한다.

Page 18: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

18

7.2 데이터그램 (계속)

Example

HLEN = 1000(2진수) = 8

총 헤더의 길이 = 8 * 4 = 32 바이트

20바이트를 제외한 12바이트가 옵션이다.

Page 19: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

19

7.2 데이터그램 (계속)

Example

HLEN = 0x5

총 헤더의 길이 = 5 * 4 = 20 바이트

전체 길이 = 0x0028 = 40 바이트

헤더를 제외한 나머지 20바이트가 데이터이다.

Page 20: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

20

7.2 데이터그램 (계속)

Example

도착한 패킷의 16진수 값

45000028000100000102...................

수명 필드 = 01 이므로 더 이상 전달하지 않는다.

프로토콜 필드 = 02 이므로 상위계층 프로토콜은 IGMP

이다.

Page 21: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

21

단편화

7.3

Page 22: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

22

7.3 단편화

물리 네트워크의 종류에 따라 프레임 형식과

크기가 서로 다르다

각 네트워크에서 전달되는 최대 전송 길이를

MTU (Maximum Transfer Unit) 라고 함

MTU 길이에 따라 나누어 보내는 것을 단편

화 (fragmentation) 라고 함

Page 23: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

23

7.3 단편화 (계속)

MTU(Maximum Transfer Unit)

Page 24: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

24

7.3 단편화 (계속)

서로 다른 네트워크의 MTU

Page 25: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

25

7.3 단편화 (계속)

단편화와 관련된 필드

식별자(identification)

발신지 호스트로부터 나온 데이터그램을 유일하게 식별

단편들은 같은 식별자 값을 가짐

플래그(flag)

3 비트 필드

D 비트 : 단편화 할 수 없음을 표시

M 비트 : 한 데이터그램의 마지막 단편이 아님을 표시

Page 26: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

26

7.3 단편화 (계속)

D 비트가 1이면서 사용 가능한 네트워크로 데이터그램을

전달할 수 없으면, 데이터그램을 폐기하고 ICMP 오류 메시

지를 발신지 호스트로 전달한다.

단편화 옵셋(Fragmentation offset)

13 비트 필드

전체 데이터그램에서 단편의 상대적인 위치(8 바이트 단위)

Page 27: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

27

7.3 단편화 (계속)

단편화 예

Page 28: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

28

7.3 단편화 (계속)

상세한 단편화 예

Page 29: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

29

7.3 단편화 (계속)

수신한 단편들의 재조립

첫 번째 단편의 옵셋 값은 0

첫 번째 단편의 데이터 길이를 8로 나눈 값이 두 번째

단편의 옵셋 값과 동일

(두 번째 단편의 데이터 길이를 8로 나눈 값 + 두 번

째 단편의 옵셋) 이 세 번째 단편의 옵셋 값과 동일

M 비트가 0이면 마지막 단편

Page 30: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

30

7.3 단편화 (계속)

Example

M 비트가 ‘0’인 패킷 도착

마지막 단편이 확실함

옵셋 값이 ‘0’이면 단편화 되지 않은 첫 번째 단편

아니면 마지막 단편

Page 31: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

31

7.3 단편화 (계속)

Example

M 비트가 ‘1’인 패킷 도착

마지막 단편이 아님이 확실함

옵셋 값이 ‘0’이면 단편화 된 첫 번째 단편

아니면 중간 단편

Page 32: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

32

7.3 단편화 (계속)

Example

M 비트가 ‘1’이고 옵셋이 ‘0’인 패킷 도착

단편화 된 첫 번째 단편

Page 33: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

33

7.3 단편화 (계속)

Example

옵셋이 ‘100’인 패킷 도착

이 단편의 첫 번째 바이트 번호 = 8 * 100 = 800

Page 34: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

34

7.3 단편화 (계속)

Example

옵셋이 ‘100’이고 HLEN가 ‘5’이고 전체 길이가 ‘100’인

패킷 도착

이 단편의 첫 번째 바이트의 번호 = 8 * 100 = 800

데이터 길이 = 전체 길이 – 헤더 길이 = 100 – 20 = 80

마지막 바이트의 번호 = 879

Page 35: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

35

옵션

7.4

Page 36: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

36

7.4 옵션

옵션 형식

IP 데이터그램 헤더 내의 가변 부분(최대 40바이트)

Page 37: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

37

7.4 옵션 (계속)

코드 필드(8 비트) : 고정 길이

복사(copy)

단편화에 옵션을 포함시킨 것인지 제어

클래스(class)

옵션의 목적을 나타냄

번호(number)

옵션 유형

길이 필드(8 비트) : 고정길이

옵션의 전체 길이

데이터 필드 : 가변 길이

Page 38: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

38

7.4 옵션 (계속)

옵션 유형

Page 39: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

39

7.4 옵션 (계속)

무연산(No Operation)

옵션 사이의 여백을 채워줌 (1 byte option)

Page 40: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

40

7.4 옵션 (계속)

종료 옵션(End of Option)

옵션 필드의 패딩 목적으로 사용 (1 byte option)

마지막 옵션으로만 사용

Page 41: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

41

7.4 옵션 (계속)

경로 기록(Record Route) 옵션

데이터그램을 처리한 인터넷 라우터들 기록

Page 42: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

42

7.4 옵션 (계속)

Pointer : 첫 번째 빈 엔트리의 바이트 번호

라우터는 Pointer 필드 값과 옵션의 길이 필드 비교

Pointer 필드 값이 크지 않은 경우에만 기록

데이터그램이 떠나는 인터페이스의 IP 주소를 기록

Pointer 값을 4만큼 증가

Page 43: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

43

7.4 옵션 (계속)

데이터그램이 라우터를 경유하여 이동하는 과정

67.34.30.6 138.6.25.40

67

.14

.10

.22

140.10.0.0/16

14

0.1

0.5

.4

20

0.1

4.7

.9

200.14.7.0/24

20

0.1

4.7

.14

13

8.6

.22

.26

138.6.0.0/16

14

0.1

0.6

.3

Network Network Network Network67.0.0.0/24

7 15 7 15140.10.6.3

7 15 12140.10.6.3200.14.7.9

7 1615140.10.6.3200.14.7.9

138.6.22.26

4 8

Page 44: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

44

7.4 옵션 (계속)

엄격한 발신지 경로(Strict Source Route) 옵션

데이터그램이 거쳐야 할 경로를 미리 지정하기 위해 사용

Page 45: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

45

7.4 옵션 (계속)

데이터그램은 옵션에 정의된 모든 라우터를 방문

데이터그램 폐기하고, ICMP 오류 메시지 발행하는 경우

리스트에 없는 라우터를 방문

최종 목적지에서 데이터그램의 Pointer 값이 옵션 길이보다 적은 경우 (방문하지 않은 라우터가 리스트에 존재)

라우터로 들어온 데이터그램의 Pointer 값이 옵션 길이보다 큰

경우 (지정된 모든 라우터를 방문한 경우)

정상적으로 처리되면 Pointer 위치의 IP 주소를 들어온

IP 주소로 대치

Page 46: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

46

7.4 옵션 (계속)

엄격한 발신지 경로 개념

67.34.30.6 138.6.25.40

67

.14

.10

.22

140.10.0.0/16

14

0.1

0.5

.4

20

0.1

4.7

.9

200.14.7.0/24

20

0.1

4.7

.14

13

8.6

.22

.26

138.6.0.0/16

14

0.1

0.6

.3

Network Network Network Network67.0.0.0/24

Source: 67.34.30.6Destination: 67.14.10.22

200.14.7.14140.10.5.4

415137

138.6.25.40

Destination:140.10.5.4Source: 67.34.30.6

815137

138.6.25.40

67.14.10.22200.14.7.14

Source: 67.34.30.6Destination:200.14.7.14

1215137

138.6.25.40

67.14.10.22140.10.5.4

Source: 67.34.30.6Destination:138.6.25.40

161513767.14.10.22

200.14.7.14140.10.5.4

Page 47: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

47

7.4 옵션 (계속)

느슨한 발신지 경로(Loose Source Route) 옵션

엄격한 발신지 경로와 비슷하지만 리스트에 없는 라우터도 방문 가능

Page 48: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

48

7.4 옵션 (계속)

타임스탬프(Timestamp) 옵션

라우터가 데이터그램을 처리하는 시간 기록

세계 표준시(1900/01/01 00:00)의 millisecond 단위 표시

Page 49: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

49

7.4 옵션 (계속)

하나의 라우터에서 다른 라우터로 가는데 걸리는 시간

추정

오버플로우(O-Flow) 필드

시간을 기록하지 못한 라우터의 수 기록

플래그

0 : 타임스탬프만 기록

1 : 나가는 IP 주소와 타임스탬프 기록

3 : 주어진 IP 주소와 데이터그램이 들어온 IP 주소가 같으면 IP

주소에 나가는 IP 주소를 기록하고 타임스탬프를 기록

Page 50: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

50

7.4 옵션 (계속)

타임스탬프에서 플래그 사용

Page 51: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

51

7.4 옵션 (계속)

타임스탬프 개념

67.34.30.6

67

.14

.10

.22

140.10.0.0/16

14

0.1

0.5

.4

20

0.1

4.7

.9

200.14.7.0/24

20

0.1

4.7

.14

13

8.6

.22

.26

138.6.0.0/16

14

0.1

0.6

.3

Network Network Network Network67.0.0.0/24

68 28 05 1 68 28 13 0 1140.10.6.336000000

68 28 21 0 1140.10.6.336000000200.14.7.936000012

68 28 29 0 1140.10.6.336000000200.14.7.9

138.6.22.2636000012

36000020

Page 52: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

52

검사합

7.5

Page 53: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

53

7.5 검사합

To create the checksum the sender does

the following:

1. The packet is divided into k sections,

each of n bits.

2. All sections are added together using

one’s complement arithmetic.

3. The final result is complemented

to make the checksum.

Note:

Page 54: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

54

7.5 검사합 (계속)

검사합 개념

Page 55: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

55

7.5 검사합 (계속)

Example 2진수 검사합의 예

Page 56: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

56

7.5 검사합 (계속)

Example 16진수 검사합의 예

Page 57: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

57

IP 패키지

7.8

Page 58: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

58

7.8 IP 패키지

IP 패키지 구성요소

Page 59: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

59

7.8 IP 패키지 (계속)

IP 패키지 구성 요소

헤더 추가 모듈

처리 모듈

라우팅 모듈

단편화 모듈

재조립 모듈

재조립 테이블

라우팅 테이블

MTU 테이블

Page 60: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

60

7.8 IP 패키지 (계속)

헤더 추가 모듈(Header-Adding Module)

Receive: data, destination address

1. Encapsulate the data in an IP datagram.

2. Calculate the checksum and insert it in the checksum field.

3. Send the data to the corresponding input queue.

4. Return.

Page 61: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

61

7.8 IP 패키지 (계속)

처리 모듈(Processing Module) 1. Remove one datagram from one of the input queues.

2. If (destination address is 127.X.Y.Z or

matches one of the local addresses)

1. Send the datagram to the reassembly module.

2. Return.

3. If (machine is a router)

1. Decrement TTL.

4. If (TTL less than or equal to zero)

1. Discard the datagram.

2. Send an ICMP error message.

3. Return.

5. Send the datagram to the routing module.

6. Return.

Page 62: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

62

7.8 IP 패키지 (계속)

큐(Queue) – 입/출 큐

라우팅 테이블 : 패킷의 다음 홉 주소를 결정하기 위해 라우팅 모듈이 사용

라우팅 모듈 : 처리 모듈로부터 받은 데이터그램 처리

MTU 테이블 : 단편화 모듈이 특정 인터페이스의 MTU를 찾기 위해 사용

Page 63: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

63

7.8 IP 패키지 (계속)

단편화 모듈(Fragmentation Module) Receive: an IP packet from routing module 1. Extract the size of the datagram. 2. If (size > MTU of the corresponding network) 1. If (D (do not fragment) bit is set) 1. Discard the datagram. 2. Send an ICMP error message 3. Return. 2. Else 1. Calculate the maximum size. 2. Divide the datagram into fragments. 3. Add header to each fragment. 4. Add required options to each fragment. 5. Send the datagrams. 6. Return. 3. Else 1. Send the datagram. 4. Return.

Page 64: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

64

7.8 IP 패키지 (계속)

재조립 테이블(Reassembly table)

재조립 모듈에 의해 사용

재조립 테이블

Page 65: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

65

7.8 IP 패키지 (계속)

재조립 테이블 필드

상태(state) : FREE 또는 IN-USE

IP 주소 : 발신지 주소

데이터그램 ID : 단편을 구분하는 번호

타임 아웃 : 단편이 도착해야 하는 시간

단편 : 연결 리스트의 포인터

Page 66: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

66

7.8 IP 패키지 (계속)

재조립 모듈(Reassembly Module)

Receive: an IP datagram from the processing module

1. If (offset value is zero and the M bit is 0)

1. Send the datagram to the appropriate queue.

2. Return.

2. Search the reassembly table for the corresponding entry.

3. If (not found)

1. Create a new entry.

Page 67: IPv4 - KOCWelearning.kocw.net/KOCW/document/2016/bufs/limintaek/7.pdf · 2016. 9. 5. · 1 • IP 패킷의 헤더 구조 및 각 필드에 대한 이해 • IP 패킷의 단편화

67

7.8 IP 패키지 (계속)

재조립 모듈(Reassembly Module) (계속) 4. Insert the fragment at the appropriate place in the link list.

1. If (all fragments have arrived)

1. Reassemble the fragments.

2. Deliver the datagram to the corresponding upper layer protocol.

3. Return.

2. Else

1. Check the time-out.

2. If (time-out expired)

1. Discard all fragments.

2. Send an ICMP error message(see chapter 9).

5. return