TCP
TCP(Transmission Control Protocol, 伝送制御プロトコル)
コネクション型プロトコル
相手の確認と通信経路の設定を行なってから通信を開始する方式
送ったデータが相手に届いたか、その都度確認しながら通信するやり方
ポート番号をもとにアプリケーションにデータを振り分けるプロトコル
3-wayハンドシェイク
TCPにおけるコネクションの確立の手順
信頼性の確保
データ単位(PDU)はTCPセグメント
TCPヘッダは20バイト
3ウェイハンドシェイク
SYN=1, ACK=0, シーケンス番号=M,確認応答番号=0
コネクション確立の要求
SYNパケット
Mはランダムな値
SYN=1, ACK=1, シーケンス番号=N,確認応答番号=M+1
接続先の接続OKの応答
SYN+ACKパケット
Nはランダムな値?
SYN=0, ACK=1, シーケンス番号=M+1,確認応答番号=N+1
接続元の接続OKの応答
ACKパケット
code:mermaid
sequenceDiagram
participant A as ホストA
participant B as ホストB
A->>B: 1. 接続確認<br>SYN=1, ACK=0, シーケンス番号=N, 確認応答番号=0
B->>A: 2. 接続先の接続OKの応答<br>SYN=1, ACK=1, シーケンス番号=N, 確認応答番号=M+1
A->>B: 3. 接続元の接続OKの応答<br>SYN=0, ACK=1, シーケンス番号=M+1, 確認応答番号=N+1
$ sudo sysctl -a 2>&1 | grep -i tcp
カーネルパラメータについてはここを見るのがよさそう?
Linux内部で使われているものはTIPCと呼ぶのかもしれない。 TIPCはTransparent Inter-Process Communicatinというものなので違うっぽい
TCP関連のRFC
確認用
Q. TCP
Q. コネクション型のプロトコルとは
Q. 3-wayハンドシェイクの手順
Q. 1回目の場合
Q. 2回目の場合
Q. 3回目の場合
関連
参考
TIPCのメモ
メモ