Computer Science/Network

[Network] IPv4 Header 형식

LeeJaeJun 2023. 12. 21. 15:59
728x90
반응형

IPv4 header

- Version

IP 프로토콜의 버전을 나타냅니다. 4bit로 표현되며, IPv4d에서는 값을 4를 가집니다.
 

- IHL

"Internet Header Length"

IPv4 헤더의 길이를 32비트 word(4bit) 단위로 표현한 값입니다. 최소값은 5이고 최댓값은 15입니다. 이는 최소 20바이트(5 * 4 byte)부터 최대 60바이트(15 * 4 byte)까지의 헤더 크기를 나타낸 것입니다. 
IPv4 헤더의 고정된 크기는 20byte이며 추가적인 옵션 필드가 포함될 경우 헤드의 길이가 더 커질 수 있습니다.
 

- TOS

"Type of Service"

패킷의 서비스 품질(Quality of Service)요구 사항과 우선순위를 나타내는데 사용됩니다.
TOS 필드는 8비트로 표현되며, 다양한 비트 위치를 통해 다양한 서비스 품질 요구 사항을 나타냅니다.

  • bit 0-2: Precedence (우선순위) - 실시간 음성 트래픽이나 중요한 데이터 트래픽에 높은 우선순위를 부여할 수 있습니다.
  • bit 3: Delay (지연) - 전송 지연 시간에 대한 요구 사항을 나타냅니다. 예를 들어, 실시간 트래픽은 낮은 전송 지연을 요구할 수 있습니다.
  • bit 4: Throughput (처리량) - 처리량 요구 사항을 나타냅니다. 예를 들어, 대역폭 집중적인 애플리케이션은 높은 처리량을 요구할 수 있습니다.
  • bit 5: Reliability (신뢰성) - 신뢰성 요구 사항을 나타냅니다. 예를 들어, 데이터 유실을 허용할 수 없는 애플리케이션은 높은 신뢰성을 요구할 수 있습니다.
  • bit 6-7: Reserved (예약됨) - 이 비트들은 예약되어 있으며, 현재는 사용되지 않습니다.

 

TOS 필드는 네트워크 장비와 애플리케이션에 따라 다르게 해석될 수 있습니다. 일부 장비 및 프로토콜은 TOS 필드를 무시할 수도 있고, 대신 다른 필드(예: Differentiated Services Code Point, DSCP)를 사용하여 서비스 품질을 지정하기도 합니다.
 

- Total Length

패킷 전체의 길이를 나타냅니다.

16비트로 표현되며, 패킷의 헤더와 데이터를 모두 포함한 길이를 바이트 단위로 나타냅니다.
즉, 이 값은 헤더의 길이와 데이터(페이로드)의 길이를 합한 값입니다. 따라서 이 필드의 값은 최소 20바이트(패킷에 헤더만 포함된 경우)부터 최대 65,535바이트까지 가능합니다.
 

- Identificaiton

패킷을 구별하기 위한 값을 나타냅니다. 

16비트로 표현되며, 패킷이 고유하게 식별하기 위해 사용됩니다.
Identification 필드는 패킷이 분할되어 전송되는 경우, 원래의 패킷과 관련된 조각들을 식별하기 위해 사용됩니다. 분할된 패킷은 일련의 조각으로 분할되어 전송되는데, 이때 각 조각은 동일한 Identification 값으로 마킹됩니다. 따라서 패킷을 재조립할 때, 동일한 Identification 값으로 마킹된 조각들을 식별하여 원래의 패킷으로 재조립할 수 있습니다.
또한, Identification 필드는 패킷의 유일성을 보장하기 위해 사용될 수도 있습니다. 이 필드는 패킷의 식별자로서 사용되며, 송신자가 일련의 패킷을 전송할 때 각각의 패킷에 고유한 Identification 값을 부여하여 수신자가 패킷을 구별할 수 있도록 합니다.
 

- Flags

