본문 바로가기
공부/네트워크

네트워크 공부 - 인터넷 프로토콜 (IP)

by 라이티아 2024. 10. 19.

과정

개요

데이터그램

단편화

검사합

 

인터넷 프로토콜(IP)

TCP/IP 프로토콜이 사용하는 전송 메커니즘

신뢰성이 없고 최선의 노력 전달 서비스 제공

데이터그램 방법을 사용하는 패킷 교환망을 위해 설계된 비연결혈 프로토콜

 

위치 : 네트워크층 ip

 

비신뢰성

IP 데이터그램이 목적지에 성공적으로 도달한다는 것을 보장하지 않음

비접속형

전달되는 데이터그램에 대해 상태 정보 유지하지 않음

주소 지정

각 네트워크 상에 접속해 있는 노드의 주소를 지정해서 데이터를 전송할 목적지 지정

경로 설정

IP의 주요 기능으로서 목적지의 주소를 가지고 패킷을 전송하기 위하여 최적의 경로를 설정해 주는 역할

 

데이터 그램

IP 계층 패킷을 데이터그램이라고 함

가변 길이 패킷으로 헤더와 데이터부분으로 구성

헤더는 20byte ~ 60byte

라우팅(경로지정)과 전달에 필요한 정보를 포함

헤더는 4byte단위로 표시

 

헤더 내의 필드

A VER

4bit

IP 프로토콜의 ver를 표시

 

B HLEN

4bit

데이터그램 헤더의 전체 길이를 4byte단위로 표시

option이 들어갈 결우 가변길이가 더해짐

non option일 경우 20byte

option이 있을 경우 24byte ~ 60byte

 

C TOS (Type of service)

8bit

데이터그램이 어떻게 처리되어야 하는가를 정의

6bit는 코드포인트 부필드이고 2bit는 사용하지 않음

 

D Total Length

16bit

헤더와 데이터를 포함하는 IP 데이터그램의 전체 길이

IP 데이터그램의 전체 길이를 byte로 표현

Max = 65,535byte = 2^16

data length  = total length - header length

 

E Identification(식별)

16bit

호스트가 보낸 각 데이터그램을 유일하게 식별

단편화가 생기면 플래그 필드와 단편화 offset을 사용

분할된 패킷은 동일한 식별자 = Identification 를 가짐

 

F Flags

3bit

 

G Fragmentation offset

13bit

단편화된 조각들을 하나의 데이터그램으로 합칠 때, 전체 데이터그램에서의 상대적 위치 표시

 

E, F, G는 단편화에 사용됨

 

H Time to live

8bit

데이터그램이 지날 수 있는 라우터의 수에 대한 상한을 설정하여 데이터그램의 생존 시간을 제한

데이터그램은 인터넷을 통하여 전달되는 동안 제한된 수명을 가짐

이 필드는 타임스탬프 기능을 수행하기 위하여 설계됨

방분되는 라우터에 의해 감소되고 이 필드의 값이 0이 되면 데이터그램은 폐기됨

기본값은 64, windows os는 128

 

I Protocol

8bit

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

ex) TCP UDP

 

J CheckSum

16bit

오류 확인을 위한 검사합

 

K Source Address

32bit

발신지의 IP 주소를 정의

IP 데이터그램이 이 발신지에서 목적지까지 전달되는  동안 이 값은 변해서는 안됨

 

L Destination Address

32bit

최종 목적지의 IP주소

IP 데이터그램이 이 발신지에서 목적지까지 전달되는  동안 이 값은 변해서는 안됨

 

 

 

예제

1. 다음과 같은 첫번째 8bit를 가진 IP 패킷이 수신된다면?

01000010

 

풀이

0100 / 0010

각 4bit, 4bit

ver, hlen이다

이때 hlen값이 2이고 이는 header length가 8byte임을 의미한다

header length는 min이 20byte임으로 오류가 있는 데이터그램이다

 

 

2. IP 패킷에서 hlen의 값이 2진수로 1000이다. 이 패킷에는 옵션이 몇 byte 있는가?

 

풀이

1000 = 8, header length = 4 * 8 = 32byte

기본 header length = 20

32 - 20 = 12byte = option byte

 

옵션 byte는 12byte이다

 

 

3. IP 패킷에서 hlen의 값이 16진수 5이고 전체 길이 필드값이 16진수 0028이다. 이 패킷은 몇 바이트의 데이터를 전송하는가?

 

풀이

hlen 16진수 5 = 2진수 0101 = 20byte default length

total length = 16진수 0028 = 2진수 0....생략 00101000 = 32 + 8 = 40byte

40 - 20 = 20byte

 

이 패킷은 20byte의 데이터를 전송하고 있다

 

 

4. 다음과 같은 IP 패킷이 수신되었다면 이 패킷은 폐기되기 전에 몇 홉을 지나갈 수 있는가? 이 패킷은 어떤 상위 계층 프로토콜 데이터를 전송하고 있는가?

45000028000100000102

 

풀이

4 ver

5 hlen

00 service type

0028 total length

0001 identification

0000 flags + ragmentation offset

01 time to live

02 protocol

 

16진수 01 = 2진수 01 = 1bit

time to live값은 1 = 1홉만 지나갈 수 있음

 

protocol값 = 2 = IGMP임

 

 

단편화

각 네트워크에서 전달되는 최대 전송 길이를 MTU(maximum transfer unit)라고함

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

 

단편화와 재조립과 관련된 field

식별자 idnetification 16bit

