自制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 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Xbox コンソールは長年にわたって劇的に改善されました。長年にわたり、ゲームはゲーマーが飽きることのない本物のような機能を備えて進化してきました。 Xbox でお気に入りのゲームをプレイすると、完全に夢中になれる体験が得られます。ただし、これらの高度な機能を使用すると、インターネット速度がそれほど良くない場合、遅延や ping の問題が発生することがあります。場合によっては、ゲームのダウンロードを速くしたいことがあります。現在、Forza Horizon 5 や Mortal Kombat などのゲームには 100GB 以上の RAM が必要です。適切なインターネット設定がない場合、そのようなゲームのダウンロードには長い時間がかかることがあります。方法 1: パス

ping リクエストのタイムアウトの理由には、ターゲット ホストに到達できない、ネットワークの混雑、ファイアウォールまたはセキュリティの設定、DNS 解決の問題などが含まれます。詳細な紹介: 1. ターゲット ホストに到達できません。Ping リクエストのタイムアウトは、ネットワーク経由でターゲット ホストにアクセスできないことを意味する可能性があります。これは、ターゲット ホストがネットワーク接続を閉じていること、ターゲット ホストが存在するネットワークに障害が発生していることが原因である可能性があります。 、ターゲット ホストの IP アドレスが正しく設定されていないなど; 2. ネットワークの混雑 Ping リクエストのタイムアウトは、ネットワークの混雑によっても発生する可能性があります。ネットワークの混雑は、大量のデータ送信やネットワーク機器の障害などが原因である可能性があります。

ネットワークに ping が送信できません。何が起こっていますか?実際、これは非常に一般的な問題であり、主に 2 つの状況に分けられます: 同じネットワーク セグメント上で ping が失敗する場合と、異なるネットワーク セグメント上で ping が失敗する場合です。以下で詳細を見てみましょう。 ping コマンドが同じネットワーク セグメントに接続できない理由は通常 2 つあります。1 つは、同じネットワーク セグメント内で ping できない IP アドレスであり、もう 1 つは、別のネットワーク セグメントで ping できない IP アドレスです。これら 2 つの状況には、異なる解決策があります。まず、同じネットワーク セグメント内で ping が失敗する状況について説明します。 1. 同じネットワーク セグメント上で ping が失敗し、結果は「ターゲット ホストにアクセスできません。」宛先 IP と送信元 IP が同じネットワーク セグメント上にあり、ping 結果は &l になります。

解決策: 1. [スタート] ボタンをクリックし、スタート メニューで [コントロール パネル] - [システム] をクリックします; 2. 設定インターフェイスで、[システムの詳細設定] - [詳細設定] - [環境変数] をクリックします。管理者のユーザー変数に Path 変数があるかどうかを確認します。この変数が表示されない場合は、[新規] をクリックして変数 Path と変数値を追加します。

IP アドレスを ping できない理由は次のとおりです: 1. 相手がシャットダウンしているか、IP アドレスが存在しない; 2. ネットワーク セグメントが異なっており、ルーティングを通じて見つけることができない; 3. 送信された ICMP パケットがファイアウォールによってフィルタリングされているping による; 4. IP アドレスが正しく設定されていない; 5. ネットワーク ケーブルの障害; 6. ゲートウェイが設定されていない。

一部のオペレーティング システムのタイプは、ping の ttl 値によって大まかに判断できることがよくあります。要約すると、UNIX および UNIX 系オペレーティング システムの ICMP エコー応答の TTL フィールド値は 255 です。 CompaqTru645.0 TTL フィールド値ICMP エコー応答の TTL フィールド値は 64 です。Microsoft Windows NT/2K オペレーティング システムの ICMP エコー応答の TTL フィールド値は 128 です。Microsoft Windows 95 オペレーティング システムの ICMP エコー応答の TTL フィールド値は 32 です。もちろん, これらの ttl 値も変更できます。Windows シリーズ システムでは、レジストリ内の次のキー値を変更できます。実装: [HKEY_LOCAL_MACHINE\system\Curren

Linux では、非常に多くの ping コマンドがあることがわかりました。以下にいくつかの例を示します: 1. pingwww.baidu.com、最も大まかな使用法。この時点では、ホストは宛先アドレスに ICMPechorequest パケットを送信し続けます。 Ctrl + c2、ping-Ieth0www.baidu.com、または ping-I192.168.8.151www.baidu.com を押します。つまり、-I オプションで ping パケットを送信するネットワーク カードを指定できます。ネットワーク カード名またはネットワーク カードの IP アドレス 3. Ping-c3www.baidu.com、-c オプションで送信する ICMP パケットの数を指定でき、ホスト接続を確認できます。

Ping は、ホスト間の接続をテストするために使用されるコンピューター ネットワーク ツールです。 ping は、ICMP エコー要求メッセージを送信してターゲット ホストに到達可能かどうかを判断し、往復遅延時間やパケット損失率などの指標を測定することにより、プログラマがネットワークの問題を診断し、ネットワーク パフォーマンスを最適化し、ネットワーク接続の安定性を確保するのに役立ちます。
