null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
⌂
임베디드 개발자를 위한 네트워크 기초 — IP 주소부터 PHY 레지스터까지
Structure
ip-addressing
•
공인 IP, 사설 IP, 그리고 NAT가 존재하는 이유
•
고정 IP vs 유동 IP — DHCP의 동작 원리
•
네트워크 클래스 — IP 주소를 나누는 논리
•
서브넷 마스크와 게이트웨이 — 네트워크를 쪼개는 방법
•
CIDR 표기법 — /24가 의미하는 것
•
DNS — 이름을 IP로, IP를 이름으로
mac-transmission
•
MAC 주소와 OUI — 하드웨어 식별의 기초
•
유니캐스트, 멀티캐스트, 브로드캐스트 — 전송 방식의 선택
•
멀티캐스트 MAC 주소 — IP에서 MAC으로의 변환 원리
•
VLAN — 하나의 스위치에서 여러 네트워크 분리하기
port-and-layer
•
포트(Port) — 하나의 IP에서 수천 개의 통신 채널을 분리하는 법
•
PDU — 프레임, 패킷, 세그먼트의 차이
•
OSI 7계층 vs TCP/IP 모델 — 두 모델이 공존하는 이유
physical-layer
•
NIC와 PHY — 임베디드 이더넷 하드웨어 구조
•
MDC/MDIO — PHY 레지스터를 제어하는 2-Wire 인터페이스
•
NLP, FLP, Auto-negotiation — PHY가 링크를 협상하는 방법
•
Extended Register — Clause 22의 32개 제한을 넘는 법
•
"Docker 기초 — 컨테이너의 모든 것"
•
Store-and-Forward vs Cut-through
wireshark-debug
•
Wireshark에서 IP Checksum이 0인 이유
•
"Docker Compose — 멀티 컨테이너 오케스트레이션"
•
FCS/CRC와 Wireshark의 4바이트 미스터리
•
"TypeScript 기초 — JavaScript에 타입을 더하다"
•
임베디드 이더넷 디버깅 — Wireshark 실전 사용법
Flow Structure
"TypeScript 기초 — JavaScript에 타입을 더하다"
24 / 24
Next
☆ Star
↗ Full
임베디드 이더넷 디버깅 — Wireshark 실전 사용법
#network
#wireshark
#debug
#embedded
#ethernet
@devpc
|
2026-05-04 01:59:40
|
GET /api/v1/flows/23/nodes/421?fv=2&nv=1
Context:
Flow v2
→
Node v1
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초 안에 좁힐 수 있다.
"TypeScript 기초 — JavaScript에 타입을 더하다"
Next
// COMMENTS
Newest First
ON THIS PAGE
No content selected.