TCPとは?わかりやすく解説する

Web技術
スポンサーリンク

TCPってなに?

どんなプロトコル?

仕組みを教えて欲しい

こういった疑問にこたえます。

この記事を読めば
  • TCPとは何かわかる
  • 確実にデータを届ける仕組みがわかる

エンジニアの僕がわかりやすく解説します。

TCPとは?

WebブラウザからのHTTPリクエストと、それに対するWebサーバからのHTTPレスポンスを繰り返し行うことでWebサイトを閲覧できるわけですが、これらHTTPのデータのやり取りを行うのがTCP(Transmission Control Protocol)の役割です。

TCPはWebサイトの閲覧だけではなく、メールのやりとりなどにも使われます。

データの順番や欠損をチェックしているので、データの欠損が起きると困るようなアプリケーションに利用されます。

TCPにおけるデータのやり取り

TCPではまずクライアントとサーバがお互い通信できる状態であるかの確認を行います。

可能であればコネクションという通信経路を確立した上でデータのやり取りを行います。

このコネクションの確立には次の3回のやり取りによって行われるため3ウェイハンドシェイクと呼ばれます。

  • クライアントからの接続要求(SYN)
    クライアントからサーバに対して、接続要求するためのSYNパケットというものが送られます。SYNパケットを受け取ったサーバはそれに対して応答します。
  • クライアントに対して確認応答、サーバからの接続要求(SYN+ACK)
    クライアントからSYNパケット送信後、必ず送信したSYNパケットに対してサーバから確認応答を受け取ってデータの送信が完了したと判断します。この確認応答がACKパケットです。
    クライアントからのSYNパケットに対して、サーバがACKパケットを返信することで接続可能であることを知らせます。また、サーバはACKパケットと同時にサーバからクライアントに対して接続要求するためのSYNパケットを送ります。
  • サーバに対して確認応答(ACK)
    サーバからの接続要求に対して、クライアントはACKパケットを返信します。
    このようにお互いSYNパケットを送り、ACKパケットで応答することで、どちらも通信可能な状態であるかを確認し、コネクションの確立が完了します。

コネクションの確立により、クライアントとサーバがお互いに通信可能であると確認できたらデータの送受信が行われます。

データの送受信が完了して通信を終了するときは、FINパケットを送りコネクションを切断します。

TCPコネクションの確立と切断
TCPコネクションの確立と切断

TCPの再送制御と順序制御

TCPでは信頼性の高いデータ通信を実現するために、コネクションの確立だけでなく、データの「再送制御」と「順序制御」を行なっています。

順序制御はシーケンス番号というものを使って行われます。

シーケンス番号は送信するデータごとにつけられる連続した番号です。

受信側では、受信したデータパケットのTCPヘッダに書き込まれているシーケンス番号とデータ長を調べて、次に自分が受信するべき番号を確認応答として返送します。

TCP再送制御
再送制御

TCP順序制御
順序制御

TCPとは?まとめ

解説の内容をまとめます。

  • TCPは確実にデータを届けるためのプロトコル
  • Webサイト閲覧やメールの送受信に使われる
  • クライアントとサーバ間でコネクションを確立する
  • 再送制御や順序制御ができる

以上、お疲れ様でした。

コメント

タイトルとURLをコピーしました