一、實(shí)現(xiàn) Sniffer 的基本功能。 Sniffer 是一種用于監(jiān)測(cè)網(wǎng)絡(luò)性能、使用情況的工具。 能夠指定需要偵聽(tīng)的網(wǎng)卡(考慮一臺(tái)機(jī)器上多張網(wǎng)卡的情況) 能夠偵聽(tīng)所有進(jìn)出本主機(jī)的數(shù)據(jù)包,解析顯示數(shù)據(jù)包( ICMP 、 IP 、 TCP 、 UDP 等)各個(gè)字段。比如,對(duì) IP 頭而言,需要顯示 版本、頭長(zhǎng)度、服務(wù)類型、數(shù)據(jù)包長(zhǎng)度、標(biāo)識(shí)、 DF/MF 標(biāo)志、段內(nèi)偏移、生存期、協(xié)議類型、源目的 IP 地址、選項(xiàng)內(nèi)容、數(shù)據(jù)內(nèi)容。要求顯示數(shù)據(jù)的實(shí)際含義(例如用 ASCII 表示); 能夠偵聽(tīng)來(lái)源于指定 IP 地址的數(shù)據(jù)包,能夠偵聽(tīng)指定目的 IP 地址的數(shù)據(jù)包,顯示接收到的 TCP 和 UDP 數(shù)據(jù)包的全部實(shí)際內(nèi)容。需要考慮一個(gè) TCP 或 UDP 包劃分為多個(gè) IP 包傳輸?shù)那闆r; 能夠根據(jù)指定的協(xié)議類型來(lái)過(guò)慮包,例如,只偵聽(tīng) ICMP 包,或只偵聽(tīng) ICMP 和 UDP 包。 功能驗(yàn)證手段:在運(yùn)行 Sniffer 的同時(shí),執(zhí)行標(biāo)準(zhǔn)的 Ping 、 Telnet 和瀏覽網(wǎng)頁(yè)等操作,檢查 Sniffier 能否返回預(yù)期的結(jié)果。 Windows 平臺(tái)上可以用 winpcap 類庫(kù);在 linux 平臺(tái)上可以使用 libpcap 類庫(kù)。也可以調(diào)用 Sockets 等有關(guān)的網(wǎng)絡(luò)類庫(kù)。