How Fast Does Claude, Acting as a User Space IP Stack, Respond to Pings?

개요

Claude Code를 사용자 공간 IP 스택으로 활용하여 ping 요청에 응답하는 실험을 진행했으며, 이 과정에서 Claude는 IP 패킷을 직접 파싱하고 ICMP Echo Reply를 생성하는 복잡한 절차를 수행했습니다.

주요 내용

* 사용자 공간 IP 스택 역할 부여: Claude Code에게 ping-respond.md라는 명령을 생성하도록 지시하여, 외부 라이브러리나 스크립트 없이 자체 추론만으로 IP 패킷을 처리하고 ping 응답을 생성하도록 했습니다.
* 패킷 처리 단계:
* tun_helper.py 스크립트를 통해 TUN 디바이스로부터 16진수 형태의 IP 패킷을 바이트 단위로 읽어옵니다.
* IP 헤더를 파싱하여 버전, IHL, 총 길이, TTL, 프로토콜, 소스/목적지 IP 등의 정보를 추출합니다. 프로토콜이 ICMP(0x01)가 아니면 무시합니다.
* ICMP 헤더를 파싱하여 타입(Echo Request, 0x08), 코드, 식별자, 시퀀스 번호 등을 추출합니다. 타입이 Echo Request가 아니면 무시합니다.
* Echo Reply 패킷 생성:
* IP 헤더 수정: 원본 IP 헤더의 TTL을 64로 설정하고, 소스 IP와 목적지 IP를 서로 교환합니다. 헤더 체크섬은 임시로 0000으로 설정한 후, 재계산하여 적용합니다.
* ICMP 페이로드 수정: ICMP 타입만 Echo Request(0x08)에서 Echo Reply(0x00)로 변경하고, 나머지 필드(코드, 식별자, 시퀀스 번호, 페이로드)는 그대로 유지합니다. ICMP 체크섬도 재계산하여 적용합니다.
* 체크섬 계산: IP 헤더 및 ICMP 메시지의 체크섬은 16비트 워드 단위로 합산하고, 캐리 폴딩 및 1의 보수 연산을 통해 계산합니다.
* 결과 확인: 생성된 Echo Reply 패킷을 TUN 디바이스로 다시 쓰고, 시스템에서 해당 IP 주소로 ping을 보내 응답이 정상적으로 수신되는지 확인합니다. Haiku 4.5 모델을 사용한 실험에서는 약 45초의 응답 시간을 기록했습니다.

시사점

이 실험은 LLM이 단순히 텍스트를 생성하는 것을 넘어, 저수준 네트워크 프로토콜 처리와 같은 복잡한 계산 및 논리적 작업을 수행할 수 있는 잠재력을 보여주며, "마크다운은 코드이고 LLM은 실행 엔진"이라는 아이디어를 확장하는 흥미로운 사례를 제시합니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions