スポンサーリンク

ICMP(4) FreeBSD カーネルインタフェースマニュアル ICMP(4)

名称

icmp − インターネットコントロールメッセージプロトコル

書式

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

int

socket(AF_INET, SOCK_RAW, proto);

解説

ICMP は、 IP 及びインターネットプロトコルファミリにおける、エラー及び制御 通知のためのプロトコルです。本プロトコルの機能であるネットワークのモニタ リング及び診断機能は、 ‘‘raw socket’’ を介したアクセスにより利用すること ができます。 ICMP ソケットを作成するための socket コールへの引数 protogetprotobyname(3) から得られます。 ICMP ソケットはコネクションレス型であ り、普通 sendto(2) 及び recvfrom(2) コールと共に使用されます。ただし、後 で送られるパケットの宛先を固定する場合は connect(2) コールも使用できます (その場合には普通 read(2) または recv(2) 、及び write(2) または send(2) システムコールと共に使用されます)。

送信パケットには (宛先アドレスに基づいて) 作成された IP ヘッダが自動的に 付与されます。受信パケットは、 IP ヘッダ及びオプションが全く損なわれずに 受信されます。

診断

ソケット操作の失敗の際には次のエラーのうちの一つが返されます:

       [EISCONN]

既にコネクションが確立されているソケットに対しさらにコネ クションを確立させようとした時、あるいは既にソケットのコ ネクションが確立されているのに、宛先アドレスを指定して データグラムを送信しようとした時

[ENOTCONN]
ソケットのコネクションが確立されていない場合に、宛先アド レスの指定をせずデータグラムの送信を行おうとした時

[ENOBUFS]
内部的なデータ構造のためのメモリが不足した時

[EADDRNOTAVAIL]
対応したネットワークインタフェースが存在しないネットワー クアドレスを指定し、ソケットを作成しようとした時

関連項目

recv(2), send(2), inet(4), intro(4), ip(4)

歴史

icmp プロトコルは 4.3BSD から登場しました。

4.3 Berkeley Distribution June 5, 1993 4.3 Berkeley Distribution

スポンサーリンク