본문 바로가기
Server

[네린이 공부일기] ICMP (Internet Control Message Protocol), Ethernet Frame, ARP Packet

by ojava 2022. 4. 18.
반응형

앞에서 배운 IP (Internet Protocol)은 송신시스템과 수신시스템 사이의 패킷을 최적의 경로를 통해 전달하는 것이 주목적이나, 신뢰성이 없고 비 연결형 프로토콜이기 때문에 에러 발생 원인이나 진단 기능, 상황 정보를 지원하지 않는 단점이 있었다.

이를 보완하기 위해 나온 것이 ICMP 방식이다.

 

ICMP (Internet Control Message Protocol)

IP의 비 신뢰적인 특성을 보완하기 위한 프로토콜
송신시스템에 IP 전달과 더불어 다양한 메시지를 전달하기 위한 Protocol

메시지 내용은 에러 메시지와 정보 교환을 위한 메시지로 구성됨

  • Query Message
    : 다른 호스트로부터 특정 정보를 획득함
    : 네트워크 문제 진단
    : 대표적으로 Echo Request, Echo Reply가 이에 해당한다.
  • Error Reporting Message
    : IP 패킷 처리 도중 발생한 문제에 대해 보고하는 내용
    : 네트워크 문제 진단 시 사용할 수 있다.

 

ICMP는 IP 계층의 일부이며, ICMP 메시지는 독립적으로 운영될 수 없고 IP Data의 일부로 구성된다.

ICMP Message는 4 byte로 구성되며 Type, Code, Checksum으로 구성된다.

  • Type (8bit)
    : ICMP의 업무, 어떤 용도로 사용되는 ICMP인지를 나타냄
  • Code (8bit)
    : ICMP Type의 세부 내용을 표시하는 필드
    : Type과 조합을 이뤄 ICMP 메시지의 목적과 용도를 나타냄
  • Checksum (16bit)
    : ICMP 메시지의 이상 유무를 판단

 

ICMP를 사용한 대표적인 프로그램이 바로, 통신 테스트를 위해 사용하는 ping 명령어다.
Echo Request와 Echo Reply를 이용한 방식인데 예시를 통해 알아보자.

포스팅을 쓰고 있는 컴퓨터에서 구글에 대해 ping을 날려봤다.
네이버는 막아놨는데 구글은 호출이 되네 신기하군 여튼 ping을 통해 호출이 되는지를 날리는 게 Echo Request라면 구글을 통해 응답을 받은 내역은 Echo Reply에 해당이 된다.

Type Code Description Query Error
0
(Echo Reply)
0 Echo Reply (ping reply) *  
8
(Echo Request)
0 Echo Request (ping 요청) *  

 

그럼 호출이 안되는 예시를 보자.

내가 원하는 예시는 Echo Request를 던지면 Echo Reply로 호출이 불가하다거나 하는 예시를 원했는데, 일단 ojava.tistory.com 에 대해 ping을 날리면 ping 명령어를 통한 통신을 막아놨기 때문에 요청 자체가 전달되지 않는다.

통신 결과 오류가 발생하는 경우에 대해서 ICMP Error Report Message에 대한 내용과 코드 필드에 들어갈 수 있는 내용이 잘 정리된 itwiki 내역을 첨부하니 이 내용을 참고하시길 바랍니다.

ICMP - IT위키 (itwiki.kr)

 

IT위키

IT에 관한 모든 지식. 함께 만들어가는 깨끗한 위키

itwiki.kr

 

Ethernet Frame 구조

Ethernet Frame은 2계층 PDU로 26 byte로 구성된다.

Preamble
SFD Destination
address 
Source
address
Length PDU Data and padding CRC
  1. Preamble (7 bytes)
    : 프레임 수신 준비 
  2. SFD (1 byte)
    : 10101011 값을 가짐
    : 실제 프레임 시작을 알리는 부분
  3. Destination address (6 bytes)
    : 수신지 하드웨어 주소
  4. Source address (6 bytes)
    : 송신지 하드웨어 주소
  5. Length PDU (2 bytes)
    : 1518보다 작으면 데이터의 길이
    : 1536보다 크면 프로토콜의 유형을 나타냄
  6. Data and padding (46 ~ 1500 byte)
  7. CRC (4 bytes)
    : Preamble, SFD를 제외한 유효 필드의 오류 검사를 위한 필드

 

ARP (Address Resolution Protocol)

IP 주소에 대응되는 MAC 주소를 조회/변환해주는 서비스
앞서 정리했던 IP를 기반으로 MAC 주소를 찾아 데이터를 전송하는 과정에서 ARP에 대해 이야기한 적이 있다.

ARP 패킷 종류는 두 가지로 구성된다.

1) ARP Request 패킷
- 송신지가 수신지의 MAC 주소를 조회하기 위해 보내는 질의 패킷
- 브로드캐스트 (1:네트워크 내 불특정 다수) 방식으로 운영

2) ARP Reply 패킷
- ARP Request에 대한 응답 패킷
- 유니캐스트 (1:1) 방식으로 운영

 

ARP 패킷 구조

앞에서 정리한 Ethernet Frame의 Data 영역에 속하는 내용으로 상세 구성은 아래와 같다.

Hardware Type (네트워크 유형) Protocol Type (상위 프로토콜)
Hardware length
(물리 주소 길이)
Protocol Length
(논리 주소 길이)
Operation (패킷 유형)
- ARP Request : 1
- ARP Reply : 2
Sender hardware address  (송신자 물리 주소)
- Ethernet인 경우, 6 bytes
- MAC 주소
Sender protocol address (송신자 논리 주소)
- IP 프로토콜의 경우, 4 bytes
Target hardware address  (수신지 물리 주소)
- Ethernet인 경우, 6 bytes
- ARP Request는 수신지의 물리주소를 모르므로 0으로 설정한다.
Target protocol address (수신지 논리 주소)
- IP 프로토콜의 경우, 4 bytes

 

 

ARP Request, Reply 별로 각 필드에 어떤 값이 들어가는 지를 보면 조금 더 이해가 편하지만 정리하기에 입력할 값은 너무 많고 열정은 사그라들었으므로 여기까지만 정리하는 걸로,,,

반응형