IPPROTO_ICMP

在socket通信中創建套接字時IPPROTO_ICMP表示ICMP報頭由程式構造。

socket函式:
int socket(int domain, int type, int protocol);
的第三個參數
這裡指使用tcp協定
根據
include/winsock2.h檔案
有以下定義
/*
* Protocols
*/
#define IPPROTO_IP 0 /* dummy for IP */
#define IPPROTO_ICMP 1 /* control message protocol */
#define IPPROTO_IGMP 2 /* internet group management protocol */
#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */
#define IPPROTO_TCP 6 /* tcp */
#define IPPROTO_PUP 12 /* pup */
#define IPPROTO_UDP 17 /* user datagram protocol */
#define IPPROTO_IDP 22 /* xns idp */
#define IPPROTO_ND 77 /* UNOFFICIAL net disk proto */
#define IPPROTO_RAW 255 /* raw IP packet */
#define IPPROTO_MAX 256
所以 參數protocol用來指定socket所使用的傳輸協定編號可以有以上幾種
例如
構造ICMP包時創建原始套接字(即需要自己填充報頭):
sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)
SOCK_RAW用於直接訪問網路層,應用程式負責構造自己的協定首部;IPPROTO_ICMP表示ICMP報頭由程式構造

相關詞條

熱門詞條

聯絡我們