[질문] MAC 주소를 이용하여 IP 얻는방법은?

익명 사용자의 이미지

MAC 주소를 알고 있을 경우에요
물론 네트워크가 연결되는 서버에서여..

MAC 주소를 사용하여 IP 값을 받아 오는
C나 C++ 라이브러리나 함수 들이 없나여?

있음 제발 좀 알려주세요....
꼭필요해서여....

그럼..좋은 하루..

익명 사용자의 이미지

저도 초보예요.
그러니 만약 틀리더라도 너무 구박하지 말아 주세요. ㅡㅜ

IP를 알고 있으면 그 IP를 찾아가서 정보를 얻을 수 있겠죠??
그런데 그 반대를 원하시는데,,
여기서 한가지 걸리는게 있네요.
MAC주소는 모든 네트윅카드에 다~ 있잖아요.
물론 이것도 IP처럼 유니크하지만.. 한가지 다른점이..
IP는 라우터를 이용해서 방향을 지정해 주게 되잖아요.
그런데 MAC주소로 라우팅을 한다??
어떻게 가능한 방법이 있을까요?
IP의 경우엔 211.XXX.XXX.XXX 같은경우 제일 앞에 있는 211을 보고 어떤방
향에 있는지 알 수 있겠죠?
그치만 MAC주소같은경우 어느 회사에서 만든게 이나라.. 저나라 수출을 했
데봐요.
그러면 도대체 어디쯤 있을지 짐작조차 할 수가 없잖아요.
그러니깐 결론은 MAC주소로는 그 네트윅 카드가 어디 있는지 알 수 없으므
로(한가지 방법은 전세계 모든 네트윅에 물린 컴터들에 싸악 물어보는것이
겠죠?) 그런 함수는 있을 수 없다는 거예요.
그러면 이런 의문이 생길 수도 있겠네요.
'같은 랜상에 있는 MAC은 찾아볼 수 있지 않을까?'
물론 만들려면 만들 수도 있겠지만, 없으리라 생각 됩니다.
왜냐면 보통 IP로 찾기는 하지만, MAC주소로 찾는다는건 쓰이지 않잖아요.
그러면 OS만드는 사람들이 굳이 그걸 만들까요?
애시당초 쓰일일도 없을것인데..(왜냐면 IP만으로 모든것이 되기 때문
에..)
그러면 그 프로그램을 직접 만들면 되지 않겠느냐.. 생각 할 수 있겠지
만..
또 문제가, 이쪽에서 아무리 만들어서 돌린다구 하더라도..
받는쪽에서 응답이 없잖아요.
응답이 오게 하려면 그쪽 컴터에두 자신이 만든 프로그램을 깔아야 할텐
데...
의미 없겠죠?(어딘지 알면 그냥 그컴터 IP적어오면 되는데. ^^)

으음.. 답변이 없길래.. 저 나름대로 생각해봐서 쓴거예요.
초보인 저의 개인적인 생각이니 틀렸을수도 있어요.
그러니 혹시 제 생각이 틀렸다면 꼬옥 리플달아 주세요. ^^
(너무 질책하진 말아주세요 ㅡㅜ)

익명 사용자의 이미지

일단 같은 Local Network에 연결되어 있다는 조건하에서 MAC을 이용하여,
IP를 알 수 있습니다.

C나 C++에서 기본으로 제공하는 함수는 없고요, 네트웍 프로토콜을 직접
구현하셔야 합니다.

우선 arp 먼저 설명을 하죠.

arp는 알고자 하는 IP를 가진 Network Interface의 MAC 주소를 알아오는
프로토콜입니다. 이게 왜 필요하냐면, Ethernet 등으로 연결된 네트웍에서
는, IP Procotol도 어파치 Ethernet Protocol을 이용해서 전송되기 때문이
죠. 따라서, 원하는 IP로 Data를 보내기 위해서는 MAC 주소를 알아야 하는
데, 이것이 arp입니다.

arp 작동 원리는 대충 다음과 같습니다.

먼저 "Who has xxx.xxx.xxxx.xxxx"와 같은 메시지를 broadcast로 날립니
다. 그러면, xxxx.xxx.xxx.xxx를 가진 컴퓨터가 "It's me"라는 메시지를
날리면서, Packet에 자신의 MAC 주소를 넣죠.

Local network에 동일한 IP를 가진 PC가 있을 때, Win 98이 부팅하면
서, "동일한 IP를 가진 PC가 발견되었습니다."라는 메시지 보신적 있죠?
이것이 바로 Win 98이 부팅 시에, arp를 이용하여, 자신의 IP를 가진 PC
가 있는지 검사하기 때문입니다. 메시지가 reply되는 것이 있다면, 동일
한 IP를 가진 PC가 실행 중이라는 말이겠죠.

rarp가 질문하신 분께서 찾는 것입니다. arp는 Reverse arp로서 이름에서
알 수 있는 데로, arp의 반대로 작동을 하며, 해당하는 MAC 주소를 가진
IP 주소를 찾는 프로토콜입니다.

작동 방법은 정확히 기억을 못 하겠구요. 아마 Router 등에서 IP와 MAC을
저장하는 테이블을 보관하고 있는데, rarp는 Router에 rarp 메시지를 보내
는 것으로 알고 있습니다.

잘못된 내용이 있으면, 알려 주시구요.

위에 대한 자세한 내용은, Richard Stevens 씨가 쓴, TCP/IP
Illustrated Vol 1. 을 보시면 아주 자세하게 나와있습니다.

Stenves 씨는 정말 좋은 책만 쓰셨는데, 몇년 전에 고인이 되셨죠....
명복을 빕니다.

그럼 이만.

댓글 달기

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