【Ethernet】車載ネットワーク その35【lwIP⑪】

車載ネットワーク

バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-network-backnumber/

はじめに

lwIPのIPアドレス、ポートへのBindについて。

登場人物

博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

そもそもBindって何?

フクさん
フクさん

今回はlwIPのIPアドレス、ポートへのBindについて。

  • lwIP自身の初期化
  • ネットワークインターフェースの追加
  • マルチキャストグループの参加
  • ネットワークインターフェースの初期化
  • リンクアップ
  • UDP Socket生成
  • IPアドレス、ポートへのBind ← これ
  • UDP受信待ち
  • EthnertFrameの疑似受信
太郎くん
太郎くん

そういえば、Socket使うときに良くBindって言葉出てくるけど、
これって結局何なのか良く知らないなー。

フクさん
フクさん

そういう場合はまず用語からー。
IT用語辞典 e-Wordsから持ってきたよ。

バインドとは、束縛(する)、拘束(する)、結びつける、関連付ける、などの意味を持つ英単語。ITの分野では、何らかの要素やデータ、ファイルなどが相互に関連付けられている状態や、そのような状態を実現する機能などのことを指すことが多い。設定値や入出力要素、プログラム上の変数など、種類の異なる複数の要素を互いに関連付け、互いに機能を利用したり、データを送受信できるようにしたり、変更を自動的に反映させたりできるようにする仕組みをこのように呼ぶことが多い。

IT用語辞典 e-Words より
太郎くん
太郎くん

んー?
特にSocketに限定した用語ってわけじゃないんだ?

フクさん
フクさん

そうだね。
Socketの場合はここ言う要素がIPアドレスとポート番号ってことになるねー。
これが無いと通信できないんで。

太郎くん
太郎くん

なるほど。
そう説明されるとしっくりくる。

IPアドレス、ポートへのBind

フクさん
フクさん

APIとしては、udp_bindって関数になる。
引数は以下。

pcb:udp_newで取得したPCB(protocol control block)
ipaddr:紐づけたいIPアドレス。すべてのネットワークインターフェースに紐づけたい場合はIP_ANY_TYPEを指定。
port:紐づけたいポート番号。0指定だと自動割り付け。

太郎くん
太郎くん

PCB(protocol control block)って何?

フクさん
フクさん

PCB(protocol control block)自体はlwIP独自の用語だと思う。
control blockはもう少し広く使われてる用語で、処理や通信の状態やパラメータを保持するための構造体のことを指すね。

太郎くん
太郎くん

ん?
オブジェクト指向のクラスみたいなイメージ?

フクさん
フクさん

Yes。
・・・というと怒る人もいるかもしれないが、
概念/利用方法の面では一緒と言えるね。

太郎くん
太郎くん

(うーん、あんまり深く聞くと宗教論争になりそうだからやめとこ。)

太郎くん
太郎くん

IPアドレスでIP_ANY_TYPEを指定すると、すべてのネットワークインターフェースに使えるんだ?

フクさん
フクさん

余談としては、
バークレーSocketでいうところのINADDR_ANYと一緒。
サーバ系とかで、そのインターフェースから来ても相手する必要がある場合に使用される。

太郎くん
太郎くん

(余談って言った。つまりスルーして良いってことだ。)

太郎くん
太郎くん

portで0だと自動割り付けってあるけど、これ使うことってあるの?

フクさん
フクさん

今回は受信用のUDP Socketになるんで、自動割り付けはしないけど、
送信用のUDP Socketの場合は特にポート番号がこれじゃないとダメってのないことが多いので、
自動割り付けを使うことはあるね。

太郎くん
太郎くん

ほー!

フクさん
フクさん

(まぁここらへんの話はlwIPに限った話じゃないんだけどねー。)

まとめ

フクさん
フクさん

まとめだよ。

  • Bindという用語について調べた。
  • lwIPのIPアドレス、ポートへのBindについて説明。
    • IP_ANY_TYPEを指定すると、全インターフェースに紐づく。
    • ポート0を指定すると自動割り付け。
      • 送信用Socketの場合に利用されることが多い。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました