パケット届いているのかよ調査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
このような感じで覗き見る必要があります。(だいぶバッドノウハウになってきたな。)