UDP전송시 ICMP패킷을 받을 수 있을까요?
글쓴이: jic5760 / 작성시간: 화, 2017/09/12 - 11:14오전
안녕하세요.
특정 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번호를 알 수 있을까? 하는 의문도 있구요..
어떻게 이런걸 구현할 수 있을까요?
미리 답변주실것에 감사를 표합니다.
Forums:
UDP프로토콜 자체가 비신뢰성이고 수신순서가
UDP프로토콜 자체가 비신뢰성이고 수신순서가 송신순서와 불일치하며 수신오류 여부 ACK메시지를 통해 확인하는 과정이 없어 이러한 걸 구현하기 위해서는 이미 잘 구현된 TCP를 쓰는게 맞는듯합니다.
---------------------------------
Linuxer / 이재원(Jaewon Lee)
---------------------------------
질문글에 있듯이 ICMP프로토콜을 사용하는 경우입니다.
냉무
댓글 달기