패킷의 특정 특성을 나타내는 플래그들의 조합을 나타냅니다. 이 필드는 3개의 비트로 구성되며, 패킷의 분할 및 재조립과 관련된 기능을 제어하기 위해 사용됩니다.
Flags 필드에는 다음과 같은 세 가지 플래그 비트가 포함됩니다:

  • Reserved (예약된 비트)
    • 이 비트는 예약되어 있으며 현재는 사용되지 않습니다. 항상 0으로 설정되어야 합니다.
  • Don't Fragment (DF)
    • 이 비트가 1로 설정된 경우, 패킷은 분할되지 않아야 합니다. 즉, 패킷은 전체 크기로 전송되어야 합니다. 만약 중간의 네트워크에서 패킷을 분할할 필요가 있는 경우에도 분할되지 않습니다.
    • 이 비트가 0으로 설정된 경우, 패킷은 필요한 경우에만 분할될 수 있습니다.
  • More Fragments (MF)
    • 이 비트가 1로 설정된 경우, 이 패킷이 다른 조각들과 함께 패킷의 일부인 것을 나타냅니다. 따라서 이 패킷은 더 많은 조각들이 존재하며, 재조립할 때 다른 조각들과 함께 사용되어야 합니다.
    • 이 비트가 0으로 설정된 경우, 이 패킷이 마지막 조각이거나 분할되지 않은 패킷임을 나타냅니다.

Flags 필드는 패킷의 분할과 재조립을 관리하기 위해 사용됩니다. 패킷을 분할할 때는 DF 비트를 확인하여 패킷을 분할해야 할지 여부를 결정하고, 패킷의 조각들을 재조립할 때는 MF 비트를 확인하여 마지막 조각인지 여부를 판단합니다. 이를 통해 패킷의 분할과 재조립이 정확하게 수행될 수 있습니다.
 

- Fragment offset

패킷이 분할되어 전송될 때 원래 패킷의 조각이 전체 패킷에서 어디에 위치하는지를 나타냅니다. 이 필드는 13비트로 표현되며, 조각의 시작 위치를 8바이트 단위로 표시합니다.
Fragment offset 필드는 패킷이 분할되어 여러 조각으로 전송될 경우, 각 조각의 상대적인 위치를 알려줍니다. 분할된 패킷은 원래 패킷을 일련의 작은 조각으로 나누어 전송되는데, 이때 각 조각은 원래 패킷의 헤더와 데이터의 일부분을 포함합니다. Fragment offset 필드는 이러한 조각들이 원래 패킷의 어느 위치에서 시작하는지를 나타내며, 이를 통해 패킷을 올바르게 재조립할 수 있습니다.
Fragment offset 필드의 값은 8바이트 단위로 표현되기 때문에, 0부터 8191까지의 범위를 가집니다. 이 값은 원래 패킷에서 조각의 시작 위치를 나타냅니다. 첫 번째 조각은 항상 Fragment offset이 0인 위치에서 시작하며, 이후의 조각들은 이전 조각의 데이터 크기에 따라 적절한 위치에서 시작합니다.
Fragment offset 필드는 패킷 재조립을 위해 사용되며, 각 조각의 상대적인 위치를 판별하여 원래의 패킷으로 재조립하는 데 도움을 줍니다. 이를 통해 패킷의 분할과 재조립이 정확하게 이루어질 수 있습니다.
 

- TTL

"Time to Live"

이 필드는 8비트로 표현되며, 패킷이 네트워크를 통해 전달될 때 생존할 수 있는 시간을 나타냅니다.
TTL 필드는 패킷이 라우터를 통과할 때마다 감소합니다. 각각의 라우터는 패킷을 전달할 때 TTL 값을 확인하고, 이 값을 1씩 감소시킵니다. 만약 TTL 값이 0이 되는 순간이 오면, 해당 패킷은 폐기됩니다. 이를 통해 패킷이 무한히 네트워크에서 순환하는 것을 방지하고, 패킷이 정상적으로 목적지까지 도달하도록 보장합니다.
TTL 필드는 패킷이 무한 루프로 인해 네트워크를 채워 네트워크 리소스를 고갈시키는 것을 방지하는 중요한 기능을 수행합니다. 또한, TTL 필드는 시간 기반으로 네트워크 상태를 추적할 수 있는 수단이 될 수도 있습니다. 패킷이 목적지까지 도달할 때마다 TTL 값을 확인하고, 이를 통해 네트워크의 지연 시간과 패킷 전송 경로 등을 추정할 수 있습니다.
TTL 필드의 초기값은 송신자에 의해 설정되며, 일반적으로 32비트 정수로 표현된 초 단위의 시간 값으로 설정됩니다. 하지만 라우터를 거치면서 TTL 값은 1씩 감소하므로, 실제로 패킷이 네트워크를 통과할 수 있는 시간은 TTL 값에 의해 제한됩니다.
 

- Header checksum

IPv4 헤더의 무결성을 확인하기 위한 값입니다. 이 값은 헤더의 오류 검출을 위해 사용됩니다.
IPv4 헤더에는 여러 필드가 있고, 이들 필드는 네트워크 장비 간에 전달되며 라우팅 및 패킷 처리에 사용됩니다. 헤더 checksum은 이러한 필드들의 값이 제대로 전달되었는지 확인하기 위해 사용됩니다.
Header checksum은 16비트로 표현되며, 헤더의 모든 16비트 워드(2바이트)에 대한 체크섬을 계산하여 생성됩니다. 체크섬은 송신자가 헤더의 각 워드를 더하고 오버플로우가 발생할 경우를 대비하여 자리올림을 처리한 후, 최종 결과에 보수 연산을 수행하여 생성됩니다. 이러한 과정을 통해 헤더의 무결성을 검사할 수 있습니다.
수신자는 받은 패킷의 헤더 checksum을 계산하여 송신자가 보낸 checksum과 비교합니다. 만약 두 값이 일치하지 않는다면, 헤더가 손상되었거나 패킷이 변조되었을 가능성이 있으므로 패킷을 폐기하게 됩니다.
Header checksum은 헤더의 데이터 무결성을 검증하는 단순한 오류 검출 방법입니다. 그러나 패킷의 데이터 무결성을 보장하기 위해서는 추가적인 기술 및 메커니즘을 사용해야 합니다.
 

- source address

네트워크 통신에서 송신자의 IP 주소를 나타내는 값입니다. 이 주소는 패킷의 출발지를 식별하는 데 사용됩니다.
소스 주소는 네트워크 통신에서 중요한 역할을 합니다. 이를 통해 패킷의 출발지를 식별하고, 목적지 장치에서 응답이 필요한 경우 응답을 송신자에게 돌려보낼 수 있습니다. 또한, 소스 주소는 네트워크 보안 및 로깅 등 다양한 네트워크 기능에 활용됩니다.
 

- Destination address

네트워크 통신에서 패킷의 목적지를 식별하기 위해 사용되는 값입니다. 이 주소는 패킷이 도착해야 할 목적지의 IP 주소를 나타냅니다.
목적지 주소는 네트워크 통신에서 매우 중요한 역할을 합니다. 패킷의 도착지를 명확하게 식별하고, 목적지 장치는 패킷을 수신하고 적절한 동작을 수행할 수 있습니다. 라우터나 중간 네트워크 장비들은 목적지 주소를 확인하여 패킷을 전달하므로, 목적지 주소는 패킷의 정확한 경로 선택과 라우팅에 중요한 영향을 미칩니다.
 

- Options

IPv4 패킷 헤더의 선택적인 부분으로, 추가적인 기능이나 확장성을 제공하기 위해 사용됩니다. Options 필드는 IPv4 헤더의 마지막 부분에 위치하며, 필요에 따라 사용될 수 있습니다.
Options 필드는 0 또는 그 이상의 옵션들로 구성됩니다. 각 옵션은 옵션 종류(Type), 길이(Length), 그리고 옵션 데이터(Data)로 구성됩니다. 옵션 종류는 옵션의 종류를 식별하는 숫자 값이며, 길이는 옵션 데이터의 길이를 나타냅니다. 옵션 데이터는 옵션에 따라 다양한 정보를 포함할 수 있습니다.
일반적으로 Options 필드는 사용되지 않거나 매우 드물게 사용됩니다. 주로 몇 가지 특정한 용도를 위해 사용되는데, 예를 들면 경로 추적(Traceroute)이나 시간 제한(Time-to-Live) 값을 변경하는 용도 등이 있습니다. Options 필드의 사용은 네트워크 장비나 프로그램의 특정 요구 사항이나 기능에 따라 결정되며, 대부분의 일반적인 네트워크 통신에서는 사용되지 않습니다.
Options 필드는 IPv4 헤더의 크기를 늘릴 수 있으며, 이로 인해 패킷의 전체 크기가 증가할 수 있습니다. 따라서 Options 필드를 사용할 때는 추가적인 오버헤드와 전송 지연 시간 등을 고려해야 합니다. 또한, 옵션을 사용하는 장비나 시스템들은 옵션에 대한 처리를 지원해야 하며, 옵션이 정확하게 해석되고 처리되어야 올바른 동작을 보장할 수 있습니다.
 

- Data

네트워크 통신에서 정보를 전송하기 위한 실제 데이터 부분을 의미합니다. 데이터는 패킷이나 프레임에 포함되어 목적지로 전송되는 정보입니다.

728x90
반응형