RAW 소켓 디바이스 드라이버 관련 질문

declspec의 이미지

안녕하세요 좋은조언 얻을수있을까 싶어 질문합니다

다름이 아니라 윈도우즈이든 UNIX 시스템이든 RAW 소켓을 만들어서 패킷을 수신할때

네트워크 인터페이스카드가 수신하는 프레임을

TCP/UDP 단을 거치지 않고 IP 헤더까지 통째로 얻어올 수 있잔아요?

그런데 소켓을 생성할때 네트워크 인터페이스에 대해서 지정을 하는건

못봤는데(있는데 모르는 것일수도 있음)

만약 네트워크 인터페이스가 2개 이상있는 컴퓨터에서

RAW 소켓을 만들면 어떻게 될까요?

예를들어 이더넷카드와 무선랜카드 2개가 있는 컴퓨터에서

RAW 소켓을 만들고

이 네트워크 인터페이스들을 모두 promiscuous 모드로 만들면

RAW 소켓에 들어오는 데이터는 두 인터페이스 모두에 들어온

데이터가 전부 잡힐까요?

또한, RAW 소켓을 이용해서 패킷을 생성해서

보낸다고 할때 인터페이스가 여러개인경우 어느 인터페이스로 보낼지는

어떻게 지정할까요?

bacon의 이미지

리눅스의 경우만 대충 설명해보면

인터페이스가 여러개 있으면 여러개 있는대로 들어옵니다. 특정인터페이스에 붙이려면 SO_BINDTODEVICE같은 socket option이 있고요, bind()로 특정 IP주소에만 붙일수도 있을것이며, 특정프로토콜만 잡으려면 소켓생성할때 프로토콜을 지정하면 되겠죠. 보낼때는 SO_BINDTODEVICE같은 특별한 옵션을 사용하지 않았으면 라우팅테이블정보에 따라 어느 인터페이스로 나갈지 결정되겠죠.

PF_RAW가 아니라 PF_PACKET소켓을 사용하면 더 하위에서 작업할수 있습니다. PF_PACKET소켓에 사용하는 sockaddr_ll 주소타입에 보면 sll_ifindex같은 필드가 있으서 어느 인터페이스에서 왔는지 알아내거나 어느 인터페이스로 보낼지 지정할수 있습니다.

댓글 달기

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