Skip to main content

Module tcp

Module tcp 

Source

Statics§

REASSEMBLERS 🔒
ソケットごとの順序外再構成バッファ(spec/tcp_receive.md)。 TCP_SOCKETS と添字を共有する。
RECV_POLLS
tcp_recv_real がイーサネット受信をポーリングした回数(診断用)。
SEG_ACCEPTED
【2026-07-29診断】受信セグメントの受理/棄却カウンタ。
SEG_DROPPED

Functions§

build_tcp_ack_packet 🔒
指定ソケットへの ACK パケットを 組み立てるだけ で、送信はしない。
build_tcp_ipv4 🔒
parse_tcp_ipv4_packet 🔒
tcp_alloc_socket 🔒
tcp_close_real
【2026-08-05 検証済み・入れていない】ロック無しの「読むべきものがある」印。
tcp_connect_real
tcp_connect_real_measured 🔒
tcp_current_snd_seq
現在のsnd_nxt(次に使われる送信シーケンス番号)を取得する。再送時に 「このデータを送った時点でのシーケンス番号」を正しく再利用するため、 呼び出し側がtcp_send_realの直前に取得しておく用途。
tcp_find_socket 🔒
tcp_find_socket_by_local 🔒
tcp_is_socket_closed
tcp_recv_peek_nonempty
tcp_recv_real
tcp_retransmit_real
【2026-07-24追加】tcp_send_realが呼ばれる度に無条件でsnd_nxtを進めて しまうため、同一データを“再送“する目的でtcp_send_realを再度呼ぶと、 実際には既に進んだ(誤った)シーケンス番号で送信してしまい、相手側の TCP/TLSストリームを破壊するバグを発見した(kernel/tls.rsTcpIoWrapper書き込み再送機構で使用)。この関数はsnd_nxtを一切 変更せず、呼び出し元が明示的に指定したseqのみで再送パケットを 組み立てて送出する(正しいTCP再送のセマンティクス)。
tcp_send_real
tcp_socket_lines
tcp_state_name 🔒
wait_for_first_byte
受信バッファに何か(1バイトでも)届いているかを、消費せずに確認する。 送信直後にごく短時間だけ様子を見て「応答が全く来ていない=パケット ロストの疑い」を判定するための軽量ヘルパー(2026-07-24)。 応答の最初の 1 バイトが届くまで待つ(上限つき)。
wait_for_first_byte_inner 🔒