컴퓨터공학/데이터통신

[데이터 통신] Main and Auxiliary Protocols - IPv4

NIMHO 2022. 12. 15. 22:14
728x90

복습하기 위해 학부 수업 내용을 필기한 내용입니다.
이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다.
그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다.

Contents

  • Services
  • Packet Switching
  • Performance
  • Internet Protocol Version 4
  • Next Generation (IPV6)
  • Transition from IPV4 To IPV6
 

Main and Auxiliary Protocols

버전 4의 네트워크 계층은 하나의 메인 프로토콜세 개의 보조 프로토콜이 있다.

메인 프로토콜 IPv4는 패킷의 packetizing, forwarding, delivery를 담당한다.

ICMPv4는 IPv4가 전달 중에 발생할 수 있는 오류를 처리하는 것을 돕는다.

IGMP는 멀티캐스팅에서 IPv4를 돕는 데 사용된다.

ARP는 주소 매핑에 사용된다.

 

Datagram Format

IP를 사용하는 패킷은 datagram이라 불린다.

datagram은 두 부분으로 구성된 가변 길이 패킷이다. (header, payload(data))

header의 길이는 20~60byte이고 라우팅 및 전송에 필수적인 정보를 포함한다. (20byte는 필수 기본 헤더이다.)

 VER

4비트의 버전 번호로 버전을 구분한다. (IPv4 -> 0100)

 

• HLEN

4비트로 datagram 헤더의 전체 길이를 나타낸다. (1당 4byte이다.) 

헤더는 기본 20byte라서, HLEN은 5(0101) 이상이 되어야 한다.

 

 

• Service type

type of service(TOS)

IETF는 우선순위에 따라 애플리케이션을 다른 클래스로 나누는 DiffServ를 제공하기 위해 필드를 재정의했다.
IP 헤더는 항상 4바이트 경계로 정렬되어야 하므로 헤더 길이에 4바이트를 사용하는 것도 논리적이다.

 

 Total length

IP datagram의 전체 길이를 나타내는 비트이다. (header + data)

기준은 1당 1byte이다.

Length of data = Total Length - HLEN * 4

 

• Identification, Flags, Fragmentation offset

datagram의 크기가 네트워크가 전달할 수 있는 것보다 클 때 IP datagram의 fragmentation와 관련이 있다.

몇 번째 패킷인지에 대한 정보가 있다.

자르고, 조립하기 위해서 3개가 모두 필요하다.

 

• Time-to-live (TTL)

datagram은 destination에 도달하지 않고 네트워크들을 계속 방문하면서 인터넷을 순환할 수도 있다.

TTL 필드는 datagram이 방문하는 최대 hop(router)의 수를 제어한다.

이 값은 두 호스트 사이의 최대 router 수에 약 2배이다.

datagram을 처리하는 각 router는 이 숫자를 하나씩 줄인다.

감소된 후 값이 0이라면 router는 datagram을 폐기한다.

 

 Protocol

datagram은 UDP나 TCP와 같은 전송 계층 프로토콜에 속하는 패킷을 전송할 수 있다.

datagram은 IP 서비스를 직접 사용하는 다른 프로토콜(routing 프로토콜, 보조 프로토콜)로부터 패킷을 전달할 수 있다.

IP의 서비스를 사용하는 모든 프로토콜은 프로토콜 필드에 삽입되는 고유한 8비트 번호가 있다.

payload가 source IP의 datagram에 캡슐화되면 해당 프로토콜 번호가 이 필드에 삽입된다.

 

• Header Checksum:

IP는 신뢰할 수 있는 프로토콜이 아니다.

전송 중에 datagram에 의해 전달되는 payload가 손상되었는지 여부를 확인하지 않는다.

IP는 UDP 또는 TCP와 같이 payload를 소유하는 프로토콜에 payload의 오류 검사는  부담을 준다.

그렇기에 header checksum 필드는 payload가 아닌 header를 검사한다.

 

• Source and destination address

32비트 원본 및 대상 주소 필드는 각각 원본 및 대상의 IP 주소이다.

대상 IP 주소는 DNS에 의해 제공된다.

 

• Options

 

• Payload

728x90

Fragmentation

datagram은 다른 네트워크를 통해 이동할 수 있다.

각 router는 수신한 프레임에서 IP datagram을 캡슐화 해제하고 처리한 다음 다른 프레임에 캡슐화한다.

수신된 프레임의 형식과 크기는 프레임이 방금 통과한 물리적 네트워크에서 사용되는 프로토콜에 따라 달라진다.

전송된 프레임의 형식과 크기는 프레임이 이동할 물리적 네트워크에서 사용하는 프로토콜에 따라 달라진다.

즉, 허용하는 size가 다르기에, 작을 때는 잘라서 보낸다는 것이다.

 

Maximum Transfer Unit (MTU)

각 링크 계층 프로토콜에는 고유한 프레임 형식이 있다.

각 형식의 기능 중 하나는 캡슐화할 수 있는 payload의 최대 크기이다.

