'ping'명령은 실제로 어떻게 작동합니까?


24

ping 명령은 실제로 어떻게 작동합니까? 구체적으로 ARP (Address Resolution Protocol)는 어디에서 등장합니까?

인터뷰에서이 질문을 받았는데 ARP를 사용할 수있는 시나리오를 만들 수 없었습니다.


ICMP를 살펴보십시오.

3
ARP는 특정 IP 주소의 MAC 주소를 가져 오는 데 사용됩니다. 이더넷으로 패킷을 보내야 할 경우 대상의 MAC 주소가 필요합니다.

답변:


16

정말로 이해하고 싶다면 여기에 훌륭한 (매우 잘 쓰여진) 백서가 있습니다.

http://images.globalknowledge.com/wwwimages/whitepaperpdf/WP_Mays_Ping.pdf

여기에 요약이 있습니다->

Ping (Program on the application layer) ------->
Opens a 'raw' socket to IP Layer ------>
IP layer (Layer 2 on OSI) packages ICMP packet and sends it

사이에 TCP 계층이 없기 때문에 들어오는 모든 ICMP 패킷Ping (program)모니터링 하고 대상에서 하나만 필터링해야합니다.

희망이 도움이됩니다.


9

핑에 이더넷 또는 WiFi 네트워크를 통해 패킷이 전송되는 것으로 가정하면 ARP는 아웃 바운드 패킷을 수신하는 장치의 이더넷 하드웨어 주소를 찾는 데 사용됩니다. 일반적으로 이는 ping을 시작한 시스템이있는 LAN의 라우터입니다.

일반적인 프로세스는 다음과 같습니다.

  1. 대상을 ping하는 명령을 입력합니다.

  2. DNS는 IP 주소를 결정하는 데 사용됩니다 (필요한 경우).

  3. 해당 목적지로 향하는 다음 홉을 찾기 위해 라우팅 테이블을 참조하십시오.

  4. ARP는 다음 홉의 하드웨어 주소를 찾는 데 사용됩니다.

  5. IP 패킷은 이더넷 또는 WiFi 프레임으로 캡슐화 된 다음 홉으로 전송됩니다.


3
실제로 질문에 대답하는 유일한 대답입니다!
jmiserez


1

Ping과 ARP는 네트워크 프로토콜 스택에서 서로 다른 계층에있는 다른 것입니다.

Ping은 네트워크 계층 (또는 인터넷 계층- @ServerMonkey에서 지적한 것처럼 ICMP 프로토콜을 살펴 보십시오)에 있습니다.

Arp 프로토콜은 링크 수준 (낮은 수준)입니다. Arp 프로토콜은 네트워크 하드웨어간에 직접 연결되는 물리적 연결을 허용하도록 설계되었습니다.

TCP / IP 네트워크 스택에서 모든 계층은 아래 계층을 사용하여 데이터를 전달하여 하위 수준 프로토콜 내에 캡슐화합니다. 각 계층은 다른 계층과 독립적이며 다른 수준의 특정 세부 사항 및 구현을 알지 못할 수도 있습니다 (항상 그런 것은 아닙니다. 교차 계층 기능 참조 ).


큰가? 그렇습니다하지만 핑 구현은 L2에서 일부 코드를 필요로 ARP는 레이어 2에서 놀이로 오는가 (링크 계층을.).

@ liv2hak. 아니. 핑 구현은 아래 링크 레이어에 있습니다.

@liv arp는 종종 계층 2.5라고합니다. ICMP는 종종 계층 3.5라고합니다. 계층은 코드보다 필드에 대한 것입니다. 그리고 핑 구현에 레이어 2의 코드가 필요하다는 것을 말하고 싶다면 정의에 따라 모든 구현과 함께 그 아래에 레이어가없는 레이어를 가질 수 없습니다.
barlop

1

ARP는 MAC 주소를 제공하지만 때로는 DMAC 주소가없는 경우 브로드 캐스트 주소가 사용됩니다.

브로드 캐스트 DMAC를 사용하는이 프레임을 ARP 브로드 캐스트 프레임이라고하며 DMAC 주소를 얻습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.