チュートリアルに基づいて独自のWebサーバーを構築しています。TCP接続を開始し、httpデータの1つのセグメントを送信する簡単な方法を見つけました(Webサーバーはマイクロコントローラー上で実行されるため、非常に小さくなります)
とにかく、以下は私が通過する必要があるシーケンスです:
SYNを受信する
SYN、ACKを送信します
ACKを受信します(接続が確立されました)
HTTPGETコマンドでACKを受信する
ACKを送信
HTTPデータを使用してFIN、ACKを送信します(例:200 OK)
受信FIN、ACK <-このパケットを受信しません!
ACKを送信
確認応答とHTTP200OKメッセージを送信するまで、すべて正常に機能します。クライアントはこれら2つのパッケージに確認応答を送信しないため、Webページは表示されません。シーケンスのpcapファイルをwiresharkで記録した方法で追加しました。
Pcapファイル:http ://cl.ly/5f5/httpdump2.pcap
すべてのシーケンス番号と確認応答番号は正しく、チェックサムは問題ありません。旗も正しいです。何が悪いのかわかりません。