소켓 통신시 각 레이어별로 패킷을 확인해보고 싶은데...

gnoygnas의 이미지

늘 이곳에서 도움만 받는군요...^^

우선 목적부터 말씀드리면 클라이언트에서 보낸 데이타가 서버에서 받아 들이고 다시 클라이언트로 리턴시켜 통신이 제대로 되는지 확인하고 싶습니다.

단순히 서버/클라이언트 에코 프로그램을 짜서 결과값을 확인하면 되는데요, 문제는 어느 부분에서 문제가 생기는지 파악이 안되고 있습니다. 하나의 홈서버가 있고 그 홈서버에는 microC/OS가 올라가 있는데 쉽게 해결이 안되네요...문제가 어느부분에서 생기는지 파악조차 되질 않기에 맴맴~맴돌고 있습니다..ㅡ,.ㅡ;;

그래서 각 레이어별로 보낸 데이타가 제대로 아랫단으로 전송이 되는지 확인하고 싶습니다. 리턴시에는 그 반대로 제대로 패킷이 구성되어 올라오는지도요...

얼핏 듣기로 ioctl로 네트워크 인터페이스를 직접 제어해서 확인해 볼 수 있다고 하는데 관련된 정보도 찾기 힘드네요...샘플이라도 있으면 응용이라도 해보겠는데....

리눅스에서 우선 작업해보면서 분석하고 나중에 MicroC/OS에 적용해볼 생각입니다..

그럼....이런저런 조언 부탁드리겠습니다..

읽어주셔서 감사합니다.

익명 사용자의 이미지

tcpdump(또는, ethereal 등)를 실행시켜서 패킷을(layer 2 수준에서) 수집해서, 이를 레이어별로 조합해보고 함으로써, 이용하여 트래픽을 분석해 볼 수 있습니다.
보통 질문자님과 같은 경우에 디버깅시 용이합니다.

swunk의 이미지

커널 모듈을 하나 짜서 소켓 버퍼내용을 차례대로 확인해 보면 확실하게 알 수 있겠네요...

그런데 윗분 말씀대로 TCPDUMP 로 하는게 훨씬 간단하겠네요...--;

gnoygnas의 이미지

우선 답변 감사드립니다..

ethereal로도 분석을 하고 있지만 직접 소스 수준에서 제어를 해보고 싶습니다..

제목처럼 ioctl()로 net_send_packet()이나 net_rx() 등의 하위 레벨 함수를 제어할 수 있는지 궁금하네요....

꼭 ioctl()이 아니어도 다른 방법이 있다면 상관 없을듯 합니다.

One must, In fact, Love your pursuit
My home is below...Well, just go own your gait!

Necromancer의 이미지

libpcap 사용하세요.

전에 기자들이 몇번 열심히 떠들었던 스니퍼도 만들수 있습니다(코드 100줄 안됨). 단 쓰시는건 님책임이고요 ~ :lol: :lol: :lol: :evil: :evil: :evil:

Written By the Black Knight of Destruction

gnoygnas의 이미지

답변 감사합니다...제가 방향을 잡는데 많은 도움이 되었습니다.

현재 아래 링크와 같이 윤상배님의 libpcap을 이용한 프로그래밍 강좌를 보면서 하나하나 나아가고 있는데요...

패킷 송수신을 위한 설정을 하는 단계인 SYN, SYN+ACK, ACK 단계시 마다 각각에 대한 패킷을 캡춰하고 싶은데 가능할까요?

문제가 생기는 부분을 하나하나 체크하면서 상위레벨로 올라갈 예정입니다...

http://www.joinc.co.kr/modules/moniwiki/wiki.php/article/libpcap%C0%BB_%C0%CC%BF%EB%C7%D1_%C7%C1%B7%CE%B1%D7%B7%A1%B9%D6

One must, In fact, Love your pursuit
My home is below...Well, just go own your gait!

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.