[Network] CH11. Address Resolution Protocol (ARP)

chxxrin·2022년 6월 23일
0

컴퓨터네트워크

목록 보기
12/15

Address Resolution Protocol (ARP)

logical address vs physical address

  • 논리 주소: IP 주소
    • 네트워크 계층에서 사용되는 주소
    • 호스트가 인터넷에 연결될 때 할당됨
  • 물리 주소: Ethernet MAC 주소
    • 데이터 링크 계층에서 사용되는 주소
    • 하드웨어가 공장에서 나올 때 할당됨
  • 데이터 링크 계층에서의 데이터 포워딩
    • 물리 주소를 사용함
    • 논리 주소 (IP 주소)는 물리 주소로 매핑되어야 함

ARP (주소 해결 프로토콜) (Address Resolution Protocol)

• 송신자가 대상 IP 주소를 알지만 MAC 주소를 모를 때 사용됩니다.
• ARP 요청을 브로드캐스트합니다.
• 해당 물리 주소를 가진 호스트가 ARP 응답을 보냅니다.
• 송신자는 ARP 테이블에 물리 주소를 기록합니다.

  • 매번 물어보지 않도록 하기 위함입니다.
    ARP는 링크 계층 프로토콜(레이어 2)로 간주됩니다.

ARP 패킷 형식

• 하드웨어 타입: 네트워크 타입 - 예: 이더넷
• 프로토콜 타입: 주소를 해결하기 위해 ARP를 사용하는 프로토콜 - 예: IP

-하드웨어 길이: 물리적 주소 길이 - 예: 이더넷 = 6
• 프로토콜 길이: 논리적 주소 길이 - 예: IP = 4
• 오퍼레이션: ARP 요청 또는 응답

ARP 패킷의 캡슐화

• ARP 패킷은 데이터 링크 프레임에 캡슐화됩니다.
• "Type" 필드는 "Data"가 ARP 요청 또는 응답임을 나타냅니다.

ARP 프로토콜 동작

• 소스는 대상의 IP 주소를 알지만 물리적 주소를 모릅니다. (따라서 패킷을 보낼 수 없습니다.)
• 소스는 ARP 요청을 생성합니다.
– 소스 IP 주소, 물리적 주소, 대상 IP 주소를 포함합니다.
• ARP 요청은 브로드캐스트됩니다.
• 네트워크의 모든 호스트가 ARP 요청을 수신합니다.
• 대상 IP 주소를 가지고 있는 호스트가 패킷에 응답합니다. 다른 호스트는 패킷을 폐기합니다.

  • 대상 노드는 소스에게 ARP 응답을 보냅니다.
    • 대상은 소스의 물리적 주소를 알고 있으므로 패킷은 소스에게만 보내집니다 (unicast).
  • 소스는 ARP 응답을 받을 때 대상의 물리적 주소를 확인합니다.

Q) host가 목적지 호스트의 물리적 주소를 몰라서 ARP를 사용해야 한다. ARP요청과 응답의 내용은 무엇인가 ?

ARP 요청(request)의 내용:

  • 소스 호스트(130.23.43.20)는 목적지 호스트(130.23.43.25)의 물리적 주소를 알지 못합니다.
  • ARP 요청은 로컬 네트워크에서 브로드캐스트되어야 합니다.
  • ARP 요청 패킷의 내용은 다음과 같을 것입니다:
    • 출발지 IP 주소: 130.23.43.20
    • 출발지 물리적 주소(MAC 주소): B2:34:55:10:22:10
    • 목적지 IP 주소: 130.23.43.25
    • 목적지 물리적 주소(MAC 주소): 알려지지 않음 (일반적으로 00:00:00:00:00:00이 사용됩니다)
    • ARP 프로토콜 타입: ARP 요청을 나타내는 값을 사용 (일반적으로 0x0806)

ARP 응답(reply)의 내용:

  • 목적지 호스트(130.23.43.25)는 ARP 요청을 받고 자신의 물리적 주소를 알려줍니다.
  • ARP 응답은 ARP 요청을 수신한 호스트에게 돌아갑니다.
  • ARP 응답 패킷의 내용은 다음과 같을 것입니다:
    • 출발지 IP 주소: 130.23.43.25
    • 출발지 물리적 주소(MAC 주소): A4:6E:F4:59:83:AB
    • 목적지 IP 주소: 130.23.43.20
    • 목적지 물리적 주소(MAC 주소): B2:34:55:10:22:10
    • ARP 프로토콜 타입: ARP 응답을 나타내는 값을 사용 (일반적으로 0x0806)

