2019年5月31日ネットワークの勉強のために、ソケットを扱ったプログラミングをしています。実際にプログラムを動かすときに、本当はPC2台使ってやりたかったのですが、色々な意味でPC2台を準備できませんでした。そこで、自分のPC1台だけで済む環境を用意しました。いった、環境を整える記事はネットにあまりないと思ったので、今回書いてみます。VirtualBoxでホストOSとゲストOSを用意します。私の環境は以下の通りです。(64bits)VirtualBox6.0.8VirtualBoxにUbuntuを普通に入れるだけでは、ホストOSとゲストOS間の双方向通信が出来ません。ゲストOSからホストOSにはpingは通るのですが、逆は上手くいきません。このままでは一方通行になってしまい、通信が出来ません。なるのは、ネットワーク設定が"NAT"というタイプにデフォルトで設定されているからです。このネットワーク設定をホストOSとゲストOS間で双方向通信が出来るように、変更してあげる必要があります。ネットワーク(アダプター)のタイプには"NAT"の他にいくつかありますが、各種タイプの具体的な違いについては、詳しく説明した記事がたくさんありますので割愛します。今回は、いくつかあるタイプの中から"ホストオンリーアダプター"というのを使っていきます。設定>>ネットワーク>>アダプター2というように進んでください。ネットワークアダプタ-を有効にするにチェックボックスを入れると、好きなタイプを選択することができるようになります。デフォルトのアダプター1(NAT)に加え、アダプター2にホストオンリーアダプターを追加していきます。Adapterが選択されると思います。上の画像では#2がついていますが、初めて追加する人は#2が付きません。ここのネットワークアダプターの設定をいじれば、最大4つまでインターフェースを追加することができます。それではしっかり追加出来ているかipconfigとifconfigで確認してみましょう。追加されているのが確認できます。ちなみにホストオンリーアダプターは、ホストOSとゲストOS間でローカルネットワーク(192.168.198.0/24)を形成しているのが分かりますね。上の画像では分かりませんが、192.168.198.2はDHCPサーバに割り当てられています。補足ですが、ubuntu画面の"enp0s3"というインターフェースは、ネットワークアダプターにNATを指定してあるので、windowsからenp0s3にpingを通そうとしても、通りません。それでは、双方向通信ができるなら、どちらからでもpingは通るはずです。試しにpingを通してみます。両方ともpingが通っていますね。あとは両者を通信するプログラムを書けば上手くいくはずです。最後まで読んでいただきありがとうございました。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。date*日本語が含まれない投稿は無視されますのでご注意ください。簡単なWebサーバを実装してみます。HTTPサーバと呼ぶべきでしょうか。pingを受信し中身を表示してみたパケットキャプチャを作る際のテスト用として、pingの受信結果を簡単に表示するものです。ARPエントリーを取得して表示させてみました。そのままCで実装したいと思いまいした。MACアドレスを取得してみました。driverが見つからなかったときの対処法NEXTrecvで受信しEthernetヘッダを表示してみたプロフィール某名門大の大学院生です。IoT、人口知能、ネットワークインフラ系まで幅広く興味があります。いう方のために簡単にまとめてみました。IPv6を取得して標準出力させてみます。自分の目で調査したのでまとめます。変更までする方法をご紹介します。ioctlシステムコールを使います。フラグを引数に指定します。一度まとめておこうと思います。以下が思いつくかと思います。全て"stdio.h"に定義されています。