文章出處

首先,我們要先了解一下UDP包的結構。

image

                                  圖1 UDP報文格式

從圖1,我們可以看出,從UDP包中,我們可以獲取的信息只有源端口和目的地端口。我們不能獲取到源IP因為報文中沒有源IP。真正包含IP地址的是IPV4偽報頭中

image

                                   圖2 UDP包的IPV4偽報頭格式

可以看出,圖1中的UDP包其實是包含在圖2中的,圖2中清楚地指出了包的源地址(source addresses)和目標地址(destination addresses)都在IPv4頭中。圖2的協議是UDP專用的(詳見List of IP protocol numbers):17(0x11)。UDP length指的是UDP頭(head)和數據(data)的長度。

再讓我們通過抓包工具直觀地看一下,見圖3。

image

                                                      圖3 抓包工具的截圖

那么我們如何獲取一個IP地址呢?

方法1、查看ARP表是最簡單的方法。

方法2、使用libpcap是最可靠的。可以參考linux下網絡監聽與發送數據包的方法(即libpcap、libnet兩種類庫的使用方法)

方法3、寫自己的網卡驅動,應該沒幾個人會這樣搞。

 

 

參考鏈接

Getting the source hardware address of received UDP packets?

User Datagram Protocol


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()