Skip to main content

Module tcp_state

Module tcp_state 

Source

Structs§

RecvState
ソケットのうち、受信側状態機械が読み書きする部分だけを抜き出したもの。
Segment
受信した 1 セグメントのうち、状態遷移の判断に必要な情報だけを抜き出したもの。
SegmentOutcome
on_segment の結果として呼び出し側が行うべき副作用。

Enums§

TcpState

Constants§

ERR_TABLE_FULL
ソケットテーブルから空きスロットを 1 つ選ぶ(純粋ロジック)。
FLAG_ACK
FLAG_FIN
TCP フラグビット。
FLAG_PSH
FLAG_RST
FLAG_SYN

Functions§

acked_through
pos まで ACK 済みか(snd_una >= pos、周回を考慮。pos は snd_nxt 以下であること)。
advance_snd_una
受信した ACK 番号で「相手が受け取り済みの位置」(snd_una)を進める。 snd_una < ack <= snd_nxt(32bit の周回を考慮)のときだけ進め、それ以外(古い ACK・ まだ送っていない位置への ACK)は無視する。戻り値は新しい snd_una。
close_wait_budget_ms
こちらから FIN を送った後、相手の応答(FIN/ACK)を待つ上限(ミリ秒)。
find_free_slot
next_ephemeral_port
エフェメラルポートカウンタの次の値を、既存の生きたソケットと衝突しない ところまで進めて返す(純粋ロジック)。
on_segment
受信セグメント 1 個を状態機械へ適用する。
seq_gt 🔒
RFC 1982 準拠のシリアル番号比較: a が b より新しければ true。 単純な a > b では 2^32 の折り返し(wraparound)で誤判定するため必須。
tcp_state_name