2011-11-24 84 views
3

我正在Windows 7 x86下編程一個離線數據包解碼程序在C中。數據包的協議

我想知道如何知道數據包協議,如果它是UDPTCP

+0

除非你需要寫這個的一類,我建議延長(或使用AS-是)出色的[Wireshark](http://www.wireshark.org/)。如果由於某種原因,您無法使用Wireshark解決您遇到的任何問題,那麼仔細檢查自己的工作仍然很有價值。 – Mark

回答

5

您可以通過檢查IP報文頭所知,目前在包頭一個Protocol字段,用於指示根據其數值數據包的類型:

  • 1是ICMP
  • 6是TCP
  • 17是UDP

等。這方面的詳細信息,請Wikipedia

編輯:下面是該領域的所有可能值的the list

PS: 我假設的IPv4在這裏,我不知道如果事情是與IPv6的相同

+1

IPv6都是一樣的,唯一不同的是在ip層,爲了得到協議類型你必須遵循不同的解析,但是值是一樣的。 – roni

+0

@Medardas我無法確定(我不知道如何捕捉流量)。另外,作爲一個建議,你可能想看看像[WinPcap](https://www.winpcap.org/docs/docs_412/html/main.html) – Nasreddine

2

協議在IP頭中可用。更多here