단편들에게 같은 식별자 값을 부여함

플래그 flags 3bit

단편화 옵셋 fragmentation offset13bit

전체 데이터그램에서 단편의 상대적 위치 표시

 

최대 전달 단위

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

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

 

 

 

식별자

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

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

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

식별자는 목적지에서 데이터그램을 재조립 하는데 활용

 

플래그

첫 bit는 사용되지않음 (총 3bit)

 

두번째 bit = do not fragment

이 값이 1이면 데이터그램을 단편화해서는 안됨

단편화를 수행하여야 하는데 이 비트가 설정되어 있어 네트워크를 통하여 데이터그램을 전달할 수 없다면 데이터그램을 폐기하고 ICMP오류 메시지를 발신지 호스트에 보냄

 

세번째 bit = more fragment

이 값이 1이면 데이터그램은 마지막 단편이 아님

 

단편화 옵셋

전체 데이터그램 내에서 단편의 상대적 위치를 나타냄

원래의 데이터그램 내에서 데이터의 옵셋을 8 byte단위로 계산됨

ㄴ 각 단편의 첫번째 byte의 번호는 8로 나눠져야 함

 

예시

4000byte의 데이터그램이 3개의 단편으로 나누어질 경우

1번 단편 0 ~ 1399, 단편화 offset = 0 / 8 = 0

2번 단편 1400 ~ 2799, 단편화 offset = 1400 / 8 = 175

3번 단편 2800 ~ 4000, 단편화 offset = 2800 / 8 = 350

 

 

예제 문재들

10.5

플레그 필드의 M비트값이 0인 패킷이 도착하였다. 이 패킷은 첫번째 단편, 중간 단편, 마지막 단편중 무엇인가?

또한 패킷이 단편화 되었는지 알 수 있는가?

 

풀이

핵심은 M비트가 무엇인지 아는것

M bit = more fragment, 1일시 단편이 더 있다는 것

문제에서는 0이기 때문에 단편이 없음을 나타낸다

단편화 되었는지는 알 수 없다 = 단편화 되지 않을시 패킷은 마지막 단편으로 간주한다

 

10.6

M 비트 값이 1인 패킷이 도착하였다. 이 패킷은 첫번째 단편, 중단 단편, 마지막 단편중 어디 단편인가?

패킷이 단편화 되었는지 알 수 있는가?

 

풀이

M bit값이 1이라는 것은 다른 단편이 더 있다는 의미이다. 이것으로 알 수 있는 것은

본 패킷은 단편화가 되었다는 사실

지금 온 패킷은 첫번째, 혹은 중단 단편 2중 1이다 라는 사실

정확한 단편을 알려면 단편화 offset값이 필요하다

 

fragmentation offset 값이 0보다 크면서(첫 단편이 아니다) m bit 값이 0이다(첫 단편, 중간 단편이 아니다)?

그렇다면 그 단편은 마지막 단편이라는 뜻임

 

 

옵션 Option

헤더는 고정 부분과 가변 부분 중 가변 부분은 옵션으로 구성

최대 길이는 40byte

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

 

 

검사합 CheckSum

대부분의 TCP/IP 프로토콜에 의해 사용되는 오류 검출 방법

패킷의 전달 중에 발생할 수 있는 오류에 대한 보로를 수행

검사합은 송신자에 의해 계산되고 패킷과 함께 전송

수신자는 검사합을 포함하고 있는 전체 패킷에 대해 같은 계산을 반복

걸과가 만족되면 패킷은 받아들여지고 그렇지 않으면 폐기

 

송신자의 검사합 계산

손신자에게서 패킷은 n 비트 조각으로 나누어짐 보통 n = 16

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

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

 

수신자의 검사합 계산

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

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

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

 

IP 패킷의 검사합

감사합 필드를 0으로 만듬

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

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

검사합은 헤더만 포함하지 데이터는 포함하지 않는이유

ㄴ IP 데이터그램내의 데이터를 캡슐화 하는 모든 상위 계층 프로토콜은 전체 패킷을 포함하는 검사합을 가지고 있으므로 IP 데이터그램의 검사합은 캡슐화된 데이터를 점검할 필요가 없음

ㄴ IP 패킷의 헤더는 라우터를 방문할 때 마다 변경될 수 있는 반면, 데이터는 그렇지 않으므로 검사합은 변화되는 부분에 대해서만 구해야 함

ㄴ 만약 데이터가 포함되면 각 라우터는 전체 패킷에 대한 검사합을 다시 계산하여야 하고, 결과적으로 많은 처리 시간이 필요함

 

 

 

예제

datagram이

4 5 0 28 1 0 0 4 17 0 10.12.14.5 12.6.7.9

일시 checksum은 몇일까?

 

풀이

4, 5, 0 ver hlen tos

0100 0101 0000 0000

28 total length

0000 0000 0001 1100

1 identification

0000 0000 0000 0001

0, 0 flags fragmentation offset

0000 0000 0000 0000

4, 17 ttl protocol

0000 0100 0001 0001

0 header checksum = ???

0000 0000 0000 0000

10.12.14.5 source IP address

0000 1010 0000 1100

0000 1110 0000 0101

12.6.7.9 destination address

0000 1100 0000 0110

0000 0111 0000 1001


발신지 기준

sum

01110100 01001110

checkSum(sum의 1의보수)

10001011 10110001

 

수신지 기준에서 볼시

sum은 전부 1로 채워지며

checksum은 0으로 채워짐