[컴퓨터 네트워크] IP Header Option & Checksum

신현식·2022년 10월 13일
0

컴퓨터 네트워크

목록 보기
5/34

✔옵션은 모든 데이터그램에 다 필요하진 않다. 옵션은 IP소프트웨어의 일부이기때문에 처리하는데 시간이 오래걸려 잘 사용하지 않는디. 우리는 모든 옵션을 다 확인하지 않고 Multiple-Byte에서 Record route, Strict source route, Loose source route, Timestamp 이 4가지만 볼 것이다.

📌Record route

  • 데이터그램를 다루는 인터넷 라우터를 기록한다. Pointer 필드는 first empty entry의 바이트 수를 포함하는 offset integer 필드이다.

  • Outgoing buffer만 기록한다. (source: 67.34.30.6 , Destination: 138.6.25.40)

📌Strict source route

  • 지정한 패스 상의 router만 지나가도록 지정한다. 만약 데이터그램이 리스트상에 없는 라우터를 방문한다면 데이터그램은 discard되고 에러메세지가 발생한다.

📌Loose source route

  • 지정한 패스를 지나가되 중간에 다른 라우터를 경유할 수 있다.

📌Timestamp

  • 이 명령은 라우터가 패킷이 헤더에 도착한 시간의 타임스탬프를 기록하고 우리에게 다시 보내도록 합니다.

📌Checksum

  • TCP/IP 프로토콜에서 사용하는 에러검사 방법이다. 네트워크를 통해 전달된 값이 변경되었는지 검사하는 값으로 무결성을 제공한다. 중복 검사의 한 형태이며 통신에서 CRC, 즉 순환 중복 검사를 체크섬이라고도 말하는데 엄밀히 따지면 체크섬은 나열된 데이터를 더하여 체크섬 숫자를 얻고, 정해진 비트 수의 모듈라로 정해진 비트 수로 재구성한다. 만약 체크섬이 맞아 떨어지지 않는다면 메시지가 손상되었다고 결론을 내릴 수 있다.
  • 패킷이 라우터를 지나갈 때마다 TTL의 값이 변경되므로 Checksum은 항상 재계산된다. 즉 라우터를 하나 통과할때마다 전 체크섬에 2^8(100000000)을 더해준다.
💡 계산방법
  1. 수신 측에서 ip헤더를 2Byte(16bit)씩 나눈다.
  2. 체크섬을 제외한 모든 필드의 값을 더해준다.
  3. 패킷에서 체크섬의 크기가 2byte를 넘지 못하기 때문에 모두 더한 값에서 캐리값이 발생하면 뒤에 더해준다.
  4. 나온 값을 1의 보수를 취해준다. 2진수의 값에서 0은 1로, 1은 0으로 바꿔준다.(ex 0000 1101 0011 0101 -> 1111 0010 1100 1010 이 값이 Checksum)
[2진수로 Checksum 구하기]

[16진수로 Checksum 구하기]
  • 예시: IP Header : 4500 003c 1c46 4000 4006 0000(초기화된 체크섬 필드) ac10 0a63 ac10 0a0c

    4500 + 003c + 1c46 + 4000 + 4006 + 0000 + ac10 + 0a63 + ac10 + 0a0c = 0002 4e17
    -> 0002 + 4e17 = 4e19
    ~4e19 = b1e6

  • 수신 측에서는 체크섬을 포함하여 다시 체크섬을 구한다. IP 패킷에 문제가 없을 경우 수신 측 체크섬의 값은 0xffff(4e19 + b1e6)의 1의 보수인 0x0이 된다.

profile
전공 소개

0개의 댓글