UDP 기반의 서비스에서 icmp 패킷을 이용해서 제어 가능한가요?

swunk의 이미지

udp 기반의 클라이언트-서버 환경에서...

클라이언트가 아닌 제3의 단말이 icmp destination unreachable message(icmp type3 message)를 서버 쪽으로 보내면 어떻게 되나요?

아래에도 질문을 했었는데...
udp 기반의 크라이언트-서버 환경에서 클라이언트가 비정규적으로 종료가 되었을 경우 이를 서버쪽으로 알려서 데이터 송신을 멈추게 하려고 하는 방안에 대해서 고민중입니다.

혹시 비슷한 문제를 해결해 보신 분이 계시다면 답변 주시면 고맙겠습니다.

lovemyin의 이미지

UDP 프로토콜에서는 응용층에서 뭔가 작업을 하지 않으면 연결종료 여부를 파악할 수 없습니다. 비정상적인 연결 종료는 TCP 또한 알 수 없고요...
차라리 응용층에서 주기적으로 확인을 하는게 좋을것 같은데요...

/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/

swunk의 이미지

TCP에서는 알 수 있지 않나요?
타이머가 만료된다거나...해서 연결이 정상적이지 않다는 것을 파악할 수 있는것으로 알고 있는데요...

실제로 VoD 프로그램을 돌려서 확인을 해보니 TCP 기반인 경우는 클라이언트 프로그램을 비정상적으로 죽여버리면 서버쪽에서 데이터 송신을 바로 멈추어 버리고
UDP기반인 경우는 그렇지가 않더라구요...

그리고 응용계층에서 특정 기능을 넣어주는 방법(서버쪽에서 주기적으로 확인하라는 의미로 들리는데요...)을 택하면 기존의 작성된 legacy 프로그램에 대해서는 제어할 수 있는 방법이 없습니다.

제가 원하는 것은 응용이 (비정상적)종료 되었음에도 불구하고 서버쪽에서는 필요없는 데이터 들을 계속 송신하기 때문에 이것을 단말 자체에서 판단하여 서버쪽으로 어떤 액션을 취하는 방법을 생각하고 있습니다. 이것은 망자원에 대해서 많은 낭비를 초래하게 됩니다. (송신되는 데이터의 양이 크다고 가정할때...)

생각 하던중 icmp 제어 메시지들(예를 들면 port unreachable 메시지)을 이용해서 UDP 트래픽을 콘트롤 가능한가를 살펴보고 있습니다.
근데 별 뾰족한 방법이 없을듯 하군요...

혹시나 위와 비슷한 문제들을 해결하신 분들이 있다면 답변 주시면 감사하겠습니다.

lovemyin의 이미지

VoD 프로그램은 아마 클라이언트와 주기적인 확인 과정을 할 것입니다. TCP 연결이 비정상적으로 끊어졌을 경우(예를 들어 랜선이 뽑인 경우 또는 전원을 내린 경우) 바로 알 수 있는 방법은 없습니다. 데이터를 전송하거나 해봐야 에러를 보고 연결이 끊긴것을 알 수 있지 가만히 recv만 하고 있는 모듈에서는 알 방법이 없습니다.
타이머는 오랜 시간이 지나야 만료되기 때문에 프로그램 상에서 큰 도움이 되지는 못할것 같습니다.

/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/

pizza1977의 이미지

TCP가 아닌 UDP에서 그것도 서버가 클라이언트의 상태를 알 수 있어야 한다는건 UDP의 목적과는 좀 다른거 같은데요. UDP의 경우 클라이언트 쪽에서 종료전에 특정 메시지를 보내지 않으면 서버측은 알 수 없을 것 같습니다.

-------------
포탈이는 불사신

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.