我正在使用必須能夠使用UDP與傳統計算機進行通信的嵌入式框。當該框發送大型UDP消息(需要分片)時,每個分片都包含一個UDP頭。因此,如果我想將發送大量數據包,它會被分片這樣的:在每個片段上發送帶有UDP頭部的分段數據報
[eth hdr][ip hdr][udp hdr][ data 1 ] /* first fragment */
[eth hdr][ip hdr][udp hdr][ data 2 ] /* second fragment */
[eth hdr][ip hdr][udp hdr][ data 3 ] /* last fragment */
我明白,這是不是習慣,因爲平時UDP報頭只被列入僅的第一個IP包分散的消息。但是,這適用於與其他需要與之交談的機器(例如使用recvfrom)進行通信,所以我沒有理由深入並嘗試改變它。
但是,我的問題是在閱讀郵件。該框似乎希望碎片udp數據報以相同的方式發送給它。我的意思是它期望每個ipv4片段都有一個udp頭。在試圖改變它(這是一個相當專業和複雜的平臺)之前,我想知道是否有任何方法來配置sendto()或其他任何用於以這種格式發送udp消息的函數。我在監視那些udp頭部不存在的流量時看到。
非常感謝您的幫助。
我有一個很難相信這一點。你可以附加一個展現這種行爲的Wireshark轉儲嗎? – EJP 2015-02-07 08:39:14
我同意@EJP。在你的例子中,ip hdr是否設置了M標誌? FO是否非零? – 2015-04-02 17:10:29