본문 바로가기

Study/Networking

7.4 IPv4 - (2)

728x90

2. 주 프로토콜과 보조 프로토콜

버전4에서 네트워크층은 하나의 주 프로토콜과 3개의 보조 프로토콜로 이루어져 있다.

  • IPv4 프로토콜

주 프로토콜인 인터넷 프로토콜(IPv4)는 패킷화,포워딩, 그리고 네트워크층에서 패킷 전달을 수행한다.

  • ICMPv4(Internet Control Message Protocol Version 4)

IPv4를 도와 네트워크층의 전송 중 발생할 수 있는 오류를 제어한다.

  • IGMP(Internet Group Management Protocol)

IPv4의 멀티캐스트를 도와준다.

  • ARP(Address Resolution Protocol

네트워크층 주소와 링크 계층 주소를 매핑해준다.

- IPv4의 특성

IPv4는 신뢰성이 없는 비연결형 데이터그램 프로토콜로 최선의 노력 전달 서비스(best effort delivery service)이다.

최선의 노력 전달의 의미는 패킷이 전송중에 훼손 혹은 손실되거나, 순서에 맞지 않게 도착 혹은 지연되어 도착 그리고 네트워크에 혼잡을 발생시킬 수 있는 것을 뜻한다.

- 데이터그램 형식

IP가 사용하는 패킷을 데이터그램(datagram)이라 한다. 아래와 같은 그림은 IPv4의 데이터그램 형식을 보여준다.

데이터그램은 가변 길이 패킷으로 헤더와 페이로드(데이터)로 이루어져 있다. 헤더는 20에서 60바이트의 길이이며, 라우팅과 전달에 필수적인 정보를 가지고 있다. TCP/IP에서 헤더를 4바이트로 구분해서 표현하는 것이 일반적이다.

  • 버전 번호(VER): 4비트의 버전 번호(VER)필드는 IP 프로토콜의 버전을 정의한다. IPv4는 4의 값을 가진다.
  • 헤더 길이(HLEN): 4비트 길이의 헤더 길이(HLEN)필드는 데이터그램 헤더의 전체 길이를 4바이트 단위로 표현한다. 예를 들어 20byte를 가지면 HLEN은 5가 된다.
  • 서비스 유형(Service Type): IETF는 이 필드를 응용의 우선순위에 따라 서로 다른 클래스로 나누어 차별화된 서비스를 제공하기 위한것으로 재정의 하였다.
  • 전체 길이(Total Length): 이 16비트의 필드는 IP 데이터그램의 전체 바이트 수를 정의한다. 16비트의 숫자는 65,535까지의 길이를 나타낼 수 있다. 예를 들어 이더넷 프로토콜은 프레임에 캡슐화 될 수 있는 데이터 크기에 최소와 최대 크기(46에서 1,500바이트) 를 가진다. IPv4 데이터그램의 크기가 46바이트보다 작으면 이 요구사항을 지키기 위해 패딩이 추가된다.
  • 식별자(Identification), 플래그(flag), 단편화 오프셋(fragmentation offset): 이 세 필드는 데이터그램의 크기가 사용하는 네트워크가 처리할 수 있는 크기보다 클 경우 필요한 IP 데이터그램의 단편화와 관련이 있다.
  • 생존시간(TTL, Time-To-Live): 라우팅 프로토콜읨 쳐 가지 잘못된 동작 때문에 인터넷에서 데이터그램이 목적지에 도착하지 못하고 몇몇 네트워크를 순환적으로 계속 전송될 수 있다. TTL필드는 데이터그램이 방문할 수 있는 최대 라우터의 수를 정의한다. 데이터그램을 전달하는 각 라우터는 이 값을 1씩 감소시켜 이 값이 0이 되면 라우터는 데이터그램을 폐기한다.
  • 헤더 검사합(Header Checksum): 부가적 정보를 보내 데이터의 정보정확성을 올린다. 센더는 리시버에 헤더의 검사합을 보내 리시버가 이를 비교하여 데이터의 신뢰성을 판단한다.

어떤 IPv4패킷의 처음 8비트가 (01000010)2로 도착했다. 수신기가 이 패킷을 폐기했는데 그 이유는?

- 왼쪽 4비트(0100)2는 버전을 나타내며 이 값은 4로 값이 옳다. 그 다음 4비트(0010)2는 유효하지 않은 헤더 길이

(2 X 4 = 8)을 보여주고 있어 이 패킷에는 오류가 있다. HLEN의 기본값은 20바이트이며 최솟값이 5 이다.

 

IPv4패킷에 HLEN의 값이 2진수 (1000)2이다. 이 패킷에는 몇 바이트의 옵션이 들어 있는가?

- HLEN의 값이 8 이므로 헤더의 전체 바이트수는 8 X 4 = 32이다. 처음 20바이트가 기본헤더 이고 다음 12바이트가 옵션이다.

 

IPv4패킷에 HLEN 값이 5이고, 전체 길이 필드가 (0028)16이다. 이 패킷에는 몇바이트의 데이터가 전송되는가?

- HLEN이 5 이므로 전체 바이트 수는 5 X 4 = 20바이트이다. 전체 길이는 40바이트 이므로 이 패킷은 40 - 20 = 20바이트의 데이터를 전송하고 있다.

 

IPv4패킷이 다음과 같이 16진수 숫자를 앞부분에 가지고 도착했다.

(45000028000100000102...)16

이 패킷은 폐기되기 전 몇개의 홉을 지나가고 어떤 상위 계층 프로토콜에 속해 있는가?

- 수명 필드(TTL)을 찾기 위해서는 8바이트(16진수 16개)를 지나야 한다. 수명 바이트는 아홉번째 바이트로써 (01)16이다. 패킷이 단 하나의 홉만 지나갈 수 있다는 의미이다. 프로토콜 필드는 다음 바이트(02)16이며, 상위 계층 프로토콜이 IGMP라는 것을 의미한다.

 

옵션이 없는 Header CheckSum 예시


- 단편화

데이터그램은 서로 다른 네트워크를 통해 전달될 수 있다. 각 라우터는 수신한 프레임에서 데이터그램을 역캡슐화하고 처리한 후 다른 프레임으로 캡슐화 한다. 수신한 프레임의 형식과 크기는 프레임이 막 통과한 물리 네트워크에서 사용되는 프로토콜에 따라 다르다.

 

- 최대 전송 단위(MTU)

최대 전송 단위(MTU, Maximum Transfer Unit)의 크기는 각 물리 네트워크 프로토콜마다 다르다. IP프로토콜을 물리 네트워크와 독립적으로 만들기 위해 IP 데이터그램의 최대 크기를 동일하게 65,535바이트로 하였다. 이는 언젠가 링크 계층 프로토콜에서 이 크기를 MTU로 사용할 때 전송을 더 효율적으로 할 수 있게 해준다. 그러나 다른 물리 네트워크에서는 데이터그램을 전송하기 위해 분할해야한다. 이를 단편화(fragmentation)라 한다.

 

- 단편화 관련 필드

IP 데이터그램에서 단편화와 관련된 식별자(identification), 플래그(flag), 단편화 오프셋(fragmentation offset)이 있다.

  • 식별자(identification): 데이터그램이 전송된 발신지 호스트를 구분한다. IP프로토콜이 데이터그램을 전송할 떄 현재 카운터 값을 식별자 필드에 복사하고 카운터를 1 증가시킨다. 같은 식별자 값을 가진 모든 단편은 하나의 데이터그램으로 재조립 되어야 한다.
  • 플래그(flag): 플래그 필드는 세 가지 플래그를 정의한다. 가장 왼쪽 1비트는 예약된 비트로 사용되지 않는다. 두 번째 1비트는 단편화 금지(do not fragment bit) 필드이다. 만약 이 값이 1이라면 데이터그램을 단편화 해서는 안 된다. 세 번째 비트는 추가 단편화 비트(more fragmentation offset field)는 만약 이 값이 1이라면, 데이터그램은 마지막 단편이 아니고 다른 단편이 더 있음을 의미한다. 만약 0이라면 이 단편이 마지막 단편이거나 오직 하나의 단편임을 의미한다.
  • 단편화 오프셋(fragmentation offset): 전체 데이터그램에서 해당 단편의 상대적인 위치를 나타낸다. 

단편화 예시


- M 비트 값이 0인 패킷이 수신되었다. 이것은 첫 번째 단편, 마지막 단편 또는 중간 단편 중 어느 것인가?

M비트 값이 0이면 더 이상의 단편이 없다는 것을 의미하므로 이것은 마지막 단편이다.

 

- M 비트가 1인 패킷이 수신되었다. 이것은 첫 번째 단편, 마지막 단편 또는 중간 단편 중 어느 것인가?

M비트 값이 1이면 최소 하나의 단편이 더 있다는 것을 의미한다. 이것이 첫 번째인지 중간 단편인지는 알 수 없으며 추가적인 정보를 필요로 한다.

 

- M 비트가 1이고 단편화 오프셋 값이 0인 패킷이 수신되었다. 이것은 첫 번째 단편, 마지막 단편 또는 중간 단편 중 어느 것인가?

M 비트가 1이므로 첫 번째이거나 중간 단편이며, 오프셋 값이 0이므로 첫 번째 단편이다.

 

- 오프셋 값이 100인 패킷이 수신되었다. 첫 번쨰 바이트의 번호는 얼마인가.

첫 바이트의 값을 알기위해 오프셋 값에 8을 곱한다. 따라서 첫 번째 바이트 번호는 800이다.

 

- 오프셋 값이 100, HLEN값이 5이며 총 길이 필드 값이 100인 패킷이 수신되었다. 첫 번째와 마지막 바이트의 번호는 무엇인가?

첫 번째 바이트의 번호는 100 X 8 = 800이다. 총 길이가 100바이트이고 헤더 길이는 20바이트(5 X 4)이므로 데이터그램 안에는 80바이트가 있다는 것을 의미한다. 첫 번째 바이트가 800이라면 마지막 바이트의 번호는 879이어야 한다.


3. 옵션들

IPv4 데이터그램의 헤더는 고정된 부분과 가변 부분으로 구성된다. 고정 부분은 20바이트 길이이며, 가변부분은 최대 40바이트(4바이트의 배수)까지 될 수 있는 옵션으로 구성된다.

  • 한 바이트 옵션들

- 무동작(no-option): 옵션 중간에 채우기 용도로 사용되는 1바이트 옵션이다.

- 선택사항 종료(end-of-option): 선택사항 필드의 끝에서 패딩을 위해 사용되는 1바이트 옵션이다.

  • 다중 바이트 옵션

- 경로 기록(record route): 데이터그램을 처리하는 인터넷 라우터를 기록하기 위해서 사용된다.

- 엄격한 발신지 경로(strict source route): 소스가 데이터그램의 경로를 미리 결정하는 데 사용된다.

- 느슨한 발신지 경로(loose source route): 엄격한 소스 경로와 비슷하지만 덜 엄격한, 데이터그램은 또한 다른 라우터를 방문할 수 있다.

- 타임스탬프(timestamp): 자정을 기준으로 라우터에 의해 밀리초 단위로 표현된 데이터그램 처리 시간을 기록하는 데 사용된다.

 

- IPv4 데이터그램의 보안

IPv4프로토콜에는 보안성이 없었다. 그러나 요즘 상황은 달라졌다. IP프로토콜에 적용 가능한 세 가지 보안 이슈로는 패킷 도청, 패킷 변조 그리고 IP스푸핑이 있다.

  • 패킷 도청

공격자가 IP패킷을 가로채어 복사본을 만들 수 있다. 패킷 도청(packet sniffing)은 간접적인 공격으로 공격자가 패킷의 내용을 변경하지 않는다. 이런 종류의 공격은 송신자나 수신자가 패킷이 복사된 것을 알 수 없기 떄문에 탐지가 매우 어렵다. 패킷 도청을 멈출 수는 없지만, 패킷의 암호화로 공격자의 노력을 수포로 돌릴 수 있다.

  • 패킷 변조

공격자가 패킷을 가로채어 내용을 변경한 뒤 수신자에게 새로운 패킷을 전송할 수 있다. 수신자는 패킷이 원래 송신자가 보낸 것으로 알게 된다. 이 유형의 공격은 데이터 무결성 기술을 사용하여 탐지가 가능하다.

  • IP스푸핑

공격자는 다른 사용자로 가장하고 IP 패킷에 다른 컴퓨터의 발신지 주소를 입력하여 생성할 수 있다.

 

- IPSec

IPSec(IP Security)을 사용하여 앞서 언급된 공격으로부터 IP 패킷을 보호할 수 있다. 이 프로토콜은 IP프로토콜과 결합하여 사용되는 것으로 두 개체가 앞서 설명한 세 가지 공격을 걱정할 필요 없이 안전하게 IP 패킷을 교환하도록 해준다.

IPSec이 제공하는 네 가지 서비스는 다음과 같다.

  • 알고리즘과 키 정의(defining algorithm and key)
  • 패킷 암호화(packer encryption)
  • 데이터 무결성(data integrity)
  • 발신처 인증(origin authentication)
 
728x90

'Study > Networking' 카테고리의 다른 글

7.5 IPv6 & 7.6 IPv4 to IPv6  (0) 2023.04.14
7.4 IPv4 - (3)  (0) 2023.04.14
7.4 IPv4 - (1)  (0) 2023.04.12
7.3 Performance  (0) 2023.04.11
7.2 Packet Switching  (0) 2023.04.11