공부한 기록/네트워크 통신

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

YongE 2023. 6. 12. 19:59

IP는 TCP/IP 프로토콜이 사용하는 전송 메커니즘으로, 신뢰성이 없고 최선의 노력으로 전달 서비스를 제공한다. 이 말인 즉슨, 데이터 전달에 최선을 다하기는 하나 오류가 생기거나 폐기되는 것에 대해 책임을 지지 않는다는 의미다.

데이터 그램 방식의 패킷 교환망을 위해 설계된 비연결형 프로토콜이기도 하다.

 

네트워크층에서 경로설정, 주소지정 등의 역할을 한다.

 

데이터그램


IP계층의 패킷을 의미한다. 길이는 가변적이며, 헤더와 데이터 부분으로 구성되었다.

헤더는 20~60바이트이며, 경로지정과 전달에 필요한 정보를 포함하고 있다. TCP/IP에서는 4바이트 단위로 표시한다.

데이터그램

헤더 내 필드는 다음과 같다.

  1. 버전 VER : 4비트로 구성되었으며, IP의 버전을 표시
  2. 헤더 길이 HLEN : 4비트로 구성, 데이터그램 헤더의 전체길이를 4바이트 단위로 표시
  3. 서비스 유형 TOS Type of Service : 8비트로 구성, 데이터그램이 어떻게 처리되어야 하는지 정의한다. 6비트는 코드포인트며, 2비트는 차별화를 위해 사용하지 않는다.
    1. 코드포인트 부필드 오른쪽 3비트가 0일 경우, 왼쪽 3비트는 서비스 유형에서 우선순위와 같은 의미를 지닌다. 라우터에서 혼잡이 발생하여 데이터그램을 일부 폐기해야 한다면 가장 낮은 우선순위 값을 가진것을 먼저 폐기한다.
  4. 전체길이 total length : 16비트 구성으로, 헤더와 데이터를 포함한 데이터그램 전체의 길이.
  5. 식별 : 16비트, 단편화를 위해 사용하는 필드이며, 각 데이터그램을 유일하게 식별한다. 단편화가 생기면 플래그와 단편화 옵셋 필드를 사용한다.
  6. 플래그 : 3비트, 단편화를 위해 사용한다.
  7. 단편화 옵셋: 13비트, 단편화된 조각들을 하나로 합칠 때 전체 데이터그램에서 상대적 위치를 표시한다.
  8. 수명 time to live TTL : 8비트, 데이터그램의 생존시간을 제한한다. 방문되는 라우터에 의해 감소되고 필드값이 0이 되면 데이터그램을 폐기된다.
  9. 프로토콜 : 8비트, 상위 계층 프로토콜을 정의한다.
  10. 검사합 : 16비트, 오류 확인을 위해 있다.
  11. 발신지 주소 : 32비트.
  12. 목적지 주소 : 32비트, 최종 목적지

 

01000010

만약 위와 같은 8비트 IP패킷이 수신된다면, 이 패킷은 폐기해야 한다. 왼쪽 4비트는 버전을 표시하고, 나머지 4비트는 헤더길이를 표시한다. 0010이라는 것은 2가 되고, 4*2는 8바이트다.  헤더의 최소 바이트 수는 20바이트이므로 폐기해야 된다.

 

 

 

단편화


각 네트워크에 전달되는 최대 전송 길이를 MTU라고 한다. 이 길이에 따라 나누어 보내는 것을 단편화라고 한다. 

단편화와 관련된 필드는 다음과 같다. 위에서도 언급했었다.

  1. 식별자 : 단편들은 같은 식별자 값을 가진다. 16비트로 구성되어 있다. 발신지 주소와 식별자를 합하면 유일해진다. 
  2. 플래그 : 3비트로 구성되어 있다. 위치 구분을 위한 것이다. 첫 비트는 사용되지 않으며, 두 번째 비트는 do not fragment로 이 값이 1일 때는 단편화하면 안된다. 세 번째 비트는 1일 때 이 데이터그램이 마지막 단편이 아니라는 것을 의미한다.
  3. 단편화 옵셋 : 13비트 필드이며, 전체 데이터그램에서 단편의 상대적인 위치를 저장한다.

 

 

