Ch 2. IPv4(1) - IP헤더


IP(Internet Protocol)

IP는 OSI 참조 모델의 네트워크 계층 기능을 수행하며 패킷 전송을 위한 주소 정의 및 관리와 라우팅을 담당한다.

IP의 특징

  1. 비신뢰성(Unreliable)
    • 가능한 범위 내에서 패킷을 목적지까지 전달하는 최선형 서비스(Best Effort Service)
  2. 비접속형(Connectionless)
    • 연결 설정 없이 패킷을 전송
    • 서로 다른 경로로 패킷이 전송될 수 있으며, 순서도 바뀔 수 있다.
  3. 주소 지정
    • 네트워크 내의 노드를 고유하게 지정하기 위한 수단으로 IP주소를 사용
  4. 경로 결정
    • 목적지 IP주소를 기반으로 패킷 전달 경로를 판단(Routing Protocol).

IP패킷 구성


  • IP패킷은 헤더 필드와 데이터 필드로 분리.
  • 헤더 필드에는 패킷을 목적지까지 전송하기 위한 값을 포함.
  • 헤더의 길이는 확장헤더를 포함한 헤더의 길이이다.
  • 데이터 필드에는 TCP, UDP와 같은 전송 계층으로부터의 데이터 유닛(IDU)이 포함되어 있다.

1. 버전

  • IP 프로토콜의 버전을 의미(IPv4의 경우 버전 필드 값은 4).

2. 헤더 길이

  • 옵션 필드를 포함한 헤더의 총 길이를 4바이트 단위로 표시 (확장 헤더를 사용하지 않는 경우 20byte로 헤더 길이 필드 값은 5).

3. 서비스 타입(Type-Of-Service)

  • 우선권 필드 3비트, TOS(Type-Of-Service)필드 4비트, 예약 필드 1비트로 구성되어 있음.
    • 우선권 필드 - 패킷의 우선순위 정의(혼잡시 폐기할 패킷을 우선권 필드 값으로 결정하며 데이터의 중요도를 나타냄).
    • TOS 필드 - 최소 지연(Delay), 최대 처리량(Throughput), 최대 신뢰성(Reliability), 최소 비용(Cost)을 4비트로 나타내어 4비트 중 1비트만 set하는 방식으로 타입을 표시.
      • 해당 필드 값에 명시된 TOS를 지원하는 서브넷으로 패킷을 라우팅 시키는데 사용됨.
    • 예약 필드 - 0의 값을 갖도록 예약되어 있어 MBZ(Must Be Zero)라고도 불림, 라우터와 수신 측은 이 필드 값을 무시함.
TOS필드 의미
1000 최소 지연
0100 최대 처리
0010 최대 신뢰성
0001 최소 비용

4. 전체 길이(Total Length)

  • 헤더와 데이터를 포함한 IP 패킷의 전체 길이를 바이트 단위로 표현.
  • IP패킷의 최대 크기는 $2^{16}-1=65,534 byte$로 최대 값은 65534.

5. 식별자(Identification)

  • 패킷 단편화(Fragmentation)로 인한 패킷을 구분하는 역할.
  • 동일한 데이터로부터 분할된 패킷들은 같은 식별자 값을 가짐.

6. 플래그(Flags)

  • 예약, 단편화 금지, 추가 단편화 비트의 3비트로 표현됨
    • 예약(Reserved) - 항상 0의 값을 갖도록 예약되어 있음.
    • 단편화 금지(Do not Fragment) - 해당 패킷에 대해 단편화를 하지 않도록 설정, 만약 서브넷이 단편화를 필요로 하고, 단편화 금지 비트 값이 1이라면 패킷을 폐기함.
    • 추가 단편화 비트(More Fragment) - 비트 값이 1이라면 추가적인 단편화 패킷이 있음, 0이라면 마지막 패킷임을 명시함.

7. 단편화 옵셋(Fragment Offset)

  • 패킷 재조립(reassembly)시 분할된 패킷 간의 순서에 대한 정보 포함.
  • 전체 데이터에서 분할된 패킷의 상대 위치를 8 바이트 단위로 기술.

8. Time-To-Live(TTL)

  • 패킷이 경유할 수 있는 최대 홉 수(hop count)를 의미.
  • 패킷이 라우터를 통과할 때마다 TTL 값은 1씩 감소.
  • TTL 값이 0이 되면 패킷은 폐기되고 송신 측으로 ICMP메시지를 전달.

