UDP전송시 ICMP패킷을 받을 수 있을까요?

jic5760의 이미지

안녕하세요.
특정 UDP패킷에 대한 ICMP응답이 있을 시 이에 대한 응답을 받아서 처리하고 싶은데 어떻게 구현할 수 있는지 모르겠습니다..

ICMP패킷 자체야 RAW Socket으로 처리하면 되긴 하지만 어떤 패킷에 대한 응답인지 알 수가 없습니다..

ICMP패킷응답이 있을 때에는 UDP을 전송했을 때 IP Header의 identification과 같은 identification을 가진 IP Header가 ICMP패킷의 하위데이터로 오는걸로 알고 있습니다.

그런데 C에서 sendto함수로 데이터를 보내면 전송당시의 IP Header identification을 알 수가 없어서 어느패킷이 전송에 실패했는지 알 수 있는 방법이 없습니다..

그렇다고 RAW Socket으로 UDP Packet을 직접 만들어 보내는 수고를 할 수도 있긴 하지만...
Kernel상에서 사용하는 Next IP Header identification번호를 알 수 있을까? 하는 의문도 있구요..

어떻게 이런걸 구현할 수 있을까요?

미리 답변주실것에 감사를 표합니다.

czz96의 이미지

UDP프로토콜 자체가 비신뢰성이고 수신순서가 송신순서와 불일치하며 수신오류 여부 ACK메시지를 통해 확인하는 과정이 없어 이러한 걸 구현하기 위해서는 이미 잘 구현된 TCP를 쓰는게 맞는듯합니다.

---------------------------------
Linuxer / 이재원(Jaewon Lee)
---------------------------------

jic5760의 이미지

냉무