[완료] wireshark(ethereal)로 까지 데이터가 오는데 프로그램은 동작이 안되네요.. ㅜㅜ

munhoney의 이미지

안녕하세요

혹시 wireshark을 사용하면서 버그 같은거 경험하신적 있으시나요? (버그는 아닐 수도 있지만..)

UDP로 데이터를 서버에 전달하는 간단한 샘플 프로그램을 사용하는데,
분명 wireshark에서는 데이터가 오는 게 보입니다. 그런데 샘플 프로그램(application)에서는 데이터가 전달되었다고 나오지가 않네요.

혹시 이런 적 있으셨나요?

고수님들 답변 부탁드립니다.

mithrandir의 이미지

방화벽에서 막히진 않았는지.
checksum error 혹은 다른 이유로 커널에서 버린건 아닌지
알고보니 포트를 잘못 등록했다던지
select를 잘못해서 전혀 읽고 있지 않다던지

의 이유를 한번 확인해보세요.

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

munhoney의 이미지

네 말씀하신거 다 보았는데도 안되네요..

지금 하고 있는 것은 network 드라이버를 손대는 건데, (아마 문제의 원인일 수 있습니다.)

문제는 분명 wireshark까지는 올라왔다는 거 이상하다는 것입니다.

만약 드라이버에 문제가 있다면, wireshark까지는 올라오지 않을 것 같은데 말이지요..

혹, 제가 뭔가 잘못 생각하고 잇는 것이 있을까요?

---------------------------------
http://blog.naver.com/munhoney
---------------------------------

---------------------------------
http://blog.naver.com/munhoney
---------------------------------

mithrandir의 이미지

커널을 수정중이시라면, 직접 따라가보는 것도 방법이 되겠습니다.
문제가 의외의 곳에서 나타날 수도 있죠.

제 경우는 가상 네트웍 인터페이스에서 받은 패킷이 어플리케이션에 도착하지 않아서
(select는 됐는데 read하면 막상 패킷이 없음)
왜그런가 추적해봤더니 align이 안맞아서 패킷이 폐기된 적이 있습니다.
결국 asm을 수정해서 해결했고요.

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

munhoney의 이미지

아 그렇군요....

아마 비슷한 문제일 것 같네요.. 혹시 리눅스나 혹은 윈도우에서 폐기된 패킷이 있다는 것을 알수 있는 방법이 있나요?

그것만 확실해 지면 문제의 실마리를 찾을 수 있을 것 같은데요.

지금 저는 윈도우 드라이버를 개발 중이고, 가상 피시에 적용 중입니다.

---------------------------------
http://blog.naver.com/munhoney
---------------------------------

---------------------------------
http://blog.naver.com/munhoney
---------------------------------

monovision의 이미지

netstat -e 로 보면 되지 않을까 합니다.
전 tcp 패킷을 조작한다고 커널단을 건드렸는데 체크섬을 잘못 계산해서 다 폐기된 적이 있습니다. ㅡ.ㅡ;;;

munhoney의 이미지

netstat -e로 하면 다음과 같이 나온던데요... 폐기된 패킷은 어디에 나오는지 모르겠습니다.

1. 참. 그리고 저는 지금 UDP로 하고 있는데, UDP의 경우 checksum 도 맞추어야 하는지요.
2. 그리고 Ethernet Header도 건드리고 있는데 (MAC 주소 땜시) FCS (CRC)도 맞추어야 하나요?

P.S.
답변 너무 감사드립니다. ^^''

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 2727 @/org/kernel/udev/udevd
unix 2 [ ] DGRAM 4246 @/org/freedesktop/hal/udev_event
unix 14 [ ] DGRAM 3505 /dev/log
unix 3 [ ] STREAM CONNECTED 11739 @/tmp/.X11-unix/X0
unix 3 [ ] STREAM CONNECTED 11738
unix 3 [ ] STREAM CONNECTED 11475 @/tmp/dbus-U2Bsm8D5XF
unix 3 [ ] STREAM CONNECTED 11474
unix 3 [ ] STREAM CONNECTED 11470 @/tmp/dbus-ChpxgnUFVE
unix 3 [ ] STREAM CONNECTED 11469
unix 3 [ ] STREAM CONNECTED 10811 @/tmp/dbus-ChpxgnUFVE
unix 3 [ ] STREAM CONNECTED 10810
unix 3 [ ] STREAM CONNECTED 10608 /home/stmoon/.pulse/c9cc425a59616813117764984b6faad1-runtime/n
ative
unix 3 [ ] STREAM CONNECTED 10607
unix 3 [ ] STREAM CONNECTED 10308 @/tmp/dbus-U2Bsm8D5XF
unix 3 [ ] STREAM CONNECTED 10307
unix 3 [ ] STREAM CONNECTED 10303 /var/run/dbus/system_bus_socket
unix 3 [ ] STREAM CONNECTED 10302
unix 3 [ ] STREAM CONNECTED 10182

---------------------------------
http://blog.naver.com/munhoney
---------------------------------

---------------------------------
http://blog.naver.com/munhoney
---------------------------------

mithrandir의 이미지

ifconfig 에서 인터페이스 정보에 error 같은게 있나 한번 보세요.

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

munhoney의 이미지

매번 답변 감사합니다.

확인 결과, UDP Checksum을 안해주어서 그랫던 거더군요.

님 덕분에 힌트를 얻게 되었습니다.

신기하게도 UDP에서는 setopt를 통해 Checksum을 안해주어도 되는데, 그게 먹히지 않더군요.

암튼 문제는 해결되었네요. 감사합니다~~~

---------------------------------
http://blog.naver.com/munhoney
---------------------------------

---------------------------------
http://blog.naver.com/munhoney
---------------------------------

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 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>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 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>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 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>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.