RFC 950、ページ11とアドレスマスクを取得する方法:ICMP
識別するビットの32ビットマスクに設定 アドレスマスクフィールドでそれを返すべきアドレスマスク要求を受信したゲートウェイ 要求を受信したサブネットのサブネットとネットワーク。
ホストアドレスマスクを取得し、ローカルゲートウェイやその他のIPにICMPアドレスマスク要求パケットを作成したいとします。私はtcpdump -i eth0 icmp
を使用して、ICMP address mask request
パケットが送信されているのを見つけました。しかし、私は何の応答も見つかりませんでした。何か悪いですか?メインのコードは次のようになります。その主な機能(ホスト、ネットワーク構成時に自分のローカルネットワークマスクを見つけるには)動的ホスト構成プロトコル(DHCP RFC、Wikipedia)に包含されているように
struct icmp *picmp;
/* ICMP header */
picmp = (icmp_t *)send_buf;
picmp->icmp_type = ICMP_MASKREQ; // Address Mask Request
picmp->icmp_code = 0;
picmp->icmp_id = pid;
picmp->icmp_seq = npkt++;
len = 12; // ICMP header length
picmp->icmp_cksum = 0;
picmp->icmp_cksum = in_cksum((u_short *)picmp, len);
sendto(sock_fd, send_buf, len, 0, pr->p_addr, pr->addr_len);
私はほとんどのルータが実際にこのサービスを実装していないと思います。クライアントは一般的にDHCPを使用してこれらの日を取得します。ICMP方式はBOOTPとDHCPが設計されるまでの残りの日です。 – Barmar
ありがとう! DHCPを使用すると、アドレスマスクを取得できますか?私はDHCPに精通していません。 – hel
DHCPを使用していない場合、どのようにネットワーク設定を初期化していますか? – Barmar