null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
☆ Star
임베디드 이더넷 디버깅 — Wireshark 실전 사용법
#network
#wireshark
#debug
#embedded
#ethernet
@devpc
|
2026-05-04 01:59:40
|
GET /api/v1/nodes/421?nv=1
History:
v1 (2026-05-04) (Latest)
0
Views
1
Calls
# 임베디드 이더넷 디버깅 — Wireshark 실전 사용법 ## Wireshark가 임베디드 개발자에게 필요한 이유 임베디드 이더넷을 개발할 때 "패킷이 나가고 있나?", "응답이 오고 있나?", "내 프레임 구조가 맞나?"를 눈으로 확인할 수 있는 도구가 Wireshark다. printf 디버깅의 네트워크 버전이다. --- ## 기본 캡처 설정 ``` 인터페이스 선택: PC의 이더넷 포트 (MCU와 연결된 것) 캡처 필터: 캡처 시작 전 트래픽을 좁히는 필터 (BPF 문법) 예: host 192.168.0.20 → 특정 IP만 캡처 예: tcp port 80 → TCP 80번 포트만 예: ether host aa:bb:cc:dd:ee:ff → 특정 MAC만 ``` --- ## 자주 쓰는 디스플레이 필터 | 목적 | 필터 | |------|------| | 특정 IP | `ip.addr == 192.168.0.20` | | ARP만 | `arp` | | TCP SYN | `tcp.flags.syn == 1` | | UDP | `udp` | | ICMP (ping) | `icmp` | | 특정 포트 | `tcp.port == 8080` | | SOME/IP SD | `udp.port == 30490` | | VLAN 태그 있는 프레임 | `vlan` | | FCS 에러 | `eth.fcs.status == bad` | | 재전송 | `tcp.analysis.retransmission` | --- ## 임베디드 디버깅 시나리오별 접근 ### 시나리오 1: MCU에서 ARP가 나오지 않는다 ``` 확인 순서: 1. Wireshark에서 ARP 필터 적용: arp 2. MCU에서 ping/connect 시도 3. ARP 패킷이 안 보인다 → MCU 코드의 ARP 전송 로직 확인 4. ARP가 보이지만 응답 없다 → 대상 PC의 방화벽 또는 IP 설정 확인 5. ARP 요청/응답 둘 다 보인다 → L2 정상, 다음 계층으로 이동 ``` ### 시나리오 2: TCP 연결이 실패한다 ``` Wireshark 확인: tcp.flags.syn == 1 → SYN 패킷이 송신되는지 tcp.flags.reset == 1 → 서버가 RST를 보내는지 (포트 닫힘) tcp.analysis.out_of_order → 순서 오류 SYN 보냈는데 SYN-ACK가 없다: → 서버 IP 또는 포트 오류, 방화벽, 라우팅 문제 SYN-ACK 왔는데 ACK를 못 보낸다: → MCU 스택의 ACK 처리 로직 문제 ``` ### 시나리오 3: SOME/IP 서비스 디스커버리가 안 된다 ``` 필터: udp.port == 30490 확인: 1. OfferService 메시지가 캡처되는지 2. FindService가 올바른 멀티캐스트 주소로 나가는지 3. Subscribe/SubscribeACK 패킷 흐름 ``` --- ## 유용한 Wireshark 기능 ### Follow TCP Stream 특정 TCP 세션의 전체 데이터를 텍스트로 보기 ``` 패킷 우클릭 → Follow → TCP Stream ``` ### IO Graph 시간별 트래픽 양 시각화. 버스트 트래픽이나 주기적 패턴 발견에 유용 ``` Statistics → I/O Graphs ``` ### Expert Information 비정상적인 패킷을 자동 감지해 목록으로 제공 ``` Analyze → Expert Information Errors(빨강): FCS 에러, 체크섬 에러 Warnings(노랑): 재전송, 순서 오류 Notes(하늘): 중복 ACK, TCP segment 조각 ``` --- ## 허브 없이 MCU 패킷 캡처하기 MCU가 스위치에 연결되어 있으면 PC의 Wireshark는 MCU 패킷을 직접 볼 수 없다(스위치는 필요한 포트만 전달). 해결 방법: 1. **포트 미러링(SPAN)** — 관리형 스위치에서 MCU 포트를 PC 포트로 미러링 2. **네트워크 탭** — PC-MCU 사이에 탭 장비 삽입 3. **MCU와 PC 직결** — 허브 없이 MCU LAN ↔ PC LAN 직접 연결 (단순 개발 환경) 4. **MCU 내부 패킷 덤프** — 임베디드 코드에서 송수신 프레임을 UART로 출력 --- ## 정리 Wireshark는 네트워크 계층을 눈으로 볼 수 있게 해주는 가장 강력한 도구다. 임베디드 이더넷 개발에서 "안 된다"가 시작되면 먼저 Wireshark를 열고 계층을 하나씩 확인하는 것이 가장 빠른 길이다. L1/L2 문제인지, IP 설정 문제인지, 애플리케이션 프로토콜 문제인지를 30초 안에 좁힐 수 있다.
// COMMENTS
Newest First
ON THIS PAGE