9. 프로토콜(Protocol)

  • 데이터가 어떤 프로토콜을 사용하는지 나타내는 필드
  • ICMP프로토콜을 사용한다면 1, TCP프로토콜을 사용한다면 6, UDP프로토콜을 사용한다면 17의 값을 갖는다.

10. 헤더 체크섬(Header Checksum)

  • IP 패킷 헤더의 오류 발생을 검사하기 위한 필드

11. 옵션

  • 확장 헤더의 필드 값으로, 다음과 같은 옵션이 존재한다.

(1) IP 패킷 헤더 옵션

  • 경로 추적이나 네트워크 상황 파악 등 특정 목적을 위해 사용.
  • 하나 이상의 옵션을 동시에 사용할 수 있음.
  • 코드 필드(Code Field)
    -복사 필드(Copy Field): 단편화시 단편화된 모든 패킷에 헤더 옵션 필드의 복사 여부를 결정함.(copy=1: 모든 fragment에 option을 복사함.)
    • 클래스 필드(Class Field): 값이 0인 경우 패킷 제어를 위해 사용, 2인 경우 디버깅 혹은 측정을 위해 사용.
      옵션 종류
  • 옵션 종료(End of Option)
    • 옵션 필드의 끝을 나타내는 1바이트 옵션.
    • 남은 옵션종류 공간을 무동작 옵션(NoOp)로 채워넣는다.
    • 옵션 종료는 마지막 옵션에서만 사용 가능
    • 옵션 종류 코드값을 0으로 하여 사용.
  • 무동작(No Operation)
    • 옵션 간의 경계로 사용되는 1바이트 옵션.
    • 다른 옵션을 4바이트 경계에 맞추기 위해 사용한다.
    • 옵션 종류 코드값을 1로 하여 사용.
  • 엄격한 소스 루트(Strict Source Route)
    • 전달 경로를 송신 측에서 미리 지정하고 네트워크 장비(라우터)는 경로를 따라서만 패킷을 전송하는 옵션.
    • 옵션 종류 코드 값을 137로 하여 사용.
    • 포인터 값은 홉을 지날 때마다 단계적으로 증가하여 다음 경유할 주소를 가르킴
    • 기술된 경로대로 패킷을 전송할 수 없다면 패킷을 폐기하고 ICM 메시지를 송신측으로 전송.
    • IP헤더에 명시된 수신 측 주소에 도달한 경우 해당 옵션 패킷의 포인터에 지나온 IP 주소와 수신 측 주소를 교환, 포인터를 다음 IP주소 정보가 담긴 필드를 가르키는 포인터로 변경함으로써 연속적인 이동 경로의 설정이 가능하다.
    • 옵션 패킷의 IP주소에 이동한 경로가 기록되므로 패킷의 반환시 기록된 IP주소를 역방향으로 찾아 루트를 재설정 할 수 있음(ex ICMP).
    • 경유할 IP주소를 일일이 설정해주어야하므로 출발지와 목적지의 IP주소 뿐만 아니라 경유할 IP주소도 미리 기록되어있어야한다.(주소 목록에 저장되지 않은 주소는 경로로 사용할 수 없음)

엄격한 소스 루트 옵션

  • 느슨한 소스 루트(Loose Source Route)
    • 옵션 종류 코드 값 131 사용.
    • 엄격한 소스 루트와 비슷하지만, 주소 목록에 없는 경로라도 사용 가능하다는 점에서 차이점이 존재.
    • 주어진 IP주소를 모두 경유하되, 도중에 명시되지 않은 경로를 갈 수 있다.
  • 레코드 루트(Record Route)
    • 패킷의 전달 경로를 모두 기록.
    • 옵션 종류 코드 값 7을 사용.
    • 포인터는 라우터의 주소를 기록할 장소를 가르킨다.
    • IP 옵션의 총 길이가 40바이트로 제한되어 있으므로, 기록할 수 있는 경로의 수는 제한되어 있음.
  • 타임스탬프(Timestamp)
    • 패킷이 경로상의 라우터에 도착하는 시간을 기록.
    • 옵션 종류 코드 값 68.
    • 오버플로우 필드가 존재하며 공간부족으로 기록하지 못한 라우터의 수를 명시한다.
    • 플래그 필드는 주소나 시간 둘 중 하나만을 기록할 것인지 모두 기록할 것인지를 명시함.

출처: 정진욱, 김현철 공저. “TCP/IP와 인터넷”, pp 36-42. 2004. (주)생능출판사

댓글