[광범위하지 않음]네트워크 동작원리가 궁금합니다.

Geniys의 이미지

지금 궁금한게....
랜 카드는 1개 잡혀서 eth0로 인터페이스가 잡혀있고, 랜선은 뽑혀있습니다.
따라서 인터페이스는 lo, eth0 이렇게 2개 잡혀있습니다.

이때 ping을 외부 IP로 보내면 당연히 detination unreachable 라고 나오는데...

이때 패킷 분석 프로그램으로 보면

lo 인터페이스에 icmp 응답 패킷만 들어옵니다.

궁금점 1. 왜 응답 패킷만 들어오는가? 랜카드에서 브로드 케스팅하기위해서 인터페이스로 패킷을 보내야 하지 않는가?

궁금점 2. 외부로 보내려 하면 eth0를 사용하려 할텐데, 왜 에러 패킷은 lo로 들어오는가?

궁금점 3. lo는 네트워크 레이어 역할을 한다고 나와 있는 문서가 있는데.. 이 경우 하드웨어 드라이버도 없고 어떻게 처리가 되는것인가?

너무 궁금해서 뒤져보는데...
도무지 답이 없습니다.

wariua의 이미지

어쩌면 1. 왜 ICMP echo request 패킷을 eth0에서 (혹은 lo에서라도) 캡쳐할 수 없는가 하는 건 커널 내에서 패킷 캡쳐가 이뤄지는 시점과 관계가 있습니다.

대략 네트워크 드라이버 수준과 네트워크 계층 사이에서 캡쳐가 이뤄집니다. 문제의 ICMP echo request 패킷은 적용 가능한 라우팅 규칙이 없거나 라우터의 MAC 주소가 ARP 캐시 안에 있지 않아서 드라이버 수준까지 보낼 수 없습니다. 따라서 캡쳐가 이뤄지는 지점까지 도달하지 못합니다. 이 경우 destination unreachable 메시지는 장비 자체가 스스로에게 보내는 것입니다. 앞에서 목적지가 도달 가능하지 않은 문제의 패킷이 어느 인터페이스로 나갈지 결정되지 않았으므로 unreachable 메시지를 eth0 등의 인터페이스를 통해 보내는 것보다는 lo 인터페이스를 통해 보내는 것이 적절합니다. 따라서 unreachable 메시지는 lo 인터페이스에서 캡쳐가 가능합니다.

어쩌면 2. 앞의 설명에 대강대강 섞여 있습니다. 문제의 패킷은 eth0라는 장치 수준까지 도달하지도 못했으며, 따라서 스스로에게 보내는 오류 패킷은 lo 인터페이스를 통해 전달됩니다.

어쩌면 3. 커널 소스를 가지고 계시다면 ~linux/drivers/net/loopback.c 파일을 살펴보실 수 있습니다. loopback 인터페이스를 위한 의사(pseudo) 드라이버입니다.

덧붙여. 실수로 중복 포스팅을 하신 경우 지울 글타래에서 "편집" 탭을 선택하신 후 아래쪽의 "지우기" 버튼을 가볍게 눌러주시면 됩니다. :)
----
$PWD `date`

$PWD `date`

댓글 달기

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