옵션


헤더에서 고정부분과 가변부분이 있다. 이중 가변 부분은 옵션으로 구성되어 있다. 최대길이는 40비트이며 네트워크를 시험하거나 디버그하기 위해 사용한다.

유형, 길이, 가변 필드로 구성되어 있다.

 

  • 유형 8비트
    • 복사 : 1비트, 단편화에 옵션을 포함시킬 것인지 여부를 정한다.
    • 클래스 : 2비트, 옵션을 데이터그램의 제어로 사용할 것인지 디버그나 관리 목적으로 사용할 것인지를 정하는 비트다.
    • 번호 : 5비트, 옵션의 유형을 정의한다.
  • 길이 : 옵션의 전체길이를 정의한다. 모든 옵션 유형에 있진 않다.
  • 값 : 특별한 옵션이 필요로 하는 데이터를 포함한다. 모든 유형에 있진 않다.

옵션의 유형은 1바이트 옵션과 다중 바이트 옵션으로 나뉜다. 세세한 분류는 다음과 같다.

 

  • 단일 바이트 (길이나 데이터필드를 필요로 하지 않는다)
    • 무연산 no operation 옵션 : 1바이트 옵션으로 옵션들 사이의 여백을 채워준다.
    • 옵션 종료 end of option  옵션 : 옵션 필드 끝에 패딩 목적으로 사용한다. 마지막 옵션으로만 사용가능하다.
  • 다중 바이트 (길이나 데이터 필드를 필요로 한다)
    • 경로 기록 record route 옵션 : 데이터그램을 처리한 인터넷 라우터들을 기록하기 위해 사용한다. 최대 9개 IP주소까지 기록할 수 있다.
    • 엄격한 발신지 경로 옵션 : 데이터그램이 인터넷에서 거쳐야 할 경로를 미리 지정하기 위해 사용한다.
    • 느슨한 발신지 경로 옵션 : 엄격한 발신지 옵션과 비슷하나 리스트 내 각 라우터를 반드시 방문해야 하지만 리스트에 없는 라우터도 방문할 수 있다.
    • 타임스탬프 옵션 : 라우터가 데이터그램을 처리하는 시간을 기록하기 위해 사용한다. 

 

검사합


오류를 검출하고 오류에 대한 보호를 수행한다.

  • 송신자의 검사합 계산 : 송신자에게 패킷은 n비트 조각으로 나뉘어진다. 이 조각들을 1의 보수 연산을 사용해 전부 더한 뒤 n 비트 결과를 생성한다. 이 합에 대한 1의 보수가 검사합이 된다.
  • 수신자의 검사합 계산 : 수신된 패킷을 k 조각으로 나눈 후 이들을 전부 합하고, 이 합에 1의 보수 연산을 한다. 결과가 0이면 패킷을 수용하고, 아니면 거부한다.

검사합은 가변적인 부분인 헤더만 한다. 만약 불변인 데이터 필드까지 포함하면 전체 패킷에 대한 검사합을 다시 계산해야 해서 많은 처리 시간을 요한다.

 

 

IP 패키지


  • 헤더 추가 모듈 : 상위 계층으로부터 데이터와 목적지 IP를 받은 뒤 IP 헤더를 추가하는 모듈이다.
  • 포워딩 모듈 : 처리모듈로부터 IP패킷을 받아서 이 패킷을 위한 전달 노드의 주소와 인터페이스 번호를 찾는다.
  • 단편화 모듈 : 데이터그램 길이 MTU보다 길면 단편화 모듈을 사용한다.
728x90
반응형