유닉스 환경에서 c 코드로 arp를 만들려고 합니다(초보)

ktkmyfeeling의 이미지

제가 통신에 대해서는 소켓 통신 이외에는 해본적이 없어서

이렇게 글을 올리게 되었습니다.

구글링을 하고 해도 arp에 대한 구조, 설명에 대해서는 나와 있지만

구현하는 방법, 소스에 대해서는 자료가 부족 해서요ㅠㅠ

되도록 많은 자료를 구하고 싶긴하지만

역시 제가 짜는 것이 맞다고 생각이 듭니다.

고수님들 ARP를 짜고 싶은데 단계적으로 무슨 공부를 해야 하나요

제가 알아본 바로는 RAW SOCKET, THREAD를 주를 이루어 사용 한다고 보았습니다.

하지만 감 조차 제대로 잡히지 않아서 이렇게 글을 올리게 됩니다.

단계적으로 무슨 공부를 해야 하는지 자그마한 선처 부탁드립니다.

익명 사용자의 이미지

우선 큰 그림을 그릴 수 있어야 하는데 이건 멋대로 지껄이는겁니다.가려 읽으시길...

제가 노가다를 하니깐 이런 예를 들어볼께요 ㅎㅎ
어떤 사람이 제철소에서 철근을 뽑는 방법,가공온도,주물에서 기포를 제거하는 방법 따위가 상세히 나열된 문서를 보고
"아 나도 철근으로 집을 지어야지~"
하고 생각한다치면 이 사람은 우선 뭘 먼저 알아야 할까요...
자기 집의 콘크리트 벽 속에 철근으로 집이 지어져 있다는걸 알아야 겠지요.

말씀하신 바 ARP 관련 문서 대부분이 커널과 응용,하드웨어와 넷트웍 등 개괄에 대한 얘기는 하지 않듯이 좋은 철근을 뽑기위한 제철과정 상세 서적에서는 철근이 콘크리트 구조물속에서 인장력을 유지한다는 말을 하지 않습니다.이미 당연히 알고 있다고 보는 것이죠.

ARP 는 커널 내부코드의 일부입니다.
커널코드일부로 동작한다는 말은 32비트 4기가 시스템예로 들면 커널 메모리 1기가 안에 있다는 말이며 그 말은 어떠한 사용자응용 즉 나머지 3기가 영역에서 맴도는 프로세서로도 이 코드를 건드릴 수 없다는 말이며 그 말은 커널 소스의 arp 관련을 수정해서 재컴파일재부팅하거나 아니면 ethertype 0x0806 일 때 기본 호출하는 루틴을 죽이고 커널모듈로 올리는 방법밖에 없습니다.
이 말을 어느날 확실히 자기것으로 만들고 나면 그 때 시스템 프로그래밍으로 넘어오셔도 됩니다.지금은 그냥 당연한 소리 아냐 하고 고개 몇 번 끄덕이는 정도로 실감이 안나시겠지만...

제 경우는
5.25 플로피로 그넘의 '드라이버' 를 설치한다 는 말과 책과 작업을 수없이 고개 끄덕이며 했지만 그 드라이버를 이해하는데 거의 20년이 걸렸습니다.20년 쯤 지나고 나니 컴퓨터 없이 컴퓨터 공부가 되더라고요...알고 있다고 고개 끄덕일 때마다 기간이 늘어납니다.항상 뭔가 궁금하거나 막힐 때 기본으로 돌아가기.인터넷 단답을 구하지 말기.단답을 보고 답을 얻지 말고 어떤책을 봐야할까 윤곽을 얻기...

1. 하드웨어에 대한 이해
이거 없으면 고급 작업에서 막힙니다.특히 임베디드와 모바일 시장을 보면 pc 에서 하드웨어 기본을 다져놓아야 합니다.

2. 커널에 대한 이해
커널도 하나의 커다란 프로그램이다.따라서 기본적으로 API 와 같은 개념으로 모든 사용자응용은 io 한다.우선 api 적 그림이라도 그리자...라는 생각이 들면 이제 시작입니다.

3. 네트워크에 대한 이해
네트워크를 구현하는건 커널코드에 있습니다만 그 규정은 미국넘들 것입니다.대표적으로
IEEE + RFC
그림을 그릴 수 있어야 합니다.

4. 원하는걸 하시면 됩니다.
언어같은건 결국 오랜 경험을 쌓다보면 수많은 러이브러리 패턴을 스스로 가지게 되고 그 시점부터는 복사-붙여넣기 작업이 주가 되는 경향을 보이기 때문에 경력이 중요합니다.
언어에 집중하지 않는다면 모든 스크립트는 포기하고 C 만 익힐것을 권해드립니다.스크립트 자체가 문제가 아니라 스크립터 언어를 설명하는 문서와 서적이 시스템 깊이 설명하지 않는 경향이 C 서적보다 심하기 때문이죠.

너무 부담을 가질 필요는 없습니다.
보통 머리좋다는 사람도 행정고시 맨땅헤딩에 3년 이상 걸리지요..컴퓨터는 이보다 쉬울까요?
차근차근 전진하시면 됩니다.한국사회에서 진짜 공부는 서른 넘어서 시작하는거구나...생각하시면 속 편합니다.

오늘부터 인터넷 단답 찾지 마시고 책을 보십시요 그게 제일 빠릅니다.

ktkmyfeeling의 이미지

서점으로 가서 일단 책부터 봐야겠어여 ㅋ

댓글 달기

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