raw socket 프로그래밍에 관하여

kphwan의 이미지

안녕하세요
지금 기본적인 raw socket 프로그래밍을 해보고 있는데요
중간에 막히는 부분이 있어 이곳에 질문을 올려봅니다.

기본적인 소스 입니다.

while(1){

// recvfrom() 함수를 이용하여 패킷을 받음.

recvfrom( recv_socket, recv_packet, 100, 0, (struct sockaddr *)&target_address, &len );

printf( "[ 패킷을 받았습니다. ]\n" );

printf( "발신자 IP : %s\n\n", inet_ntoa( target_address.sin_addr ) );

sleep( 1 ); // 화면이 너무 빨리 지나가므로 1초 지연.

}

}

특정한 주소를 지정해 주었구요..
지정된 컴퓨터에서 wireshark (패킷캡쳐 프로그램)을 ON 시켜 놓았습니다.

프로그램을 동작시키니
해당 컴퓨터에서 SYN 플래그로 보낸 패킷을 수신하고
그쪽에서 [RST, ACK] 플래그를 포함한 패킷을 보내는것을 확인이 됐습니다.

그런데 왜 수신 컴퓨터에서는 recvfrom 에서 계속 블락이 되어 있나요??
분명 패킷을 보내는게 확인까지 됐는데요,,,,

조언 부탁드리겠습니다.

breadncup의 이미지

리눅스 인가요? 혹시 iptables 확인 해 보셨나요?

~~~~~~~~~ Signature

  1. http://kblog.breadncup.com/about/
  2. http://kblog.breadncup.com/
  3. http://lifeus.net/
kphwan의 이미지

iptable 이라면 무얼 말하는지 모르겠습니다.

일단 수신지와 발신지 컴퓨터에서
netstat -an 으로
사용가능한 포트 번호를 확인을 하구요

각 사용가능한 포트로 보내고 받아보니 이번에는

수진지에서는 다음과 같이 캡쳐를 하더라구요.
1. SYN 플래그 수신
2. SYN, ACK 플래그 송신
3. ACK 플래그 수신

그런데 이번에도 발신지가 문제였습니다.

발신에서는 SYN 플래그 보낸 신호만 잡고
그 뒤 SYN, ACK 플래그 수신, ACK 플래그 발신 신호를
전혀 캡쳐하지 못하네요??

수신지에서는 발신지로부터 ACK 신호까지 받았는데
발신지에서는 ACK 신호를 보낸것을 캡쳐 못하는걸까요??

breadncup의 이미지

iptables -L 로 chain rules 확인해 보셨나요? (혹시 packet이 filtering 되는것이 아닌가 해서요.)

~~~~~~~~~ Signature

  1. http://kblog.breadncup.com/about/
  2. http://kblog.breadncup.com/
  3. http://lifeus.net/
kphwan의 이미지

winpcap을 이용하여 수신하는 쪽에서 패킷이 받는것을 확인하였는데

iptables 로 패킷이 필쳐링 되는것을 확인해 볼 필요가 있는건가요??ㅠㅠ

일단 위에서 말했다 시피 패킷이 오고 가는것은 잡히는데(수신측에서)

정작 프로그램에서는(발신지)
자신이 처음 sendto 로 보낸 패킷만 캡쳐가 되고
recvfrom 에서 block 이 걸려 있습니다.

찾아보니 알람으로 해서 깨우라니 하는것 같은데..

이와 같은 경우에도 해당이 되는 건가요???

댓글 달기

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