[질문] UDP 패킷의 경로?
글쓴이: hados / 작성시간: 토, 2005/11/05 - 6:31오후
현재 난감한 상황에 봉착하여 있습니다. -_-;;;
임베디드 기기에서 UDP 데이터를 받아서 저장해야 하는데요
그게 안됩니다 -_-;;;
일단 다른 이더넷 네트워크 인터페이스(eth0)를 통해서는
UDP 로 데이터를 받아서 저장하는게 잘 되는데요
제가 필요로 하는 네트워크 인터페이스(X라고 하죠)를 통해서는
파일 저장이 안됩니다.
X를 통해서 데이터가 아예 안 오는건 아니구요
tcpdump -i X... 해 본 결과 tcpdump 까지는 잘 찍힙니다.
그런데 어플리케이션에서 recvfrom() 함수를 호출하면
데이터를 받지 못하고 있습니다.
추가) nc 를 돌려본 결과 nc 또한 데이터를 받지 못하는군요...
tcpdump 와 nc 사이에 무언가가 있어 데이터를 discard
시키는 게 아닐까 합니다만...-_-;;;;;
물론 이 어플리케이션은 다른 곳에서 돌리면 데이터를
아주 잘 받고 있습니다.
지금 짐작하는 것은
1. 커널 쪽에서 IP layer까지 들어온 데이터를 UDP 쪽으로 보내지 않고 discard 시킬 것이다.
2. UDP 쪽에 buffer 문제일 것이다
->하지만 eth0를 통해서는 UDP로 데이터를 잘 받았습니다.
정도인데요, 어찌 손 쓸 방법이 없네요
이런 경우 어떤 걸 의심해 봐야 할까요?
고수님들의 조언 기다리겠습니다 :)
Forums:
1. Make sure that each UDP packet incomi
1. Make sure that each UDP packet incoming to X has the mac address of X in its destionation address field of the Ethernet frame.
2. Likewise, check a couple of fields which can make the frame being dropped by kernel.
- port number
- checksum (usually not used by UDP)
- TTL ...
Note that tcpdump runs in promiscuous mode.
I think this is the first step you can do to solve the problem.
조언 감사합니다.그런데 1번에서 MAC address가 영향을 미
조언 감사합니다.
그런데 1번에서 MAC address가 영향을 미치나요?
그리고 저도 2번이 제일 의심스럽습니다만
eth0 를 이용해서 다른 서버와 같은 port 번호로 통신도 잘 했고,
tcpdump를 보니 데이터를 보내주는 쪽(S)에서 UDP checksum을
계산하지 않고 보내줘서 [no cksum] 이 뜨더라구요
하지만 다른 서버(리눅스 2.6.9)에서 S의 데이터를 받았을 때는
[no cksum]이어도 데이터를 잘 받았으니 헤깔리네요...
TTL 도 별 문제 없어 보이고...
음 괴롭네요... :(
네.TCPDUMP에서는 interface의 mac address와
네.
TCPDUMP에서는 interface의 mac address와 상관없이
모든 프레임을 보여주지만(promiscuous mode에서 말이죠),
실제로 network stack에 넘겨지는 건 dst addr가 interface의
mac addr와 일치하는 프레임들뿐입니다..
아니면 보내는 쪽에서 arp cache로 확인해봐도 되겠군요.
interface의 IP 주소가 아니라 mac address란 말인가요?
interface의 IP 주소가 아니라 mac address란 말인가요?
음...찾아봐야 겠네요.
답변 감사합니다 :)
실제 같은 LAN 안에서 패킷을 전송하는 경우 IP가 아닌 MAC을 이용
실제 같은 LAN 안에서 패킷을 전송하는 경우 IP가 아닌 MAC을 이용하여 해당 호스트에 패킷을 전송합니다. IP는 현재 내 네트웍 외부에 있는 호스트를 찾아갈때 쓰이죠...
/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/
댓글 달기