自制Ping(2) Structures
IP Helper ICMP相关接口主要用到两个结构,ICMP_ECHO_REPLY和IP_OPTION_INFORMATION ICMP_ECHO_REPLY structure ICMP_ECHO_REPLY 表示IPv4请求的响应信息所返回的数据 语法 typedef struct icmp_echo_reply { IPAddr Address; ULONG Status; ULONG RoundTripT
IP Helper ICMP相关接口主要用到两个结构, ICMP_ECHO_REPLY和IP_OPTION_INFORMATION
ICMP_ECHO_REPLY structure
ICMP_ECHO_REPLY表示IPv4请求的响应信息所返回的数据
语法
typedef struct icmp_echo_reply { IPAddr Address; ULONG Status; ULONG RoundTripTime; USHORT DataSize; USHORT Reserved; PVOID Data; struct ip_option_information Options; } ICMP_ECHO_REPLY, *PICMP_ECHO_REPLY;
成员
Address
Type: IPAddr
响应的IPv4地址,IPAddr 格式.
Status
Type: ULONG
请求状态类型为IP_STATUS.可以是下列值, 这些值定义在Ipexport.h中:
Value |
Meaning |
IP_SUCCESS 0 |
成功 |
IP_BUF_TOO_SMALL 11001 |
接受数据的缓存太小 |
IP_DEST_NET_UNREACHABLE 11002 |
目标网络无法访问 |
IP_DEST_HOST_UNREACHABLE 11003 |
目标主机无法访问 |
IP_DEST_PROT_UNREACHABLE 11004 |
目标协议无法访问 |
IP_DEST_PORT_UNREACHABLE 11005 |
目标端口无法访问 |
IP_NO_RESOURCES 11006 |
可用IP资源不足 |
IP_BAD_OPTION 11007 |
指定了一个有问题的IP选项(option) |
IP_HW_ERROR 11008 |
发生硬件错误 |
IP_PACKET_TOO_BIG 11009 |
数据报太大 |
IP_REQ_TIMED_OUT 11010 |
请求超时 |
IP_BAD_REQ 11011 |
有问题的请求 |
IP_BAD_ROUTE 11012 |
有问题的路由 |
IP_TTL_EXPIRED_TRANSIT 11013 |
传输时生存周期(TTL)过期. |
IP_TTL_EXPIRED_REASSEM 11014 |
分段重组时生存周期(TTL)过期 |
IP_PARAM_PROBLEM 11015 |
一个参数有问题 |
IP_SOURCE_QUENCH 11016 |
数据报到达太快处理不过来, 并且数据报可能已被丢弃. |
IP_OPTION_TOO_BIG 11017 |
一个IP选项(option)被舍得过大. |
IP_BAD_DESTINATION 11018 |
一个有问题的目的地. |
IP_GENERAL_FAILURE 11050 |
常规错误. 当某些ICMP数据报格式不正确时可能会收到此错误. |
RoundTripTime
Type: ULONG
往返时间,单位毫秒
DataSize
Type: USHORT
应答数据大小,单位byte
Reserved
Type: USHORT
系统保留.
Data
Type: PVOID
应答数据
Options
Type: structip_option_information
应答数据的IP标头中的IP选项(options),格式为IP_OPTION_INFORMATION . 内涵TTL等信息.
备注
IcmpParseReplies()分析ICMP_ECHO_REPLY得到IPv4 请求的应答数据. 64位平台对应ICMP_ECHO_REPLY32.
对于IPv4,成员Status 的组合方式遵循RFC 792.
GetIpErrorString()用于根据对应于IP_STATUS中的错误状态,检索IP helper失败描述信息
ICMP_ECHO_REPLY结构定义在Ipexport.h在中,而Ipexport.h被自动包含在Iphlpapi.h中.头文件Ipexport.h不应被直接使用.
要求
Minimum supported client |
Windows 2000 Professional [desktop apps only] |
Minimum supported server |
Windows 2000 Server [desktop apps only] |
Header |
Ipexport.h (include Iphlpapi.h) |
IP_OPTION_INFORMATION structure
IP_OPTION_INFORMATION结构体存放了IP标头中的配置选项(options)
语法
typedef struct ip_option_information { UCHAR Ttl; UCHAR Tos; UCHAR Flags; UCHAR OptionsSize; PUCHAR OptionsData; } IP_OPTION_INFORMATION, *PIP_OPTION_INFORMATION;
成员
Ttl
类型: UCHAR
在IPv4报头中表示生存周期字段.在IPv6报头中表示跳数限制(HopLimit)字段
Tos
类型: UCHAR
在IPv4中表示服务类型字段.该成员目前正被忽略.
Flags
类型: UCHAR
标志字段.在IPv4中这个标志包含在报头中.在IPv6中这个字段表示为选项(options)头
对于IPv4,Flags 可以是下列值的组合,它们都定义在Ipexport.h中:
Value |
Meaning |
IP_FLAG_REVERSE 0x01 |
使IP包添加到源IP路由表头中. 仅适用于Vista及以上版本. |
IP_FLAG_DF 0x02 |
表示IP包不应被分段. |
OptionsSize
类型: UCHAR
IP选项数据大小,单位bytes.
OptionsData
类型: PUCHAR
选项(options)数据.
备注
IP_OPTION_INFORMATION表示IP报头中的选项(options).在64位平台上,对应IP_OPTION_INFORMATION32.
TTL, TOS 和 Flags对应于IP报头的特定字段.
OptionsData对应于紧随标准IP报头的options中.
除了IPv4的源路由选项(options)以外,选项(options)数据必须遵循RFC 791协议在链路中按照指定格式发送.一个IPv4源路由选项(option)应该包含从第一跳到目的地的完整路由.
对于IPv6,选项(options)数据必须遵循RFC 2460协议在链路上按照指定格式发送.
IP_OPTION_INFORMATION是ICMP_ECHO_REPLY的一个成员,它在IcmpSendEcho, IcmpSendEcho2,和 Icmp6SendEcho2中都有应用.
该结构体定义在Ipexport.h中,而Ipexport.h包含在Iphlpapi.h中.Ipexport.h头文件不应直接使用.
要求
Minimum supported client |
Windows 2000 Professional [desktop apps only] |
Minimum supported server |
Windows 2000 Server [desktop apps only] |
Header |
Ipexport.h (include Iphlpapi.h) |

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

多年來,Xbox控制台得到了突飛猛進的改進。多年來,遊戲不斷發展,具有栩栩如生的功能,而遊戲玩家似乎無法獲得足夠的體驗。在Xbox上玩您最喜歡的遊戲可能是一種完全引人入勝的體驗。但是,有時使用這些高級功能,如果網路速度不是那麼好,我們最終會遇到延遲或ping問題。有時我們希望遊戲下載速度更快。如今,像ForzaHorizon5和MortalKombat這樣的遊戲需要超過100GB的記憶體。如果我們沒有正確的網路設定來幫助我們,下載此類遊戲可能需要很長時間。方法1:透過

網路ping不通,是什麼回事?其實這是個很常見的問題了,主要分為兩種情況,同網段ping不通和不同網段ping不通,下面就來看看詳細內容吧。 同網段ping不通的原因ping指令無法連接的情況通常有兩種:一是在同一網段內無法ping通的IP位址,另一種是在不同網段內無法ping通的IP位址。這兩種情況有不同的解決方法。首先,我們來討論在同一網段內ping不通的情況。 一、同網段ping不通,結果是「無法存取目標主機」 目的ip和來源ip是同一網段的,ping的結果是&l

ping請求逾時的原因有目標主機不可達、網路擁塞、防火牆或安全設定和DNS解析問題等。詳細介紹:1、目標主機不可達,Ping請求超時可能意味著目標主機無法透過網路訪問,可能是由於目標主機關閉了網路連線、目標主機所在的網路故障、目標主機IP位址設定錯誤等原因導致;2、網路擁堵,Ping請求超時也可能是由於網路擁塞導致的,網路擁塞可能是由於大量的資料傳輸、網路設備故障等等。

解決方法:1、點選「開始」按鈕,在開始功能表中依序點選「控制台」-「系統」;2、在設定介面,依序點選「進階系統設定」-「進階」-「環境變數」;3 、查看Administrator的使用者變數中是否有Path變量,若是沒有看到此變量,點選“新建”,新增變數Path和變數值即可。

往往可以透過ping的ttl值初略的判斷一些作業系統的類別,這邊整理一下大概如下UNIX及類UNIX作業系統ICMP回顯應答的TTL字段值為255CompaqTru645.0ICMP回顯應答的TTL字段值為64微軟WindowsNT/2K作業系統ICMP回顯應答的TTL欄位值為128微軟Windows95作業系統ICMP回顯應答的TTL欄位值為32當然這些ttl值還可以更改,Windows系列的系統可以透過修改登錄檔以下鍵值實現:[HKEY_LOCAL_MACHINE\system\Curren

ping不通ip位址的原因有:1、對方關機或ip位址不存在;2、網段不同,透過路由無法找到;3、防火牆過濾了ping發出的ICMP封包;4、ip位址設定錯誤;5、網線故障;6、未設定網關。

發覺linux下的ping命令花樣還挺多的,下面是幾個例子1、pingwww.baidu.com,最粗糙的用法,此時主機將不停地向目的地址發送ICMPechorequest數據包,直至你按下Ctrl +c2、ping-Ieth0www.baidu.com或ping-I192.168.8.151www.baidu.com,即-I選項可以指定發送ping包的網卡,-I後接網卡名或網卡的IP位址都是可以的3、ping-c3www.baidu.com,-c選項可以指定要發送多少個ICMP包,可以看到主機接

ping是一種電腦網路工具,用於測試主機之間的連通性。透過發送ICMP回顯請求訊息來判斷目標主機是否可達,並測量往返延遲時間和丟包率等指標,ping可以幫助程式設計師診斷網路問題,優化網路效能,以及確保網路連線的穩定性。