Dynamic Host Configuration Protocol (DHCP)

호스트 구성
이더넷 주소 (물리 주소) - 제조업체에 의해 구성됩니다. → 변경되지 않음
IP 주소 (논리 주소)
- 인터네트워크의 구조를 반영해야 함
• IP 주소는 장치가 현재 속한 네트워크에 따라 다름
- 장치가 이동할 때 IP 주소가 변경되어야 함
- 수동으로 구성하는 것은 부담스럽고 오류가 발생할 수 있음
• IP 주소의 자동 구성이 필요함

Ethernet 주소 : 이동할 때 변경안됨(물리주소)

IP 주소 : 이동할 때 변경됨(논리 주소)

동적 호스트 구성 프로토콜 (Dynamic Host Configuration Protocol, DHCP)

• 네트워크에는 DHCP 서버가 존재합니다.

  • 관리 도메인에는 적어도 하나의 DHCP 서버가 있어야 합니다.
    • DHCP 서버는 사용 가능한 IP 주소 풀을 유지합니다.
    • DHCP 서버는 호스트에게 일정 기간 동안 IP 주소를 임대합니다.
    • 호스트는 주소를 계속 사용하고자 할 경우 주소를 갱신할 수 있습니다.
  • DHCP는 응용 계층 프로토콜입니다.
    • 새로 부팅된 또는 연결된 호스트는 DHCPDISCOVER 메시지를 특수한 IP 주소 (255.255.255.255)로 전송합니다.
    • DHCP 중계 에이전트는 이 메시지를 DHCP 서버에 유니캐스트하고 응답을 기다립니다.

ICMP (Internet Control Message Protocol)

ICMP (Internet Control Message Protocol)

• IP는 오류 보고 메커니즘을 갖고 있지 않습니다.

  • 패킷이 오류로 인해 삭제되었을 때
  • 패킷이 TTL(Time-To-Live)로 인해 삭제되었을 때
  • 패킷의 프래그먼트 중 하나가 손실되었을 때
    • ICMP의 목적은 소스에게 오류를 보고하는 것입니다.
    • ICMP는 네트워크 계층 프로토콜입니다.

ICMP: 오류 보고
• ICMP는 다음과 같은 경우에 소스 IP 주소로 오류를 보고합니다.

  1. Destination Unreachable (목적지 도달 불가능): 패킷이 목적지에 도달할 수 없는 경우, ICMP 오류 메시지가 송신자에게 보고됩니다. 이는 네트워크 문제, 호스트의 비활성화 또는 방화벽에 의해 발생할 수 있습니다.
  2. Time Exceeded (시간 초과): 패킷이 TTL(Time-To-Live) 값보다 오래되어 중간 라우터에서 삭제된 경우, ICMP 시간 초과 메시지가 송신자에게 보고됩니다. 이는 네트워크의 무한 루프 또는 경로 문제를 나타낼 수 있습니다.
  3. Redirect (리디렉트): 중간 라우터가 패킷의 경로를 재지정해야 할 경우, ICMP 리디렉트 메시지가 송신자에게 보고됩니다. 이는 최적의 경로로 패킷을 전송하기 위해 송신자가 라우팅을 조정해야 함을 알려줍니다.
  4. Parameter Problem (매개변수 오류): IP 헤더에 오류가 있거나 잘못된 매개변수가 있는 경우, ICMP 매개변수 오류 메시지가 송신자에게 보고됩니다. 이는 IP 패킷의 잘못된 구성 또는 호스트 또는 네트워크 장치의 구성 오류를 나타낼 수 있습니다.
  5. Source Quench (전송 중단): 수신 호스트가 패킷의 속도를 조절해야 하는 경우, ICMP 소스 퀀치 메시지가 송신자에게 보고됩니다. 이는 네트워크 혼잡을 완화하기 위해 송신자가 패킷 전송을 줄여야 함을 알려줍니다.
  6. Echo Request/Reply (에코 요청/응답): ICMP 에코 요청 메시지는 송신자가 대상 호스트에게 테스트 메시지를 보내고 응답을 받을 수 있도록 합니다. 이는 네트워크 연결의 확인 및 호스트의 동작 상태를 테스트하는 데 사용됩니다.

