Raw Socket 프로그래밍과 관련한 두가지 궁금증...

kuaaan의 이미지

1. Linux에서는 Raw Socket을 사용하여 간편하게 패킷을 보고 쓸수 있습니다. 그렇다면...
libpcap을 사용할때 얻어지는 이득은 무엇이 있죠?
퍼포먼스가 더 좋은가요?
아니면 이식성?
코딩하다가 갑자기 떠오른 궁금증이었습니다.

2. 다음과 같은 코드로 Raw Socket을 생성했습니다.
fd = socket(AF_INET, SOCK_PACKET, htons(ETH_P_IP))
UNP vol1. 707page에 따르면 위와 같이 생성한 소켓에서는 시스템을 지나가는 모든 'IP'패킷이 보인다고 되어있습니다. (If we wanted only IPv4 frames, the call would be blabla~~~)

그런데 실제로 해보면... ICMP나 ARP까지 전부 보입니다. 결국 올라온 패킷에 대해 필터링을 해줘야 하죠.
어째서 IP패킷이 아닌 다른 패킷까지 보일까요?

익명 사용자의 이미지

ICMP, ARP 모두 IP기반 프로토콜입니다.

kuaaan의 이미지

hellowww wrote:
ICMP, ARP 모두 IP기반 프로토콜입니다.

'IP기반 프로토콜'이라구요?
저는 이더넷 헤더의 ether_type 필드에 0x0800이 박혀있는 프로토콜에 한정되는 걸로 생각했었는데요.
ICMP라면 이해가 가지만...
ARP는 헤더 내에 IP관련 정보가 들어있을 뿐이지... IP헤더가 붙지는 않지 않나요?

----------------------------------------------
한번뿐인 인생....
미친듯이 살아보자!
----------------------------------------------

익명 사용자의 이미지

search : TCP/IP Protocol Suite

IP Protocol => TCP/IP Protocol Suite

익명 사용자의 이미지

FYI] libpcap, raw socket, libdnet, libnet, libipq, libiptc etc.

superkkt의 이미지

kuaaan wrote:
hellowww wrote:
ICMP, ARP 모두 IP기반 프로토콜입니다.

'IP기반 프로토콜'이라구요?
저는 이더넷 헤더의 ether_type 필드에 0x0800이 박혀있는 프로토콜에 한정되는 걸로 생각했었는데요.
ICMP라면 이해가 가지만...
ARP는 헤더 내에 IP관련 정보가 들어있을 뿐이지... IP헤더가 붙지는 않지 않나요?

http://www.networksorcery.com/enp/topic/ipsuite.htm

여기보면 ARP도 IP protocol suite에 포함되어 있는것 같네요..

======================
BLOG : http://superkkt.com

익명 사용자의 이미지

아... 그렇군요. IP Protocol suite라...
이런게 있었네요... :)
IPv4, IPv6, ARP, RARP, InARO ...
감사합니다.

댓글 달기

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