패킷은 정상인데 진단은 실패한다: DoIP 실무 디버깅 노트

차량 진단을 하다 보면 어느 순간 DoIP라는 단어를 만나게 됩니다.

처음에는 단순히 “UDS를 Ethernet으로 보내는 것” 정도로 보이는데, 실제로 구현하거나 디버깅하다 보면 생각보다 많은 지점에서 막힙니다.

TCP는 붙었는데 ECU 응답이 없고, Routing Activation은 성공했는데 UDS가 안 오고, 작은 요청은 잘 되는데 firmware download만 들어가면 timeout이 터지는 식입니다.

그래서 DoIP 관련해서 실무에서 헷갈렸던 포인트들을 하나씩 정리해두고 있습니다.

기본 흐름 이해하기

연결과 라우팅에서 막히는 부분

UDS와 세션 관리

Timeout과 응답 해석

실무에서 자주 터지는 문제들

정리

DoIP는 단순히 UDS를 TCP/IP 위에 올린 것처럼 보이지만, 실제로는 훨씬 더 많은 상태를 같이 봐야 합니다.

  • TCP 연결 상태
  • Routing Activation 상태
  • DoIP session 상태
  • UDS session 상태
  • Gateway routing 상태
  • Timeout / retry 정책
  • Discovery timing

이런 것들이 서로 엮여 있어서, 한 레이어만 보고 판단하면 디버깅이 길어지는 경우가 많습니다.

그래서 이 글들은 단순한 프로토콜 설명보다는 실제 구현과 디버깅에서 자주 헷갈리는 지점을 중심으로 정리하고 있습니다.

DoIP를 처음 붙여보는 사람이나, “패킷은 정상 같은데 왜 안 되지?” 상황을 겪는 사람에게 도움이 되었으면 합니다.