ICMP는 주로 네트워크 문제의 진단 및 해결을 위해 사용되며, 오류 보고를 통해 통신 문제를 식별하고 해결하는 데 도움이 됩니다.

  • 목적지 도달 불가능 (Destination Unreachable):
    • 목적지로 가는 다음 노드를 찾을 수 없는 경우 발생합니다.
  • 소스 중단 (Source Quench):
    • 라우터 또는 호스트의 큐가 가득 찬 경우 발생합니다.
  • 시간 초과 (Time Exceeded):
    • TTL(Time-To-Live) 값이 0이 되어 패킷이 삭제된 경우 발생합니다.
  • 매개변수 오류 (Parameter Problem):
    • IP 헤더에 문제가 있거나 잘못된 매개변수가 있는 경우 발생합니다.
  • 리디렉션 (Redirection):
    • 네트워크에 여러 개의 게이트웨이 라우터가 있는 경우 발생합니다.
    • 호스트는 종종 최적의 경로를 계산하지 않고 기본 게이트웨이를 할당합니다.
    • 라우터가 더 나은 경로를 발견하면 소스 노드에게 알려 게이트웨이 라우터를 재할당하도록 합니다.
  • 리디렉션 예시:
    • 라우터 R1과 R2가 호스트 A와 동일한 네트워크에 있습니다.
    • 호스트 A의 기본 게이트웨이는 R1에 수동으로 할당되었습니다.
    • A에서 R1로 데이터가 전달될 때, A가 목적지 호스트 B로 패킷을 보내는 것이 더 좋다는 것을 알게 됩니다.
    • R1은 데이터를 R2로 보내고, 동시에 A에게 리디렉션 보고를 전송합니다.
  • ICMP 규칙:
    • ICMP 패킷에 대해 ICMP 패킷은 생성되지 않습니다.
    • 분할된 패킷의 경우, ICMP 패킷은 첫 번째 분할에 대해서만 생성됩니다.
    • 멀티캐스트 패킷에 대해서는 ICMP 패킷이 생성되지 않습니다.
    • 특정 목적지 주소(예: 127.0.0.1 또는 0.0.0.0)를 가진 패킷에 대해서는 ICMP 패킷이 생성되지 않습니다.

ICMP:query

ICMP는 정보 조회를 위해 사용될 수 있습니다.
• 에코 요청 및 응답 - 핑(Ping)으로도 알려져 있습니다.

  • 목적지의 가용성을 확인하기 위해 사용됩니다.
    • 타임 스탬프 요청 및 응답
  • 목적지까지 왕복 시간을 확인하기 위해 사용됩니다.

이러한 ICMP 메시지들은 목적지 호스트나 네트워크의 상태를 조회하고 정보를 얻기 위해 사용됩니다. 핑은 주로 목적지 호스트가 접근 가능한지를 확인하거나 네트워크 연결 상태를 테스트하는 데 사용됩니다. 타임 스탬프 요청 및 응답은 왕복 시간을 측정하여 네트워크 지연을 확인하는 데 사용됩니다.

  • 주소 마스크 요청과 응답
  • 호스트는 자신의 IP 주소를 알지만 마스크를 모를 때 사용됩니다.
  • 호스트는 주소 마스크 요청을 브로드캐스트합니다.
  • 어떤 노드든 주소 마스크 응답을 보냅니다.
  • 라우터 솔리시테이션 및 어드버타이즈먼트
  • 호스트는 네트워크 내에 어떤 라우터가 있는지 확인하기 위해 라우터 솔리시테이션을 보냅니다.
  • 라우터는 호스트에게 라우터 어드버타이즈먼트를 보내어 라우터의 존재를 알립니다.

이러한 프로토콜은 호스트와 네트워크 사이의 정보를 요청하고 전달하는 데 사용되며, IP 주소와 라우터 구성에 관련된 문제를 해결하는 데 도움이 됩니다.

IP 수준 디버깅 도구
• ICMP를 사용하여 디버깅 목적으로 사용됩니다.
• ping
• traceroute

ping은 목적지 호스트의 가용성을 확인하기 위해 사용되며, traceroute는 IP 패킷이 목적지 호스트까지 어떤 경로를 통과하는지 확인하기 위해 사용됩니다. 이러한 도구는 IP 수준에서 네트워크 연결 및 경로 문제를 진단하고 해결하는 데 도움이 됩니다.

ping

• 호스트의 가용성을 확인하기 위해 ICMP 메시지를 대상 호스트로 보내는 응용 프로그램입니다.
– ICMP 에코 요청/응답을 사용합니다.

traceroute (tracert)

