2011-09-10 21 views
3

我的疑問是很奇怪..如何確認是否是由應用程序接收到數據包

在我的Linux服務器DHCP服務器的應用程序正在等待對DHCP客戶端消息的端口號547。

即使我看到來自wireshark上的dhcp客戶端(運行在我的Linux服務器上)的消息.. dhcp服務器沒有迴應。

有無論如何確認數據包實際上是由DHCP服務器處理還是通過Linux IP堆棧中斷?

DHCP服務器是專有代碼,所以我不能修改它來添加更多日誌或檢查recv功能。

只是將其視爲基於套接字而不是DHCP特定的通用問題。我最感興趣的是,我們如何從統計數據或其他信息中知道數據包已在適當的套接字緩衝區中被接收到。

+0

你嘗試在服務器上tcpdump的()?可能是一個路由問題 - 它應該被移到SuperUser。 – Lars

+0

其實我正在服務器本身運行wireshark – codingfreak

+0

我對在Linux上運行專有DHCP服務器背後的故事有點更多的細節感興趣。 –

回答

0

您可以通過使用調試符號構建DHCP服務器來實現這一點 - 您的發行版可能已經有了一個* -dbg軟件包。通過將一個像gdb這樣的調試器附加到進程中,您可以攔截消息並對其進行調試以查看問題出在哪裏。

但是,我會首先嚐試使用通常的可能性,即日誌消息。您是否嘗試過在您的DHCP守護進程中激活調試日誌記錄?

+0

我認爲編碼錯誤是黑客入侵嵌入式設備有限的手段來修改環境。 –

+0

我想使用已經可用的DEBUG消息,這是應用程序的一部分。根據應用程序的幫助,如果您在啓動時啓用某些選項,您可以看到應用程序處理的每條消息。但是我沒有看到LOG,所以這意味着DHCP服務器沒有收到任何權利? – codingfreak

+0

不需要,這取決於你的DHCP服務器是多麼健談。如果Steve-O是正確的,並且您正在使用專有服務器,那麼您可能會失敗。我假設你嘗試了重新開始一切的平常舞蹈? – Lars

0

如果你在dhcp服務器上運行strace,並且它沒有從select中得到任何迴應,那麼它很可能不會收到幀。 幾件事情要檢查

  • 你確定你的客戶端發送的IPv6 DHCP請求,而不是 的IPv4(67端口)?
  • 確保服務器上的端口547上沒有其他進程正在偵聽。

重新檢查strace命令行選項並啓用調試和詳細程度。還有一兩件事,以確保當您使用strace的是遵循叉... -FF

希望幫助

+0

在我的wireshark我清楚地看到一個DHCPv6請求消息,這是指定爲端口..我會嘗試你已分享的叉選項.. thanx :) – codingfreak

相關問題