datagram이 프레임에 캡슐화될 때 datagram의 총 크기는 최대 크기보다 작아야 한다.
MTU의 값은 물리적 네트워크 프로토콜마다 다르다

(LAN : 일반적으로 1500바이트, WAN : LAN보다 크거나 작다).

IP 프로토콜을 물리적 네트워크와 독립적으로 만들기 위해 IP datagram의 최대 길이65,535바이트로 설정된다.
물리적 계층이 더 작은 MTU를 사용하는 경우 datagram을 조각화해야 한다.

 

datagram이 단편화될 때, 각 단편에는 대부분의 필드가 반복되는 자체 헤더가 있지만 일부는 변경되었다.

MTU가 더 작은 네트워크를 발견하면 조각난 datagram 자체가 다시 조각화될 수 있다.

  • 즉, datagram은 최종 목적지에 도달하기 전에 여러 번 단편화될 수 있다.

재조립 및 다른 경로

  • datagram 재구성은 대상 호스트에서만 수행된다.
  • datagram은 소스 호스트 또는 경로에 있는 라우터에 의해 조각화될 수 있다.
    • 단편화된 datagram은 다른 경로를 통해 이동할 수 있다.
    • 우리는 단편화된 datagram이 어떤 경로를 취할 수 있는지 제어하거나 보장할 수 없다.
    • 동일한 datagram에 속한 모든 조각이 최종적으로 대상 호스트에 도착해야 한다.
  • datagram을 조각화하는 호스트 또는 라우터는 flag, fragmentation offset, total length, checksum를 변경해야 한다.
    • 나머지 필드는 복사해야 한다.
    • 체크섬을 다시 계산해야 한다.

Fields Related to Fragmentation

identification, flags, fragmentation offset 필드가 관련되어 있다.

 

1. 16비트 identification 필드

  • 소스 호스트에서 발생한 datagram을 식별한다.
  • 고유성을 보장하기 위해 IP 프로토콜은 카운터의 현재 값을 식별 필드에 복사하고 카운터를 하나씩 증가시킨다.
  • datagram이 조각화되면 식별 필드의 값이 모든 조각으로 복사된다.
    • 모든 조각이 동일한 식별 번호를 가진다.
    • 동일한 식별 값을 가진 모든 조각은 하나의 datagram으로 조립되어야 한다.

 

2. 3비트 flags필드

  • 이세 가지 flag를 정의한다.
  • 첫 번째 비트(맨 왼쪽 비트)가 예약됨(사용되지 않음)
  • 두 번째 비트(D 비트)를 do not fragment 비트라고 한다.
    • 값이 1이면 시스템이 datagram을 조각화하면 안 된다.
      • 사용 가능한 물리적 네트워크를 통해 데이터그램을 전달할 수 없는 경우 데이터그램을 폐기하고 ICMP 오류 메시지를 소스 호스트로 보낸다.
    • 값이 0이면 필요한 경우 datagram을 조각화할 수 있다.
  • 세 번째 비트(M 비트)를 more fragment 비트라고 한다.
    • 값이 1이면 datagram이 마지막 조각이 아님을 의미한다.
      • 이 조각 뒤에 더 많은 조각이 있다.
    • 값이 0이면 이것이 마지막 조각이거나 유일한 조각임을 의미한다.

 

3. 13비트 fragmentation offset 필드

  • datagram에서 이 조각의 상대적 위치를 표시한다.
  • 8바이트 단위로 측정된 원래 datagram의 오프셋이다.
    • 13비트 필드는 8191보다 큰 바이트 시퀀스를 나타낼 수 없다.
  • 예) 그림 7.17에서 4000바이트의 데이터그램은 3개의 조각이 된다.
    • 원래 데이터그램의 바이트 번호는 0 ~ 3999이다.
    • 첫 번째 조각은 바이트 0 ~ 1399를 전달하므로 이 데이터그램의 오프셋은 0/8 = 0이다.
    • 두 번째 조각은 1400 ~ 2799 바이트를 전송하므로 이 조각의 오프셋 값은 1400/8 = 175이다.
    • 세 번째 조각은 2800 ~ 3999 바이트를 전송하므로 이 조각의 오프셋 값은 2800/8 = 350이다.

 

조각이 서버에서 다시 조립된다.

  • 식별 필드는 마지막 조각을 제외한 모든 조각에 대해 더 많은 조각 비트(M 비트)가 설정된 플래그 필드와 마찬가지로 모든 조각에서 동일하다.
  • 파편이 목적지에 제대로 도착하지 않았지만 올바르게 다시 조립할 수 있다.

단편 자체가 단편화된 경우

  • 오프셋 필드는 항상 원본 datagram에 상대적이다.
  • 두 번째 조각 자체는 나중에 800바이트와 600바이트의 두 조각으로 분할되지만
  • 오프셋은 원래 데이터에 대한 조각의 상대적 위치를 보여준다.

out of order

728x90