• 소스 호스트와 대상 호스트 사이의 라우터를 추적하기 위한 응용 프로그램입니다.

traceroute (tracert) 동작

• A는 TTL=1로 설정된 UDP 패킷을 B에게 보냅니다.
• 패킷은 R1에서 버려지고, ICMP 메시지가 A에게 보내집니다.
– time exceeded (시간 초과)
• 이 ICMP를 통해 A는 R1의 IP 주소와 A에서 R1까지의 왕복 시간을 알 수 있습니다.
• 평균 왕복 시간을 얻기 위해 여러 개의 UDP 패킷을 보냅니다.
• 이 작업이 완료되면 TTL을 1씩 증가시킵니다.
• 대상 호스트에서는 ICMP (시간 초과)를 A에게 보내지 않습니다.
• 그러나 대상 호스트에서는 traceroute 패킷을 수신하는 UDP 포트가 없습니다.
• 따라서 ICMP (도달 불가능)이 생성되어 A에게 보내집니다.

Network Address Translation

NAT: 네트워크 주소 변환(Network Address Translation)

라우터는 네트워크 주소 변환을 사용하여 로컬 네트워크를 생성할 수 있습니다.

NAT는 프라이빗 IP 주소를 퍼블릭 IP 주소와 연결하여 인터넷과의 통신을 가능하게 하는 메커니즘입니다. 이는 로컬 네트워크의 여러 호스트가 하나의 공인 IP 주소를 공유하도록 허용합니다. NAT는 소스 IP 주소와 포트를 변환하여 로컬 네트워크 내부의 호스트가 인터넷에 연결될 때 패킷을 적절하게 전달합니다.

NAT의 주요 기능은 다음과 같습니다:

  1. IP 주소 변환: 로컬 네트워크의 개별 호스트의 프라이빗 IP 주소를 퍼블릭 IP 주소로 변환하여 인터넷과 통신할 수 있게 합니다.
  2. 포트 변환: 로컬 네트워크의 여러 호스트가 하나의 공인 IP 주소를 공유할 때 포트 번호를 이용하여 패킷을 구분합니다.
  3. 주소 할당: 로컬 네트워크의 호스트에게 프라이빗 IP 주소를 동적 또는 정적으로 할당합니다.
  4. 방화벽 기능: 네트워크 보안을 위해 패킷 필터링과 주소 변환을 조합하여 내부 호스트를 외부에서 보호합니다.

NAT는 IP 주소 부족 문제를 해결하고 인터넷 연결을 공유하는데 널리 사용되는 기술입니다.

NAT: 네트워크 주소 변환(Network Address Translation)
라우터는 네트워크 주소 변환(NAT)을 사용하여 로컬 네트워크를 생성할 수 있습니다.

NAT는 로컬 네트워크가 외부 세계에서는 하나의 IP 주소만 사용하는 것처럼 동작하도록 하는 메커니즘입니다. 이를 통해 ISP로부터 IP 주소 범위를 요구하지 않고도 로컬 네트워크의 모든 장치에 대해 하나의 공인 IP 주소를 공유할 수 있습니다. NAT는 로컬 네트워크 내부의 호스트의 소스 IP 주소와 포트를 변환하여 인터넷과의 통신을 가능하게 합니다.

NAT의 동작과 이점은 다음과 같습니다:

  • IP 주소 변환: 로컬 네트워크의 개별 호스트의 프라이빗 IP 주소를 공인 IP 주소로 변환하여 인터넷과 통신할 수 있도록 합니다.
  • 포트 변환: 로컬 네트워크의 여러 호스트가 하나의 공인 IP 주소를 공유할 때 포트 번호를 이용하여 패킷을 구분합니다.
  • 주소 변환 테이블: 로컬 네트워크의 호스트의 프라이빗 IP 주소와 포트 번호를 기록하고 변환된 주소와 포트 번호를 관리하는 테이블을 유지합니다.
  • 내부 호스트 보호: 외부에서 내부 호스트를 직접적으로 접근할 수 없으므로 보안상의 이점을 제공합니다.

NAT는 IP 주소 부족 문제를 해결하고 인터넷 연결을 공유하는 데 널리 사용되는 기술입니다. 또한 NAT는 로컬 네트워크의 장치들의 IP 주소 변경을 외부 세계에 알릴 필요 없이 수행하거나, ISP를 변경할 때에도 로컬 네트워크의 IP 주소를 변경하지 않고 연결을 유지할 수 있도록 합니다.

0개의 댓글