SYNを送ってみる(1)の続きです。
H8マイコン(192.168.254.113)からサーバー(192.168.1.209)に接続しようとしてます。
SYNを送るためには相手のMACアドレスを知る必要があります。
サーバーにVNC接続してコマンドプロンプトでMACアドレスを取得してみました。
IntelのネットワークカードでMACアドレス:00-19-99-CB-D0-9Cになっています。
VNCの環境が無い場合は、プログラムで相手先のMACを取得します。
void mac_read(){
unsigned int i;
char *mac;
mac = query_mac(TCP_SERVER); //宛先IPを送ってMACアドレスを取得する
printf("mac=%x\n", mac); //MACアドレスが登録されたメモリー番地
for(i=0; i<6; i++){
printf("0x%02x ", *(mac+i)); //MACアドレスを表示する
}
printf("\n");
}
上のプログラムを実行した結果です。
MACアドレス:00-09-41-E7-2B-B3
VNCで調べたMACアドレスと違ってます!
ベンダーをネット検索してみました。
検索サイト:
「MACベンダー検索くん」
http://mobile.shinsv.mydns.jp/tech/mac_address/
Allied Telesisでした。プログラムで取得したMACアドレスは間に入っているルーターのようです。
ネットワーク越えのTCP接続では、宛先MACにルーターのMACアドレスをセットします。パケットを受信したルーターは、宛先IPアドレスのMACアドレスに付け替えてパケットを送り出します。
参考ページ:
ITBOOK「MACアドレスの付け替え」
https://www.itbook.info/study/p86.html
SYNを送ってみる(3)へ