※UDPとの細かい違いとか、シーケンスの話とかはどなたかお任せします...
TCP
Transmission Control Protocolの略。 ネットワーク層とL4より上位の階層のプロトコルの橋渡し役。
3ウェイハンドシェイクを用いてコネクションを確立するので、信頼性の高い(切断しにくい)通信を実現する。 コネクションって?というのは別のページを参照してください。 コネクション
3ウェイハンドシェイクの仕組みは以下のようなイメージ。
送る側が受け手側にデータ送っていいか確認(SYN) ↓ 受け手側から送る側に、セッション張っていいか確認(SYN-ACK) ↓ 送る側がオッケーを返す(ACK)
こうすることで、送信側と受信側が通信の準備ができてから通信を開始するので、信頼性が高いということ。
コネクション確立後、送信側がデータを送ると、受信側は「ここまで受けたよ」というACKを戻す。送信側はこのACKを見ながら次の送信作業を行う。逆にACKが一定時間来なければデータを再送する事も行う。このためUDPに比べてよりデータを確実に送る仕組みがあるのが特徴。
コネクションを終了する際も確立時と同様にハンドシェイクを行う。この時にSYNではなくFINを使う。
UDPとの違いはざっくり言うと、 信頼性を高い通信を確立出来るが、ヘッダサイズやACK確認作業などのオーバーヘッドに起因して通信が遅くなってしまう。