パケット届いているのかよ調査2
実況中継気味。
todo
1. QEMU内でパケットが消失しているか?
2. プロトコルスタックの後半でパケットが捨てられていないか?
3.MonaからのパケットのIPヘッダのFlagsは0
4.MSSが1446になっているが、データサイズが安定していない
5.MonaからのAckパケットに’GET / HTTP/1.0’というデータが存在する
1.QEMU内でパケットが消失しているか?
QEMU内のvoid ne2000_receiveあたりで、受け取りパケットが取れそう。
当然のことながらQEMUはパケットの種類には関知しません。
なので、net2000.cに
typedef struct{
byte dstmac[6];
byte srcmac[6];
word type;
byte data[0x600];
} Frame;
typedef struct{
byte verhead;
byte tos;
word len;
word id;
word frag;
byte ttl;
byte prot;
word chksum;
dword srcip;
dword dstip;
char data[0];
} IPHeader;
EtherFrame, IPHeaderの定義を埋め込んで
const Frame* frame = (const Frame*)buf;
if (frame->type == 0x800) { // IP
このような感じで覗き見る必要があります。(だいぶバッドノウハウになってきたな。)