SNMP에 대한 궁금증...
글쓴이: taiji76 / 작성시간: 월, 2004/08/23 - 11:13오전
SNMP자체에 대한 질문인지 아닌지는 확실하지가 않은데요.
프로그램을 작성하다가 질문이 있어서 글을 씁니다.
WinSNMP를 이용해서 윈도우에서 자료를 전송하고, net-snmp의 trap
daemon을 수정해서 자료를 받아서 DB에 저장하고 있습니다.
그런데 WinSNMP API를 이용해서 trap을 보내는데 자료가 전부 도착하지
않아서 tcpdump로 packet을 잡아봤는데 크기가 1514까지만 전송을
하고 나머지 부분은 전송이 되지 않더군요.
제 짧은 생각으로는 WinSNMP API쪽에서 data를 먹어버리는 것이 아닐까
하는 생각을 가지고 있는데요. SNMP trap의 특성인지, WinSNMP의 특성
인지 궁금하네요.
보내려고 하는 자료는 하나의 variable binding list에 여러개의 값들을 계속
추가한 후에 값을 API를 통해 전달하는 방법을 사용했습니다. 즉 실제로 send
하는 API는 한번만 호출했습니다.
혹시 이런 경험해 보신분 있으시면 답변 부탁드립니다. ^^
Forums:
SNMP를 옛날에 해봐서;도움이 되진 않을것 같지만..보낼때
SNMP를 옛날에 해봐서;
도움이 되진 않을것 같지만..
보낼때 패킷 확인 해보셨는지요
기억으론 UDP로 보내는걸로 기억하는데.(틀리면 대박=0=)
1514 크기 보다 큰 패킷은 잘라서 다음 패킷으로 오지 않나요?
ps. 설마 API가 데이타를 잡아 먹겠슴까 =0=; 아무리 굶겨도 글치;
https://nicesj.com
https://blog.nicesj.com
[quote="sjpark"]SNMP를 옛날에 해봐서;도움이 되진 않
위에 답변을 다시 분의 말씀데로 snmp는 UDP로 데이터를 보냅니다. 크기가 큰 패킷들은 뒤가 잘리게 됩니다. ^^;
언제쯤 정규표현식을 정복할 수 있을까? ㅡㅡ;
추가...
크기가 큰경우에는 여러개의 packet으로 나눠서 전부다 trap daemon쪽으로
도착해야하는 것이 정상 아닌가요?
tcpdump로 봤을때 1514길이의 패킷 하나만 날아오고 나머지 부분이 도착
하지 않습니다. 그래서 API에서 먹은게 아닌가 하는 생각을... ^^;
그래서 지금은 1514보다 작게 구성해서 여러개로 나누어서 보내도록 했는데
왜 그런지 궁금하네요.
제가 알기로는 ㅎㅎㅎ
뭔가 구성이 잘못된 거겠죠....
한 1년이 다 되어가는 글에 답변이라니...
정확한 정보는 모르지만 네트웍의 라우터, 개인 PC등 OS또는 네트웍 카드에서 하나의 패킷의 크기를 결정 짓습니다. 보통 1500바이트 내외로 정하지요...
그럼 생각해보시면 약1500바이트가 넘는 데이터를 UDP로 보낸다고 했을때... UDP 패킷을 1500 바이트씩 잘라서 보낸다고 칩시다...
그 두패킷이 라우터를 열심히 거쳐서 오다보니 나중에 보낸넘이 더 늦게 도착했다면....
UDP 패킷에는 Window Num이니 하는 순서가 없으니 어느 놈이 앞에 패킷인지 알 수가 없습니다...
그러니 패킷 데이터 안에 따로 순서를 구분하는 구분자를 두지 않는다면 나눠서 보내는건 불가능하겠죠....
그리고 순서를 구분한다고 해도 중간중간 손실 되는 패킷등에 대한 구현이 따로 필요할 듯 합니다.
이미 해결 하셨겠지만.
1년이나 지났으니 이미 해결하셨겠지만, 혹 정보가 될까 하여 적어보면,
실제 패킷이 조각조각(fragmentation)나서 오는 경우의 처리는 IP 프로토콜이 담당합니다.
IP 프로토콜 헤더에, identification number, more fragment bit, fragment offset 필드가 그 정보를 제공합니다.
1. 조각난 패킷들은 모두 같은 identification number를 갖고,
2. 조각난 패킷들 중 마지막 패킷 하나를 제외한 모든 패킷에는 more fragement bit 를 set 하며
3. 각 패킷은 각각 자신의 offset을 fragement offset 필드에 갖습니다.
(이 세가지 정보로 순서가 어긋나게 들어와도 맞출 수 있습니다. 다른레이어의 프로토콜과는 상관이 없습니다.)
tcpdump로 보셨을때 첫번째 패킷만 확인할 수 있었다고 하는 부분은, 아마도 udp 헤더가 붙은 패킷만을 보셔서 그런게 아닌가 싶습니다.
조각난 패킷의 두번째 이후 패킷들은 IP 헤더 뒤에, 상위 레이어의 프로토콜헤더 없이, 바로 실리기 때문에, fragmentation을 염두해두고 관찰하지 않으면 (UDP 헤더가 있는 패킷만을 관찰하셨다면) 발견하기 어려울 수 있습니다.
댓글 달기